Glen
B. Alleman is associated with Niwot Ridge Consulting, www.niwotridge.com
About This Note:
This
note is presented in five parts as follows:
- Introduction
to Software Architecture
- The Architecture
Process
- Steps
in the Architecture Process
- Moving
from Planning to Implementation
- Applying
the Methodology
Part
III - Steps in the Architecture Process
Without a framework for defining architecture and the steps in which it
participates, it is difficult to grasp the impact architecture has on
the outcome of the system process.
The
process of discovering, defining, and maintaining an architecture for
a specific set of requirements and the applications that support them
is a non-trivial task [Garl95], [Abow95]. There is a distinct difference
between architecture and engineering [Rech97]. Generally speaking, engineering
deals with measureables using analytical tools derived from mathematics
and the hard sciences - engineering is a deductive process. Architecture
deals largely with unmeasurables using non-quantative tools and guidelines
based on practical lessons learned - architecture is in inductive process.
The
steps taken during the development of a system architecture include:
- Vision
of the System - the purpose, focus, assumptions, and priorities of the
system.
- Business
case analysis - how will the system earn its keep?
- Requirements
analysis - the external behavior and appearance of the system.
- Architecture
planning - the mapping between the requirements and the software.
- System
prototyping - the construction of a prototype system, complete with
all the components. This prototype can be used to verify the abilities
of the final system.
- Project
management - the professional management of the project, including resources,
risk, and deliverables [PIM96].
- Architecture
prototyping - the construction of an architecture platform to verify
the abilities of the system components.
- Incremental
deployment - the deployment of the system in a production environment.
This deployment must allow for the incremental functionality of the
system, while verifying the capabilities of the application.
- System
transition - move the incrementally deployed system into full production.
- Operation
and maintenance - a phase of the system in which all functionality is
deployed and the full bookable benefits are being accrued.
- Continuous
migration - an activity that continuously makes improvements to the
system, within the architectural guidelines [Foot97].
The
Vision of the System
The construction of a Vision is a wickedly subtle process. When first
asked to articulate a "vision" the system stake holders usually ask "why,
it is obvious what we want the system to do." The reality is that the
vision statement includes not only the technical aspects of the system,
but also the social, political, economic and operational aspects of the
system.
The
purpose, focus, assumptions, and priorities of a software project are
essential elements of an enterprise-wide vision statement. If any of these
elements change during system acquisition and deployment, there is a significant
risk that the models used to define the system will be obsolete. The first
step in an architecture-centered development methodology is to establish
a viable vision statement, with the assumption that it should not be changed
once acquisition and deployment have begun. Any changes that occur in
the vision must be reflected in the project models and subsequent analysis
and design.
The
vision statement becomes a binding agreement between the software suppliers
and the software consumers - users of the system. This vision statement
must be succinct, ranging from a single slide to less than 10 pages of
text. The vision statement establishes the context for all subsequent
project activities, starting with Requirements Analysis and ending with
the Continuous Migration of the system.
Business
Case Analysis
The creation of a Business Case Analysis is a critical success factor
for any system project. Without a clear understanding of the costs and
benefits of the proposed system architecture, the decision-makers cannot
be presented with complete information. The style of the business case
as well as the contents of the analysis is usually an organization specific
issue.
Requirements
Analysis
A project's requirements define the external behavior and appearance of
the system without specifying its internal structure [Somm97], [Jack96].
External functional behavior, however, includes internal actions needed
to ensure the desired non-functional requirements of the external behavior.
The external appearance comprises the layout and navigation of the user
interface screens, transaction processing activities as well as the behavior
of the system in terms of its abilities. These abilities are usually defined
as adjectives for the properties that system possesses. Reliability, Availability,
Maintainability, Scalability, Performance, Testability, Efficiency, Reusability,
Interoperability, and Changeability as well as other non-functional properties
of the system architecture.
An
effective approach for capturing behavioral requirements is through Use
Cases, which consist of top-level diagrams and extensive textual descriptions
[Schn98], [Buhr96], [Lamr97]. The Use Case notation is deceptively simple
but has one invaluable quality - it enforces abstraction. It is one of
the most effective notations devised for expressing complex concepts and
a powerful way to ensure the top-level requirements are represented with
simplicity and clarity.
Figure
1. - Use Case for Order Taking and Fulfillment.

