Chapter 3 Envisioning Architecture
Chapter 3 Envisioning Architecture
Architecture
Software Architecture:
Definition
⚫ The software architecture of a program or computing
system is the set of structures of the system,
which comprise software elements, the externally
visible properties of those elements, and
the relationships among them.
⚫ The architectural view of a system is abstract,
distilling away details of implementation,
algorithm, and data representation and
concentrating on the behaviour and interaction of
"black box" elements.
The Architecture Business
⚫Cycle
For decades, software designers have been taught
to build systems based exclusively on the
technical requirements.
⚫ Software architecture is a result of technical,
business,
and social influences.
⚫ Its existence, in turn, influences these
technical, business, and social environments.
⚫ This cycle of influences from the environment
to the architecture and back to the
environment is called the Architecture Business
Where do Architectures Come
From?are influenced by:
Architectures
⚫ Stakeholders
⚫ each stakeholder has different concerns & goals, some
contradictory
⚫ architect often has to fill in the blanks and mediate the conflicts.
⚫ Development Organization
⚫ immediate business, long-term business, and organizational
(staff skills, schedule, & budget)
⚫ Background & Experience of the Architects
⚫ repeat good results, avoid duplicating disasters
⚫ The Technical Environment
⚫ standard industry practices or common SE techniques
Influence of system stakeholders on the
architect
Affected attributes
include: Interoperability,
modifiability
…Useful C&C structures
…Useful C&C structures
⚫ C&C structures help answer questions:
⚫ What are the major executing components and how do they interact at
runtime?
⚫ 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?
⚫ Can the system's structure change as it executes and, if so, how?
⚫ They are crucially important for reasoning about the
system's runtime properties such as performance,
security, availability.
Useful allocation structures
⚫ Deployment
structure:
…Useful allocation structures
⚫ Implementation structure:
Units: software elements
(usually modules), file
structure
Relations: stored in
Used for: configuration
control, integration, test
activities
Affected attributes
include:
development efficiency
…Useful allocation structures
⚫ Work assignment
structure:
…Useful allocation structures
⚫ Allocation structures help answer questions:
⚫ What processor does each software element execute on?
⚫ In what directories or files is each element stored during development, testing,
and system building?
⚫ What is the assignment of each software element to development teams?
Relationship between
structures
⚫ Each of these structures providesa different perspectiveand
design handle on a system.
⚫ They are not independent. Elements of one structure will be related
to elements of other structures.
Relating Structures to Each
Other
⚫ Although the structures give different system perspectives,
they are not independent.
⚫ Elements of one structure are related to elements in
another, and we need to reason about these
relationships.
⚫ For example, a module in a decomposition structure may map to
one, part of one, or several, components in a component-and-
connector structure at runtime.
⚫ In general, mappings are many-many.
Choosing Structures
⚫ Kruchten’s Four + One Views:
⚫ Logical View –concerned with the functionality that the system provides to
end- users. UML diagrams used to represent the logical view include, class
diagrams, and state diagrams.
⚫ elements are “key abstractions” that are objects or classes in OO.
⚫ This is a module view.
⚫ Process View–deals with the dynamic aspects of the system, explains the
system processes and how they communicate, and focuses on the runtime
behavior of the system.
⚫ addresses concurrency, distribution, integrators, performance, and scalability,
etc. UML diagrams to represent process view include the activity diagram.
⚫ This is a C&C view.
... Four + One
Views
⚫ Development View – illustrates a system from a programmer's perspective and is
concerned with software management.This view is also known as the
implementation view. It uses the UML Component diagram to describe system
components. UML Diagrams used to represent the development view
include the Package diagram
⚫ shows organization of software modules, libraries, subsystems, and units
of development. This is an allocation view.
⚫ Physical View – depicts the system from a system engineer's point of view. It is
concerned with the topology of software components on the physical layer as
well as the physical connections between these components.This view is also
known as the deployment view. UML diagrams used to represent the
physical view include the deployment diagram.
⚫ maps other elements onto processing & communication nodes, also an allocation
view, but usually referred to specifically as the deployment view.
... Four + One
Views
⚫ /cenarios(One view)- The description of an architecture is
illustrated using a small set of use cases, or scenarios, which
become a fifth view.
⚫ The scenarios describe sequences of interactions between
objects and between processes.
⚫ They are used to identify architectural elements and to illustrate
and validate the architecture design.They also serve as a
starting point for tests of an architecture prototype.
⚫ This view is also known as the use case view.
... 4+1 Architectural View
Model
... 4+1 Architectural View
Model