Software
Architecture Design
• Presented By
• Faraz Imllak Mayo
• Fall 18 BSIT 055 (B)
• Software Engineering
Definitions
• The software architecture of a program or computing system is
the structure or structures of the system which comprise
– The software components
– The externally visible properties of those components
– The relationships among the components
• Software architectural design represents the structure of the
data and program components that are required to build a
computer-based system
• An architectural design model is transferable
– It can be applied to the design of other systems
– It represents a set of abstractions that enable software engineers to
describe architecture in predictable ways
Why Architecture?
The architecture is not the operational software. Rather, it is a
representation that enables a software engineer to:
(1)analyze the effectiveness of the design in meeting its stated
requirements,
(2)reduce the risks associated with the construction of the
software.
Why is Architecture
Important?
• Representations of software architecture are an enabler for
communication between all parties (stakeholders) interested
in the development of a computer-based system.
 Controls complexity
 Gives Consistency
 Reduces risk
 Enables re-use
Architectural Design Process
• Basic Steps
– Creation of the data design
– Derivation of one or more representations of the architectural
structure of the system
– Analysis of alternative architectural styles to choose the one best
suited to customer requirements and quality attributes
– Elaboration of the architecture based on the selected architectural
style
• A database designer creates the data architecture for a system
to represent the data components
• A system architect selects an appropriate architectural style
derived during system engineering and software requirements
analysis
Architecture attributes
Performance
Localise operations to minimise sub-system
communication
Security
Use a layered architecture with critical assets in inner
layers
Safety
Isolate safety-critical components
Availability
Include redundant components in the architecture
Maintainability
Use fine-grain, self-contained components
Architecture design
decisions
Architecture design is a creative process, so the process is
depend on the type of system being developed.
A number of common decisions to design all process;
 Is there a general application architecture that can be
used?
 How will the system be distributed?
 Which style of construction is appropriate?
 What approach will be used to design the system?
 How will the system merge into modules?
 Which control strategy should be used?
 How will architectural design be reviewed?
 How should architecture be documented?
•
Architecture models
 Static model
 Dynamic model
 Interface model
 Relationship model
 Distribution model
Software Architectural
Styles
Architectural Styles
Each style describes a system category that encompasses:
(1)a set of components (a system, e.g., a database, computational modules)
that perform a function required by
(2)a set of connectors that enable “communication, coordination and
cooperation” among components,
(3)constraints that define how components can be integrated to form the
system,
 Data-centered architectures
 Data flow architectures
 Call and return architectures
 Object-oriented architectures
 Layered architectures
Data-Centered
Architecture
Data Flow Style
• Characterized by viewing the system as a series of
transformations on successive pieces of input data
• Data enters the system and then flows through the
components one at a time until they are assigned to output or
a data store
• Batch sequential style
– The processing steps are independent components
– Each step runs to completion before the next step begins
• Pipe-and-filter style
– Emphasizes the incremental transformation of data by successive
components
–
Data Flow
Architecture
Call-and-Return Style
• Has been the dominant architecture since the start of software
development
• Main program and subroutine style
– Decomposes a program hierarchically into small pieces (i.e., modules)
– Typically has a single thread of control that travels through various
components in the hierarchy
• Remote procedure call style
– Consists of main program and subroutine style of system that is
decomposed into parts that are resident on computers connected via
a network
– Incurs a finite communication time between subroutine call and
response
25
Call-and-Return Style
Main module
Subroutine A
Subroutine B
Subroutine A-1 Subroutine A-2
Physical layer
Data layer
Network layer
Transport layer
Application layer
Class W
Class V
Class Z
Class X Class Y
Layered
Architecture
Analyzing Architectural Design
1.Collect scenarios.
2.Elicit requirements, constraints, and environment
description.
3.Describe the architectural styles/patterns that have been
chosen to address the scenarios and requirements:
 Logical view
 process view
 Implementation view
 Deployment view