Each
circle, or individual Use Case, is accompanied by a description of relevant
requirements. It usually takes the form of a list of sequential actions
described in domain-specific prose. Use Case definitions are developed
jointly with domain experts and provide a domain model of the system for
the purpose of defining architecture. Once system integration and deployment
begins, Use Cases are extended with system-specific scenario diagrams
that will be elaborated in workflow, procedural changes and system tests
[Buhr96], [Jaco92], [Schn98].
The
appearance, functionality, and navigation of the user interface are closely
related to the Use Cases. Here, low fidelity prototyping - drawing the
screens with paper and pencil - often proves effective. Again, end-user
domain experts must be involved in the screen-definition process.
With
the Use Cases and user interfaces defined, the context for architectural
planning has been established. In addition to generating documentation
(including paper-and-pencil sketches or output from CASE tools), the architecture
team acquires a better understanding of the desired system capabilities
in the context of the end-user domain.
Use
Cases provide the visible means of capturing the external behavior of
the system. The next step in the requirements analysis is to partition
the nouns and noun phrases, verbs and verb phrases. This activity can
be done through Class-Responsibility-Collaboration (CRC) Cards. This tool
identifies and specifies the data and processes of the system in an informal
manner [Bell98]. The CRC Card method is based on the theory of role-playing
in which the participants have specific knowledge about their own roles
and make requests of other participants to gain knowledge of their roles.
Through this role-playing the nouns and verbs of the system are revealed.
4+1
and UML
If the UML is to be used in the development of the system architecture
described in 4+1, then the different components of the UML must be assigned
specific roles [Tanu98]:
Table
1. UML to 4+1 Mapping
| 4+1
Architecture Component |
UML
Notation |
| Scenario |
Use
Cases |
| Logical
Views |
Class
Diagrams
State Transition Diagrams
Collaboration Diagrams |
| Development
View |
Component
Diagram |
| Physical
View |
Deployment
Diagram |
| Process
View |
Class
Diagram
Deployment Diagram |
Architecture
Planning
The process of "planning" the architecture involves more than listing
the attributes of the system. It involves a deep understanding of how
the elements of the architecture interact with each other as well as external
elements. By their nature requirements are vague and ambiguous. Treating
requirements elicitation like code development will surely lead to a disappointing
result.
Requirements
are inherently ambiguous, intuitive, and informal. Requirements are a
right-brain activity. Software is logically unintuitive (i.e., hard to
decipher) and meant to be interpreted unambiguously by a machine. Software
is a left-brain activity. Architecture bridges the semantic gap between
the requirements and software.
Architecture's
first role is to define the mapping between the Requirements and the Software.
It captures intuitive decisions in a more formal manner, making it useful
to programmers and system integrators, and defines the internal structure
of the system before it is turned into code so that current and future
requirements can be satisfied.
However,
architecture also has another significant role: it defines the organization
of the software project. Architecture planning is the missing link in
many software projects, processes, and methods, often because no one is
quite sure what architecture really is [Rech97], [Perr92], [Kruc95], [Bass98],
[Shaw96]. One framework for defining software architecture is provided
by the ISO standard for Open Distributed Processing (ODP) called the International
Standard ISO/IEC 10746 (ITU X.900), 1995.[8]
Footnotes
[8]
There are other frameworks promulgated in the industry, ranging from commercially
based paradigms to government standards: Software Engineering Institute,
Manufacturing Systems Integration Division, National Institute of Standards
and Technology, Department of Defense, and Quality Function Deployment.
There is no universal standard for software architecture. The ODP is a
generic set of guidelines appropriate for client/server environments as
well as the emerging Internet and object oriented paradigms. The ODP defines
five viewpoint references (enterprise, information, computational, engineering,
and technology). When used in conjunction with good system engineering
practices and proven software development and system engineering guidelines,
the ODP provides a clear and concise framework for the deployment of manufacturing
centric systems. In addition to the ODP guideline several other architectures
are in use today that require examination. The Zachman Framework [Zach87]
is a traditional architectural approach that is not object oriented. It
is a reference model with 30 architecture viewpoints based on two paradigms:
Journalism (who, what, when, where, why, and how) and Construction (planner,
owner, builder, designer, and subcontractor). Domain analysis which transforms
project-specific requirements into general domain requirements for familiar
systems. The 4+1 view model which is closely tied to UML and the Rational
Unified Process. Many other architectural styles are defined in [Shaw96].
ODP is a way to think about complex systems that simplifies decision-making.
It organizes the system architecture in terms of five standard viewpoints
[ISO94a], [ISO94b], [ISO94c], [ISO94d]:
- Enterprise
viewpoint - the purpose, scope, and policies of the business system
as defined by the workflows and business rules.
- Information
viewpoint
- the semantics of information and information processing.
- Computational
viewpoint - the functional decomposition of the system in modules,
interfaces and the messages exchanged across the interfaces.
- Engineering
viewpoint - the infrastructure required to support the distributed
environment.
- Technology
viewpoint
- choice of technology for the implementation of the system.
Figure
2. The RM-ODP Viewpoints and Software Engineering, from [ISO94a]

