JML: A Notation for Detailed Design
JML is a behavioral interface specification language tailored to Java. It is designed to be written and read by working software engineers, and should require only modest mathematical training. It uses Eiffel-style syntax combined with model-based semantics, as in VDM and Larch. JML supports quantifiers, specification-only variables, and other enhancements that make it more expressive for specification than Eiffel and easier to use than VDM and Larch.
KeywordsMathematical Notation Detailed Design Specification Language Priority Queue Behavioral Specification
Unable to display preview. Download preview PDF.
- [AG98]Arnold, K. and Gosling, J. The Java Programming Language. The Java Series. Addison-Wesley, Reading, MA, second edition, 1998.Google Scholar
- [DL96]Dhara, K. K. and Leavens, G. T. Forcing behavioral subtyping through specification inheritance. In Proceedings of the 18th International Conference on Software Engineering, Berlin, Germany, pages 258–267. IEEE Computer Society Press, March 1996. A corrected version is Iowa State University, Dept. of Computer Science TR #95-20c.Google Scholar
- [H93]Hayes, I., editor.Specification Case Studies. International Series in Computer Science. Prentice-Hall, Inc., second edition, 1993.Google Scholar
- [J90]Jones, C. B. Systematic Software Development Using VDM. International Series in Computer Science. Prentice Hall, Englewood Cliffs, N.J., second edition, 1990.Google Scholar
- [KL92]Kiczales, G. and Lamping, J. Issues in the design and documentation of class libraries. ACM SIGPLAN Notices, 27(10):435–451, October 1992. OOPSLA’ 92 Proceedings, Andreas Paepcke (editor).Google Scholar
- [L91]Lerner, R. A. Specifying objects of concurrent systems. Ph.D. Thesis CMU-CS-91-131, School of Computer Science, Carnegie Mellon University, May 1991.Google Scholar
- [L95a]Leino, K. R. M. A myth in the modular specification of programs. Technical Report KRML 63, Digital Equipment Corporation, Systems Research Center, 130 Lytton Avenue Palo Alto, CA 94301, November 1995. Obtain from the author, at firstname.lastname@example.org.Google Scholar
- [L95b]Leino, K. R. M. Toward Reliable Modular Programs. PhD thesis, California Institute of Technology, 1995. Available as Technical Report Caltech-CS-TR-95-03.Google Scholar
- [L96]Leavens, G. T. An overview of Larch/C++: Behavioral specifications for C++ modules. In Kilov, H. and Harvey, W., editors, Specification of Behavioral Semantics in Object-Oriented Information Modeling, chapter 8, pages 121–142. Kluwer Academic Publishers, Boston, 1996. An extended version is TR #96-01d, Department of Computer Science, Iowa State University, Ames, Iowa, 50011.CrossRefGoogle Scholar
- [L98]Leavens, G. T. Larch frequently asked questions. Version 1.89. Available in http://www.cs.iastate.edu/~leavens/larch-faq.html, January 1998.
- [L99]Leavens, G. T. Larch/C++ Reference Manual. Version 5.41. Available in ftp://ftp.cs.iastate.edu/pub/larchc++/lcpp.ps.gz or on the World Wide Web at the URL http://www.cs.iastate.edu/~leavens/larchc++.html, April 1999.
- [LB99]Leavens, G. T. and Baker, A. L. Enhancing the pre-and postcondition technique for more expressive specifications. Technical Report 97-19a, Iowa State University, Department of Computer Science, February 1999.Google Scholar
- [LBR99]Leavens, G. T, Baker, A. L., and Ruby, C. Preliminary design of JML: A behavioral interface specification language for Java. Technical Report 98-06e, Iowa State University, Department of Computer Science, June 1999.Google Scholar
- [LH94]Lano, K. and Haughton, H., editors. Object-Oriented Specification Case Studies. The Object-Oriented Series. Prentice Hall, New York, N.Y., 1994.Google Scholar
- [M92b]Meyer, B. Eiffel: The Language. Object-Oriented Series. Prentice Hall, New York, N.Y., 1992.Google Scholar
- [PH97]Poetzsch-Heffter, A. Specification and verification of object-oriented programs. Habilitation thesis, Technical University of Munich, January 1997.Google Scholar
- [S92]Spivey, J. M. The Z Notation: A Reference Manual.International Series in Computer Science.Prentice-Hall, New York, N.Y.,second edition, 1992.Google Scholar
- [S95]Sivaprasad, G. Larch/CORBA: Specifying the behavior of CORBA-IDL interfaces. Technical Report 95-27a, Department of Computer Science, Iowa State University, Ames, Iowa, 50011, December 1995.Google Scholar
- [SLMD96]Steyaert, P., Lucas, C, Mens, K., and D’Hondt, T. Reuse contracts: Managing the evolution of reusable assets. In OOPSLA’ 96 Conference on Object-Oriented Programming Systems, Languagges and Applications, pages 268–285. ACM Press, October 1996. ACM SIGPLAN Notices, Volume 31, Number 10.Google Scholar
- [T95]Tan, Y. M. Formal Specification Techniques for Engineering Modular C Programs, volume 1 of Kluwer International Series in Software Engineering. Kluwer Academic Publishers, Boston, 1995.Google Scholar
- [W83]Wing, J. M. A two-tiered approach to specifying programs. Technical Report TR-299, Massachusetts Institute of Technology, Laboratory for Computer Science, 1983.Google Scholar
- [W94]Wills, A. Refinement in Fresco. In Lano and Houghton [LH94], chapter 9, pages 184–201.Google Scholar
- [WLB98]Wahls, T., Leavens, G. T, and Baker, A. L. Executing formal specifications with constraint programming. Technical Report 97-12a, Department of Computer Science, Iowa State University, 226 Atanasoff Hall, Ames, Iowa 50011, August 1998. Available by anonymous ftp from ftp.cs.iastate.edu or by e-mail from almanac @ cs.iastate.edu.Google Scholar