Thank You

Software architecture design ppt

  • 1.
    Software Architecture Design • PresentedBy • Faraz Imllak Mayo • Fall 18 BSIT 055 (B) • Software Engineering
  • 2.
    Definitions • The softwarearchitecture of a program or computing system is the structure or structures of the system which comprise – The software components – The externally visible properties of those components – The relationships among the components • Software architectural design represents the structure of the data and program components that are required to build a computer-based system • An architectural design model is transferable – It can be applied to the design of other systems – It represents a set of abstractions that enable software engineers to describe architecture in predictable ways
  • 3.
    Why Architecture? The architectureis not the operational software. Rather, it is a representation that enables a software engineer to: (1)analyze the effectiveness of the design in meeting its stated requirements, (2)reduce the risks associated with the construction of the software.
  • 4.
    Why is Architecture Important? •Representations of software architecture are an enabler for communication between all parties (stakeholders) interested in the development of a computer-based system.  Controls complexity  Gives Consistency  Reduces risk  Enables re-use
  • 5.
    Architectural Design Process •Basic Steps – Creation of the data design – Derivation of one or more representations of the architectural structure of the system – Analysis of alternative architectural styles to choose the one best suited to customer requirements and quality attributes – Elaboration of the architecture based on the selected architectural style • A database designer creates the data architecture for a system to represent the data components • A system architect selects an appropriate architectural style derived during system engineering and software requirements analysis
  • 6.
    Architecture attributes Performance Localise operationsto minimise sub-system communication Security Use a layered architecture with critical assets in inner layers Safety Isolate safety-critical components Availability Include redundant components in the architecture Maintainability Use fine-grain, self-contained components
  • 7.
    Architecture design decisions Architecture designis a creative process, so the process is depend on the type of system being developed. A number of common decisions to design all process;  Is there a general application architecture that can be used?  How will the system be distributed?  Which style of construction is appropriate?  What approach will be used to design the system?  How will the system merge into modules?  Which control strategy should be used?  How will architectural design be reviewed?  How should architecture be documented? •
  • 8.
    Architecture models  Staticmodel  Dynamic model  Interface model  Relationship model  Distribution model
  • 9.
  • 10.
    Architectural Styles Each styledescribes a system category that encompasses: (1)a set of components (a system, e.g., a database, computational modules) that perform a function required by (2)a set of connectors that enable “communication, coordination and cooperation” among components, (3)constraints that define how components can be integrated to form the system,  Data-centered architectures  Data flow architectures  Call and return architectures  Object-oriented architectures  Layered architectures
  • 11.
  • 12.
    Data Flow Style •Characterized by viewing the system as a series of transformations on successive pieces of input data • Data enters the system and then flows through the components one at a time until they are assigned to output or a data store • Batch sequential style – The processing steps are independent components – Each step runs to completion before the next step begins • Pipe-and-filter style – Emphasizes the incremental transformation of data by successive components –
  • 13.
  • 14.
    Call-and-Return Style • Hasbeen the dominant architecture since the start of software development • Main program and subroutine style – Decomposes a program hierarchically into small pieces (i.e., modules) – Typically has a single thread of control that travels through various components in the hierarchy • Remote procedure call style – Consists of main program and subroutine style of system that is decomposed into parts that are resident on computers connected via a network – Incurs a finite communication time between subroutine call and response
  • 15.
    25 Call-and-Return Style Main module SubroutineA Subroutine B Subroutine A-1 Subroutine A-2 Physical layer Data layer Network layer Transport layer Application layer Class W Class V Class Z Class X Class Y
  • 16.
  • 17.
    Analyzing Architectural Design 1.Collectscenarios. 2.Elicit requirements, constraints, and environment description. 3.Describe the architectural styles/patterns that have been chosen to address the scenarios and requirements:  Logical view  process view  Implementation view  Deployment view
  • 18.