0% found this document useful (0 votes)
23 views50 pages

Week8-Architectural Design

Chapter 6 discusses software architecture as the fundamental design of a software system, detailing its components, functions, and relationships. It emphasizes the importance of architectural design in agile processes, the use of architectural models for communication and documentation, and various architectural patterns such as MVC and layered architecture. Key points include the significance of architectural decisions, the role of application architectures, and the distinction between transaction processing and language processing systems.

Uploaded by

k224623
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
23 views50 pages

Week8-Architectural Design

Chapter 6 discusses software architecture as the fundamental design of a software system, detailing its components, functions, and relationships. It emphasizes the importance of architectural design in agile processes, the use of architectural models for communication and documentation, and various architectural patterns such as MVC and layered architecture. Key points include the significance of architectural decisions, the role of application architectures, and the distinction between transaction processing and language processing systems.

Uploaded by

k224623
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 50

Chapter 6 – Architectural Design

By Ian Sommerville

Chapter 6 Architectural Design 1


Software architecture:

✧ Software architecture is the fundamental design of the entire


software system.
✧ It defines what elements are included in the system, what
function each element has, and how each element relates to one
another.
✧ In short, it is the big picture or overall structure of the whole
system, how everything works together.
Let's compare this to designing a skyscraper

Chapter 6 Architectural Design 2


Agility and architecture

✧ It is generally accepted that an early stage of agile


processes is to design an overall systems architecture.
✧ Refactoring the system architecture is usually expensive
because it affects so many components in the system

Chapter 6 Architectural Design 3


Case Study

You are required to make a abstract model of architecture


for a packing robot system. This robotic system can pack
different kinds of objects. It uses a vision component to
pick out objects on a conveyor, identify the type of object,
and select the right kind of packaging. The system then
moves objects from the delivery conveyor to be packaged.
It places packaged objects on another conveyor.

4
The architecture of a packing robot control
system

Chapter 6 Architectural Design 5


Box and line 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.

Chapter 6 Architectural Design 6


Use of architectural models

✧ As a way of facilitating discussion about the system


design
▪ A high-level architectural view of a system is useful for
communication with system stakeholders and project planning
because it is not cluttered with detail.
✧ As a way of documenting an architecture that has been
designed
▪ The aim here is to produce a complete system model that shows
the different components in a system, their interfaces and their
connections.

Chapter 6 Architectural Design 7


Architectural design decisions

8
Architecture and system characteristics

✧ Performance
▪ Localize critical operations and minimize communications.
▪ Use large rather than fine-grain components.
✧ Security
▪ Use a layered architecture with critical assets in the inner layers.
✧ Safety
▪ Localize 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. 9
Architectural views

✧ Each architectural model only shows one view or


perspective of the system.
▪ It might show how a system is decomposed into modules, how
the run-time processes interact or the different ways in which
system components are distributed across a network. For both
design and documentation, you usually need to present multiple
views of the software architecture.

Chapter 6 Architectural Design 10


Architectural views

Chapter 6 Architectural Design 11


4 + 1 view model of software architecture

✧ A logical view focuses,


▪ On achieving functional requirements of a system
▪ Services of the system
▪ The key abstractions in the system as objects or object classes.
✧ A process view, which shows
▪ how, at run-time, the system is composed of interacting
processes.
▪ Like sequence diagram and activity diagram.
▪ useful for making judgments about non-functional system
characteristics such as performance and availability.

Chapter 6 Architectural Design 12


4 + 1 view model of software architecture

✧ A development view, which shows


✧ how the software is decomposed for development.
✧ useful for software managers and programmers.
✧ A physical view, which shows
✧ the system hardware and how software components are
distributed across the processors in the system.
✧ Related using use cases or scenarios (+1)
✧ useful for systems engineers planning a system deployment.

Chapter 6 Architectural Design 13


Architectural patterns

✧ Patterns are a means of representing, sharing and


reusing knowledge.
✧ An architectural pattern is a stylized description of good
design practice, which has been tried and tested in
different environments.
✧ Patterns should include information about when they are
and when they are not useful.

Chapter 6 Architectural Design 14


The Model-View-Controller (MVC) pattern

15
The Model-View-Controller (MVC) pattern

Chapter 6 Architectural Design 16


Web Application Architecture using MVC

17
The Model-View-Controller (MVC) pattern

The goal of this pattern is to split a large application into specific section that
has its own purpose.

12/04/2021 Chapter 6 Architectural Design 18


Layered Architecture Pattern

19
Layered architecture

Chapter 6 Architectural Design 20


The Layered architecture pattern

As you can see in the diagram above, a standard layered architecture has five parts:
•User interaction layer: This is the layer that interacts with users through screens,
forms, menus, reports, etc. It is the most visible layer of the application. It defines how
the application looks.
•Functionality layer: This is the layer that presents the functions, methods, and
procedures of the system based on the business rules layer. It determines how the
pull-down menus work, how the buttons work, and how the system navigates through
screens.
•Business rules layer: This layer contains rules that determine the behavior of the
whole application, such as, “If an invoice is printed, then send an email to the
customer, select all items sold, and decrease their stock in the stock management
module.”
•Application core layer: This server contains the main programs, code definitions,
and basic functions of the application. Programmers work in this layer most of the
time.
•Database layer: This layer contains the tables, indexes, and data managed by the
application. Searches and insert/delete/update operations are executed here.

Chapter 6 Architectural Design 21


Generic Layered Architecture

22
The architecture of the iLearn system

Chapter 6 Architectural Design 23


Repository architecture

