Permissive interfaces
- 1 September 2005
- journal article
- conference paper
- Published by Association for Computing Machinery (ACM) in ACM SIGSOFT Software Engineering Notes
- Vol. 30 (5) , 31-40
- https://doi.org/10.1145/1095430.1081713
Abstract
A modular program analysis considers components independently and provides a succinct summary for each component, which is used when checking the rest of the system. Consider a system consisting of a library and a client. A temporal summary, or interface , of the library specifies legal sequences of library calls. The interface is safe if no call sequence violates the library's internal invariants; the interface is permissive if it contains every such sequence. Modular program analysis requires full interfaces, which are both safe and permissive: the client does not cause errors in the library if and only if it makes only sequences of library calls that are allowed by the full interface of the library.Previous interface-based methods have focused on safe interfaces, which may be too restrictive and thus reject good clients. We present an algorithm for automatically synthesizing software interfaces that are both safe and permissive. The algorithm generates interfaces as graphs whose vertices are labeled with predicates over the library's internal state, and whose edges are labeled with library calls. The interface state is refined incrementally until the full interface is constructed. In other words, the algorithm automatically synthesizes a typestate system for the library, against which any client can be checked for compatibility. We present an implementation of the algorithm which is based on the BLAST model checker, and we evaluate some case studies.Keywords
This publication has 9 references indexed in Scilit:
- Synthesis of interface specifications for Java classesPublished by Association for Computing Machinery (ACM) ,2005
- Abstractions from proofsPublished by Association for Computing Machinery (ACM) ,2004
- Automatic extraction of object-oriented component interfacesPublished by Association for Computing Machinery (ACM) ,2002
- ESPPublished by Association for Computing Machinery (ACM) ,2002
- Flow-sensitive type qualifiersPublished by Association for Computing Machinery (ACM) ,2002
- Mining specificationsPublished by Association for Computing Machinery (ACM) ,2002
- Lazy abstractionPublished by Association for Computing Machinery (ACM) ,2002
- Interface automataPublished by Association for Computing Machinery (ACM) ,2001
- Typestate: A programming language concept for enhancing software reliabilityIEEE Transactions on Software Engineering, 1986