Formal Semantics for Natural language

Download Report

Transcript Formal Semantics for Natural language

Software Architectures
Dr. Rogelio Dávila Pérez
ITESM, Campus Cd. Juarez
[email protected]
http://www.rogeliodavila.com/
Authorship
The notes we introduce for this course
consist of my personal abstraction of the
material presented in the book:
Software Architecture in Practice, Second
edition. Len Bass, Paul Clements and Rick
Kazman, SEI Series in Software Engineering,
Addison-Wesley Co. 2003.
Anything appart from the book’s material comes
from my personal point of view on the topics
presented.
Software Architecture
“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 [Boe95]
Software Architecture
Architecture has emerged as a crucial part of the
design process.
Software architectures (SA) encompasses the
structures of large software systems.
The architectural view of a system is abstract,
distilling away details of implementation,
algorithm and data representation.
A software architecture is developed as the first
step toward designing a system that has a
collection of desired properties.
Software Architecture
A building architect must design a building that provides
accessibility, aesthetics, light, maintainability, and so
on.
A software architect must design a system that provides
concurrency, portability, modifiability, usability, security,
and the like, and that reflects consideration of the
tradeoffs among these needs.
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.
Software Architecture
Where:
Externally visible are those assumptions other elements
can make of an element, such as:
- provided services,
- performance characteristics,
- fault handling,
- shared resource usage
and so on.
Software Architecture
Important remarks
Architecture defines software elements.
1.
An architecture is an abstraction of a system that
suppresses details of elements that do not affect how
they use, are used by, relate to, or interact with other
elements.
Systems normally comprise more than one structure.
2.



A structure may express the implementation relations
among the elements of the system.
Another structure can show the way in which different
components interact at running time.
And so on.
Software Architecture
Important remarks (cont.)
3.
Every computing system has a software architecture.
Every system comprise elements and relations among
them.
4.
The behavior of each element is part of the
architecture.
To the extent that an element’s behavior influences how
another element must be written to interact with it or
influences the acceptability of the system as a whole,
this behavior is part of the software architecture.
Architectural Structures
Different stages in developing a software architecture
1.
Architectural Pattern
An architectural pattern is a description of element and relation
types together with a set of constraints on how they may be
used.
2.
Reference Model
A reference model is a division of functionality together with
data flow between the pieces.
3.
Reference Architecture
A reference architecture is a reference model mapped onto
software elements and the data flows between them. A
reference architecture is the mapping of the functionality onto a
system decomposition.
Architectural Structures
Relationship among stages
Reference
Model
Reference
Architecture
Architectural
Pattern
Software
Architecture
Importance of Software Architecture (SA)
1.
Communication among stakeholders.
Stakeholders of the system – customer, user, project manager,
coder, tester, and so on.
SA represents a common abstraction of the system that can be
used as a basis for understanding, negotiation, consensus, and
communication.
2.
Early design decision
SA manifest the earliest design decisions about a system. It is
also the earliest point at which design decisions governing the
system to be built can be analyzed.
3.
Transferable abstraction of a system.
A SA constitutes model of the structure and functionalities of
the system. This model is transferable across systems when
they exhibit similar quality attribute an functional requirements
and promote large-scale re-use.
Architecture manifest the earliest design decisions
What happen when I push this button?
(presentar el caso pag. 27-29, libro [Bass03])
Architecture manifest the earliest design decisions







The architecture defines constraints on
implementation.
The architecture defines organizational structure.
The architecture inhibits or enables a system’s quality
attributes.
Predicting system qualities by studying the
architecture.
The architecture makes it easier to reason about and
manage change.
The architecture helps in evolutionary prototyping.
The architecture enables more accurate cost and
schedule estimates.
Architecture as a transferable, re-usable model




Systems can be built using large, externally
developed elements.
Less is More: It pays to restrict the vocabulary to
design alternatives.
An architecture permits template-based development.
An architecture can be the basis for training.
Architectural structures an views
1.
Communication among stakeholders.
Stakeholders of the system – customer, user, project manager,
coder, tester, and so on.
SA represents a common abstraction of the system that can be
used as a basis for understanding, negotiation, consensus, and
communication.
2.
Early design decision
SA manifest the earliest design decisions about a system. It is
also the earliest point at which design decisions governing the
system to be built can be analyzed.
3.
Transferable abstraction of a system.
A SA constitutes model of the structure and functionalities of
the system. This model is transferable across systems when
they exhibit similar quality attribute an functional requirements
and promote large-scale re-use.
Some remarks




A software architecture describes
elements of a system and the relation
among them.
Every system has many kinds of
elements.
Different architectural structures are
useful, even necessary, to present a
complete picture of the architecture of a
system.
Each structure concentrates on one
aspect of the architecture.