Each
viewpoint defines the conformance to the architectural requirements. Without
this conformance to requirements, the architecture is meaningless, because
it will have no clear impact upon implementation. ODP facilitates this
process by embodying a pervasive conformance approach. Simple conformance
checklists are all that are needed to identify conformance points in the
architecture.
The
ODP+4 methodology - based on the 4+1 Architecture [Kruc95] - generates
an Open Distributed Processing architecture as well as formal and informal
artifacts, including the Vision Statement, the Use Case-based requirements,
the rationale and the conformance statements.
Enterprise
Viewpoint
The
enterprise viewpoint defines the business purpose and policies of the
system in terms of high-level enterprise objects. These business-object
models identify the essential constraints on the system, including the
system objective and important policies. Policies for business objects
are divided into three categories:
- Obligations
- what must be performed by the system.
- Permissions
- what can be enforced by the system.
- Prohibitions
- what must not be performed by the system.
A typical
Business Enterprise Architecture comprises a set of logical object diagrams
(in UML notation), and prose descriptions of the diagram semantics [Larm97].
The language of the enterprise view is concerned with the performable
actions that change policy, such as creating an obligation or revoking
permission.
Figure
3. UML notation for describing the enterprise-wide data objects for
a sales company.

When
preparing the enterprise viewpoint specification, policies are determined
by the organization rather than imposed on the organization by technology
implementation choices.
Information
Viewpoint
The
information viewpoint identifies what the system must know, expressed
as a model, emphasizing attributes that define the system state. Because
ODP is an object-oriented approach, the models also include essential
information processes encapsulated with attributes, thus following the
conventional notion of an object.[9]
Architectural
objects are not programming objects. The information objects do not denote
objects that must be programmed. On the other hand, the architecture does
not exclude this practice. Architecture objects represent positive and
negative constraints on the system. Positive constraints identify things
that the system's software must do. Negative constraints are things that
the system's software does not have to do. Knowledge of these constraints
aids the designers because it eliminates much of the guesswork in translating
requirements to system. Architects should focus their modeling on the
system aspects of greatest risk, complexity, and ambiguity, leaving straightforward
details for the development step. The information model does not constitute
an engineered design. In particular, engineering analysis, such as database
normalization, is explicitly delegated to the development activities.
Footnotes
[9]
This Object Oriented approach is motivated by several forces:
- Vendors
use Object Oriented (OO) methodologies to define the architecture of
their products. In some cases the OO components are provided through
a gateway creating a traditional system with OO wrappers. In other products
the system is constructed using OO technologies. Other systems are hybrids
of OO and traditional client/server and SQL database technologies.
- OO architecture
pervades the Internet
- OO is
a better means of analyzing systems requirements using UML, Use Cases,
and CRC Cards.
Computational
Viewpoint
The
computational viewpoint defines the top-level application program interfaces
(API). These are fully engineered interfaces for subsystem boundaries.
During implementation, the system integration team will develop application
modules that comply with these boundaries. Architectural control of these
interfaces is essential to ensuring a stable system structure that supports
change and manages complexity.
The
computational viewpoint specification defines the modules (objects, API's,
subsystems) within the ODP system, the activities with these modules,
and the interactions that occur among them. Most modules in the computational
specification describe the application functionality. These modules are
linked through their interaction descriptions.
The
CORBA Interface Definition Language (IDL), an ISO standard notation for
ODP computational architectures, becomes a fundamental notation for software
architects at these boundaries. It has no programming language and operating
system dependencies, and can be translated to most popular programming
languages for both CORBA and Microsoft technology bases (i.e., COM/DCOM).
Engineering
Viewpoint
The
engineering viewpoint defines the infrastructure requirements independent
of the selected technologies. It resolves some of the complex system decisions,
including physical allocation, system scalability, and communication qualities
of service (QoS), and fault tolerance.
The
benefit of using the ODP is it separates the various concerns (design
forces) during the architecture process. The previous viewpoints resolved
other complex issues of less concern to distributed systems architects,
such as APIs, system policies, and information schemas. Conversely, these
other viewpoints were able to resolve their respective design forces,
independent of distribution concerns. Decisions must be made regarding
system aspects such as object replication, multithreading, and system
topology. It is during this activity that the physical architecture of
the system is developed.
Technology
Viewpoint
The
technologies that will be used to implement the system are selected in
this view. All other viewpoints are fully independent of these technology
decisions. Since the majority of the architecture design process is independent
of the deployed hardware, commercial technology evolution can be readily
accommodated.
A
systematic technology selection process includes initial identification
of the conceptual mechanisms (such as persistence or communication). Specific
requirements of the conceptual mechanism are gathered from the other viewpoints
and concrete mechanisms such as DBMS, OODBMS, and flat files are identified.
Then specific candidate mechanisms are selected from available products.
Other project factors, such as product price, training needs, and maintenance
risks, are considered at this point. It is important to restate the rationale
behind these selections, just as it is important to record the rationales
for all viewpoints as future justification of architectural constraints.
Many
projects wrongly consider this technology view as system architecture.
By developing the technical viewpoints before the other ODP architectural
views, the project is turned upside down.
Conclusion
of Part III
This is part III of a five part note. The next part covers moving from
the planning to implementation.
The
Author
Glen
B. Alleman, has provided consulting services to a variety of industries
and business domains in the industrial and commercial market places. These
include, e-commerce systems, publishing systems, information technology
strategies, manufacturing systems, engineering design systems, and software
process improvement.
He
has direct experience in a variety of large scale integration environments
and business domains. He also has extensive program and project management
experience with multiple concurrent projects involving hardware, software,
multiple sites and legacy business systems integration.
Mr.
Alleman has deep technical and architectural knowledge of a variety of
system paradigms including: client/server, CORBA, and web-based systems.
He
is the Principal Consultant for Niwot Ridge Consulting, Niwot, Colorado,
www.niwotridge.com.
References
- Part III
| [Abow95] |
"Formalizing
Style to Understand Descriptions of Software Architecture," G. Abowd,
G. Allen and D. Garland, ACM Transactions on Software Engineering
and Methods, 4(4), pp. 319-164, 1995. |
| [Adow93] |
"Using
Style to Understand Descriptions of Software Architecture," G. Adowd,
R. Allen and D. Garlan, ACM Software Engineering Notes, December,
1993, pp. 9-20. |
| [Adow97] |
"Recommended
Best Industrial Practice for Software Architecture Evaluation," G.
Abowd, L. Bass, P. Clements, R. Kazman, L. Northrop, and A. Zaremski,
CMU/SEI-96-TR-025, Software Engineering Institute, Carnegie Mellon
University, Pittsburgh, PA, January 1996. |
| [Bass98] |
Software
Architecture in Practice, L. Bass, P. Clements and R. Kazman, Addison
Wesley, 1998. |
| [Bell98] |
The
CRC Card Book, D. Bellin and S. Suchman Simone, Addison Wesley, 1998. |
| [Burh96] |
Use
Case Maps for Object-Oriented Systems, R. J. A. Buhr and R. S. Casselman,
Prentice-Hall, 1996. |
| [Foot97] |
"Big
Ball of Mud," B. Foote and J. Yoder, University of Illinois at Urbana-Champaign,
September 1997. |
| [Garl95] |
"Architectural
Mismatch or Why It's Hard to Build Systems Out of Existing Parts,"
D. Garlan, R. Allen, and J. Ockerbloom, Proceedings of the Seventh
International Conference on Software Engineering, April 1995. |
| [IEEE98] |
"Recommended
Practice for Architectural Description," IEEE Standard P1471, 1998. |
| [ISO94a] |
"Basic
Reference Model of Open Distributed Processing - Part 1: Overview
and Guide to Use," ISO/IEC CD 10746-1, July 1994. |
| [ISO94b] |
"Basic
Reference Model of Open Distributed Processing - Part 2: Descriptive
Model," ISO/IEC CD 10746-1, February 1994. |
| [ISO94c] |
"Basic
Reference Model of Open Distributed Processing - Part 3: Prescriptive
Model," ISO/IEC CD 10746-1, February 1994. |
| [ISO94d] |
"Basic
Reference Model of Open Distributed Processing - Part 4: Architectural
Semantics," ISO/IEC CD 10746-1, July 1994. |
| [ITU94] |
International
Telecommunications Union: message Sequence Charts, ITU-T, Z.120, 1994. |
| [Jaco92] |
Object-Oriented
Software Engineering: A Use Case Driven Approach, I. Jacobson, Addison
Wesley, 1992. |
| [Kruc95] |
"The
4+1 View Model of Architecture," P. Kruchten, IEEE Software, 12(6),
pp. 42-50, 1995. |
| [Larm97] |
Applying
UML and Patterns: An Introduction to Object-Oriented Analysis and
Design, C. Larman, Prentice Hall, 1997. |
| [Perr92] |
"Foundations
for the Study of Software Architecture," D. E. Perry and A. L. Wolf,
ACM Software Engineering Notes, October, 1993, pp. 40-52. |
| [PMI96] |
A Guide
to the Project Management Body of Knowledge, W. Duncan, Project Management
Institute, 130 South State Road, Upper Darby, PA 19082, 1996. |
| Rech97 |
The
Art of Systems Architecting, E. Rechtin and M. W. Maier, CRC Press,
1997. |
| [Schn98] |
Applying
Use Cases: A Practical Guide, G. Schneider and J. P. Winters, Addison
Wesley, 1998. |
| [Shaw96] |
Software
Architecture: Perspectives on an Emerging Discipline, M. Shaw, and
D. Garlan, Prentice-Hall, 1996. |
| [Tanu98] |
"Software
Architecture in the Business Software Domain: The Descartes Experience,"
M. Tanuan, Proceedings of ISAW3, ACM 1998, pp. 145-148. |
| [Zach87] |
"A Framework
for Information Systems Architecture," J. Zackman, IBM Systems Journal,
26, Number 3, 1987. |