Runtime validation of behavioural contracts for component software

In component software, the independence of components is achieved by separating their interfaces from implementations. The interface definition of a component serves as the contract with its neighbouring components regarding the use of its services. In general, such a contract should cover issues beyond interface signatures, such as service functionality, usage and quality. The interface definition languages (IDLs) used by commercial middleware such as CORBA, however, lack mechanisms for capturing such semantic characteristics. In this paper, we introduce a framework and associated techniques that augment commercial IDLs with behavioural contract specifications and validate at runtime component interactions against such contracts. The behavioural contract of a component describes occurrence or sequencing constraints on its interactions with the environment. The validation of such constraints is achieved by intercepting runtime interactions between components and validating them against the finite state automata that semantically represent the constraints. The validation provides a useful tool for testing whether the component services are used properly and whether the component fulfils its behavioural obligations in a distributed system.

[1]  Christine Hofmeister,et al.  Enforcing a lips usage policy for CORBA components , 2003, 2003 Proceedings 29th Euromicro Conference.

[2]  Grigore Rosu,et al.  An Overview of the Runtime Verification Tool Java PathExplorer , 2004, Formal Methods Syst. Des..

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

[4]  Lidia Fuentes,et al.  Extending CORBA Interfaces with Protocols , 2001, Comput. J..

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

[6]  Thomas A. Henzinger,et al.  Interface automata , 2001, ESEC/FSE-9.

[7]  Ann Q. Gates,et al.  DynaMICs: Comprehensive Support for Run-Time Monitoring , 2001, RV@CAV.

[8]  George S. Avrunin,et al.  Patterns in property specifications for finite-state verification , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[9]  Paolo Ciancarini,et al.  Architecting families of software systems with process algebras , 2002, TSEM.

[10]  簡聰富,et al.  物件導向軟體之架構(Object-Oriented Software Construction)探討 , 1989 .

[11]  Jun Han,et al.  Ensuring compatible interactions within component-based software systems , 2003, Tenth Asia-Pacific Software Engineering Conference, 2003..

[12]  Premkumar T. Devanbu,et al.  Adding more "DL" to IDL: towards more knowledgeable component inter-operability , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[13]  Daniel M. Yellin,et al.  Protocol specifications and component adaptors , 1997, TOPL.

[14]  David Garlan,et al.  A formal basis for architectural connection , 1997, TSEM.

[15]  George S. Avrunin,et al.  Property specification patterns for finite-state verification , 1998, FMSP '98.

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

[17]  Ann Q. Gates,et al.  A taxonomy and catalog of runtime software-fault monitoring tools , 2004, IEEE Transactions on Software Engineering.

[18]  Terry Shepard,et al.  Techniques for Embedding Executable Specifications in Software Component Interfaces , 2003, ICCBSS.

[19]  Mahesh Viswanathan,et al.  Java-MaC: A Run-Time Assurance Approach for Java Programs , 2004, Formal Methods Syst. Des..

[20]  Jun Han,et al.  Specifying Interaction Constraints of Software Components for Better Understandability and Interoperability , 2005, ICCBSS.

[21]  Xavier Logean Run-time monitoring and on-line testing of middleware based communication services , 2000 .

[22]  Philippe A. Palanque,et al.  Formal Specification and Prototyping of CORBA Systems , 1999, ECOOP.

[23]  Ralf H. Reussner An Enhanced Model for Component Interfaces to Support Automatic and Dynamic Adaption , 2000 .

[24]  Frantisek Plasil,et al.  Behavior Protocols for Software Components , 2002, IEEE Trans. Software Eng..

[25]  Heike Wehrheim,et al.  Jass - Java with Assertions , 2001, RV@CAV.