Abstract

While a typical software component has a clearly specified (static) interface in terms of methods and input/output types they support, information about correct sequencing of method calls client must invoke is usually undocumented. In this paper, we propose a novel solution for automatically extracting such temporal specifications for Java classes. Given a Java class, and a safety property such as the exception E should not be raised, corresponding (dynamic) interface is most general way of invoking methods in class so that safety property is not violated. Our synthesis method first constructs a symbolic representation of finite state-transition system obtained from class using predicate abstraction. Constructing interface then corresponds to solving a partial-information two-player game on this symbolic graph. We present a sound approach to solve this computationally-hard problem approximately using algorithms for learning finite automata and symbolic model checking for branching-time logics. We describe an implementation of proposed techniques in tool JIST--- Java Interface Synthesis Tool---and demonstrate that tool can construct interfaces accurately and efficiently for sample Java2SDK library classes.

Full Text
Paper version not known

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call

Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.