UNIT-1 The Architecture Business Cycle: Rajasekhar, SEAT
UNIT-1 The Architecture Business Cycle: Rajasekhar, SEAT
Software architecture is a result of technical, business and social influences. Its existence in
turn affects the technical, business and social environments that subsequently influence
future architectures. We call this cycle of influences, from environment to the architecture
and back to the environment, the Architecture Business Cycle (ABC).
Some of the feedback comes from the architecture itself, and some comes from the system
built from it. Working of architecture business cycle:
Teams are formed for individual software units; and the development, test, and integration
activities around the units. Teams become embedded in the organization’s structure. This is
feedback from the architecture to the developing organization.
The architecture can provide opportunities for the efficient production and deployment of
the similar systems, and the organization may adjust its goals to take advantage of its
newfound expertise to plumb the market. This is feedback from the system to the
developing organization and the systems it builds.
Giving the customer the opportunity to receive a system in a more reliable, timely and
economical manner than if the subsequent system were to be built from scratch.
4) The process of system building will affect the architect’s experience with subsequent
systems by adding to the corporate experience base.
5) A few systems will influence and actually change the software engineering culture. i.e,
The technical environment in which system builders operate and learn.
There are a variety of techniques for eliciting requirements from the stakeholders.
For ex:
Object oriented analysis uses scenarios, or “use cases” to embody requirements.
Safety-critical systems use more rigorous approaches, such as finite-state-machine
models or formal specification languages.
Another technique that helps us understand requirements is the creation of
prototypes.
In the landmark book The Mythical Man-Month, Fred Brooks argues forcefully and
eloquently that conceptual integrity is the key to sound system design and that
conceptual integrity can only be had by a small number of minds coming together
to design the system's architecture.
Figure-1
2.ARCHITECTURES ARE INFLUENCED BY THE DEVELOPING ORGANIZATIONS.
Architecture is influenced by the structure or nature of the development
organization.
There are three classes of influence that come from the developing organizations:
immediate business, long-term business and organizational structure.
An organization may have an immediate business investment in certain assets, such
as existing architectures and the products based on them.
An organization may wish to make a long-term business investment in an
infrastructure to pursue strategic goals and may review the proposed system as one
means of financing and extending that infrastructure.
The organizational structure can shape the software architecture.
Architecture is the overall structure of the system. The different structures provide
the critical engineering leverage points to imbue a system with the quality attributes
Rajasekhar, SEAT Page 6
that will render it a success or failure. The multiplicity of structures in an architecture
lies at the heart of the concept.
Architecture is the structure of the components of a program or system, their
interrelationships, and the principles and guidelines governing their design and
evolution over time. Any system has an architecture that can be discovered and
analyzed independently of any knowledge of the process by which the architecture was
designed or evolved.
Architecture is components and connectors. Connectors imply a runtime mechanism
for transferring control and data around a system. When we speak of "relationships"
among elements, we intend to capture both runtime and non-runtime relationships.
Architectural structures can by and large be divided into three groups, depending on the
broad nature of the elements they show.
Module structures:
Here the elements are modules, which are units of implementation. Modules represent a
code-based way of considering the system. They are assigned areas of functional
responsibility.
Module structures allow us to answer questions such as :
Component-and-connector structures:
Here the elements are runtime components (which are the principal units of computation)
and connectors (which are the communication vehicles among components).
Component-and-connector structures help answer questions
What are the major executing components and how do they interact?
What are the major shared data stores?
Which parts of the system are replicated?
How does data progress through the system?
What parts of the system can run in parallel?
Allocation structures: Allocation structures show the relationship between the software
elements and the elements in one or more external environments in which the software is
created and executed.
They answer questions:
what processor does each software element execute on?
What is the assignment of software elements to development teams?
The above three structures correspond to the three broad types of decision that
architectural design involves:
How is the system to be structured as a set of code units (modules)?
How is the system to be structured as a set of elements that have runtime behavior
(components) and interactions (connectors)?
How is the system to relate to non-software structures in its environment (i.e., CPUs,
file systems, networks, development teams, etc.)?
Module
1. Decomposition: The units are modules related to each other by the "is a sub module of "
relation, showing how larger modules are decomposed into smaller ones recursively until
they are small enough to be easily understood
2. Uses: The units of this important but overlooked structure are also modules, or
procedures or resources on the interfaces of modules.
3. Layered: When the uses relations in this structure are carefully controlled in a particular
way, a system of layers emerges, in which a layer is a coherent set of related
functionality.
Rajasekhar, SEAT Page 8
4. Class: The module units in this structure are called classes. The relation is "inherits-from"
or "is-an-instance-of."
Component-and-Connector
1. Client-server
If the system is built as a group of cooperating clients and servers, this is a good
component-and-connector structure to illuminate.
2. Concurrency
This component-and-connector structure allows the architect to determine
opportunities for parallelism and the locations where resource contention may
occur.
3. Process
Like all component-and-connector structures, this one is orthogonal to the module-
based structures and deals with the dynamic aspects of a
Allocation
Allocation structures include the following structures
1. Deployment:
This view allows an engineer to reason about performance, data integrity,
availability, and security .
2. Implementation:
This is critical for the management of development activities and builds processes.
3. Work assignment:
This structure assigns responsibility for implementing and integrating the modules to
the appropriate development teams.
RELATING STRUCTURES TO EACH OTHER
Each of these structures provides a different perspective and design handle on a system,
and each is valid and useful in its own right. In general, mappings between structures
are many to many. Individual structures bring with them the power to manipulate one
or more quality attributes. They represent a powerful separation-of-concerns approach
for creating the architecture.
WHICH STRUCTURES TO CHOOSE?
Kruchten's four views follow:
Logical. The elements are "key abstractions," which are manifested in the object-
oriented world as objects or object classes. This is a module view.
Process. This view addresses concurrency and distribution of functionality. It is a
component-and-connector view.
Development. This view shows the organization of software modules, libraries,
subsystems, and units of development. It is an allocation view, mapping software to the
development environment.
Physical. This view maps other elements onto processing and communication nodes
and is also an allocation vi
Scenarios:
The quality attribute must be described in terms of scenarios.
Scenarios provide a simple yet powerful means for bridging the gap between
requirements and architecture.
A scenario is a short statement describing an interaction of one of the stakeholders
with the system.
A scenario is an instance of a use case.
An architectural scenario is a crisp, concise description of a situation that the system
is likely to face in its production environment, along with the definition of the
response required of the system.
A scenario defines the source of stimulus, the actual stimulus, the artefact affected,
the environment in which it exists, the effect of the action and the response
measure.
Why are quality attributes challenging?
1. Quality attributes often impact the system as a whole.
2. Quality attributes interrelate with functionality.
3. Quality attributes are often in conflict with each other.
4. It is often a practical challenge to define quality attribute requirements.
Introduction to Quality Attribute Workshop:
QAWs provide a method for identifying a system’s architecture critical quality
attributes, such as availability, performance, security, interoperability, and
modifiability.
The QAW does not assume the existence of software architecture.
It was developed to complement the SEI Architecture Tradeoff Analysis
Method(ATAM).
QAW defines two kinds of architectures:
1. System architecture : The fundamental system structure defined in terms of
system elements, interfaces, constraints and behaviors.
2. Software architecture: The structure or structures of the system.
The QAW is system-centric and stakeholder focused.
QAW involves these steps:
1. QAW presentation and introduction
2. Business presentation
3. Architectural plan presentation
4. Identification of architectural derivers
Achieving qualities:
The achievement of these qualities relies on fundamental design decisions. We will
examine these design decisions, which we call tactics.
A tactic is a design decision that influences the control of a quality attribute
response.
We organize the tactics for each system quality attribute as a hierarchy, but it is important
to understand that each hierarchy is intended only to demonstrate some of the tactics, and
that any list of tactics is necessarily incomplete.
(1)Availability Tactics:
A failure occurs when the system no longer delivers a service that is consistent with its
specification; this failure is observable by the system's users.
A fault (or combination of faults) has the potential to cause a failure. Recall also that
recovery or repair is an important aspect of availability.
We first consider fault detection. We then consider fault recovery and finally, briefly,
fault prevention.
(2)Modifiability Tactics:
We organize the tactics for modifiability in sets according to their goals.
One set has as its goal reducing the number of modules that are directly affected by a
change. We call this set "localize modifications."
A second set has as its goal limiting modifications to the localized modules. We use this
set of tactics to "prevent the ripple effect."
A third set of tactics has as its goal controlling deployment time and cost. We call this set
"defer binding time."
(3)Performance Tactics: Performance tactics control the time within which a response is
generated.
RESOURCE DEMAND
One tactic for reducing latency is to reduce the resources required for processing an
event stream.
Increase computational efficiency. Improving the algorithms used in critical
areas will decrease latency. This tactic is usually applied to the processor but is
also effective when applied to other resources such as a disk.
Reduce computational overhead. If there is no request for a resource,
processing needs are reduced. The use of intermediaries increases the resources
(5)Testability Tactics:
The goal of tactics for testability is to allow for easier testing when an increment of software
development is completed.