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.