ABSTRACT
In this paper we introduce a novel methodology for verifying a large set of Java programs which builds on recent theoretical developments in program verification: it combines the idea of abstract predicate families and the idea of symbolic execution and abstraction using separation logic. The proposed technology has been implemented in a new automatic verification system, called jStar, which combines theorem proving and abstract interpretation techniques. We demonstrate the effectiveness of our methodology by using jStar to verify example programs implementing four popular design patterns (subject/observer, visitor, factory, and pooling). Although these patterns are extensively used by object-oriented developers in real-world applications, so far they have been highly challenging for existing object-oriented verification techniques.
- A. Banerjee, D. Naumann, and S. Rosenberg. Regional logic for local reasoning about global invariants. In Proceeding of ECOOP, volume 5142 of LNCS, pages 387--411. Springer, 2008. Google Scholar
- M. Barnett, K. R. M. Leino, and W. Schulte. The Spec programming system: An overview. In Proceedings of CASSIS, pages 49--69, 2005. Google Scholar
Digital Library
- M. Barnett and D. A. Naumann. Friends need a bit more: Maintaining invariants over shared state. In MPC, volume 3125 of LNCS, pages 54--84. Springer, 2004.Google Scholar
- J. Berdine, C. Calcagno, and P. O'Hearn. Smallfoot: Modular automatic assertion checking with separation logic. In FMCO 2005, volume 4111 of LNCS, pages 115--137. Springer, 2006. Google Scholar
Digital Library
- J. Berdine, C. Calcagno, and P. W. O'Hearn. Symbolic execution with separation logic. In Proceedings of APLAS, volume 3780 of LNCS, pages 52--68. Springer, 2005. Google Scholar
- L. Burdy, Y. Cheon, D. Cok, M. Ernst, J. Kiniry, G. T. Leavens, K. R. M. Leino, and E. Poll. An overview of JML tools and applications. In Proceedings of FMICS, pages 73--89, 2003.Google Scholar
- W.-N. Chin, C. David, H. Nguyen, and S. Qin. Enhancing modular OO verification with separation logic. In Proceedings of POPL, pages 87--99. ACM, 2008. Google Scholar
Digital Library
- P. Cousot and R. Cousot. Abstract interpretation: A unified lattice model for static analysis of programs by construction or approximation of fixpoints. In POPL '77: Principles of Programming Languages, pages 238--252. ACM Press, 1977. Google Scholar
Digital Library
- D. Distefano, P. O'Hearn, and H. Yang. A local shape analysis based on separation logic. In Proceedings of TACAS, volume 3920 of LNCS, pages 287--302. Springer, 2006. Google Scholar
- M. Dwyer, J.Hatcliff, M.Hoosier, and Robby. Building your own software model checker using the bogor extensible model checking framework. In CAV, volume 3576 of LNCS, pages 148--152. Springer, 2005. Google Scholar
- E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison Wesley, 1994. Google Scholar
Digital Library
- M. Grand. Patterns in Java. Wiley, second edition, 2002.Google Scholar
- S. Ishtiaq and P. W. O'Hearn. BI as an assertion language for mutable data structures. In 28th POPL 2001, pages 14--26, 2001. Google Scholar
Digital Library
- I. T. Kassios. Dynamic frames: Support for framing, dependencies and sharing without restrictions. In FM, volume 4085 of LNCS, pages 268--283. Springer, 2006. Google Scholar
- N. R. Krishnaswami, J. Aldrich, and L. Birkedal. Modular verification of the subject-observer pattern via higher-order separation logic. In Proceedings of FTfJP, 2007.Google Scholar
- G. Leavens, K. Leino, and P.Müller. Specification and verification challenges for sequential object--oriented programs. Formal Aspects of Computing, 19(2):159--189, 2007. Google Scholar
Digital Library
- G. T. Leavens, A. L. Baker, and C. Ruby. Preliminary design of JML: a behavioral interface specification language for Java. SIGSOFT Software Engineering Notes, 31(3):1--38, 2006. Google Scholar
Digital Library
- K. R. M. Leino and W. Schulte. Using history invariants to verify observers. In Proceedings of ESOP, volume 4421 of LNCS, pages 80--94. Springer, 2007. Google Scholar
Digital Library
- T. Lev-Ami and M. Sagiv. Tvla: A system for implementing static analyses. In SAS, volume 1824 of LNCS, pages 280--301. Springer, 2000. Google Scholar
Digital Library
- B. H. Liskov and J. M. Wing. A behavioral notion of subtyping. ACM TOPLAS, 16(6):1811--1841, 1994. Google Scholar
Digital Library
- P. Müller, A. Poetzsch-Heffter, and G. T. Leavens. Modular invariants for layered object structures. Science of Computer Programming, 62:253--286, 2006. Google Scholar
Digital Library
- P. W. O'Hearn, J. C. Reynolds, and H. Yang. Local reasoning about programs that alter data structures. In Proceedings of CSL, volume 2142 of LNCS, pages 1--19. Springer, 2001. Google Scholar
Digital Library
- P. W. O'Hearn, H. Yang, and J. C. Reynolds. Separation and information hiding. In 31st POPL 2004, pages 268--280, 2004. Google Scholar
Digital Library
- M. J. Parkinson. Local Reasoning for Java. PhD thesis, Computer Laboratory, University of Cambridge, 2005. UCAM-CL-TR-654.Google Scholar
- M. J. Parkinson and G. M. Bierman. Separation logic and abstraction. In 32nd POPL 2005, pages 247--258, 2005. Google Scholar
Digital Library
- M. J. Parkinson and G. M. Bierman. Separation logic, abstraction and inheritance. In Proceedings of POPL, pages 75--86. ACM, 2008. Google Scholar
Digital Library
- M. Sagiv, T. Reps, and R. Wilhelm. Solving shape--analysis problems in languages with destructive updating. ACM TOPLAS, 20(1):1--50, 1998. Google Scholar
Digital Library
- J. Smans, B. Jacobs, F. Piessens, and W. Schulte. An automatic verifier for java-like programs based on dynamic frames. In Proceedings of FASE, volume 4961 of LNCS, pages 261--275. Springer, 2008. Google Scholar
Digital Library
- R. Vallée-Rai, L. Hendren, V. Sundaresan, P. Lam, E. Gagnon, and P. Co. Soot -- a java optimization framework. In Proceedings of CASCON 1999, pages 125--135, 1999.Google Scholar
- X.Deng, J.Lee, and Robby. Bogor/kiasan: A k-bounded symbolic execution for checking strong heap properties of open systems. In ASE 2006, pages 157--166. IEEE, 2006. Google Scholar
Digital Library
Index Terms
jStar: towards practical verification for java
Recommendations
jStar: towards practical verification for java
In this paper we introduce a novel methodology for verifying a large set of Java programs which builds on recent theoretical developments in program verification: it combines the idea of abstract predicate families and the idea of symbolic execution and ...
jStar-eclipse: an IDE for automated verification of Java programs
ESEC/FSE '11: Proceedings of the 19th ACM SIGSOFT symposium and the 13th European conference on Foundations of software engineeringjStar is a tool for automatically verifying Java programs. It uses separation logic to support abstract reasoning about object specifications. jStar can verify a number of challenging design patterns, including Subject/Observer, Visitor, Factory and ...
Separation logic, abstraction and inheritance
POPL '08Inheritance is a fundamental concept in object-oriented programming, allowing new classes to be defined in terms of old classes. When used with care, inheritance is an essential tool for object-oriented programmers. Thus, for those interested in ...







Comments