Name: Shilpashree Srinivasamurthy Subject: ACS 560- Software Engineering Term: Fall 2010 Chapter 13: Architectural Design of Distributed Applications Textbook: Designing Concurrent, Distributed, and Real-Time Applications with UML This chapter describes how the COMET design method addresses the design of distributed concurrent and distributed real-time applications. The chapter initially talks about designing steps of distributed applications and then goes in details of each of these steps. The three main steps in designing a distributed application are: System decomposition, Subsystem decomposition and System configuration. System Decomposition forms the first step in the design of a distributed application. In this step an application is structured into subsystems, where each subsystem can potentially execute on its own node. In order to design a distributed subsystem, a good basis for subsystem structuring is to consider use-case-based collaboration diagram, which shows the objects that communicate frequently with each other. There are two types of subsystems namely aggregate subsystems and composite subsystems. This chapter explains these subsystems with respect to COMET. In COMET, an aggregate subsystem is a logical grouping of subsystems and/ or objects that can be depicted as package in UML. A composite subsystem in COMET is a component that encapsulates the objects it contains. The chapter also explains about the various distributed component configuration criteria that are provided to help ensure that subsystems are designed effectively as configurable distributed components. After the decomposition is performed the interfaces between the subsystems must be defined. Tasks in different subsystems can communicate with each other in various types of message communication: - Loosely couples (Asynchronous) message communication: Here the producer task sends a message to the consumer task and does not wait for a reply. - Tightly Coupled (Synchronous) message communication: The client sends a message to the server and waits for a response - Multiple client/server message communication: Here several clients request services from a server by sending messages to it through either asynchronous or synchronous message communication. - Subscription/Notification and Group message communication: Group message communication is a form of one-to-many message communication in which the sender sends one message to many recipients. Distributed applications support - - two types of group message communications namely broadcast communication and multicast communication. Subscription/Notification is a form of group communication in which tasks subscribe to a group and receive messages destined for all members of the group. Brokered Communication: An object broker is an intermediary in interactions between clients and servers. A client sends a message identifying the service required. The object broker receives the client request, determines the location of the server and forwards the message to the server at the specific location. The message arrives at the server and the requested service is invoked. Negotiated communication: The following are the communication services provided to allow the software agents to negotiate with each other. o The client agent on behalf of the client may propose service, and/or request service, and/or reject server offer. o The server agent on behalf of the server may offer a service, and/or reject client request/proposal, and/or accept client request/proposal. The chapter then talks about transaction management along with two-phase commit protocol in transaction processing systems. A transaction consists of two or more operations that perform a single logical function, and which must be completed in its entirety or not at all. Two-phase commit protocol synchronizes the updates on different nodes in distributed applications. The result of the two-phase commit protocol is that either the transaction is committed and all updates succeed, or the transaction is aborted and all updates fail. The next section talks about the design of the server subsystems which provide service for client subsystems. There are two types of server subsystems: - Sequential Server Subsystem: A sequential server subsystem services client requests sequentially. - Concurrent Server Subsystem: In concurrent server subsystems, several tasks might wish to access the data repository at the same time, so access needs to be synchronized. The next section talks about data distribution which addresses the disadvantages of centralized servers. There are two approaches for data distribution namely distributed server in which the data collected at several locations is stored at those locations each of which has a local server that responds to the client requests of that corresponding location and data replication in which the same data is duplicated in more than one location to speed up access to the data Finally the chapter talks about system configuration illustrating the target system configuration with an example. During system configuration, an instance of the distributed application- referred to as a target system- is defined and mapped to a distributed configuration consisting of multiple geographically distributed physical nodes connected by a network. During target system configuration the instances of the component types are defined, component instances are interconnected and the component instances (logical nodes) are mapped to physical nodes.