Chapter 1 – Architectural Design
Mutah University
Faculty of IT
Department of Software Engineering
Dr. Ra’Fat A. AL-Msie’Deen
rafatalmsiedeen@mutah.edu.jo
https://rafat66.github.io/Al-Msie-Deen/
Software Architecture and Design
Reference - Text Book:
 Chapter 6 of Software Engineering book - by Ian
Sommerville. l0th Edition. Addison Wesley, 2015, ISBN-
10: 0137035152.
2
Objectives
 The objective of this chapter is to introduce the concepts
of software architecture and architectural design. When
you have read the chapter, you will:
 understand why the architectural design of software is important;
 understand the decisions that have to be made about the
software architecture during the architectural design process;
 have been introduced to the idea of Architectural patterns, well-
tried ways of organizing software architectures that can be
reused in system designs;
 understand how Application-Specific Architectural patterns may
be used in transaction processing and language processing
systems.
24/02/2020 3
Topics covered
 Architectural design decisions
 Architectural views
 Architectural patterns
 Application architectures
424/02/2020
Architectural design
 Architectural design is concerned with understanding
how a software system should be organized and
designing the overall structure of that system.
 Architectural design 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 is an
architectural model that describes how the system is
organized as a set of communicating components.
524/02/2020
Architectural design … cont.
 In the model of the
software development
process, architectural
design is the first stage in
the software design
process.
Figure 0.
A general model of the design process.
Agility and architecture
 In agile processes, it is generally accepted that an early
stage of an agile development process should focus on
designing an overall system architecture.
 Incremental development of architectures is not usually
successful. Refactoring components response to
changes is usually relatively easy. However, refactoring
the system architecture is expensive because you may
need to modify most system components to adapt them
to the architectural changes.
7
Agility and architecture … cont.
 In practice, there is a significant overlap between the
processes of requirements engineering and architectural
design.
 Ideally, a system specification should not include any design
information. This ideal is unrealistic, however, except for very
small systems.
 You need to identify the main architectural components as
these reflect the high-level features of the system.
 Therefore, as part of the requirements engineering process,
you might propose an abstract system architecture where you
associate groups of system functions or features with large-
scale components or sub-systems.
 You then use this decomposition to discuss the requirements
and more detailed features of the system with stakeholders. 8
The architecture of a packing robot control
system
 To help you understand what I mean by system
architecture, look at Figure 1. This diagram shows an
abstract model of the 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.
 The architectural model shows these components and the
links between them. 9
The architecture of a packing robot control
system … cont.
1024/02/2020
Architectural abstraction
 You can design software architectures at two levels of
abstraction, which I call architecture in the small and
architecture in the large:
1. Architecture in the small is concerned with the
architecture of individual programs.
 At this level, we are concerned with the way that an individual
program is decomposed into components.
 This chapter is mostly concerned with program architectures.
1124/02/2020
Architectural abstraction … cont.
 You can design software architectures at two levels of
abstraction, which I call architecture in the small and
architecture in the large:
2. Architecture in the large is concerned with the
architecture of complex enterprise systems that include
other systems, programs, and program components.
 These enterprise systems may be distributed over different
computers, which may be owned and managed by different
companies.
1224/02/2020
Architectural abstraction … cont.
 Software architecture is important because it affects the
performance, robustness, distributability, and
maintainability of a system.
 Individual components implement the functional system
requirements, but the dominant influence on the non-
functional system characteristics is the system’s
architecture.
 Chen et al. confirmed this in a study of “architecturally
significant requirements” where they found that non-
functional requirements had the most significant effect
on the system’s architecture.
24/02/2020 13
Advantages of explicit architecture
 Bass et al. suggest that explicitly designing and
documenting software architecture has three
advantages:
 Stakeholder communication
 The architecture is a high-level presentation of the system
that may be used as a focus for discussion by a range of
different stakeholders.
14
Advantages of explicit architecture … cont.
 System analysis
 Making the system architecture explicit at an early stage
in the system development requires some analysis.
 Architectural design decisions have a profound effect on
whether or not the system can meet critical
requirements such as performance, reliability, and
maintainability.
15
Advantages of explicit architecture … cont.
 Large-scale reuse
 An architectural model is a compact, manageable
description of how a system is organized and how the
components interoperate.
 The architecture may be reusable across a range of
systems.
• The system architecture is often the same for systems with
similar requirements and so can support large-scale
software reuse.
 Product-line architectures may be developed.
• Product-line architectures are an approach to reuse where
the same architecture is reused across a range of related
systems.
16
Architectural representations
 Simple, informal block diagrams showing entities and
relationships are the most frequently used method for
documenting software architectures.
 But these have been criticised because they lack
