Professional Documents
Culture Documents
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 1
Objectives
● To introduce architectural design and to
discuss its importance
● To explain the architectural design decisions
that have to be made
● To introduce three complementary
architectural styles covering organisation,
decomposition and control
● To discuss reference architectures are used
to communicate and compare architectures
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 2
Topics covered
● Architectural design decisions
● System organisation
● Decomposition styles
● Control styles
● Reference architectures
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 3
Analysis Model -> Design Model
Component -
sc enario- based f low- oriented L evel Design
elements elements
use-cases - text data flow diagrams
use-case diagrams control-flow diagrams
activity diagrams processing narratives
swim lane diagrams
Int erfac e Design
Analysis Model
Design Model
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 4
From Analysis to Design, The what and
the How
● We should imagine two domains: problem and
solution domains. The analysis model analyses
the problem in the problem domain, while the
design model analyses the solution in the
solution domain.
● I explain in the analysis model the problem that
the software will try to solve while in design, I
will explain how I am going to solve that
problem.
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 5
Design and Quality
● the design must implement all of the explicit
requirements contained in the analysis model, and
it must accommodate all of the implicit
requirements desired by the customer.
● the design must be a readable, understandable
guide for those who generate code and for those
who test and subsequently support the software.
● the design should provide a complete picture of
the software, addressing the data, functional, and
behavioral domains from an implementation
perspective.
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 6
Software architecture
● The design process for identifying the sub-
systems making up a system and the framework
for sub-system control and communication is
called architectural design.
● The output of this design process is a
description of the software architecture.
● “The overall structure of the software and
the ways in which that structure provides
conceptual integrity for a system.” [SHA95a]
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 7
Architectural design
● An early stage of the system design process.
● Represents the link between specification
and design processes.
● Often carried out in parallel with some
specification activities.
● It involves identifying major system
components and their communications.
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 8
Advantages of explicit architecture
● Stakeholder communication
• Architecture may be used as a focus of
discussion by system stakeholders.
● System analysis
• Means that analysis of whether the system can
meet its non-functional requirements is possible.
● Large-scale reuse
• The architecture may be reusable across a
range of systems.
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 9
Architecture and system characteristics
● Performance
• Localise critical operations and minimise communications. Use
large rather than fine-grain components. High level
components.
● Security
• Use a layered architecture with critical assets in the inner
layers.
● Safety
• Localise safety-critical features in a small number of sub-
systems.
● Availability
• Include redundant components and mechanisms for fault
tolerance.
● Maintainability
• Use fine-grain, replaceable components.
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 10
Fundamental
● Concepts
abstraction—data, procedure, control – Ignore some details.
● architecture—the overall structure of the software
● patterns—”conveys the essence” of a proven design solution
(i.e. templates whether for design or for anything else).
● modularity—compartmentalization of data and function. i.e.
into modules.
● Hiding- controlled interfaces- Only expose what should be
exposed.
● Functional independence—single-minded function and low
coupling or relations between the components.
● refinement—elaboration of detail for all abstractions
● Refactoring—a reorganization technique that simplifies the
design. i.e. refining the design into more understandable
format.
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 11
Data
Abstraction
implemented as a data structure
door
manufacturer
model number
type
swing direction
inserts
lights
type
number
weight
opening mechanism
Those are the main aspects or the things we need to know about
the door, although the door has many more details (that maybe we
don’t need to know at this time).
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 12
Procedural
Abstraction
open
details of enter
algorithm
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 13
Patterns
To help improve reusability and extensibility. By following a pattern in writing
things.
Design Pattern Template
Pattern name—describes the essence of the pattern in a short but expressive
name
Intent—describes the pattern and what it does
Alsoknownas—lists any synonyms for the pattern
Motivation—provides an example of the problem
Applicability—notes specific design situations in which the pattern is applicable
Structure—describes the classes that are required to implement the pattern
Participants—describes the responsibilities of the classes that are required to
implement the pattern
Collaborations—describes how the participants collaborate to carry out their
responsibilities
Consequences—describes the “design forces” that affect the pattern and the
potential tradeoffs that must be considered when the pattern is implemented
Related patterns—crossreferences related design patterns
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 14
Modular
Design
easiertobuild,easiertochange,easiertofix...
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 15
Information Hiding
module • algorithm
controlled
interface • data structure
clients "secret"
A driver doesn’t
need to know how
the car works. He
a specific design decision needs to know how
to drive it only.
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 16
Why Information Hiding?
● reduces the likelihood of “side effects”. Know only what
you need to know.
● limits the global impact of local design decisions.
Variables affect only their own locations.
● emphasizes communication through controlled
interfaces only. You should go out from a house through
a door only.
● discourages the use of global data. Locate variable on
the place they will be used only.
● leads to encapsulation—an attribute of high quality
design. Hiding unnecessary information.
● results in higher quality software
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 17
Functional
Independence Use a pen
COHESION - the degree to which a
module performs one and only one only for
function. writing on
papers.
COUPLING - the degree to which a
module is "connected" to other
modules in the system.
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 18
Content coupling example
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 19
Refactoring
● Fowler [FOW99] defines refactoring in the following
manner:
• "Refactoring is the process of changing a software system in
such a way that it does not alter the external behavior of the
code [design] yet improves its internal structure.”
● When software is refactored, the existing design is
examined for
• redundancy
• unused design elements
• inefficient or unnecessary algorithms
• poorly constructed or inappropriate data structures
• or any other design failure that can be corrected to yield a
better design.
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 20
Architectural conflicts
● Using large-grain components (too many
details) improves performance but reduces
maintainability. We need to compromise
between performance and maintainability.
● Introducing redundant data improves availability
but makes security more difficult. Another
compromise.
● Localising safety-related features usually means
more communication so degraded performance.
Another one.
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 21
System structuring – Detail Design
● Concerned with decomposing the system
into interacting sub-systems.
● The architectural design is normally
expressed as a block diagram presenting an
overview of the system structure.
● More specific models showing how sub-
systems share data, are distributed and
interface with each other may also be
developed.
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 22
Packing robot control system
Component Diagram
Vision
system
Packaging
selection
system
Packing Conveyor
system controller
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 23
Box and line diagrams
(i.e. Component Diagrams).
● Very abstract - they do not show the nature of
component relationships nor the externally
visible properties of the sub-systems.
● However, useful for communication with
stakeholders and for project planning.
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 24
Architectural design decisions
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 25
Architectural design decisions
● Is there a generic application architecture that can be
used? Reuse an existing design.
● How will the system be distributed?
● What architectural styles are appropriate?
● What approach will be used to structure the system?
● How will the system be decomposed into modules?
● What control strategy should be used?
● How will the architectural design be evaluated? Design
verification.
● How should the architecture be documented? Diagrams?
Documents? Etc.
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 26
Architecture reuse
● Systems in the same domain often have similar
architectures that reflect domain concepts.
● Application product lines are built around a core
architecture with variants that satisfy particular
customer requirements.
● Application architectures are covered in Chapter
13 and product lines in Chapter 18.
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 27
Architectural styles
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 28
Examples of Architectural Styles /
Patterns
● There are many common ways of designing computer software modules
and their communications, among them:
● Blackboard
● Client-server
● Database-centric architecture
● Distributed computing
● Event Driven Architecture
● Implicit invocation
● Monolithic application
● Peer-to-peer
● Pipes and filters
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 29
● Plugin
● Representational State Transfer
● Structured (module-based but usually monolithic within modules)
● Software componentry (strictly module-based, usually
object-oriented programming within modules, slightly less monolithic)
● Service-oriented architecture
● Search-oriented architecture
● Space based architecture
● Shared nothing architecture
● Three-tier model
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 30
Architectural models
● Used to document an architectural design.
● Static structural model that shows the major system
components. Such as a class diagram.
● Dynamic process model that shows the process
structure of the system. Such activity or sequence
diagrams.
● Interface model that defines sub-system interfaces.
● Relationships model such as a data-flow model that
shows sub-system relationships.
● Distribution model that shows how sub-systems are
distributed across computers.
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 31
Architectural Styles According to
Sommerville
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 32
Levels of decomposition
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 33
System organisation
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 34
The repository model
● Sub-systems must exchange data. This may be done in two
ways:
• Shared data is held in a central database or repository and
may be accessed by all sub-systems;
• Each sub-system maintains its own database and passes
data explicitly to other sub-systems.
● When large amounts of data are to be shared, the repository
model of sharing is most commonly used.
● Suited in cases where one part of the system produces data,
others consumes this data, Example University data structure,
command and control systems, Management information
systems, CAD systems, CASE tools
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 35
Example, CASE toolset architecture
All can provide the same – level – of service. Others utilizes the
service provided by each They just need a central location to save
all their information.
Design C ode
editor gener
ator
Design Report
analy ser gener
ator
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 36
Repository model characteristics
● Advantages
• Efficient way to share large amounts of data; no explicit data
transfer between subsystems.
• Sub-systems need not be concerned with how data is produced.
• Centralised management e.g. backup, security, etc.
• Sharing model is published as the repository schema.
● Disadvantages
• Sub-systems must agree on a repository data model. Inevitably a
compromise;
• Data evolution is difficult and expensive; large volume of data to
transfer to a new model.
• No scope for specific management policies; Centralized system
enforces same policies across all data from all subsystems.
• Difficult to distribute efficiently. Data redundancy, inconsistency.
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 37
Repository Model Variants
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 38
Client-server model
● Distributed system model which shows how data
and processing is distributed across a range of
components.
● Client server elements: Servers, Clients and
Network.
● Servers: Set of stand-alone servers which provide
specific services such as printing, data
management, etc.
● Clients: Set of clients which call on these services.
● Network which allows clients to access servers.
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 39
Example, Film and picture library
Servers provide services and clients use those services.
Internet
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 40
Client-server characteristics
● Advantages
• Distribution of data is straightforward;
• Makes effective use of networked systems. May require
cheaper hardware;
• Easy to add new servers or upgrade existing servers.
● Disadvantages
• No shared data model so sub-systems use different data
organisation. Data interchange may be inefficient;
• Redundant management in each server;
• No central register of names and services – Client must know
in advance name and interface of services. It may be hard to
find out what servers and services are available.
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 41
Abstract machine (or layered) model
● Used to model the interfacing of sub-systems.
● Organises the system hierarchy into a set of layers (or
abstract machines) each of which provide a set of
services.
● Each layer provides a set of services to layer above.
● Supports the incremental development of sub-systems in
different layers. When a layer interface changes, only the
adjacent layer is affected.
● However, often artificial to structure systems in this way.
● Each layer depends on the services provides by the layer
below.
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 42
Version management system
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 43
Layer model example, OSI model
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 44
Layer model advantages
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 45
Layered Model disadvantages
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 46
Modular decomposition styles
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 47
Sub-systems and modules
● A sub-system is a system in its own right whose
operation is independent of the services provided by
other sub-systems. Sub-systems are composed of
modules and have defined interfaces which are
used for communication with other sub-systems.
● A module is a system component that provides
services to other components but would not
normally be considered as a separate system. It is
not normally considered to be an independent
system. Modules are usually composed from other,
simpler system components.
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 48
Modular decomposition
● Another structural level where sub-systems are
decomposed into modules.
● Two modular decomposition models covered
• An object model where the system is decomposed into
interacting object;
• A pipeline or data-flow model where the system is
decomposed into functional modules which transform inputs
to outputs.
● If possible, decisions about concurrency should be
delayed until modules are implemented.
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 49
Object models
● Structure the system into a set of loosely coupled objects
with well-defined interfaces.
● Object-oriented decomposition is concerned with
identifying object classes, their attributes and operations.
● When implemented, objects are created from these
classes and some control model used to coordinate
object operations.
● In many programming projects, developers prefer to use
OO model as it is easy to learn and apply. Same classes
can be defined in requirements, design and used in
coding.
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 50
Example, Invoice processing system
Customer Receipt
customer# invoice#
name date
address Invoice amount
credit period customer#
invoice#
date
amount
customer
Payment issue ()
invoice# sendReminder ()
acceptPayment ()
date
sendReceipt ()
amount
customer#
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 51
Company Class diagram
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 52
OBJECT-ORIENTED DECOMPOSITION
Object classes have names and a set of
associated attributes.
Operations if any are defined in the lower part
of the rectangle.
Dashed arrows indicate that an object uses the
attributes or services provided by another
object.
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 53
Object-oriented decomposition
● Describes object classes, attributes and methods
● Loosely coupled objects with well defined
interfaces
● Advantages:
• Easy to understand, maintain, reuse
• Can be implemented straightforwardly from
architectural components
● Disadvantages:
● To use services, objects must explicitly reference
the name and interface of other objects.
● An interface change affect all users of that
interfaces.
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 54
Function-oriented pipelining
● Functional transformations process their inputs to
produce outputs.
● May be referred to as a pipe and filter model (as in
UNIX shell).
● The term filter is used because a transformation
filters out the data it can process from its input data
stream.
● Variants of this approach are very common. When
transformations are sequential, this is a batch
sequential model which is extensively used in data
processing systems such as billing systems.
● Not really suitable for interactive systems.
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 55
Invoice processing system
Issue
Receipts
receipts
Invoices Payments
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 57
Control styles
● Are concerned with the control flow between
sub-systems. Distinct from the system
decomposition model. Two generic formats:
● Centralised control
• One sub-system has overall responsibility for
control and starts and stops other sub-systems.
● Event-based control
• Each sub-system can respond to externally
generated events from other sub-systems or the
system’s environment.
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 58
Control Examples
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 59
Centralised control
● A control sub-system takes responsibility for managing
the execution of other sub-systems.
● Call-return model
• Top-down subroutine model where control starts at the top of
a subroutine hierarchy and moves downwards. Applicable to
sequential systems only. (Embedded programming like C)
● Manager model (event-loop model)
• Applicable to concurrent systems. One system component
controls the stopping, starting and coordination of other
system processes. Can be implemented in sequential
systems as a case statement. Control decisions are usually
determined by the value of some system state variables
(internal event). (Usually implemented as case statements)
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 60
Call-return model
Main
program
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 61
Real-time system control –
manager model
Sensor Actuator
processes processes
System
controller
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 62
Event-driven systems
● Driven by externally generated events where the
timing of the event is outwith the control of the sub-
systems which process the event.
● Two principal event-driven models
• Broadcast models. An event is broadcast to all sub-
systems. Any sub-system which can handle the event
may do so;
• Interrupt-driven models. Used in real-time systems where
interrupts are detected by an interrupt handler and
passed to some other component for processing.
● Other event driven models include spreadsheets and
production systems.
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 63
Broadcast model
● Effective in integrating sub-systems on different
computers in a network.
● Sub-systems register an interest in specific
events. When these occur, control is transferred
to the sub-system which can handle the event.
● Control policy is not embedded in the event and
message handler. Sub-systems decide on
events of interest to them.
● However, sub-systems don’t know if or when an
event will be handled. UDP protocol in
networking uses this model or algorithm.
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 64
Broad cast model –
Selective broadcasting
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 65
Interrupt-driven systems
● Used in real-time systems where fast response
to an event is essential.
● There are known interrupt types with a handler
defined for each type.
● Each type is associated with a memory location
and a hardware switch causes transfer to its
handler.
● Allows fast response but complex to program
and difficult to validate. CPUs uses such model.
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 66
Interrupt-driven control
Interrupts
Interrupt
vector
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 67
Reference Architectures
● Reference models are derived from a study of the application
domain rather than from existing systems.
● May be used as a basis for system implementation or to
compare different systems.
● It acts as a standard against which systems can be evaluated.
● OSI Open System Interconnection, model is a layered model
for communication systems.
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 68
Reference architectures
● Architectural models may be specific to some
application domain.
● Two types of domain-specific model
• Generic models which are abstractions from a number of
real systems and which encapsulate the principal
characteristics of these systems. Covered in Chapter 13.
• Reference models which are more abstract, idealised
model. Provide a means of information about that class of
system and of comparing different architectures.
● Generic models are usually bottom-up models;
Reference models are top-down models.
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 69
OSI reference model
7 Application Application
6 Presentation Presentation
5 Session Session
4 Transport Transport
Communications medium
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 70
Case reference model examples
● Data repository services
• Storage and management of data items.
● Data integration services
• Managing groups of entities.
● Task management services
• Definition and enaction of process models.
● Messaging services
• Tool-tool and tool-environment communication.
● User interface services
• User interface development.
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 71
The European Computer Manufacturer's
Association ECMA reference model
Tool
slots
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 72
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 73
Key points
● The software architecture is the fundamental framework
for structuring the system.
● Architectural design decisions include decisions on the
application architecture, the distribution and the
architectural styles to be used.
● Different architectural models such as a structural
model, a control model and a decomposition model
may be developed.
● System organisational models include repository
models, client-server models and abstract machine
models.
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 74
Key points
● Modular decomposition models include
object models and pipelining models.
● Control models include centralised control
and event-driven models.
● Reference architectures may be used to
communicate domain-specific architectures
and to assess and compare architectural
designs.
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 75
Key points
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 76
Key points
● software architecture: Systems and subsystems
and their interactions.
● Architectural styles: Data repository, client server,
and layered.
● Steps in modeling:
• Define software architecture
• Subsystems
• Architectural style(s) used
• Define subsystems
• Component/packages
Edited from ©Ian Sommerville & others Software Engineering, chapter 5 Slide 77