Abstract
Tool support for the Java Modeling Language (JML) is a very pressing problem. A main issue with current tools is their architecture; the cost of keeping up with the evolution of Java is prohibitively high, e.g., Java 5 has yet to be fully supported. This paper presents JmlEclipse, an Integrated Verification Environment (IVE) for JML that builds upon Eclipse’s support for Java, enhancing it with preliminary versions of Runtime Assertion Checking (RAC), Extended Static Checking (ESC), Full Static Program Verification (FSPV), and symbolic execution. To our knowledge, JmlEclipse is the first IVE to support such a full range of verification techniques for a mainstream language. We present the original tool architecture as well as an improved design based on use of the JML Intermediate Representation (JIR), which helps decouple JmlEclipse from the internals of its base compiler. As a result, we believe that JmlEclipse is easier to maintain and extend. Use of JIR as a tool exchange format is also described.
Similar content being viewed by others
References
Ahrendt W., Baar T., Beckert B., Bubel R., Giese M., Hähnle R., Menzel W., Mostowski W., Roth A., Schlager S., Schmitt P.H.: The KeY tool. Softw. Syst. Model. 4, 32–54 (2005)
Aspinall, D.: Proof General. http://proofgeneral.inf.ed.ac.uk (2008)
Aspinall, D., Winterstein, D., Luth, C., Fayyaz, A.: Proof general in Eclipse: system and architecture overview. In: Proceedings of the OOPSLA Workshop on Eclipse Technology eXchange (ETX) (2006)
Baresi, L., Ghezzi, C., Mottola, L.: On accurate automatic verification of publish-subscribe architectures. In: Proceedings of the International Conference on Software Engineering (ICSE), pp. 199–208 (2007)
Barnes J.: High integrity software: the Spark approach to safety and security. Addison-Wesley, Reading (2003)
Barnett, M., Leino, K.R.M.: Weakest-precondition of unstructured programs. In: Workshop on Program Analysis for Software Tools and Engineering (PASTE), Lisbon, Portugal. ACM Press (2005)
Barthe, G., Burdy, L., Charles, J., Grégoire, B., Huisman, M., Lanet, J.-L., Pavlova, M., Requet, A.: JACK: a tool for validation of security and behaviour of Java applications. In: Proceedings of the 5th International Symposium on Formal Methods for Components and Objects (FMCO), (2007)
Bianculli, D., Ghezzi, C., Spoletini, P.: A model checking approach to verity BPEL4WS Workflows. In: Proceedings of the IEEE Conference on Serice-Oriented Computing and Applications (SOCA), pp. 13–20 (2007)
Brat, G., Havelund, K., Park, S., Visser, W.: Java PathFinder—a second generation of a Java model-checker. In: Proceedings of the Workshop on Advances in Verification (2000)
Burdy L., Cheon Y., Cok D.R., Ernst M.D., Kiniry J.R., Leavens G.T., Leino K.R.M., Poll E.: An overview of JML tools and applications. Int. J. Softw. Tools Technol. Transfer 7(3), 212–232 (2005)
Burdy, L., Huisman, M., Pavlova, M.: Preliminary design of BML: a behavioral interface specification language for Java bytecode. In: Proceedings of the Fundamental Approaches to Software Engineering (FASE). LNCS, vol. 4422, pp. 215–229 (2007)
Burdy, L., Requet, A., Lanet, J.-L.: Java Applet correctness: a developer-oriented approach. In: Proceedings of the International Symposium of Formal Methods Europe. LNCS, vol. 2805, pp. 422–439. Springer, Berlin (2003)
Catano, N., Wahls, T.: Executing JML specifications of Java card applications: a case study. In: Proceedings of the ACM Symposium on Applied Computing, Software Engineering Track (SAC-SE), Hawaii, March 2009
Chalin, P.: Are practitioners writing contracts? In: Butler, M., Jones, C.B., Romanovsky, A., Troubitsyna, E. (eds.) Rigorous Development of Complex Fault-Tolerant Systems. LNCS, vol. 4157, pp. 100–113. Springer (2006)
Chalin, P., James, P.R.: Non-null references by default in Java: alleviating the nullity annotation burden. In: Proceedings of the 21st European Conference on Object-Oriented Programming (ECOOP), Berlin, Germany, July–August. LNCS, vol. 4609, pp. 227–247. Springer, New York (2007)
Chalin, P., James, P.R., Karabotsos, G.: JML4: towards an industrial grade IVE for Java and next generation research platform for JML. In: Proceedings of the International Conference on Verified Software: Theories, Tools, Experiments (VSTTE), Toronto, Canada. October 6–9, 2008
Chalin P., James P.R., Rioux F.: Reducing the use of nullable types through non-null by default and monotonic non-null. IET Softw. J. 2(6), 515–531 (2008)
Chalin, P., Kiniry, J., Leavens, G.T., Poll, E.: Beyond assertions: advanced specification and verification with JML and ESC/Java2. In: Fourth International Symposium on Formal Methods for Components and Objects (FMCO’05). LNCS, vol. 4111, pp. 342–363 (2006)
Cheon, Y.: A runtime assertion checker for the Java Modeling Language. Iowa State University, Ph.D. Thesis. TR #03-09, April 2003
Chrzaszcz, J., Huisman, M., Schubert, A., Kiniry, J., Pavlova, M., Poll, E.: BML Reference Manual. http://bml.mimuw.edu.pl/ (2008)
Cok, D.: Adapting JML to generic types and Java 1.6. In: Proceedings of the International Workshop on Specification and Verification of Component-Based Systems (SAVCBS), Atlanta, Georgia (USA). November 2008
Cok, D.: OpenJML. http://sourceforge.net/apps/trac/jmlspecs/wiki/OpenJML (2009)
Cok, D.R.: Design Notes (Eclipse.txt). http://jmlspecs.svn.sourceforge.net/viewvc/jmlspecs/trunk/docs/eclipse.txt (2007)
Cok, D.R., Kiniry, J.R.: ESC/Java2: uniting ESC/Java and JML. In: Barthe, G., Burdy, L., Huisman, M., Lanet, J.-L., Muntean, T. (eds.) Proceedings of the International Workshop on the Construction and Analysis of Safe, Secure, and Interoperable Smart Devices (CASSIS’04), Marseille, France, March 10–14, 2004. LNCS, vol. 3362, pp. 108–128. Springer (2004)
Corbett J.C., Dwyer M.B., Hatcliff J., Hatcliff J.: Expressing checkable properties of dynamic systems: the Bandera specification language. Int. J. Softw. Tools Technol. Transfer 4(1), 34–56 (2002)
Deng, X., Lee, J., Robby: Bogor/Kiasan: a k-bounded symbolic execution for checking strong heap properties of open systems. In: Proceedings of the IEEE/ACM Conference on Automated Software Engineering (ASE), pp. 157–166 (2006)
Deng X., Robby , Hatcliff J.: Kiasan/KUnit: Automatic Test Case Generation and Analysis Feedback for Open Object-Oriented Systems. Kansas State University, Kansas (2007)
Dwyer, M.B., Robby, Tkachuk, O., Visser, W.: Analyzing interaction orderings with model checking. In: Proceedings of the IEEE Conference on Automated Software Engineering, Linz, Austria, pp. 154–163 (2004)
Stephen H.E., Wayne D.H., Timothy J.L., Murali S., Bruce W.W.: Part II: specifying components in RESOLVE. SIGSOFT Softw. Eng. Notes 19(4), 29–39 (1994)
Ernst, M., Coward, D.: Annotations on Java Types. JCP.org, JSR 308. October 17, 2006
Filliâtre, J.-C., Marché, C.: The Why/Krakatoa/Caduceus platform for deductive program verification. In: Proceedings of the Conference on Computer Aided Verification (CAV). LNCS, vol. 4590 (2007)
Filman R.E., Elrad T., Clarke S., Aksit M.: Aspect-Oriented Software Development. Addison-Wesley, Reading (2005)
Flanagan C., Leino K.R.M., Lillibridge M., Nelson G., Saxe J.B., Stata R.: Extended static checking for Java. Proc. ACM SIGPLAN Conf. Program. Lang. Des. Implement. 37(5), 234–245 (2002)
Haddad, G., Leavens, G.T.: Extensible Dynamic Analysis for JML: A Case Study with Loop Annotations. University of Central Florida CS-TR-08-05. April, 2008
James, P.R., Chalin, P.: Extended static checking in JML4: benefits of multiple-prover support. In: Proceedings of the ACM Symposium on Applied Computing, Software Verification and Testing Track (SAC-SVT), Hawaii. March 2009
James P.R., Chalin P.: Faster and more complete extended static checking for the Java Modeling Language. J. Autom. Reason. 44, 145–174 (2010)
James, P.R., Chalin, P., Giannas, L., Karabotsos, G.: Distributed, multi-threaded verification of Java Programs. In: Proceedings of the International Workshop on Specification and Verification of Component-Based Systems (SAVCBS), Atlanta, Georgia (USA). November 2008
Krause, B., Wahls, T.: jmle: a tool for executing JML specifications via constraint programming. In: Proceedings of the Formal Methods for Industrial Critical Systems (FMICS). LNCS, vol. 4346. March, 2009
Kulczycki, G.: Resolve-style components in Java. In: Proceedings of the RESOLVE Workshop, Virginia, USA (2009)
Leavens, G.T.: The Java Modeling Language (JML). http://www.jmlspecs.org (2007)
Leavens, G.T., Cheon, Y.: Design by contract with JML. http://www.jmlspecs.org (2006)
Leavens G.T., Leino K.R.M., Mueller P.: Specification and verification challenges for sequential object-oriented programs. Form. Asp. Comput. J. 19(2), 159–189 (2007)
Leavens, G.T., Poll, E., Clifton, C., Cheon, Y., Ruby, C., Cok, D., Müller, P., Kiniry, J., Chalin, P.: JML Reference Manual. http://www.jmlspecs.org (2008)
Meyer B.: Applying design by contract. Computer 25(10), 40–51 (1992)
Rieken J. (2007) Design by contract for Java—revised. Master’s thesis: Universität Oldenburg
Rieken, J.: Modern Jass. http://modernjass.sourceforge.net/ (2007)
Robby: Sireum. http://www.sireum.org (2009)
Robby, Chalin, P.: Preliminary Design of a unified JML representation and software infrastructure. In: Proceedings of the 11th Workshop on Formal Techniques for Java-like Programs (FTfJP’09), Genova, Italy. July 2009
Robby, Dwyer, M.B., Hatcliff, J.: Bogor: An extensible and highly-modular model checking framework. In: Proceedings of the ACM SIGSOFT Symposium on the Foundations of Software Engineering, pp. 267–276 (2003)
Schirmer N.: A sequential imperative programming language syntax, semantics, Hoare logics and verification environment. In: Isabelle Archive of Formal Proofs (2008)
Smith, H., Harton, H., Frazier, D., Mohan, R., Sitaraman, M.: Generating verified Java components through RESOLVE. In: Proceedings of the International Conference on Software Reuse (ICSR), Virginia, USA. LNCS, vol. 5791, pp. 11–20 (2009)
Sun Developer Network.: Annotation Processing Tool. http://java.sun.com/j2se/1.5.0/docs/guide/apt (2004)
Taylor, K.B.: A specification language design for the Java Modeling Language (JML) using Java 5 annotations. Masters thesis, Iowa State University (2008)
Taylor, K.B., Rieken, J., Leavens, G.T.: Adapting the Java Modeling Language (JML) for Java 5 Annotations. Department of Computer Science, Iowa State University, TR 08-06 (2008)
van den Berg J., Jacobs B.: The LOOP compiler for Java and JML. In: Margaria, T., Yi, W. (eds) Proceedings of the Tools and Algorithms for the Construction and Analysis of Software (TACAS). LNCS, vol. 2031, pp. 299–312. Springer, Berlin (2001)
Wilson, T., Maharaj, S., Clark, R.G.: Omnibus: A clean language and supporting tool for integrating different assertion-based verification techniques. In: Proceedings of the Proceedings of REFT 2005, Newcastle, UK. July 2005
Wing J.M.: Writing Larch interface language specifications. ACM Trans. Program. Lang. Syst. 9(1), 1–24 (1987)
Zee, K., Kuncak, V., Rinard, M.C.: Full functional verification of linked data structures. In: Proceedings of the ACM Conference on Programming Language Design and Implementation (PLDI) (2008)
Zee, K., Kuncak, V., Rinard, M.C.: An integrated proof language for imperative programs. In: Proceedings of the ACM Conference on Programming Language Design and Implementation (PLDI) (2009)
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
About this article
Cite this article
Chalin, P., Robby, James, P.R. et al. Towards an industrial grade IVE for Java and next generation research platform for JML. Int J Softw Tools Technol Transfer 12, 429–446 (2010). https://doi.org/10.1007/s10009-010-0164-8
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10009-010-0164-8