Last updated March 2009

Kevin Bierhoff.  Checking API Protocol Compliance in Java.  Research competition abstract in Companion Proceedings of the 23rd ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA '08), Nashville, TN, USA, October 19-23, 2008, pages 915-916.  ACM Press, New York, October 2008.
This paper won first prize in the graduate category at the OOPSLA '08 ACM Student Research Competition.

Abstract.  Reusable APIs often define usage protocols. The author previously developed a sound and modular type system that checks compliance to typestate-based protocols while affording a great deal of aliasing flexibility. This paper focuses on making these ideas available in tools for mainstream object-oriented languages and evaluating their practical effectiveness.

ICSE 2008

Last updated March 2009

Kevin Bierhoff and Jonathan Aldrich.  PLURAL: Checking Protocol Compliance under Aliasing.  In Companion Proceedings of the 30th International Conference on Software Engineering (ICSE-30), Leipzig, Germany, May 10-18, 2008, pages 971-972.  ACM Press, New York, May 2008.

Abstract.  Enforcing compliance to API usage protocols is notoriously hard due to possible aliasing of objects through multiple references. In previous work we proposed a sound, modular approach to checking protocol compliance based on typestates that offers a great deal of flexibility in aliasing. In our approach, API protocols are defined based on typestates. Every reference is associated with a permission, and reasoning about permissions is appropriately conservative for the “degree” of possible aliasing admitted by a permission.
This paper describes Plural, a tool to automatically enforce typestate-based protocols using permissions in Java. API developers can specify protocols with simple annotations on methods and method parameters. A static flow analysis tracks permissions in code that uses specified APIs and issues warnings for possible protocol violations.