Protocol specifications and component adaptors

In this article we examine the augmentation of application interfaces with enhanced specications that include sequencing constraints called protocols. Protocols make explicit the relationship between messages (methods) supported by the application. These relationships are usually only given implicitly, either in the code or in textual comments. We dene notions of interface compatibility based upon protocols and show how compatibility can be checked, discovering a class of errors that cannot be discovered via the type system alone. We then dene software adaptors that can be used to bridge the dierence between applications that have functionally compatible but type- and protocol-incompatible interfaces. We discuss what it means for an adaptor to be well formed. Leveraging the information provided by protocols, we show how adaptors can be automatically generated from a high-level description, called an interface mapping.

[1]  Gary A. Kildall,et al.  A unified approach to global program optimization , 1973, POPL.

[2]  Roy H. Campbell,et al.  The specification of process synchronization by path expressions , 1974, Symposium on Operating Systems.

[3]  Daniel Brand,et al.  On Communicating Finite-State Machines , 1983, JACM.

[4]  Eric G. Manning,et al.  On the Progress of Communications between Two Finite State Machines , 1984, Inf. Control..

[5]  Kaoru Okumura A formal protocol conversion method , 1986, SIGCOMM '86.

[6]  Robert E. Strom,et al.  Typestate: A programming language concept for enhancing software reliability , 1986, IEEE Transactions on Software Engineering.

[7]  Mohamed G. Gouda,et al.  On deadlock detection in systems of communicating finite state machines , 1987 .

[8]  Simon S. Lam Protocol Conversion , 1988, IEEE Trans. Software Eng..

[9]  Ming T. Liu,et al.  A synchronization model for protocol conversion , 1989, IEEE INFOCOM '89, Proceedings of the Eighth Annual Joint Conference of the IEEE Computer and Communications Societies.

[10]  Daniel M. Yellin,et al.  Hermes - a language for distributed computing , 1991, Prentice Hall series in innovative technology.

[11]  Jan van den Bos,et al.  A concurrent object-oriented language with protocols delegation and constraints , 2005 .

[12]  James M. Purtilo,et al.  Module reuse by interface adaptation , 1991, Softw. Pract. Exp..

[13]  Gio Wiederhold,et al.  Mediators in the architecture of future information systems , 1992, Computer.

[14]  Oscar Nierstrasz,et al.  Regular types for active objects , 1993, OOPSLA '93.

[15]  Daniel M. Yellin,et al.  Extending Typestate Checking Using Conditional Liveness Analysis , 1993, IEEE Trans. Software Eng..

[16]  Xavier Pintado,et al.  Gluons: a Support for Software Component Cooperation , 1993, ISOTAS.

[17]  Dimitri Konstantas Object Oriented Interoperability , 1993, ECOOP.

[18]  Joshua S. Auerbach,et al.  Concert/C: A Language for Distributed Programming , 1994, USENIX Winter.

[19]  Satish R. Thatte,et al.  Automated synthesis of interface adapters for reusable classes , 1994, POPL '94.

[20]  David Garlan,et al.  Formalizing Architectural Connection , 1994, ICSE.

[21]  Daniel M. Yellin,et al.  A Checkable Interface Language for Pointer-Based Structures , 1994, Workshop on Interface Definition Languages.

[22]  Daniel M. Yellin,et al.  A checkable interface language for pointer-based structures , 1994 .

[23]  David Garlan,et al.  Architectural Mismatch or Why it's hard to build systems out of existing parts , 1995, 1995 17th International Conference on Software Engineering.

[24]  Walter Mann,et al.  Correction to "Specification and Analysis of System Architecture Using Rapide" , 1995, IEEE Trans. Software Eng..

[25]  Guang R. Gao,et al.  ABC++: Concurrency by Inheritance in C++ , 1995, IBM Syst. J..

[26]  Carsten Malischewski ComponentWare , 1995, Wirtsch..

[27]  Ken Arnold,et al.  The Java Programming Language , 1996 .

[28]  Ken Arnold,et al.  The Java programming language (2nd ed.) , 1998 .