Name: Shilpashree Srinivasamurthy Subject: ACS 560- Software Engineering Term: Fall 2010

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
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
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.