Techniques for Embedding Executable Specifications in Software Component Interfaces

In this paper, we consider interface contracts as a possible mechanism for improving semantic integrity in component-based systems. A contract is essentially a formal specification interleaved with code and allowing a component or object to unambiguously specify its behaviour. The existing techniques that we survey are predominantly designed for object-oriented systems; we therefore investigate the extent to which they can be scaled up to the level of components, and embedded in interface specifications rather than code. We conclude that interleaved specifications are viable and useful at the level of components, but that future work is required to develop languages that can express the constraints that are important at this level of granularity.

[1]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[2]  Edmund M. Clarke,et al.  Formal Methods: State of the Art and Future Directions Working Group Members , 1996 .

[3]  Ivar Jacobson,et al.  The Unified Modeling Language User Guide , 1998, J. Database Manag..

[4]  Ernesto Pimentel,et al.  Design by Contract in Smalltalk , 1996, J. Object Oriented Program..

[5]  Jeannette M. Wing Writing Larch interface language specifications , 1987, TOPL.

[6]  Cynthia Della Torre Cicalese,et al.  Behavioral Specification of Distributed Software Component Interfaces , 1999, Computer.

[7]  Jos Warmer,et al.  The object constraint language , 1998 .

[8]  Sankar Gowri Sivaprasad Larch/CORBA: Specifying the Behavior of CORBA-IDL Interfaces , 1995 .

[9]  Bertrand Meyer,et al.  Eiffel: The Language , 1991 .

[10]  Cliff B. Jones,et al.  Systematic software development using VDM , 1986, Prentice Hall International Series in Computer Science.

[11]  Olaf Owe,et al.  ANNA A Language for Annotating Ada Programs , 1987, Lecture Notes in Computer Science.

[12]  Reinhold Plösch Design by Contract for Python , 1997, APSEC.

[13]  R. Kramer iContract - The Java(tm) Design by Contract(tm) Tool , 1998 .

[14]  Anneke Kleppe,et al.  The object constraint language: precise modeling with UML , 1998 .

[15]  Philippe A. Palanque,et al.  Formal specification of CORBA services: experience and lessons learned , 2000, OOPSLA '00.

[16]  John L. Bruno,et al.  jContractor: A Reflective Java Library to Support Design by Contract , 1999, Reflection.

[17]  James J. Horning,et al.  The Larch Family of Specification Languages , 1985, IEEE Software.

[18]  Desmond D'Souza,et al.  Objects, Components, and Frameworks with UML: The Catalysis Approach , 1998 .

[19]  J. Michael Spivey,et al.  The Z notation - a reference manual , 1992, Prentice Hall International Series in Computer Science.

[20]  Wolfram Schulte,et al.  Spying on Components: A Runtime Verification Technique , 2001 .

[21]  Douglas C. Schmidt,et al.  An overview of the Real-Time CORBA specification , 2000, Computer.

[22]  Albert L. Baker,et al.  JML: A Notation for Detailed Design , 1999, Behavioral Specifications of Businesses and Systems.

[23]  C. A. R. Hoare,et al.  An axiomatic basis for computer programming , 1969, CACM.

[24]  Doug Lea,et al.  Using Annotated C , 1990 .

[25]  Kate Finney,et al.  Mathematical Notation in Formal Specification: Too Difficult for the Masses? , 1996, IEEE Trans. Software Eng..