The POLYLITH software bus

We describe a system called POLYLITH that helps programmers prepare and interconnect mixed-language software components for execution in heterogeneous environments. POLYLITH's principal benefit is that programmers are free to implement functional requirements separately from their treatment of interfacing requirements; this means that once an application has been developed for use in one execution environment (such as a distributed network) it can be adapted for reuse in other environments (such as a shared-memory multiprocessor) by automatic techniques. This flexibility is provided without loss of performance. We accomplish this by creating a new run-time organization for software. An abstract decoupling agent, called the software bus, is introduced between the system components. Heterogeneity in language and architecture is accommodated since program units are prepared to interface directly to the bus and not to other program units. Programmers specify application structure in terms of a module interconnection language (MIL); POLYLITH uses this specification to guide packaging (static interfacing activities such as stub generation, source program adaptation, compilation, and linking). At run time, an implementation of the bus abstraction may assist in message delivery, name service, or system reconfiguration.

[1]  Andrew P. Black,et al.  Fine-grained mobility in the Emerald system , 1988, TOCS.

[2]  Mehdi T. Harandi,et al.  Intelligent Support for Software Specification and Design , 1986, IEEE Expert.

[3]  Richard T. Snodgrass,et al.  Mapping the Interface Description Language Type Model into C , 1989, IEEE Trans. Software Eng..

[4]  Data processing-open systems interconnection - basic reference model , 1981, CCRV.

[5]  Richard E. Sweet The Mesa programming environment , 1985, ACM SIGPLAN Notices.

[6]  Hans H. Kron,et al.  Programming-in-the-Large Versus Programming-in-the-Small , 1975, IEEE Transactions on Software Engineering.

[7]  James M. Purtilo,et al.  An environment for prototyping distributed applications , 1989, [1989] Proceedings. The 9th International Conference on Distributed Computing Systems.

[8]  Brian N. Bershad,et al.  Lightweight remote procedure call , 1990 .

[9]  David Notkin,et al.  Gandalf: Software development environments , 1986, IEEE Transactions on Software Engineering.

[10]  Jack C. Wileden,et al.  The AdaPIC Tool Set: Supporting Interface Control and Analysis Throughout the Software Development Process , 1989, IEEE Trans. Software Eng..

[11]  Phillip B. Gibbons A Stub Generator for Multilanguage RPC in Heterogeneous Environments , 1987, IEEE Transactions on Software Engineering.

[12]  David Notkin The GANDALF project , 1985, J. Syst. Softw..

[13]  David Alex Lamb,et al.  IDL: sharing intermediate representations , 1987, TOPL.

[14]  Yi-Hsiu Wei,et al.  CONCERT: a high-level-language approach to heterogeneous distributed systems , 1989, [1989] Proceedings. The 9th International Conference on Distributed Computing Systems.

[15]  Richard E. Sweet The Mesa programming environment , 1985, SLIPE '85.

[16]  Michael B. Jones,et al.  Matchmaker: an interface specification language for distributed processing , 1985, POPL.

[17]  David R. Cheriton,et al.  The V distributed system , 1988, CACM.

[18]  Joshua J. Bloch The Camelot library: A C language extension for programming a general purpose distributed transaction system , 1989, [1989] Proceedings. The 9th International Conference on Distributed Computing Systems.

[19]  Michael L. Scott,et al.  Experience with Charlotte: Simplicity and Function in a Distributed Operating System , 1989, IEEE Trans. Software Eng..

[20]  Douglas R. Miller Exponential order statistic models of software reliability growth , 1986, IEEE Transactions on Software Engineering.

[21]  Stuart I. Feldman,et al.  Make — a program for maintaining computer programs , 1979, Softw. Pract. Exp..

[22]  Jack C. Wileden,et al.  Specification-level interoperability , 1991, CACM.

[23]  Craig Schaffert,et al.  CLU Reference Manual , 1984, Lecture Notes in Computer Science.

[24]  James M. Purtilo,et al.  An Environment for Developing Fault-Tolerant Software , 1991, IEEE Trans. Software Eng..

[25]  David P. Anderson,et al.  Marionette: a system for parallel distributed programming using a master/slave model , 1989, [1989] Proceedings. The 9th International Conference on Distributed Computing Systems.

[26]  Walter F. Tichy Software Development Control Based On System Structure Description , 1980 .

[27]  Liuba Shrira,et al.  Promises: linguistic support for efficient asynchronous procedure calls in distributed systems , 1988, PLDI '88.

[28]  Barbara Liskov,et al.  Distributed programming in Argus , 1988, CACM.

[29]  Mario R. Barbacci,et al.  Developing Applications for Heterogeneous Machine Networks: The Durra Environment , 1989 .

[30]  Iv R. B. Essick The cross-architecture procedure call , 1987 .

[31]  James M. Purtilo,et al.  A methodology for prototyping-in-the-large , 1991, [1991 Proceedings] 13th International Conference on Software Engineering.

[32]  Brian N. Bershad,et al.  Lightweight remote procedure call , 1989, TOCS.

[33]  Sun Microsystems,et al.  XDR: External Data Representation standard , 1987, RFC.

[34]  Andrew P. Black,et al.  Interconnecting heterogeneous computer systems , 1988, CACM.

[35]  Maurice Herlihy,et al.  A Value Transmission Method for Abstract Data Types , 1982, TOPL.

[36]  L.M.G. Feijs,et al.  The interface description language: definition and use. , 1990 .

[37]  James M. Purtilo,et al.  An Environment for Prototyping Distributed Applications , 1991, Comput. Lang..

[38]  Morris Sloman,et al.  Constructing Distributed Systems in Conic , 1989, IEEE Trans. Software Eng..

[39]  Richard D. Schlichting,et al.  A simple system for constructing distributed, mixed‐language programs , 1988, Softw. Pract. Exp..

[40]  Richard T. Snodgrass Interface description language - definition and use , 1989, Principles of computer science series.

[41]  NotkinDavid,et al.  Interconnecting heterogeneous computer systems , 1988 .

[42]  Dewayne E. Perry The inscape environment , 1989, ICSE '89.

[43]  James Marvin Purtilo A software interconnection technology to support specification of computational environments (polylith, module interconnection language) , 1986 .

[44]  Hans H. Kron,et al.  Programming-in-the-Large Versus Programming-in-the-Small , 1975 .

[45]  James M. Purtilo MINION: an environment to organize mathematical problem solving , 1989, ISSAC '89.

[46]  James M. Purtilo,et al.  Environments for Prototyping Parallel Algorithms , 1988, J. Parallel Distributed Comput..

[47]  Greg Thiel,et al.  LOCUS a network transparent, high reliability distributed system , 1981, SOSP.