Laws for dynamic systems

A dynamic system is one which changes its configuration as it runs. It is a system into which we can drop new components which then cooperate with the existing ones. Such systems are necessarily built from reusable components, since as soon as the system is reconfigured to use some new components, those new components must reuse the existing, still running, ones. Design of reusable components in this context is an important problem. We suggest three laws which such reusable components might be required to obey, if dynamic systems are to be effective and to be economically built. We illustrate our conjecture that the laws are effective by describing a generic architecture based on the familiar registry services of COM/OLE or CORBA and by describing a simple point of sale system built according to this architecture. We conclude, of course, that some interesting open questions remain. But we suggest that an approach to reuse based on refining the three laws is a promising direction for system architecture to take.

[1]  Luca Cardelli,et al.  A language with distributed scope , 1995, POPL '95.

[2]  Naranker Dulay,et al.  Specifying Distributed Software Architectures , 1995, ESEC.

[3]  Peter Henderson,et al.  Software processes are business processes too , 1994, Proceedings of the Third International Conference on the Software Process. Applying the Software Process.

[4]  Kevin J. Sullivan,et al.  Using Formal Methods to Reason about Architectural Standards , 1996, Proceedings of the (19th) International Conference on Software Engineering.

[5]  Peter Henderson,et al.  Executing formal specifications need not be harmful , 1996, Softw. Eng. J..

[6]  Peter Henderson Formal Models of Process Components , 1997 .

[7]  C. A. R. Hoare,et al.  How Did Software Get So Reliable Without Proof? , 1996, FME.

[8]  Peter Henderson,et al.  POSD-a notation for presenting complex systems of processes , 1995, Proceedings of First IEEE International Conference on Engineering of Complex Computer Systems. ICECCS'95.

[9]  Susan S. Owicki,et al.  Network objects , 1995 .

[10]  Peter B. Henderson,et al.  Functional programming, formal specification, and rapid prototyping , 1986, IEEE Transactions on Software Engineering.

[11]  Kevin J. Sullivan,et al.  Experience assessing an architectural approach to large-scale systematic reuse , 1996, Proceedings of IEEE 18th International Conference on Software Engineering.

[12]  David Garlan,et al.  Specifying Dynamism in Software Architectures , 1997 .

[13]  Robin Milner,et al.  Elements of interaction , 1993 .

[14]  Bhavani M. Thuraisingham,et al.  Evolvable real-time C3 systems , 1995, Proceedings of First IEEE International Conference on Engineering of Complex Computer Systems. ICECCS'95.

[15]  David N. Turner,et al.  The polymorphic Pi-calculus : theory and implementation , 1996 .

[16]  Robin Milner,et al.  Elements of interaction: Turing award lecture , 1993, CACM.

[17]  Marc Najork,et al.  Distributed Active Objects , 1996, Comput. Networks.

[18]  Robin Milner,et al.  The Polyadic π-Calculus: a Tutorial , 1993 .

[19]  Jeff Magee,et al.  Dynamic structure in software architectures , 1996, SIGSOFT '96.