Ch12 - Overview of Software Architecture
Ch12 - Overview of Software Architecture
2 / 19
Software Architecture Overview
• The software architecture of a program or computing
system is the structure or structures of the system, which
comprise
– software elements,
– the externally visible properties of those elements,
– and the relationships among them.
• The software architecture separates the overall structure
of the system, in terms of subsystems and their interfaces,
from the internal details of the individual subsystems.
– A software architecture is structured into subsystems
– Each subsystem should be relatively independent of other
subsystems.
• Software architecture is also referred to as a high-level
design
3 / 19
Component-Based Software Architecture
5 / 19
Multiple Views of a Software Architecture
Dynamic View of a Software Architecture
● The dynamic view of an architecture is a behavioural view,
represented by a communication diagram.
● This diagram shows the subsystems and the message
communication between them. Furthermore, it must depicts
all possible interactions.
6 / 19
Multiple Views of a Software Architecture
Deployment View of a Software Architecture
The deployment view of the software architecture depicts the
physical configuration of the software architecture, in particular
how the subsystems of the architecture are allocated to physical
nodes in a distributed configuration.
7 / 19
Software Architectural Patterns
Software architectural patterns provide the skeleton or
template for the overall software architecture or high-
level design of an application.
Software architectural patterns can be grouped into
two main categories:
• Architectural structure patterns, which address the static
structure of the architecture,
• Architectural communication patterns, which address the
dynamic communication among distributed components of
the architecture.
8 / 19
Software Architectural Patterns
Layers of Abstraction Architectural Pattern
The Layers of Abstraction pattern (Hierarchical Layers or Levels of Abstraction
pattern) is a common architectural pattern that is applied in many different
software domains. If software is designed in the form of layers, it can be
extended by the addition of upper layers that use services provided by lower
layers and contracted by the removal of upper layers
9 / 19
Software Architectural Patterns
Call/Return Pattern
This is the simplest form of communication
between objects. A calling operation in the
calling object invokes a called operation in the
called object. Control is passed from the
calling operation to the called operation at
the time of operation invocation.
Any input parameters are passed from the calling operation to the called
operation at the same time that control is passed. When the called operation
finishes executing, it returns control and any output parameters to the calling
operation
10 / 19
Software Architectural Patterns
Asynchronous Message Communication Pattern 1/2
12 / 19
Software Architectural Patterns
Synchronous Message Communication with Reply Pattern
13 / 19
Documenting Software Architectural Patterns
15 / 19
Interface Design
An important goal of both object-oriented design and
component-based software architecture is the
separation of the interface from the implementation
• An interface specifies the externally visible operations
of a class, service, or component without revealing the
internal structure (implementation) of the operations
• The interface can be considered a contract between
the designer of the external view of the class and the
implementer of the class internals.
• It is also a contract between a class that requires (uses)
the interface (i.e., invokes the operations provided by
the interface) and the class that provides the interface.
16 / 19
Interface Design
Depict Interfaces
17 / 19
Designing Software Architectures
• During software design modeling, design decisions are made
relating to the characteristics of the software architecture.
• The following chapters describe the design of different kinds
of software architectures:
– Object-oriented software architectures. Ch14
– Client/server software architectures. Ch15
– Service-oriented architectures. Ch16
– Distributed component-based software architectures. Ch17
– Concurrent and real-time software architectures. Ch18
– Software product line architectures. Ch19
• Ch20 describes the quality attributes of software
architectures that address nonfunctional requirements of
software, which can have a profound effect on the quality of a
software product.
18 / 19