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.
- M. Barnett, R. DeLine, M. Fahndrich, K. R. M. Leino, and W. Schulte. Verification of object-oriented programs with invariants. phJournal of Object Technology, 3 (6): 27--56, June 2004.Google Scholar
- K. Bierhoff and J. Aldrich. Modular typestate checking of aliased objects. In OOPSLA, pages 301--320. ACM Press, Oct. 2007. Google ScholarDigital Library
- K. Bierhoff and J. Aldrich. PLURAL: Checking protocol compliance under aliasing. In ICSE-30 Companion, pages 971--972. ACM Press, May 2008. Google Scholar
- J. Boyland. Checking interference with fractional permissions. In SAS, pages 55--72. Springer, 2003. Google ScholarDigital Library
- R. DeLine and M. Fahndrich. Typestates for objects. In ECOOP, pages 465--490. Springer, 2004.Google ScholarCross Ref
- R. E. Strom and S. Yemini. Typestate: A programming language concept for enhancing software reliability. IEEE Transactions on Software Engineering, 12: 157--171, 1986. Google ScholarDigital Library
Index Terms
- Checking API protocol compliance in java
Recommendations
PLURAL: checking protocol compliance under aliasing
ICSE Companion '08: Companion of the 30th international conference on Software engineeringEnforcing 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 ...
Usability Hypotheses in the Design of Plaid
PLATEAU '14: Proceedings of the 5th Workshop on Evaluation and Usability of Programming Languages and ToolsPlaid is a research programming language with a focus on typestate, permissions, and concurrency. Typestate describes ordering constraints on method calls to an object; Plaid incorporates typestate into both its object model and its type system. ...
Comments