Software Architecture, Definition
DEF1: The architecture of a software system defines the
system in terms of components/sub-systems and
interactions among those components.
DEF2: The software architecture of a system is the
structure of the system, which comprise software
elements, the externally visible properties of those
elements, and the relationships among them
2
Software Architecture-Definition
DEF 3: Architecture is the fundamental organization of a
system including its components, their relationships to
each other and to the environment and the principles
guiding its design and evolution
[IEEE Standard on the Recommended Practice for
Architectural Descriptions, 2000]
3
Components and Connectors
Components are connected by connectors
They are the building blocks with which an architecture
can be described
No standard notation has emerged yet
4
The Architecture of a Packing Robot Control System
Software Architecture Patterns / Styles
1: Layered Architecture
Organises the system into a set of layers each of which provide
a set of services
A layer provides services to the layer above it so the lowest-
level layers represent core services that are likely to be used
throughout the system.
Supports the incremental development of sub-systems in
different layers
When a layer interface changes, only the adjacent layer is
affected
6
Layered Architecture
THE ARCHITECTURE OF THE LIBSYS SYSTEM
8
LAYERED ARCHITECTURED OF THE HOSPITAL
MANAGEMENT SYSTEM
9
Layered Architecture of Library System
Software Architecture Patterns / Styles
2: Repository Architecture
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.
All data in a system is managed in a central repository
that is accessible to all system components
Components do not interact directly, only through the
repository.
11
THE REPOSITORY STYLE
•Information System, Programming Environments,
Graphical Editors, AI Knowledge Bases, Reverse
Engineering System are the examples of Repository
Architecture Style.
12
Repository Architecture
Software Architecture Patterns / Styles
3: Client-Server Architecture
In a client–server architecture, the functionality of the
system is organized into services such as printing, data
management etc, with each service delivered from a
separate server
Clients are users of these services and access servers to
make use of them.
Network which allows clients to access servers.
14
Client-Server Architecture For a Film Library
Software Architecture Patterns / Styles
4: Pipe and Filter Architecture
The processing of the data in a system is organized so that
each processing component (filter) carries out one type of
data transformation
The data flows (as in a pipe) from one component to
another for processing
Inputs are processed in separate stages to generate related
outputs
Not really suitable for interactive systems
16
Pipe and Filter Architecture
Model Transformation
The purpose of object (Class)model transformation is to:
Simplify or optimize the original model
Bringing it into closer compliance with all requirements in
the specification.
A transformation may add, remove, or rename classes,
operations, associations, or attributes
A transformation can also add information to the model or
remove information from it.
Model Transformation - Example
Refactoring
A refactoring is a transformation of the source code that
improves its readability or modifiability without changing
the behavior of the system
Refactoring aims at improving the design of a working
system by focusing on a specific field or method of a class
Refactoring - Example
Forward Engineering
Forward engineering produces a source code that corresponds
to a model (e.g. Use Case model, class model, sequence model
etc)
Many modeling constructs, such as attribute, can be
mechanically mapped to source code constructs supported by
the selected programming language (e.g. Java, C#)
While the bodies and additional private methods are added by
developers
22
Reverse Engineering
Reverse engineering produces a model that corresponds to
source code
This transformation is used when the design of the system
has been lost and must be recovered from the source code
Forward and Reverse Engineering
Forward Engineering
Forward engineering is applied to a set of model elements
and results in a set of corresponding source code statements,
i.e. a class declaration, a Java/C# expression etc
The purpose of forward engineering is to:
Maintain a strong correspondence between the design models
and the code
Reduce the number of errors introduced during implementation
Decrease implementation effort
25
Forward Engineering - Example
Reverse Engineering
Reverse engineering is applied to a set of source code elements and results in a set
of model elements
Purpose of this type of transformation is to recreate the model for an existing
system, either because
The model was lost or never created, or
It became out of sync with the source code
Reverse engineering is essentially an inverse transformation of forward engineering
Reverse engineering creates:
A UML class for each class declaration statement
Adds an attribute for each field
Adds an operation for each method