semantics, do not show the types of relationships
between entities nor the visible properties of entities in
the architecture.
 Depends on the use of architectural models. The
requirements for model semantics depends on how the
models are used.
1724/02/2020
Block diagram
 System architectures are often modeled informally using
simple block diagrams, as in Figure 1.
 Each box in the diagram represents a component.
 Boxes within boxes indicate that the component has
been decomposed to subcomponents.
 Arrows mean that data and or control signals are passed
from component to component in the direction of the
arrows.
24/02/2020 18
Block diagram … cont.
 Block diagrams present a high-level picture of the
system structure, which people from different disciplines,
who are involved in the system development process,
can readily understand.
 In spite of their widespread use, Bass et al. dislike
informal block diagrams for describing an architecture.
 They claim that these informal diagrams are poor
architectural representations, as they show neither the
type of the relationships among system components nor
the components’ externally visible properties.
24/02/2020 19
Block diagram … cont.
 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.
2024/02/2020
Block diagram … cont.
 Block diagrams are a good way of supporting
communications between the people involved in the
software design process. They are intuitive, and domain
experts and software engineers can relate to them and
participate in discussions about the system.
 Managers find them helpful in planning the project. For
many projects, block diagrams are the only architectural
description.
24/02/2020 21
Use of architectural models
 The apparent contradictions between architectural theory
and industrial practice arise because there are two ways
in which an architectural model of a program is used:
 As a way of facilitating discussion about the system
design.
 As a way of documenting an architecture that has
been designed.
24/02/2020 22
Use of architectural models … cont.
 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.
 Stakeholders can relate to it and understand an abstract view of
the system. They can then discuss the system as a whole
without being confused by detail.
 The architectural model identifies the key components that are to
be developed so that managers can start assigning people to
plan the development of these systems.
23
Use of architectural models … cont.
 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.
 The argument for such a model is that such a detailed
architectural description makes it easier to understand and
evolve the system.
24/02/2020 24
Key points
 A software architecture is a description of how a software
system is organized.
2524/02/2020
Chapter 1 – Architectural Design
Mutah University
Faculty of IT
Department of Software Engineering
Dr. Ra’Fat A. AL-Msie’Deen
rafatalmsiedeen@mutah.edu.jo
https://rafat66.github.io/Al-Msie-Deen/
Software Architecture and Design

