Professional Documents
Culture Documents
02 What Is Software Architecture
02 What Is Software Architecture
Architecture?
Some slides based Len Bass, Paul Clements, Rick Kazman, under Creative Commons Attribution License
Architecture or Not?
Game Engine
(GE)
• It identifies components
• It indicates relationships
among the components.
What Does this Picture Fail to Show?
Apache Hive is a data warehouse software project built on top of Apache Hadoop
for providing data query and analysis. https://en.wikipedia.org/wiki/Apache_Hive
Moodle/Mue
le Logical
View
Process View (Moodle/Muele)
Architecture Is a Set of Software Structures
• A structure is a set of elements held together by a relation.
• Software systems are composed of many structures, and no single
structure holds claim to being the architecture.
• Architectural structures can be divided into three groups
• Module structures – How is the system to be structured as a set of code
units?
• Component-and-connector structures – How is the system to be structured as
a set of elements that have running behavior and interactions?
• Allocation structures – How is the system to relate to nonsoftware structures
in its environment?
Groups of Software Architecture Structures
Component-
Module And-Connector Allocation
Client- Shared
Decomposition Class Server Process
Data
Uses Deployment
Concurrency
Implementation
Layered Work
Assignment
Module Structures
• Module structures document
how the system is to be
structured/broken down
• Elements are modules of some
kind
§ perhaps classes, or layers
• Modules are assigned areas of
functional responsibility
§ less emphasis on how the
software performs at runtime
• Module structures allow us to
answers many questions
Module-Based Structures
• Kruchten’s “four
plus one”
approach
recommends
four views
(structures)
Architectural Patterns, Reference Models, and
Reference Architectures
Reference Models
• A reference model is a division of
functionality together with data
flows between the pieces.
• For example a database
management system might have a
reference model.
• It is a standard division of a known
problem into parts that
cooperatively solve the problem.
Reference Architecture
• A reference architecture is
a reference model mapped
onto software elements
and the data flows between
them.
• The software elements
cooperatively implement
the functionality defined in
the reference model.
• That is; it maps the
functionality of a reference
model onto a system
decomposition.
From Models and Patterns to Architecture
Reference
Model
Reference Software
Architecture Architecture
Architectural
Pattern
Architectural Patterns
• Architectural elements can be composed in ways that solve particular problems.
• The compositions have been found useful over time, and over many different domains
• They have been documented and disseminated.
• These compositions of architectural elements, called architectural patterns.
• Patterns provide packaged strategies for solving some of the problems facing a system.
• An architectural pattern delineates the element types and their forms of
interaction used in solving the problem.