Software Architecture
Software Architecture
What is Software
Architecture
By
Mangesh R. Wanjari
Asst. Professor, Department of CSE
RKNEC, Nagpur
6/6/2014 2
Just a word to start with
with Linda Northrop
Note: Linda Northrop is a program director at Carnegie
Mellon University's Software Engineering Institute.
If a project has not achieved a system architecture,
including its rationale, the project should not proceed to
full-scale system development. Specifying the architecture
as a deliverable enables its use throughout the
development and maintenance process.
Barry Boehm [Boehm 95]
6/6/2014 3
What Software Architecture Is and What It Isn't
The system consists of four elements.
Three of the elements Prop Loss Model (MODP), Reverb Model (MODR), and Noise
Model (MODN)might have more in common with each other than with the fourth
Control Process (CP)because they are positioned next to each other.
All of the elements apparently have some sort of relationship with each other, since the
diagram is fully connected
6/6/2014 4
Is this an architecture?
What can we not tell from the diagram?
What is the nature of the elements?
What are the responsibilities of the elements?
What is the significance of the connections?
What is the significance of the layout?
We must raise these questions because unless we know precisely what
the elements are and how they cooperate to accomplish the purpose of
the system, diagrams such as these are not much help and should be
regarded skeptically.
6/6/2014 5
Is this an architecture?
This diagram does not show a software architecture, at
least not in any useful way. The most charitable thing we
can say about such diagrams is that they represent a start.
We now define what does constitute a software
architecture:
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.
6/6/2014 6
Definition explained!!
"Externally visible" properties are those assumptions other elements can make
of an element
First, architecture defines software elements.
Second, the definition makes clear that systems can and do comprise more
than one structure and that no one structure can irrefutably claim to be the
architecture.
Other structures are much more focused on the way the elements interact
with each other at runtime to carry out the system's function.
Are any of these structures alone the architecture?
Third, the definition implies that every computing system with software has a
software architecture
Fourth, the behavior of each element is part of the architecture insofar as that
behavior can be observed
Finally, the definition is indifferent as to whether the architecture for a system
is a good one or a bad one
6/6/2014 7
Other points of view
Software architecture is a growing but still young discipline;
hence, it has no single, accepted definition. On the other
hand, there is no shortage of definitions.
Most of those commonly circulated are consistent in their
themesstructure, elements, and connections among
thembut they vary widely in the details and are not
interchangeable.
6/6/2014 8
Architectural Patterns, Reference Models, and Reference Architectures
1. An architectural pattern is a description of element and relation
types together with a set of constraints on how they may be
used.
2. A reference model is a division of functionality together with
data flow between the pieces.
3. A reference architecture is a reference model mapped onto
software elements (that cooperatively implement the
functionality defined in the reference model) and the data flows
between them.
Software
architecture
Reference
architecture
Architectural
Pattern
Reference
model
6/6/2014 9
Why Is Software Architecture Important?
Communication among stakeholders. Software architecture represents a common
abstraction of a system that most if not all of the system's stakeholders can use as
a basis for mutual understanding, negotiation, consensus, and communication.
Early design decisions. Software architecture manifests the earliest design
decisions about a system, and these early bindings carry weight far out of
proportion to their individual gravity with respect to the system's remaining
development, its deployment, and its maintenance life. It is also the earliest point
at which design decisions governing the system to be built can be analyzed.
Transferable abstraction of a system. Software architecture constitutes a
relatively small, intellectually graspable model for how a system is structured and
how its elements work together, and this model is transferable across systems. In
particular, it can be applied to other systems exhibiting similar quality attribute and
functional requirements and can promote large-scale re-use.
6/6/2014 10
Questions???
Thanks for Patient Listening!!!