DICT221
Software
Engineering
221
ARCHITECTURAL DESIGN 1
Lesson 6:
Architectural Design
PREPARED BY: DR. M. CHERE
ARCHITECTURAL DESIGN 2
Fundamental Software Engineering
Activities
Software specification
Software development
Software validation
Software evolution
ARCHITECTURAL DESIGN 3
Objectives
▪To understand why the architectural design of
software is important
▪To understand the decisions that have to be
made about the software architecture during
the architectural design process
▪To learn how to use Application-Specific
architectural patterns in transaction processing
and language processing systems
ARCHITECTURAL DESIGN 4
Content
• Architectural design decisions
• Architectural views
• Architectural patterns
• Application architectures
ARCHITECTURAL DESIGN 5
Architectural Design
Architectural design is the first stage in the software design process
It is concerned about:
➢ How a software system should be organised
➢ Designing the overall structure of that system
➢ It is the critical link between design and requirements engineering,
➢ As it identifies the main structural components in a system and
the relationships between them
➢ The output of the architectural design process describes how the
system is organized
[Link]
ARCHITECTURAL DESIGN 6
Architectural Design
▪It determines the structure and features of the components
▪Data flow patterns
▪How these components communicate with each other to
share data
ARCHITECTURAL DESIGN 7
Architectural Design
According to IEEE:
▪ Architectural design is a process of dеfining a collection of hardware and
softwareе components and their intеrfacеs to establish the framework for the
dеvеlopmеnt of a computer system
▪ Architectural design specifies the componеnts including thеir
inputs, outputs, functions, and thе intеraction bеtwееn thеm necessary for
developing a computer-based systеm.
▪ Thе architectural dеsign procеss involvеs:
◦ Identifying thе componеnts i. е. subsystеms that comprisе thе systеm and
structurе of thе subsystem and thе intеraction bеtwееn thеm
ARCHITECTURAL DESIGN 8
Advantages of Software Architecture
• Three advantages for designing and documenting software architecture:
Stakeholder System Analysisi Large-scale Resuse
Communication
Architecture may be used Analysis of whether or not The architecture may be
as a focus of discussion the system meets critical reusable across a range
by the system requirements such as of systems.
stakeholders • Performance
• Reliability
• Maintainability
ARCHITECTURAL DESIGN 9
Architectural Design
Performance
A good software architecture Maintainability
design hеlps dеfіnе: Quality
Scalability
Thе goal is to еnsurе that your softwarе is flеxiblе еnough to adapt, as
nеw requirements еmеrgе
Develop
Tеst
With architеctural dеsign, you can Dеploy
easily Maintain thе softwarе, whilе rеducing thе risk
of еrrors, bugs, and othеr problems arising
during thе SDLC procеss
ARCHITECTURAL DESIGN 10
Architectural Design
System architectures are often modeled informally
using simple block diagrams
Each box in the diagram represents a component
Boxes within boxes indicate that the component has
been decomposed into subcomponents
Arrows mean that data and or control signals are
passed from component to component in the direction The architecture of a packing robot control system
of the arrows
ARCHITECTURAL DESIGN 11
Architectural Design Decisions
ARCHITECTURAL DESIGN 12
Architectural Design Decisions
Architectural design
▪Is a creative process in which you design a system organisation that
will satisfy the functional and non-functional requirements of a
system
▪A series of decisions to be made rather than a sequence of
activities
ARCHITECTURAL DESIGN 13
Architectural Design Decisions
Questions system architects must ask:
During the architectural design
process, system architects have to
make several structural decisions
that strongly affect the system and
its development process
ARCHITECTURAL DESIGN 14
Architectural Design Decisions
15
ARCHITECTURAL DESIGN
Software Architecture
Defines the organisation of the system
◦ Includes all system components
◦ How the components interact with each other
◦ The environment in which they operate
◦ System evolution into the future
ARCHITECTURAL DESIGN 16
Software Architecture
A generic layered architecture
The software architecture of the system
may be based on a particular
architectural pattern or style such as:
◦ Client–server organisation
◦ Layered architecture
ARCHITECTURAL DESIGN 17
Layered architecture
A software design pattern that organises
an application into
➢ Distinct
➢ Horizontal layers, each with a
specific responsibility
Each layer communicates with adjacent
layers, creating a hierarchical structure
[Link]
ARCHITECTURAL DESIGN 18
Architecture
and System Characteristics
The choice of architectural style and structure should depend on the non-functional requirements of the system:
Non-functional Requirements
If performance is a critical requirement, the architecture should be designed to localize critical operations within a
Performance small number of components, with these components deployed on the same computer rather than distributed
across the network
If security is a critical requirement, a layered structure for the architecture
Security should be used, with the most critical assets protected in the innermost layers and a high level of security validation
applied to these layers.
If safety is a critical requirement, the architecture should be designed to co-locate safety-related operations in a
Safety single component or a small number of components. This reduces the costs and problems of safety validation and
may make it possible to provide related protection systems that can safely shut down the system in the event of
failure
ARCHITECTURAL DESIGN 19
Architecture
and System Characteristics
The choice of architectural style and structure should depend on the non-functional requirements of the system:
Non-functional Requirements
If availability is a critical requirement, the architecture should be designed to include redundant components so that
it is possible to replace and update components without stopping the system.
Availability
If availability is a critical requirement, the architecture should be designed to include redundant components so that
it is possible to replace and update components without stopping the system.
Maintainability
ARCHITECTURAL DESIGN 20
Architectural Views
ARCHITECTURAL DESIGN 21
Architectural Views
Software architectural views are representations of the overall
architecture of a software system that is meaningful to one or more
stakeholders
They enable the architecture to be communicated to and understood
by the stakeholders so they can verify that the system will address
their concerns
02052024
22
[Link]
Architectural Views
Architectural models of a software system can be used in
discussions about the software requirements or design
Alternatively, they may be used to document a design so that it
can be used as a basis or more detailed design and system
implementation
02052024
23
[Link]
Architectural Views
Two important questions to ask:
➢ What views or perspectives are helpful when designing and
documenting a system’s architecture?
➢ What representations should be used for describing
architectural models?
02052024
24
[Link]
Fundamental Architectural Views
• There are different opinions as to what views are required
•Krutchen (Krutchen 1995), in his well-known 4 +1 view model of
software architecture, suggests
•four fundamental architectural views, which can be linked
through common use cases or scenarios
ARCHITECTURAL DESIGN 25
Types of Architectural Views
Architectural View Description
Logical view It shows the system's functionality and how it is organised into components.
It is typically represented using diagrams such as class diagrams, sequence
diagrams, and activity diagrams.
Process view It shows how, at runtime, the system is composed of interacting processes.
This view is useful for making judgments about non-functional system
characteristics such as performance and availability.
Development view Shows how the software is decomposed for development; that is, it shows the
breakdown of the software into components that are implemented by a single
developer or development team
This view is useful for software managers and programmers
Physical view Shows the system hardware and how software components are distributed
across the processors in the system. This view is useful for systems engineers
planning a system deployment. 26
Types of Architectural Views
27
ARCHITECTURAL DESIGN
Architectural Patterns
ARCHITECTURAL DESIGN 28
Architectural Patterns
Patterns are commonly used for knowledge presentation, sharing, and reuse
Architectural patterns were proposed in the 1990s called architectural styles
They are stylized descriptions of good design practices that have been tried and tested in
different environments.
Patterns should include information about when they are and when they are not helpful.
Patterns may be represented using tabular and graphical descriptions.
ARCHITECTURAL DESIGN 29
Layered Architecture Pattern
The Layered Architecture pattern:
A generic layered architecture
▪ This layered approach supports the incremental development of
systems
▪ As a layer is developed, some of the services provided by that
layer may be made available to users
▪ The architecture is also changeable and portable i.e. If its interface
is unchanged, a new layer with extended functionality can replace an
existing layer without changing other parts of the system
ARCHITECTURAL DESIGN 30
Architecture of the iLearn System
Has a four-layer architecture
that follows this pattern
ARCHITECTURAL DESIGN 31
Client-Server Architecture
Refers to an organised set of services, associated servers and
clients that access and use the services
▪ A network model where clients request services or data
from a server.
▪ The server then processes the request and responds to
the client
▪ This model is widely used in various applications, from
web browsing to email communication [Link]
ARCHITECTURAL DESIGN 32
Client-Server Architecture
The major components of this model are:
▪ A set of servers that offer services to other components
▪ Examples of servers include print servers that offer printing services, file servers
that offer file management services, and a compile server that offers programming
language compilation services.
▪ Servers are software components, and several servers may run on the same
computer
ARCHITECTURAL DESIGN 33
Client-Server Architecture
▪A set of clients that call on the services offered by servers
▪ There will typically be several instances of a client program executing
concurrently on different computers
▪ A network that allows the clients to access these services
▪ Client–server systems are usually implemented as distributed systems,
connected using Internet protocols
ARCHITECTURAL DESIGN 34
Client-Server Architecture
▪A network that allows the clients to access these services
▪ Client–server systems are usually implemented as distributed
systems, connected using Internet protocols
ARCHITECTURAL DESIGN 35
Client-Server Architecture for a Film Library
ARCHITECTURAL DESIGN 36
Application Architecture
ARCHITECTURAL DESIGN 37
Application Architecture
Application systems are intended to meet a business or an organizational
need
Businesses operating in the same sector use common sector-specific
applications
These commonalities have led to the development of software architectures
that describe the structure and organization of particular types of software
systems
ARCHITECTURAL DESIGN 38
Application Architecture
Application architectures summarize the principal characteristics of a class of
systems, e.g., in real-time systems, there might be generic architectural models of
different system types, such as data collection systems or monitoring systems
The application architecture may be reimplemented when developing new systems
➢ However, for many business systems, application architecture reuse is only
understood when generic application systems are configured to create a new
application, e.g. Enterprise Resource Planning Systems
ARCHITECTURAL DESIGN 39
Application Architecture
There are various ways to use models of application architectures
➢ As a starting point for the architectural design process
➢ If, as a developer, you are not unfamiliar with the type of application you are
developing, you can base your initial design on a generic application
architecture
➢ As a design checklist
➢ If you have developed an architectural design for an application system, you
can compare this with the generic application architecture. You can check
that your design is consistent with the generic architecture
ARCHITECTURAL DESIGN 40
Application Architecture
➢ As a way of organizing the work of the development team
➢ The application architectures identify stable structural features of the system architectures, and
in many cases, it is possible to develop these in parallel
➢ As a means of assessing components for reuse
➢ If you have components, you might be able to reuse, you can compare these with the generic
structures to see whether there are comparable components in the application architecture
➢ As a vocabulary for talking about applications
➢ If you are discussing a specific application or trying to compare applications, then you can use
the concepts identified in the generic architecture to talk about these applications
ARCHITECTURAL DESIGN 41
Transaction Processing Systems
Transaction processing systems are designed to process user requests for information from a
database or requests to update a database
A database transaction is part of a sequence of operations and is treated as a single unit
All of the operations in a transaction have to be completed before the database changes are made
permanent
◦ This ensures that failure of operations within a transaction does not lead to inconsistencies in
the database
ARCHITECTURAL DESIGN 42
Transaction Processing Systems
Transaction processing systems are interactive systems in which users make asynchronous service
requests
The Structure of Transaction Processing Applications:
ARCHITECTURAL DESIGN 43
Application Architecture
▪Transaction processing (TP) systems are designed to process user
requests for information from a database or requests to update a
database
▪Transaction processing systems may be organized as a ‘pipe and
filter’ architecture with system components responsible for input,
processing, and output
ARCHITECTURAL DESIGN 44
Software Architecture of an ATM System
First, a user requests the system through an I/O processing component
Some application-specific logic processes the request
A transaction is created and passed to a transaction manager, usually embedded in the
database management system
After the transaction manager has ensured that the transaction is properly completed, it
signals to the application that processing has finished
Transaction processing systems may be organized as a “pipe and filter” architecture, with
system components responsible for input, processing, and output: e.g., a banking system
ARCHITECTURAL DESIGN 45
Software Architecture of an ATM System
ARCHITECTURAL DESIGN 46
Key Points
A software architecture describes how a software system is organized. The architecture
influences properties of a system such as performance, security, and availability used
Architectural design decisions include decisions on the type of application, the
distribution of the system, the architectural styles to be used, and how the architecture
should be documented and evaluated
Architectures may be documented from several different perspectives or views. Possible
views include a conceptual view, a logical view, a process view, a development view, and a
physical view
ARCHITECTURAL DESIGN 48
Key Points
Architectural patterns are a means of reusing knowledge about generic system
architectures. They describe the architecture, explain when it may be used, and point out
its advantages and disadvantages
Commonly used Architectural patterns include model-view-controller, layered
architecture, repository, client-server, and pipe and filter
Transaction processing systems are interactive systems that allow information in a
database to be remotely accessed and modified by several users. Information systems
and resource management systems are examples of transaction processing systems
ARCHITECTURAL DESIGN 49
Food for Thought
Develop an Online Student Course Registration System (OSCRS)
➢ Describe the types of architectural views
➢ Apply the 4+1 model for designing the OSCRS
ARCHITECTURAL DESIGN 50
Next Lesson: Design & Implementation
51