Professional Documents
Culture Documents
Objectives
Definition of software architecture.
Important of software architecture.
Architecture design patterns.
Relationship between non-functional requirements and software architecture.
Brainstorming
Software Architecture
Identifying the sub-systems/components that make up a system and the
framework for sub-systems control & communication is known as the
architectural design.
The primary purpose of architecture to support the life cycle of the system.
Good architecture makes the system easy to understand, easy to
develop, easy to maintain, and easy to deploy. The ultimate goal is to
minimize the lifetime cost of the system and to maximize programmer
productivity.
For large amounts of shared data, the repository model is most commonly
used.
Design Code
editor gener ator
Design Repor t
anal yser gener ator
Repository Pattern Evaluation
(+) Advantages
Centralised management e.g. backup, security, etc.
(-) Disadvantages
The repository is a single point of failure so problems in the
repository affect the whole system.
(2). The Client-Server Pattern
All clients call on these servers through a network that allows them to access
services .
Internet
(+) Advantages
Easy to add new servers or upgrade existing servers.
(+) Disadvantages
Redundant management in each server.
(3). The Layered Pattern
Used to model the interfacing of sub-systems.
Organizes the system into a set of layers each of which provide a set of
services.
Supports the incremental development of sub-systems in different layers.
When a layer interface changes, only the adjacent layer is affected.
A Generic Layered Architecture
Pattern for Software Applications
The Layered Pattern
(+) Advantages
Multiple applications can reuse the components. For example if we
want a windows user interface rather than a web browser interface.
(+) Disadvantages
There might be a negative impact on the performance.
Architecture Vs System Characteristics
Performance (if Performance is a critical requirement)
Localize critical operations & minimize communications. Use large rather than
fine-grain components.
Security (if Security is a critical requirement)
Use a layered architecture with critical assets in the innermost layers, with a
high level of security validation.
Availability (if Availability is a critical requirement)
Include redundant components and mechanisms, so that it is possible to
replace and update components without stopping the system.
Sommerville, I. (2016) Software Engineering. 10th Edition, Pearson Education Limited, Boston.