Synchronous and Bidirectional Component Interfaces

We present interface models that describe both the input assumptions of a component, and its output behavior. By enabling us to check that the input assumptions of a component are met in a design, interface models provide a compatibility check for component-based design. When refining a design into an implementation, interface models require that the output behavior of a component satisfies the design specification only when the input assumptions of the specification are satisfied, yielding greater flexibility in the choice of implementations. Technically, our interface models are games between two players, Input and Output; the duality of the players accounts for the dual roles of inputs and outputs in composition and refinement. We present two interface models in detail, one for a simple synchronous form of interaction between components typical in hardware, and the other for more complex synchronous interactions on bidirectional connections. As an example, we specify the interface of a bidirectional bus, with the input assumption that at any time at most one component has write access to the bus. For these interface models, we present algorithms for compatibility and refinement checking, and we describe efficient symbolic implementations.

[1]  Thomas A. Henzinger,et al.  Reactive Modules , 1999, Formal Methods Syst. Des..

[2]  C. A. R. Hoare,et al.  Communicating sequential processes , 1978, CACM.

[3]  Thomas A. Henzinger,et al.  MOCHA: Modularity in Model Checking , 1998, CAV.

[4]  Samson Abramsky Game Semantics for Programming Languages (Abstract) , 1997, MFCS.

[5]  Seif Haridi,et al.  Distributed Algorithms , 1992, Lecture Notes in Computer Science.

[6]  Zohar Manna,et al.  The Temporal Logic of Reactive and Concurrent Systems , 1991, Springer New York.

[7]  Rajagopal Nagarajan,et al.  A Type-Theoretic Approach to Deadlock-Freedom of Asynchronous Systems , 1997, TACS.

[8]  Nancy A. Lynch,et al.  Hierarchical correctness proofs for distributed algorithms , 1987, PODC '87.

[9]  John C. Mitchell,et al.  Foundations for programming languages , 1996, Foundation of computing series.

[10]  Martín Abadi,et al.  Realizable and Unrealizable Specifications of Reactive Systems , 1989, ICALP.

[11]  David L. Dill,et al.  Trace theory for automatic hierarchical verification of speed-independent circuits , 1989, ACM distinguished dissertations.

[12]  Frank Thomson Leighton,et al.  Trace Theory for Automatic Hierarchical Verification of Speed-Independent Circuits , 1988 .

[13]  Samson Abramsky Games in the Semantics of Programming Languages , 1997 .

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

[15]  Kenneth L. McMillan,et al.  Symbolic model checking , 1992 .

[16]  Robin Milner,et al.  An Algebraic Definition of Simulation Between Programs , 1971, IJCAI.

[17]  Robin Milner,et al.  Communication and concurrency , 1989, PHI Series in computer science.

[18]  Thomas A. Henzinger,et al.  Interface Theories for Component-Based Design , 2001, EMSOFT.

[19]  Thomas A. Henzinger,et al.  Alternating Refinement Relations , 1998, CONCUR.

[20]  Thomas A. Henzinger,et al.  jMocha: a model checking tool that exploits design structure , 2001, Proceedings of the 23rd International Conference on Software Engineering. ICSE 2001.