A General Model of Software Architecture Design Derived From Five Industrial Approaches
A General Model of Software Architecture Design Derived From Five Industrial Approaches
A General Model of Software Architecture Design Derived From Five Industrial Approaches
www.elsevier.com/locate/jss
a
Lehigh University, Bethlehem, PA, USA
University of British Columbia, 2332 Main Mall, Vancouver, BC, Canada V6T 1Z4
c
Software Engineering Institute, Pittsburgh, PA, USA
d
Philips Research Labs, Eindhoven, The Netherlands
e
Nokia Research Center, Cambridge, MA, USA
Received 1 January 2006; received in revised form 8 May 2006; accepted 12 May 2006
Available online 5 July 2006
Abstract
We compare ve industrial software architecture design methods and we extract from their commonalities a general software architecture design approach. Using this general approach, we compare across the ve methods the artifacts and activities they use or recommend, and we pinpoint similarities and dierences. Once we get beyond the great variance in terminology and description, we nd that
the ve approaches have a lot in common and match more or less the ideal pattern we introduced. From the ideal pattern we derive an
evaluation grid that can be used for further method comparisons.
2006 Elsevier Inc. All rights reserved.
Keywords: Software architecture; Software architecture design; Software architecture analysis; Architectural method
1. Introduction
Over the last 15 years a number of organizations and individual researchers have developed and documented techniques, processes, guidelines, and best practices for
software architecture design (Bass et al., 2003; Bosch,
2000; Clements et al., 2002a; Clements and Northrop,
2002; Dikel et al., 2001; Garland and Anthony, 2002;
Gomaa, 2000). Some of these were cast and published as
architecture design methods or systems of concepts, processes and techniques for architecture design (Hofmeister
et al., 1999; Kruchten, 2003; Obbink et al., 2000; Ran, 2000).
*
Since many of the design methods were developed independently, their descriptions use dierent vocabulary and
appear quite dierent from each other. Some of the dierences are essential. Architecture design methods that were
developed in dierent domains naturally exhibit domain
characteristics and emphasize dierent goals. For example
architectural design of information systems emphasizes
data modeling, and architecture design of telecommunication software emphasizes continuous operation, live upgrade,
and interoperability. Other essential dierences may include
methods designed for large organizations vs. methods suitable for a team of a dozen software developers, methods
with explicit support for product families vs. methods for
one of a kind systems, etc.
On the other hand, all software architecture design methods must have much in common as they deal with the same
basic problem: maintaining intellectual control over the
design of software systems that: require involvement of
107
108
Organizational Factors
Technological Factors
Product Factors
new factors,
issues, or
strategies
Global
Analysis
Issue
Cards
109
Design of other
Architecture Views
110
End-user, designers
Functionality
Implementation
View
Logical View
Use Case
View
Users/Analysts/Testers
Behavior
Process
View
And the RUP also provides activities related to the documentation of the architecture in each of the 5 views shown
in Fig. 4.
More recently (Rozanski and Woods, 2005) have added
perspectives to RUPs views and viewpoints, to more eectively capture certain quality properties, in a way similar to
architectural aspects or SEIs tactics (Bass et al., 2003).
Deployment
View
System Engineering
System topology
Delivery, installation
Communication
High Level
Use-case view
Scenarios
Objects
Classes
Logical view
Abstraction
Instance
Implementation Sources
or code view
Processes
Process view
Low Level
during the architectural design: a vision document, a usecase model (functional requirements) and supplementary
specication (non-functional requirements, quality attributes). The three main groups of activities are:
(1) Dene a Candidate Architecture
This usually starts with a use-case analysis, focusing
on the use cases that are deemed architecturally signicant, and with any reference architecture the organization may reuse.
This activities leads to a rst candidate architecture
that can be prototyped and used to further reason
with the architectural design, integrating more elements later on.
(2) Perform Architectural Synthesis
Build an architectural proof-of-concept, and assess its
viability, relative to functionality and to non-functional requirements.
(3) Rene the Architecture
Identify design elements (classes, processes, etc.) and
integrate them in the architectural prototype
Identify design mechanisms (e.g., architectural patterns and services), particular those that deal with
concurrency, persistency, distribution.
Review the architecture.
Business
Architecture
Process
Organization
111
Policy and
Planning
commercial views
Responsibility:
reusable assets
Customer
View
Application
View
Functional
View
Product
Family
Engineering
Platform
Engineering
Conceptual Realization
View
View
Responsibility:
family architecture
Product
Engineering
Responsibility:
product
Customer
Oriented
Process
Technology
and People
Management
technical views
method outline
framework
submethods
method visualization
Customer
Application
+ key drivers
+ value chain
+ business models
+ supplier map
Functional
+ stakeholders
and concerns
+ context diagram
+ entity relationship
models
+ dynamic models
and artifacts
+ use case
+ commercial, logistics
decompositions
+ mapping technical
functions
and several more
integration
+ budget
+ benchmarking
+ performance
analysis
+ safety analysis
and many more
performance
market
vision
story
U'
CoO
use
case
analyse
design
image
quality
U
throughput
diagnostic
quality
U"
reasoning
+ construction
decomposition
+ functional
decomposition
+ information model
and many more
Realization
safety
via qualities
explore
specific details
Conceptual
analyse
design
IQ spec
purchase
price
typical
case
BoM
B
profit margin
standard workstation
render
engine
CPU
budget
Moore's
law
memory budget
detailed
design
P'
M
processing
library
pixel
memorydepth
limit
M'
common
console
112
Goals
affect
Architectural
Decisions
achieve
Evaluation
representation
verification
Implementation
consistency
validation
Architecture
Description
Grouped by
Significant
Segments
Associated with
Architecturally
Significant
Requirements
Component
Domains
Satisfy
Architecturally
Significant
Decisions
Organized by
Represent
Concepts
Structure
Texture
113
Candidate architectural solutions: Candidate architectural solutions may present alternative solutions, and/
or may be partial solutions (i.e., fragments of an architecture). They reect design decisions about the structure of software. The architectural solutions include
information about the design rationale, that is, commentary on why decisions where made, what decisions were
considered and rejected, and traceability of decisions to
requirements.
Architectural synthesis: Architectural synthesis is the
core of architecture design. This activity proposes architecture solutions to a set of ASRs, thus it moves from
the problem to the solution space.
Validated architecture: The validated architecture consists of those candidate architectural solutions that are
consistent with the ASRs. These solutions must also
be mutually consistent. Only one of a set of alternative
solutions can be present in the validated architecture.
The validated architecture, like the candidate architectural solutions, includes information about the design
rationale.
Architectural evaluation: Architectural evaluation
ensures that the architectural design decisions made
are the right ones. The candidate architectural solutions
are measured against the ASRs. Although repeated evaluations of dierent architectural solutions are expected,
the eventual result of architectural evaluation is the
validated architecture. Intermediate results would be
the validation or invalidation of candidate architectural
solutions.
In addition to the above-described artifacts used in the
design activities, there are some less explicit inputs that
are critical to the design process:
Design knowledge comes from the architect, from organizational memory, or from the architecture community. It can take the form of styles, patterns,
frameworks, reference architectures, ADLs, productline technologies, etc.
Analysis knowledge is needed to dene the problem and
evaluate the solution. Some work exists in analysis patterns (Fowler, 1997) and analytic models associated with
114
115
116
Table 1
Comparing methods: activities
ADD
S4V
RUP 4 + 1
BAPO/CAFCR
ASC
Architectural
analysis
Architectural
synthesis
Architectural
evaluation
Build an executable
prototype architecture
to assess whether
architectural objectives
have been met, and risks
retired (elaboration phase)
Activity
Table 2
Comparing methods: artifacts
ADD
S4V
RUP 4 + 1
BAPO/CAFCR
ASC
Architectural
concerns
Functional requirements,
system quality attribute
requirements, design
constraints (requirements
for which the design
decisions are prespecied)
Vision document,
Supplementary
specication (for
non-functional
requirements);
the Risk List identies,
among others, technical
issues: elements that are
novel, unknown, or just
perceived as challenging
Context
Organizational factors
(see above) are usually
context, not concerns
Preferred technology
platforms
Technology/product road
maps
Product family functional
and quality requirements
System/hardware architecture
Implementation constraints
Architecturally
signicant
requirements
(ASR)
Candidate
architectural
solutions
A collection of patterns,
frameworks, and reference
architectures constitute the
source for alternative
decisions. An often used
practice is to analyze
alternatives along with any
proposed solutions
117
Artifact
118
Table 2 (continued)
ADD
S4V
RUP 4 + 1
BAPO/CAFCR
ASC
Validated
architecture
Architecture describes a
system as containers for
functionality and
interactions among the
containers, typically
expressed in three views:
module decomposition,
concurrency, and deployment.
The architecture is validated
for satisfaction of
requirements/constraints
with respect to the decomposition
Baseline a complete,
executable architectural
prototype at the end of
the elaboration phase.
This prototype is
complete enough to be
tested, and to validate
that major architectural
objectives (functional and
non-functional, such as
performance) have been met,
and major technical risks
mitigated
Backlog
Information to be processed in
subsequent steps including:
requirements to be analyzed,
decisions to be merged, patterns
to be instantiated, requirements
to be veried and rened
The order in which information
is processed will vary, for
example, the order of the
decomposition varies based
on business context, domain
knowledge, and technology
risk; the determination of drivers
is not always a top down process,
it might depend on a detailed
investigation to understand the
ramication of particular
requirements and constraints
Artifact
119
120
Table 3
The use of multiple views
Structural views
Development time:
structure exhibited in
the source artifacts
Instantiation (e.g.,
components,
processes,
tasks, objects)
Synchronization (e.g.,
control ow, threads
and their synchronization)
Dataow (e.g., how
data logically ows
through system)
S4V
RUP4 + 1
BAPO/CAFCR
ASC
Logical View
Logical View
Structural information is
mainly in the Conceptual
View. Its representation is
not xed by the method,
but suggestions are provided
Conceptual View: System
decomposition and
component models
Conceptual View: System
decomposition and
component models
Could be covered by
an additional view
Logical View
Conceptual View:
Information models
Could be covered by an
additional view
Could be covered by
an additional view
Conceptual Arch.
View Execution
Arch. View
Process View
Conceptual View:
Collaborations
Concurrency
ConceptualArch.
View Execution
Arch. View
Conceptual Arch. View
Process View
Conceptual View:
Collaborations
Not covered
Conceptual View:
Collaborations
Could be covered by an
additional view
Could be covered by
an additional view
Resource usage
(e.g., mapping to
processes, shared
libraries, or other
OS resources;
mapping to hardware)
Deployment
Deployment View
Conceptual View
and Realization View
Organization of and
relationships among
permanent and
temporary artifacts
(e.g., of source,
intermediate,
executable les)
Could be covered by
an additional view
Implementation View
Conceptual View:
Variation Models
Non-structural views
None: results of
analysis activity
are not captured
in a view
The +1 (requirements)
view is used primarily
during analysis. It
focuses mainly on
functional requirements.
It crosscuts the four
structural views
Runtime: structure
exhibited at runtime
Decomposition (e.g.,
of subsystems,
modules, classes)
Dependencies (e.g.,
among modules,
interfaces, classes;
constrained by layers)
Inheritance (e.g.,
of classes)
ADD
121
Table 4
A grid to analyze a software architecture design method
Generic artifacts
Architectural analysis
Architectural synthesis
Artifacts in X
Activities in X
Is the method X
providing activities to
produce these artifacts?
How are these activities
named and documented?
Context
Requirements, and
Architecturally signicant
requirements (ASR)
Candidate architectural solutions
Architectural
design (e.g., views, perspectives)
or Prototypes
Rationale
Architectural evaluation
Quality attributes
Architectural assessment
Backlog
Other
122
Table 5
Analysis of the Garland and Anthony (2002) method (G&A)
Generic artifacts
Architectural
analysis
Architectural
synthesis
Context
Requirements, and
Architecturally signicant
requirements (ASR)
Candidate architectural solutions
+ Architectural design
(e.g., views, perspectives)
+ Prototypes
+ Rationale
Artifacts in G&A
Activities in G&A
Analysis process,
similar to OOSE
Architectural
evaluation
Quality attributes
Architectural assessment
??
??
Commonality and
variability analysis (p. 202)
Architecture
evaluation (p. 208)
Overall process
driver
Backlog
??
??
123
124
Bachmann, F., Bass, L., Klein, M., 2002. Illuminating the Fundamental
Contributors to Software Architecture Quality (No. CMU/SEI-2002TR-025). Software Engineering Institute, Carnegie Mellon University,
Pittsburgh, PA.
Bahill, A.T., Alford, M., Bharathan, K., Clymer, J.R., Dean, D.L., Duke,
J., Hill, G., LaBudde, E.V., Taipale, E.J., Wymore, A.W., 1998. The
design-methods comparison project. IEEE Transactions on Systems,
Man and Cybernetics, Part C 28 (1), 80103.
Barbacci, M.R., Ellison, R., Lattanze, A.J., Staord, J.A., Weinstock,
C.B., Wood, W.G., 2003. Quality Attribute Workshops (QAW), third
ed. (CMU/SEI-2003-TR-016). Software Engineering Institute, Carnegie Mellon University, Pittsburgh, PA.
Bass, L., Clements, P., Kazman, R., 2003. Software Architecture in
Practice, second ed. Addison-Wesley, Reading, MA.
Bosch, J., 2000. Design and Use of Software Architecture: Adopting and
Evolving a Product-Line Approach. Addison-Wesley, Boston.
Clements, P., Northrop, L., 2002. Software Product Lines: Practice and
Patterns. Addison-Wesley, Boston.
Clements, P., Bachmann, F., Bass, L., Garlan, D., Ivers, J., Little, R.,
Nord, R., Staord, J., 2002a. Documenting Software Architectures:
Views and Beyond. Addison-Wesley, Boston.
Clements, P., Kazman, R., Klein, M., 2002b. Evaluating Software
Architecture. Addison-Wesley, Boston.
Dikel, D.M., Kane, D., Wilson, J.R., 2001. Software Architecture:
Organizational Principles and Patterns. Prentice-Hall, Upper Saddle
River, NJ.
Dobrica, L., Niemela, E., 2002a. Software architecture quality analysis
methods. In: Proceedings of Software Reuse: Methods, Techniques,
and Tools: 7th International Conference (ICSR-7), Austin, TX, USA.
Springer-Verlag, pp. 337338.
Dobrica, L., Niemela, E., 2002b. A survey on software architecture
analysis methods. IEEE Transactions on Software Engineering 28 (7),
638653.
Fichman, R.G., Kemerer, C.F., 1992. Object-oriented and conventional
analysis and design methodologies. IEEE Computer 25 (10), 2239.
Fowler, M., 1993. A comparison of object-oriented analysis and design
methods. In: Proceedings of 11th international conference on Technology of Object-Oriented Languages and Systems, Santa Barbara,
California, United States. Prentice-Hall, Inc., p. 527.
Fowler, M., 1997. Analysis Patterns: Reusable Object Models. AddisonWesley, Boston.
Fowler, M., 2005. Language Workbenches and Model Driven Architecture. Available from <http://www.martinfowler.com/articles/mdaLanguageWorkbench.html> (Retrieved 1.5.2006).
Garland, J., Anthony, R., 2002. Large-Scale Software Architecture: A
Practical Guide using UML. John Wiley & Sons, Inc., New York.
Gero, J.S., 1990. Design prototypes: a knowledge representation scheme
for design. AI Magazine 11 (4), 2636.
Gero, J.S., Kannengiesser, U., 2004. The situated functionbehaviour
structure framework. Design Studies 25 (4), 373391.
Gomaa, H., 2000. Designing Concurrent, Distributed and Real-time
Applications with UML. Addison-Wesley, Boston.
Hofmeister, C., Nord, R., Soni, D., 1999. Applied Software Architecture.
Addison-Wesley, Boston.
Hofmeister, C., Kruchten, P., Nord, R., Obbink, H., Ran, A., America,
P., 2005a. Generalizing a model of software architecture design from
ve industrial approaches. In: Proceedings of 5th Working IEEE/IFIP
Conference on Software Architecture (WICSA 5), Pittsburgh, PA.
IEEE Computer Society, pp. 7786.
Hofmeister, C., Nord, R., Soni, D., 2005b. Global analysis: moving from
software requirements specication to structural views of the software
architecture. IEE Proceedings Software 152 (4), 187197.
Hong, S., van den Goor, G., Brinkkemper, S., 1993. A formal approach to
the comparison of object-oriented analysis and design methodologies.
In: Proceedings of 26th Hawaii International Conference on System
Sciences, Wailea, HI, USA, pp. iv 689698.
IEEE, 2000. IEEE std 1471:2000Recommended Practice for Architectural
Description of Software Intensive Systems. IEEE, Los Alamitos, CA.
125
126