An Introduction To Software Architecture
An Introduction To Software Architecture
Software Architecture
Software Engineering Lab
Table of content
Introduction
Architecture Business Cycle
Architectural Structures and Views
Quality Attributes
Achieving Qualities
Software Architecture Analysis
Method
Introduction
Definition
The software architecture of a
program or computing system is
the structure or structures of the
system, which comprise software
elements, the externally visible
properties of those elements, and
the relationships among them.
Why is architecture
important?
Handling
complexity
Communication
among stakeholders
Design Decisions
Hazards
With
Once
of elements
Types of relations
A set of syntactic constraints
Semantics of the diagram
Rationale, principles, and guidelines
For what purposes it is useful
Categorization of Structures
Module Structures
2. Component and Connector
Structures
3. Allocation Structures
1.
Module Structures
Elements:
modules (units of
implementation). Modules are a code based
way of considering the system
Specifies:
Functional responsibility of modules
Other elements a module is allowed to use
Generalization and specialization relations
Run-time
1.1 Decomposition
Structure
Elements:
modules in a hierarchy
Relations: is a sub-module of, shares
secret with
Function
Example:
1.2
Uses Structure
Elements:
modules, procedures, or
resources on the interfaces of modules
Relations: uses: one unit uses another
if the correctness of the first requires
the presence of a correct version (not
a stub of) of the second.
Function
Example:
1.3
Layered Structure
Is
Example:
1.4
Class Structure
Elements:
classes
Relations: inherits from, is an instance
of
Function
Example:
2.1
Process Structure
Elements:
processes or threads
Relations: attachment (that allow
communication, synchronization,
and/or exclusion operations)
Function
Example:
Example:
2.3
Client-Server Structure
Elements:
Example:
Allocation Structures
Show
Example:
3.2
Implementation
Structure
Shows
Example:
3.3
Work Assignment
Structure
Function Example:
The architect will know the expertise required on
each team
The means for factoring functional commonalities
and assigning them to a single team, rather than
having them implemented by everyone who needs
them.
Notes
Each
Structures
4 + 1 View Model of
Architecture
Logical:
Quality Attributes
Traditional Classification of
Requirements
Functional
Non-Functional (Quality Attributes)
A popular software myth: first we build a
software that satisfies functional
requirements, then we will add or inject
non-functional requirements to it.
Functionality and
Architecture
Functionality
Classification of Quality
Attributes
1.
2.
3.
(related to Reliability)
Modifiability (includes Protability and
Reusability, Scalability)
Performance
Security
Testability
Usability (includes Self-Adaptability and
User-Adaptability)
Business Qualities
Time
to market
Cost and benefit
Predicted lifetime of the system
Targeted market
Rollout schedule
Integration with legacy systems
Integrity
and Completeness
Achieving Qualities
Quality
Requirements
Tactics Selection
Tactics Implementation:
Design Patterns &
Architectural Patterns
Tactics
A
e.g.
Availability Tactics
Modifiability Tactics
Patterns
A
Abstraction
level of patterns
Business
Analysis
Architecture
Design
Implementation (Idioms)
Test Patterns (or guideline to testing patterns)
Relationship of Tactics to
Patterns
An
However,
Repository
Blackboard (publisher-subscriber)
Structural
Scalability
Modifiability
Client
Client
Shared Data
Client
Client
interactive
Poor performance
tuning
Layered
Modifiability
Portability
Shared-Memory Style
Layered
Style
SharedMem
3
1
ADT
2
3
Layere
d
1
3
1
2
1
9
2
2
2
13
3
2
3
15