skip to main content
10.1145/1449764.1449782acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
research-article

jStar: towards practical verification for java

Published:19 October 2008Publication History

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.

References

  1. 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 ScholarGoogle Scholar
  2. M. Barnett, K. R. M. Leino, and W. Schulte. The Spec programming system: An overview. In Proceedings of CASSIS, pages 49--69, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. 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 ScholarGoogle Scholar
  4. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  5. 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 ScholarGoogle Scholar
  6. 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 ScholarGoogle Scholar
  7. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  8. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  9. 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 ScholarGoogle Scholar
  10. 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 ScholarGoogle Scholar
  11. E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison Wesley, 1994. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. M. Grand. Patterns in Java. Wiley, second edition, 2002.Google ScholarGoogle Scholar
  13. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  14. 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 ScholarGoogle Scholar
  15. 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 ScholarGoogle Scholar
  16. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  17. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  18. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  19. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  20. B. H. Liskov and J. M. Wing. A behavioral notion of subtyping. ACM TOPLAS, 16(6):1811--1841, 1994. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  22. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  23. P. W. O'Hearn, H. Yang, and J. C. Reynolds. Separation and information hiding. In 31st POPL 2004, pages 268--280, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. M. J. Parkinson. Local Reasoning for Java. PhD thesis, Computer Laboratory, University of Cambridge, 2005. UCAM-CL-TR-654.Google ScholarGoogle Scholar
  25. M. J. Parkinson and G. M. Bierman. Separation logic and abstraction. In 32nd POPL 2005, pages 247--258, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. M. J. Parkinson and G. M. Bierman. Separation logic, abstraction and inheritance. In Proceedings of POPL, pages 75--86. ACM, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. M. Sagiv, T. Reps, and R. Wilhelm. Solving shape--analysis problems in languages with destructive updating. ACM TOPLAS, 20(1):1--50, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  29. 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 ScholarGoogle Scholar
  30. 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 ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. jStar: towards practical verification for java

              Recommendations

              Comments

              Login options

              Check if you have access through your login credentials or your institution to get full access on this article.

              Sign in

              PDF Format

              View or Download as a PDF file.

              PDF

              eReader

              View online with eReader.

              eReader
              About Cookies On This Site

              We use cookies to ensure that we give you the best experience on our website.

              Learn more

              Got it!