SADP Unit 2
SADP Unit 2
SADP Unit 2
UNIT-II
UNIT-II: Analyzing Architectures: Architecture Evaluation, Architecture design decision
making, ATAM, CBAM
Moving from One System to Many: Software Product Lines, Building systems from off the
shelf components, Software architecture in future
1. ARCHITECTURE EVALUATION
Architecture evaluation has come to provide relatively a low-cost risk mitigation capability.
Making sure the architecture is the right one simply makes good sense. An architecture
evaluation should be a standard part of every architecture-based development methodology.
Evaluation can also be used to choose between two competing architectures by evaluating both
and seeing which one fares better against the criteria for "goodness."
The planned evaluation is ideally considered an asset to the project, at worst a distraction from it.
Planned evaluations are pro-active and team-building.
An unplanned evaluation is more of an ordeal for project members, consuming extra project
resources and time in the schedule from a project already struggling with both. Unplanned
evaluations are reactive, and tend to be tension filled. An evaluation's team leader must take care
not to let the activities devolve into finger pointing.
Clearly articulated goals and requirements for the architecture. Architecture is only
suitable, or not, in the presence of specific quality attributes. One that delivers
breathtaking performance may be totally wrong for an application that needs
modifiability.
Controlled scope. In order to focus the evaluation, a small number of explicit goals
should be enumerated. The number should be kept to a minimum? Around three to five?.
Cost-effectiveness. Evaluation sponsors should make sure that the benefits of the
evaluation are likely to exceed the cost. The types of evaluation we describe are suitable
for medium and large-scale projects but may not be cost-effective for small projects.
Key personnel availability. It is imperative to secure the time of the architect or at least
someone who can speak authoritatively about the system's architecture and design. This
person (or these people) primarily should be able to communicate the facts of the
architecture quickly and clearly as well as the motivation behind the architectural
decisions.
The ATAM is so named because it reveals how well architecture satisfies particular quality
goals, and it provides insight into how quality goals interact? That is, how they trade off. The
ATAM is designed to elicit the business goals for the system as well as for the architecture. It is
also designed to use those goals and stakeholder participation to focus the attention of the
evaluators on the portion of the architecture that is central to the achievement of the goals.
The evaluation team: This group is external to the project whose architecture is being
evaluated. It usually consists of three to five people. Each member of the team is assigned
a number of specific roles to play during the evaluation.
Project decision makers: These people are empowered to speak for the development
project or have the authority to mandate changes to it. They usually include the project
manager, and, if there is an identifiable customer who is footing the bill for the
development, he or she will be present (or represented) as well.
Architecture stakeholders: Stakeholders have a vested interest in the architecture
performing as advertised. They are the ones whose ability to do their jobs hinges on the
architecture promoting modifiability, security, high reliability, or the like. Stakeholders
include developers, testers, integrators, maintainers, performance engineers, users,
builders of systems interacting with the one under consideration, and others.
2.3 Phases of the ATAM: Activities in an ATAM-based evaluation are spread out over four
phases.
The improvements in cost, time to market, and productivity that come with a successful product
line can be breathtaking. Consider:
Nokia is able to produce 25 to 30 different phone models per year (up from 4 per year)
because of the product line approach.
Cummins, Inc., was able to reduce the time it takes to produce the software for a diesel
engine from about a year to about a week.
Architectures for Product Lines: A product line architect needs to consider three things:
3. Evaluating the architecture for product line suitability: Like any other, the
architecture for a software product line should be evaluated for fitness of purpose. In fact,
given the number of systems that will rely on it, evaluation takes on an even more
important role for product line architecture.
The good news is that the evaluation techniques described earlier in this book work well
for product line architectures. The architecture should be evaluated for its robustness and
generality, to make sure it can serve as the basis for products in the product line's
envisioned scope. It should also be evaluated to make sure it meets the specific
behavioral and quality requirements of the product at hand. We begin by focusing on the
and how of the evaluation and then turn to when it should take place.
What and How to Evaluate: The evaluation will have to focus on the variation points to
make sure they are appropriate, that they offer sufficient flexibility to cover the product
line's intended scope, that they allow products to be built quickly, and that they do not
What impact does this decision have on your architecture? Either the whole system must be
written in Visual Basic with its built-in callback-centered style or the operator portion must be
isolated from the rest of the system in some fashion. This is a fundamental structural decision,
driven by the choice of a single component for a single portion of the system.
The use of off-the-shelf components in software development, while essential in many cases,
also introduces new challenges. In particular, component capabilities and liabilities are a
principle architectural constraint.
All but the simplest components have a presumed architectural pattern that is difficult to violate.
For example, an HTTP server assumes a client-server architectural pattern with defined
interfaces and mechanisms for integrating back-end functionality. If the architecture you design
conflicts with the architecture assumed by an HTTP server component, you may find yourself
with an exceptionally difficult integration task.
A prototype situated in a specific design context is called a model solution. A model problem
may have any number of model solutions, depending on the severity of risk inherent in the
design context and on the success of the model solutions in addressing it.
Model problems are normally used by design teams. Optimally, the design team consists of an
architect who is the technical lead on the project and makes the principal design decisions, as
well as a number of designers/engineers who may implement a model solution for the model
problem.
An illustration of the model problem work flow is shown in Figure 2. The process consists of the
following six steps that can be executed in sequence:
The architect and the engineers identify a design question. The design question initiates
the model problem, referring to an unknown that is expressed as a hypothesis.
The architect and the engineers define the starting evaluation criteria. These criteria
describe how the model solution will support or contradict the hypothesis.
The architect and the engineers define the implementation constraints. The
implementation constraints specify the fixed (inflexible) part of the design context that
governs the implementation of the model solution. These constraints might include such
things as platform requirements, component versions, and business rules.
The 1970s saw a concern with the structuring of programs to achieve qualities beyond correct
function. Data-flow analysis, entity-relation diagrams, information hiding, and other principles or
techniques formed the bases of myriad design methodologies, each of which led to the creation
of subroutines or collections of them whose functionality could be rationalized in terms of
developmental qualities. These elements were usually called modules.
In the 1990s, standard object-based architectures, in the form of frameworks, started appearing.
Objects have given us a standard vocabulary for elements and have led to new infrastructures for
wiring collections of elements together. Abstractions have grown more powerful along the way;
we now have computing platforms in our homes that let us treat complex entities, such as
spreadsheets, documents, graphical images, audio clips, and databases, as interchangeable black-
box objects that can be blithely inserted into instances of each other.
Architecture places the emphasis above individual elements and on the arrangement of the
elements and their interaction. It is this kind of abstraction, away from the focus on individual
elements that makes such breathtaking interoperability possible.
In the current decade, we see the rise of middleware and IT architecture as a standard platform.
Purchased elements have security, reliability, and performance support services that a decade ago
had to be added by individual project developers. We summarize this discussion in Figure 3.
.
Figure 3: Growth in the types of abstraction available over time