Distributed applications support people and organizations to achieve their real-world objectives. As the real world changes, so must the distributed applications. Distributed applications need to evolve to support new people and organizations, their new objectives, and the new policies and behaviours by which those objectives can be achieved. The aim of this thesis is to design an architecture that can support the evolution of a distributed application at runtime. A part of this goal is the desire to avoid imposing arbitrary rules on how, or when, each entity within an application should be evolved. In addition, the aim of the thesis is to specify the relationships and actions between the people and organisations that own portions of an application, as part of the process of evolution.
Most of the work to date in the area of distribution middleware has focused on solving the issues related to supporting distributed data and computation, and minimal consideration has been given to the issues associated with supporting run-time evolution of the data and computation. Middleware architectures describing the distribution of data and computation, such as Object Management Group's CORBA and Microsoft's DCOM, commonly allow support for interfaces that guarantee clients a fixed set of operations; that is, the interfaces are unchangeable. Additionally, they allow support for flexible interfaces that provide no guarantees for clients regarding the operations supported at any time; that is, the interfaces are changeable without consideration for client side effects. Many programming languages do not provide any support for evolution of their runtime entities.
The architecture proposed in this thesis to support the evolution of object-oriented distributed applications is called the Morphing Architecture. The Morphing Architecture considers this problem from both the perspective of the people and organisations who own the application, and the perspective of the technological mechanisms required to enable independently-owned distributed objects to evolve within a distributed application, whilst maintaining structural and behaviour consistency throughout the application.
An enterprise-level evolution model for object-based distributed application from the perspective of the owners of the application is presented. This enterprise specification is used to model and organise owners through the process of proposing, evaluating and participating in their application's evolution
This thesis describes the information necessary to support the safe evolution of objects, and introduces mechanisms to ensure that individual distributed objects will only evolve at times that ensure the structural and behavioural consistency of the application. This thesis also introduces the additional objects within the Morphing Architecture that facilitate the evolution of an application and its objects. The interfaces of these objects are specified and their interactions are demonstrated to illustrate the Morphing Architecture's potential for implementation within any programming language and middleware combination.
Finally, the feasibility of the Morphing Architecture is demonstrated via two implementations in Smalltalk and Python, using CORBA-compliant middleware extensions to support distributed applications. For each prototype, the language-specific design and programming idioms are described.