• Data is stored in a central shared repository.


• Components interact through the repository only.
• Suited to applications whose data is generated by one
component and used by another.
• Examples of this type of system include command and control
systems, management information systems,
ComputerAidedDesign (CAD) systems, and interactive
development environments for software

Chapter 6 Architectural Design 24


Repository architecture

25
A repository architecture for an IDE

Chapter 6 Architectural Design 26


Client-Server Pattern

27
A client–server architecture

Chapter 6 Architectural Design 28


Client-server architecture

•Front-End: This is the piece of software that interacts with


users, even if they are on different platforms with different
technologies. Any front-end module in a client-server
architecture is designed to interact with all existing devices on
the market. This level contains the login screens, menus, data
screens.

•Application server: This is the server where the software


modules of the application are installed. It connects to the
database (called back-end) and interacts with users (called
front-end). The application server is like the waiter on our
restaurant example.

•Database server: This server contains the tables, indexes, and


data managed by the application. Searches and
insert/delete/update operations are executed here.
Chapter 6 Architectural Design 29
Client-Server Architecture for a firm Library

30
Pipe and Filter Pattern

31
Pipe and filter architecture

✧ Functional transformations process their inputs to


produce outputs.
✧ 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.
✧ Not really suitable for interactive systems.

Chapter 6 Architectural Design 32


An example of the pipe and filter architecture
used in a payments system

Chapter 6 Architectural Design 33


Application architectures

✧ Application systems are designed to meet an


organizational need.
✧ As businesses have much in common, their application
systems also tend to have a common architecture that
reflects the application requirements.
✧ A generic application architecture is an architecture for a
type of software system that may be configured and
adapted to create a system that meets specific
requirements.

34
Use of application architectures

✧ As a starting point for architectural design.


✧ As a design checklist.
✧ As a way of organising the work of the development
team.
✧ As a means of assessing components for reuse.
✧ As a vocabulary for talking about application types.

Chapter 6 Architectural Design 35


Examples of application types

✧ Data processing applications


▪ Data driven applications that process data in batches without
explicit user intervention during the processing.
✧ Transaction processing applications
▪ Data-centred applications that process user requests and update
information in a system database.
✧ Event processing systems
▪ Applications where system actions depend on interpreting events
from the system’s environment.
✧ Language processing systems
▪ Applications where the users’ intentions are specified in a formal
language that is processed and interpreted by the system.
Chapter 6 Architectural Design 36
Application type examples

✧ Two very widely used generic application architectures are


transaction processing systems and language processing
systems.
✧ Transaction processing systems
▪ E-commerce systems;
▪ Reservation systems.
✧ Language processing systems
▪ Compilers;
▪ Command interpreters.

Chapter 6 Architectural Design 37


Transaction Processing Systems

✧ Process user requests for information from a database


or requests to update the database.
✧ From a user perspective a transaction is:
▪ Any coherent sequence of operations that satisfies a goal;
▪ For example - find the times of flights from London to Paris.
✧ Users make asynchronous requests for service which
are then processed by a transaction manager.

38
Software Architecture of an ATM System

39
Information Systems Architecture

✧ Information systems have a generic architecture that


can be organized as a layered architecture.
✧ These are transaction-based systems as interaction
with these systems generally involves database
transactions.
✧ Layers include:
▪ The user interface
▪ User communications
▪ Information retrieval
▪ System database

40
Layered information system architecture

Chapter 6 Architectural Design 41


The architecture of the Mentcare system

Chapter 6 Architectural Design 42


Language processing systems

✧ Accept a natural or artificial language as input and generate


some other representation of that language.
✧ May include an interpreter to act on the instructions in the
language that is being processed.
✧ Used in situations where the easiest way to solve a
problem is to describe an algorithm or describe the system
data

Chapter 6 Architectural Design 43


The architecture of a language processing
system

Chapter 6 Architectural Design 44


Compiler components

✧ A lexical analyzer, which takes input language tokens


and converts them to an internal form.
✧ A symbol table, which holds information about the names
of entities (variables, class names, object names, etc.)
used in the text that is being translated.
✧ A syntax analyzer, which checks the syntax of the
language being translated.
✧ A syntax tree, which is an internal structure representing
the program being compiled.

Chapter 6 Architectural Design 45


Compiler components

✧ A semantic analyzer that uses information from the


syntax tree and the symbol table to check the semantic
correctness of the input language text.
✧ A code generator that ‘walks’ the syntax tree and
generates abstract machine code.

Chapter 6 Architectural Design 46


A repository architecture for a language
processing system

Chapter 6 Architectural Design 47


A pipe and filter compiler architecture

Chapter 6 Architectural Design 48


Key points

✧ A software architecture is a description of how a software


system is organized.
✧ Architectural design decisions include decisions on the
type of application, the distribution of the system, the
architectural styles to be used.
✧ Architectures may be documented from several different
perspectives or views such as a conceptual view, a
logical view, a process view, and a development view.
✧ Architectural patterns are a means of reusing knowledge
about generic system architectures. They describe the
architecture, explain when it may be used and describe
its advantages and disadvantages.
Chapter 6 Architectural Design 49
Key points

✧ Models of application systems architectures help us


understand and compare applications, validate
application system designs and assess large-scale
components for reuse.
✧ Transaction processing systems are interactive systems
that allow information in a database to be remotely
accessed and modified by a number of users.
✧ Language processing systems are used to translate texts
from one language into another and to carry out the
instructions specified in the input language. They include
a translator and an abstract machine that executes the
generated language.
Chapter 6 Architectural Design 50

You might also like