Name: Shilpashree Srinivasamurthy Subject: ACS 560- Software Engineering Term: Fall 2010 Chapter 12: Software Architecture Design Textbook: Designing Concurrent, Distributed, and Real-Time Applications with UML This chapter describes an approach for decomposing the system into subsystems and for defining the interfaces between the subsystems. The chapter begins explaining the various architecture styles most relevant to concurrent, real-time, and distributed applications. An architecture style also known as architecture pattern refers to recurring architectures used in a variety of software applications. - Client/Server Architectural Style: In this architecture style, server is a provider of services and the client is a consumer of services. The simplest architecture consists of one server and many clients. - Layers of Abstraction Architectural Style: In this architectural style the system is structured in several layers. - Communicating Tasks Architectural Style: In this architectural style consists of a network of concurrent tasks with a separate thread of control for each task. There are two variations of this style namely communicating tasks with shared memory which should reside on the same computational node and communicating tasks without shared memory in which tasks can be allocated to different nodes in a distributed environment. The next section describes various issues for system decomposition and guidelines for determining subsystems. The concept of consolidated collaboration diagram is explained in the next section. The consolidated collaboration diagram is a synthesis of all the collaboration diagrams developed to support the use cases. A consolidated collaboration diagram is a synthesis of several collaboration diagrams showing all the objects and their interactions. This diagram shows the objects and messages but not the message sequence numbering. The next section deals with subsystem software architecture. The dynamic interactions between the subsystems can be shown using a sub-system collaboration diagram, which is a high level consolidated collaboration diagram. The next section provides various guidelines addressing separation of concerns that should be followed while decomposing the system into subsystems to ensure high coupling within a subsystem and low coupling between subsystems. The next section describes the different types of subsystems that are often required in the application domain of concurrent, real-time or distributed application domains namely - Control subsystem which controls a given aspect of the system. - Coordinator subsystem which coordinates the control subsystems. - Data collection subsystem which collects data from the external environment. - Data analysis subsystem which analyzes the data and provides reports and/or displays for data collected by other subsystem - Server subsystem which provides a service for other subsystems - user interface subsystem which provides the user interface and acts as a client, providing user access to services provided by one or more servers - I/O subsystem which consists of all device interface classes grouped together. - System services which are not problem domain-specific but provide system-level services. The next section provides various examples of subsystem decomposition. The last section explains the static modeling at the design level. In the design model, a more detailed static model is developed that reflects the solution domain.