SOFTWARE ARCHITECTURE AND DESIGN PATTERNS
UNIT-II: Analyzing Architectures
Architecture evolution is the process of maintaining and adapting an existing software architecture to meet changes in requirements and environment.
As software architecture provides a fundamental structure of a software system, its evolution and maintenance would necessarily impact its fundamental structure.
Architecture activities
Architecture supporting activities
Architectural analysis is the process of understanding the environment in which a proposed system will operate and determining the requirements for the system.
The input or requirements to the analysis activity can come from any number of stakeholders and include items such as:
what the system will do when operational (the functional requirements)
how well the system will perform runtime non-functional requirements such as reliability, operability, performance efficiency, security, compatibility defined in ISO/IEC 25010:2011 standard
development-time of non-functional requirements such as maintainability and transferability defined in ISO 25010:2011 standard
business requirements and environmental contexts of a system that may change over time, such as legal, social, financial, competitive, and technology concerns
The Architecture Tradeoff Analysis Method (ATAM)
The Architecture Tradeoff Analysis Method (ATAM) is a method for evaluating software architectures relative to quality attribute goals. Method evaluations expose architectural risks that potentially inhibit the achievement of an organization’s business goals.
A trade-off (or tradeoff) is a situational decision that involves diminishing or losing one quality, quantity or property of a set or design in return for gains in other aspects.
In simple terms, a tradeoff is where one thing increases and another must decrease.
Need of Architectural Analysis?
The earlier you find a problem in a software project, the better off you are.�An unsuitable architecture will bring disaster on a project.�Architecture evaluation is a cheap way to avoid disaster
Participants in ATAM:
1. The evaluation team
team leader
evolution leader
scenario and processing scribe
timekeeper
process observe
2. Project decision makers
3. Architecture stakeholders
developers
testers
users
builders of systems
The method consists of nine steps:
Phases of the ATAM
Phase 0
activity: preparation
participants: evaluation team leadership and key project decision makers
typical duration: proceeds informally as required, perhaps over a few weeks
Phase 1
activity: evaluation (steps 1-6)
participants: evaluation team and project decision makers
typical duration: 1 day followed by a hiatus of 2 to 3 weeks
Phase 2
activity: evaluation (steps 7-9)
participants: evaluation team, project decision makers and stakeholders
typical duration: 2 days
Phase 3
activity: follow-up
participants: evaluation team and evaluation client
typical duration: 1 week
Outputs of ATAM
A concise presentation of the architecture.
Articulation of business goals.
The quality requirement in terms of a collection of scenarios.
Mapping of architectural decisions to quality requirements.
A set of identified sensitivity and tradeoff points.
A set of risks and non-risks.
A set of risk themes.
Software Architecture Evaluation Methods
Cost-Benefit Analysis Method (CBAM)
Context of CBAM
Prerequisites and Inputs for CBAM
Inputs in a CBAM evaluation session are:
- The business goals presentation.
- The architectural decisions and possible tradeoffs resulted in a former ATAM session.
- The quality attributes expectation level and economical constraints. (Budget)
CBAM Steps
CBAM Outcomes and Strengths
Architecture design decision making
In software engineering and software architecture design, architectural decisions are design decisions that address architecturally significant requirements; they are perceived as hard to make and/or costly to change.
Architectural decisions influence and impact the non-functional characteristics of a system.
Each architectural decision describes a concrete, architecturally significant design issue (a.k.a. design problem, decision required) for which several potential solutions (a.k.a. options, alternatives) exist.
An architectural decision captures the result of a conscious, often collaborative option selection process and provides design rationale for the decision making outcome, e.g., by referencing one or more of the quality attributes addressed by the architectural decision and answering "why" questions about the design and option selection.
Architectural decisions concern a software system as a whole, or one or more of the core components of such a system.
Types of architectural decisions are the selection of architectural tactics and patterns, of integration technologies, and of middleware, as well as related implementation strategies and assets (both commercial products and open source projects).
Decision management steps
Decision identification
Before a decision can be made, the need for a decision must be articulated: how urgent and how important is the AD?
Decision making
A number of decision making techniques exists, both general ones and software and software architecture specific ones, for instance, dialogue mapping.
Group decision making is an active research topic.
Decision documentation
Many templates and tools for decision capturing exist, both in agile communities and in software engineering and architecture design methods
Decision enactment (enforcement)
Architectural decisions are used in software design; hence they have to be communicated to, and accepted by, the stakeholders of the system that fund, develop, and operate it.
Architectural decisions also have to be considered when modernizing a software system in software evolution.
Decision sharing (optional step)
Many architectural decisions recur across projects; hence, experiences with past decisions, both good and bad, can be valuable reusable assets when employing an explicit knowledge management strategy.
Making decisions
Principles Leading to Good Design
Software Product Line
Software product line is defined as “A set of software-intensive systems sharing a common managed set of features that satisfy the specific needs of a particular market segment or mission”
These Systems are developed from a common core of assets (e.g. a common architecture) in a prescribed way.
The creation and validation of product line software architectures are inherently more complex than those of software architectures for single systems.
PLA Development Process
PuLSE-DSSA Process
�PuLSE-DSSA Process Steps �
1. Create Scenarios
2. Group and Sort Scenarios
3. Define Test Cases
4. Apply Scenarios
5. Evaluate Architecture
6. Analyze Problems
Building systems from off the shelf components