Next: 3 Simulating Dynamism
Up: Specifying Dynamism in Software
Previous: 1 Introduction
Consider the simple client-server system shown in Figure 1. It consists of one client and one server interacting via a ``link" connector. Such a system is easy to describe in a steady-state ADL such as Wright. A description would capture the structure of the architecture, describing the topology of the system and its composition, as well as the behavior of the system as a whole. Each component description provides a high-level specification of its functionality and interfaces, while the connector specification indicates how the ``link" pattern of interaction combines the behaviors of a client and a server. In this case, the client makes a request, which is received by the server, and the server provides a response, which is communicated by the client. This sequence of actions can be repeated many times.
Note, however, that the server role will never terminate until the client is ready. But, what of a more realistic situation, where the server is running on an unreliable processor over a network, and may crash unexpectedly? In this case, the architect must consider two aspects of a robust architectural design. First is the simple view of the functionality, in which the client makes a request of the server, and receives a response. Second is the architect's solution to the problem of server crashes (i.e., the way in which a server is restarted or replaced so that there is always a service available for the client).
Robert Allen, Remi Douence, and David Garlan