Software Architecture and Design

  • 1.
    Chapter 1 –Architectural Design Mutah University Faculty of IT Department of Software Engineering Dr. Ra’Fat A. AL-Msie’Deen [email protected] https://rafat66.github.io/Al-Msie-Deen/ Software Architecture and Design
  • 2.
    Reference - TextBook:  Chapter 6 of Software Engineering book - by Ian Sommerville. l0th Edition. Addison Wesley, 2015, ISBN- 10: 0137035152. 2
  • 3.
    Objectives  The objectiveof this chapter is to introduce the concepts of software architecture and architectural design. When you have read the chapter, you will:  understand why the architectural design of software is important;  understand the decisions that have to be made about the software architecture during the architectural design process;  have been introduced to the idea of Architectural patterns, well- tried ways of organizing software architectures that can be reused in system designs;  understand how Application-Specific Architectural patterns may be used in transaction processing and language processing systems. 24/02/2020 3
  • 4.
    Topics covered  Architecturaldesign decisions  Architectural views  Architectural patterns  Application architectures 424/02/2020
  • 5.
    Architectural design  Architecturaldesign is concerned with understanding how a software system should be organized and designing the overall structure of that system.  Architectural design 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 is an architectural model that describes how the system is organized as a set of communicating components. 524/02/2020
  • 6.
    Architectural design …cont.  In the model of the software development process, architectural design is the first stage in the software design process. Figure 0. A general model of the design process.
  • 7.
    Agility and architecture In agile processes, it is generally accepted that an early stage of an agile development process should focus on designing an overall system architecture.  Incremental development of architectures is not usually successful. Refactoring components response to changes is usually relatively easy. However, refactoring the system architecture is expensive because you may need to modify most system components to adapt them to the architectural changes. 7
  • 8.
    Agility and architecture… cont.  In practice, there is a significant overlap between the processes of requirements engineering and architectural design.  Ideally, a system specification should not include any design information. This ideal is unrealistic, however, except for very small systems.  You need to identify the main architectural components as these reflect the high-level features of the system.  Therefore, as part of the requirements engineering process, you might propose an abstract system architecture where you associate groups of system functions or features with large- scale components or sub-systems.  You then use this decomposition to discuss the requirements and more detailed features of the system with stakeholders. 8
  • 9.
    The architecture ofa packing robot control system  To help you understand what I mean by system architecture, look at Figure 1. This diagram shows an abstract model of the 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.  The architectural model shows these components and the links between them. 9
  • 10.
    The architecture ofa packing robot control system … cont. 1024/02/2020
  • 11.
    Architectural abstraction  Youcan design software architectures at two levels of abstraction, which I call architecture in the small and architecture in the large: 1. Architecture in the small is concerned with the architecture of individual programs.  At this level, we are concerned with the way that an individual program is decomposed into components.  This chapter is mostly concerned with program architectures. 1124/02/2020
  • 12.
    Architectural abstraction …cont.  You can design software architectures at two levels of abstraction, which I call architecture in the small and architecture in the large: 2. Architecture in the large is concerned with the architecture of complex enterprise systems that include other systems, programs, and program components.  These enterprise systems may be distributed over different computers, which may be owned and managed by different companies. 1224/02/2020
  • 13.
    Architectural abstraction …cont.  Software architecture is important because it affects the performance, robustness, distributability, and maintainability of a system.  Individual components implement the functional system requirements, but the dominant influence on the non- functional system characteristics is the system’s architecture.  Chen et al. confirmed this in a study of “architecturally significant requirements” where they found that non- functional requirements had the most significant effect on the system’s architecture. 24/02/2020 13
  • 14.
    Advantages of explicitarchitecture  Bass et al. suggest that explicitly designing and documenting software architecture has three advantages:  Stakeholder communication  The architecture is a high-level presentation of the system that may be used as a focus for discussion by a range of different stakeholders. 14
  • 15.
    Advantages of explicitarchitecture … cont.  System analysis  Making the system architecture explicit at an early stage in the system development requires some analysis.  Architectural design decisions have a profound effect on whether or not the system can meet critical requirements such as performance, reliability, and maintainability. 15
  • 16.
    Advantages of explicitarchitecture … cont.  Large-scale reuse  An architectural model is a compact, manageable description of how a system is organized and how the components interoperate.  The architecture may be reusable across a range of systems. • The system architecture is often the same for systems with similar requirements and so can support large-scale software reuse.  Product-line architectures may be developed. • Product-line architectures are an approach to reuse where the same architecture is reused across a range of related systems. 16
  • 17.
    Architectural representations  Simple,informal block diagrams showing entities and relationships are the most frequently used method for documenting software architectures.  But these have been criticised because they lack semantics, do not show the types of relationships between entities nor the visible properties of entities in the architecture.  Depends on the use of architectural models. The requirements for model semantics depends on how the models are used. 1724/02/2020
  • 18.
    Block diagram  Systemarchitectures are often modeled informally using simple block diagrams, as in Figure 1.  Each box in the diagram represents a component.  Boxes within boxes indicate that the component has been decomposed to subcomponents.  Arrows mean that data and or control signals are passed from component to component in the direction of the arrows. 24/02/2020 18
  • 19.
    Block diagram …cont.  Block diagrams present a high-level picture of the system structure, which people from different disciplines, who are involved in the system development process, can readily understand.  In spite of their widespread use, Bass et al. dislike informal block diagrams for describing an architecture.  They claim that these informal diagrams are poor architectural representations, as they show neither the type of the relationships among system components nor the components’ externally visible properties. 24/02/2020 19
  • 20.
    Block diagram …cont.  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. 2024/02/2020
  • 21.
    Block diagram …cont.  Block diagrams are a good way of supporting communications between the people involved in the software design process. They are intuitive, and domain experts and software engineers can relate to them and participate in discussions about the system.  Managers find them helpful in planning the project. For many projects, block diagrams are the only architectural description. 24/02/2020 21
  • 22.
    Use of architecturalmodels  The apparent contradictions between architectural theory and industrial practice arise because there are two ways in which an architectural model of a program is used:  As a way of facilitating discussion about the system design.  As a way of documenting an architecture that has been designed. 24/02/2020 22
  • 23.
    Use of architecturalmodels … cont.  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.  Stakeholders can relate to it and understand an abstract view of the system. They can then discuss the system as a whole without being confused by detail.  The architectural model identifies the key components that are to be developed so that managers can start assigning people to plan the development of these systems. 23
  • 24.
    Use of architecturalmodels … cont.  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.  The argument for such a model is that such a detailed architectural description makes it easier to understand and evolve the system. 24/02/2020 24
  • 25.
    Key points  Asoftware architecture is a description of how a software system is organized. 2524/02/2020
  • 26.
    Chapter 1 –Architectural Design Mutah University Faculty of IT Department of Software Engineering Dr. Ra’Fat A. AL-Msie’Deen [email protected] https://rafat66.github.io/Al-Msie-Deen/ Software Architecture and Design