Foundations For The Study of Software Architecture
Foundations For The Study of Software Architecture
F o u n d a t i o n s for t h e S t u d y of Software A r c h i t e c t u r e
and as the managerial basis for cost estimation and pro- 2.1.1 Computing Hardware Architecture
cess managment; 3) architecture as an effective basis for
There are several different approaches to hardware
reuse; and 4) architecture as the basis for dependency
architecture that are distinguished by the aspect of the
and consistency analysis.
hardware that is emphasized. RISC machines are ex-
Thus, the primary object of our research is support amples of a hardware architecture that emphasizes the
for the development and use of software architecture instruction set as the important feature. Pipelined ma-
specifications. This paper is intended to build the foun- chines and multi-processor machines are examples of
dation for future research in software architecture. We hardware architectures that emphasize the configura-
begin in Section 2 by developing an intuition about tion of architectural pieces of the hardware.
software architecture against the background of well-
There are two interesting features of the second ap-
established disciplines such as hardware, network, and proach to hardware architecture that are important in
building architecture, establish the context of software our consideration of software architecture:
architecture, and provide the motivation for our ap-
proach. In Section 3, we propose a model for, and a • there are a relatively small number of design ele-
characterization of, software architecture and software ments; and
architectural styles. Next, in Section 4, we discuss an
• scale is achieved by replication of these design ele-
easily understood example to elicit some important as-
ments.
pects of software architecture and to delineate require-
ments for a software-architecture notation. In Section 5, This contrasts with software architecture, where there is
we elaborate on two of the major benefits of our ap- an exceedingly large number of possible design elements.
proach to software architecture. We conclude, in Sec- Further, scale is achieved not by replicating design el-
tion 6, by summarizing the major points made in this ements, but by adding more distinct design elements.
paper and considering related work. However, there are some similarities: we often organize
and configure software architectures in ways analogous
to the h ~ d w a r e architectures mentioned above. For ex-
2 Intuition, Context, and Motivation ample, we create multi-process software systems and use
pipelined processing.
Before presenting our model of software architecture, Thus, the important insight from this discussion is
we lay the philosophical foundations for it by: 1) devel- that there are fundamental and important differences
oping an intuition about software architecture through between the two kinds of architecture. Because of these
analogies to existing disciplines; 2) proposing a con- differences, it is somewhat ironic that we often present
text for software architecture in a multi-level product software architecture in hardware-like terms.
paradigm; and 3) providing some motivation for soft-
ware architecture as a separate discipline. 2.1.2 Network Architecture
large number of possible topologies and those topolo- view. Descriptively, architectural style defines a partic-
gies generally go without names. Moreover, we empha- ular codification of design elements and formal arrange-
size aspects different from the topology of the nodes and ments. Prescriptively, style limits the kinds of design
connections. We consider instead such matters as the elements and their formal arrangements. T h a t is, an
placement of processes (e.g., dislribuled architectures) architectural style constrains both the design elements
or the kinds of interprocess communication (e.g., mes- and the formal relationships among the design elements.
sage passing architectures). Analogously, we shall find this a most useful concept in
Thus, we do not benefit much from using networks software architecture.
as an analogy for software architecture, even though we Of extreme importance is the relationship between
can look at architectural elements from a similar level engineering principles and architectural style (and, of
of abstraction. course, architecture itself). For example, one does not
get the light, airy feel of the perpendicular style as ex-
2.1.3 Building Architecture emplified in the chapel at King's College, Cambridge,
from romanesque engineering. Different engineering
The classical field of architecture provides some of principles are needed to move from the massiveness of
the more interesting insights for software architecture. the romanesque to lightness of the perpendicular. It is
While the subject matter for the two is quite different, not just a m a t t e r of aesthetics. This relationship be-
there are a number of interesting architectural points tween engineering principles and software architecture
in building architecture that are suggestive for software is also of fundamental importance.
architecture: Finally, the relationship between architectural style
and materials is of critical importance. The materi-
• multiple views;
als have certain properties that are exploited in pro-
• architectural styles; viding a particular style. One may combine structural
with aesthetic uses of materials, such as that found in
• style and engineering; and the post and beam construction of tudor-style houses.
However, one does not build a skyscraper with wooden
• style and materials. posts and beams. The material aspects of the design
elements provide both aesthetic and engineering bases
A building architect works with the customer by
for an architecture. Again, this relationship is of critical
means of a number of different views in which some
importance in software architecture.
particular aspect of the building is emphasized. For
Thus, we find in building architecture some funda-
example, there are elevations and floor plans that give
mental insights about software architecture: multiple
the exterior views and "top-down" views, respectively.
views are needed to emphasize and to understand dif-
The elevation views may be supplemented by contextual
ferent aspects of the architecture; styles are a cogent
drawings or even scale models to provide the customer
and important form of codification that can be used
with the look of the building in its context. For the
both descriptively and prescriptively; and, engineering
builder, the archite.ct provides the same floor plans plus
principles and material properties are of fundamental
additional structural views that provide an immense
importance in the development and support of a partic-
amount Q£detail about various explicit design consider-
ular architecture and architectural style.
ations such as electrical wiring, plumbing, heating, and
air-conditioning.
2.2 The Context of Architecture
Analogously, the software architect needs a number of
different views of the software architecture for the var- Before discussing our motivation for software archi-
ious uses and users. At present we make do with only tecture specifications, we posit a characterization of ar-
one view: the implementation. In a real sense, the im- chitecture in the context of the entire software product.
plementation is like a builders detailed view - - that is, Note that we do not mean to imply anything about the
like a building with no skin in which all the details are particular process by which this product is created - -
visible. It is very difficult to abstract the design and ar- though of course there may be implications about the
chitecture of the system from all the details. (Consider process that are inherent in our view. Our purpose is
the Pompidou Center in Paris as an example.) primarily to provide a context for architecture in what
The notion of architectural style is particularly use- would be considered a fairly standard software product.
ful from both descriptive and prescriptive points of We characterize the different parts of the software
ACM SIGSOFT SOFTWARE ENGINEERING NOTES vol 17 no 4 Oct 1992 Page 43
product by the kinds of things that are important for to software architecture are evolution and customiza-
that part - - the kinds of entities, their properties and tion. Systems evolve and are adapted to new uses, just
relationships that are important at that level, and the as buildings change over time and are adapted to new
kinds of decision and evaluation criteria that are rele- uses. One frequently accompanying property of evolu-
vant at that level: tion is an increasing brittleness of the system - - that is,
an increasing resistance to change, or at least to chang-
requirements are concerned with the determination
ing gracefully [5]. This is due in part to two architec-
of the information, processing, and the character-
tural problems: architectural erosion and architectural
istics of that information and processing needed by
drift. Architectural erosion is due to violations of the ar-
the user of the system; 2
chitecture. These violations often lead to an increase in
architecture is concerned with the selection of archi- problems in the system and contribute to the increasing
tectural elements, their interactions, and the con- brittleness of a system - - for example, removing load-
straints on those elements and their interactions bearing walls often leads to disastrous results. Architec-
necessary to provide a framework in which to sat- tural drift is due to insensitivity about the architecture.
isfy the requirements and serve as a basis for the This insensitivity leads more to inadaptability than to
design; disasters and results in a lack of coherence and clarity
of form, which in turn makes it much easier to violate
design is concerned with the modularization and the architecture that has now become more obscured.
detailed interfaces of the design elements, their Customization is an important factor in software ar-
algorithms and procedures, and the data types chitecture, not because of problems that it causes, but
needed to support the architecture and to satisfy because of the lack of architectural maturity that it in-
the requirements; and dicates. In building software systems, we are still at
the stage of recreating every design element for each
implementation is" concerned with the representa-
new architecture. We have not yet arrived at the stage
tions of the algorithms and data types that satisfy
where we have a standard set of architectural styles
the design, architecture, and requirements.
with their accompanying design elements and formal
The different parts of a particular product are by no arrangements. Each system is, in essence, a new ar-
means as simple as this characterization. There is a chitecture, a new architectural style. The presense of
continuum of possible choices of models, abstractions, ubiquitous customization indicates that there is a gen-
transformations, and representations. We simplify this eral need for codification - - that is, there is a need for
continuum into four discrete parts primarily to provide architectural templates for various architectural styles.
an intuition about how architecture is related to the For the standard parts of a system in a particular style,
requirements and design of a software system. the architect can select from a set of well-known and
It should be noted that there are some development understood elements and use them in ways appropriate
paradigms to which our characterization will not apply to the desired architecture. This use of standard tem-
- - for example, the exploratory programming paradigm plates for architectural elements then frees the architect
often found in AI research. However, our characteriza- to concentrate on those elements where customization
tion represents a wide variety of development and evo- is crucial.
lutionary paradigms used in the creation of production Given our characterization of architecture and moti-
software, and delineates an important, and hitherto un- vating problems, there are a number of things that we
derconsidered, part of a unified software product [15]. want to be able to do with an architectural specification:
Characters
Tokens L ~ I L l I I L _ _ I I I I I L ~ J I I
Phrases L ~ I L l L I I I L J
F i g u r e 1: D a t a E l e m e n t Relationships.
relate similar architectures is an important aspect of the 5.1 Software Architecture and Analysis
software process; an example is the evaluation of "com-
Aside from providing clear and precise documenta-
peting" architectures. Certainly, the architectures both
tion, the primary purpose of specifications is to provide
being of a common style captures some portion of the
automated analysis of the documents and to expose var-
relationship. More can be said, however, given the use
ious kinds of problems that would otherwise go unde-
of application-oriented properties. In particular, we can
tected. There are two primary categories of analysis
draw correlation~3 among the properties of the different
that we wish to perform: consistency and dependency
architectures. The table below shows some of these cor-
relations. analysis. Consistency occurs in several dimensions: con-
sistency within the architecture and architectural styles,
Sequential A r c h i t e c t u r e Parallel A r c h i t e c t u r e consistency of the architecture with the requirements,
has-all-tokens will-be-no-more-tokens and consistency of the design with the architecture. In
has-all-phrases will-be-no-more-pharses the same way that Inscape [14] formally and automat-
has-all-correlated-phrases all-phrases-correlated ically manages the interdependencies between interface
specifications and implementations, we also want to be
In this case, the correlations indicate common points able to manage the interdependencies between require-
of processing, leading, for instance, to a better under- ments, architecture, and design.
standing of the possible reusability of the processing Therefore, we want to provide and support at least
elements. the following kinds of analysis:
The important points of this example can be summa-
rized as follows: • consistency of architectural style constraints;
• the form of this architecture is more complex satisfaction of the architecture by the design;
than that of the previous one - - there are more
application-oriented properties and those proper- establishment of dependencies between architec-
ties require a richer notation to express them and ture and design, and architecture and require-
their interrelationships; ments; and
• application-oriented properties are useful in relat- 5.2 Architecture and the Problems of
ing similar architectures. Use and Reuse
are understood, then there is usually no problem find- the necessary features of architectural description tech-
ing the appropriate component in the library to use. If niques and their supporting infrastructure. In so doing,
they are ndt understood, then browsing will help only we have set a direction for future research that should
in conjunction with the acquisition of the appropriate establish the primacy of software architecture.
concepts. Others have begun to look at soft'rare architecture.
The primary focus in architecture is the identification Three that are most relevant are Schwanke, et al., Zach-
of important properties and relationships - - constraints man, and Shaw.
on the kinds of components that are necessary for the Schwanke, et al., [20] define architecture as the per-
architecture, design, and implementation of a system. mitted or allowed set of connections among components.
Given this as the basis for use and reuse, the architect, We agree that that aspect of architecture is important,
designer, or implementer may be able to select the ap- but feel that there is much more to architecture than
propriate architectural element, design element, or im- simply components and connections, as we demonstrate
plemented code to satisfy the specified constraints at in this paper.
the appropriate level. Zachman [23] uses the metaphor of building architec-
Moreover, the various parts of previously imple- ture to advantage in constructing an architecture for
mented software may be teased apart to select that information systems. He exploits the notion of differ-
which is useful from that which is not. For example, ent architectural documents to provide a vision of what
the design of a component from another system may the various documents ought to be in the building of
have just the right architectural constraints to satisfy an information system. The architect is the mediator
a particular architectural element, but the implementa- between the user and the builders of the system. The
tion is constrained such that-it conflicts with other sys- various documents provide the various views of different
tem constraints. The solution is to use the design but parts of the product - - the users view, the contractors
not the implementation: This becomes possible only by views, etc. His work differs from ours in that he is
indentifying the architectural, design, and implemen- proposing a specific architecture for a specific applica-
tation constraints and use them to satisfy the desired tion domain while we are attempting to define the philo-
goals of the architecture, design, and implementation. sophical underpinnings of the discipline, to determine a
The important lesson in reusing components is that notation for expressing the specification of the various
the possibilities for reuse are the greatest where specifi- architectural documents, and determine how these doc-
cations for the components are constrained the least - - uments can be used in automated ways.
at the architectural level. Component reuse at the im-
Shaw [21] comes the closest in approach to ours. She
plementation level is usually too late because the imple-
takes the view of a programming language designer and
mentation elements often embody too many constraints.
abstracts classes of components, methods of composi-
Moreover, consideration of reuse at the architectural
tion, and schemas from a wide variety of systems. These
level may lead development down a different, equally
correspond somewhat to our notions of processing and
valid solution path, but one that results in greater reuse.
data elements, connecting elements, and architectural
style, respectively. One major difference between our
6 Conclusions work and Shaw's is that she is taking a traditional type-
based approach to describing architecture, while we
Our efforts over the past few years have been directed are taking a more expressive property-based approach.
toward improving the software process associated with Our approach appears better able to more directly cap-
large, complex software systems. We have come to be- ture notions of weighted properties and relationships.
lieve that software architecture can play a vital role in Shaw's approach of abstracting the various properties
this process, but that it has been both underutilized and and relationships of existing architectures and embody-
underdeveloped. We have begun to address this sit- ing them in a small set of component and composition
uation by establishing an intuition about and context types appears rather restrictive. Indeed, she is seeking
for software architecture and architectural style. We to provide a fixed set of useful architectural elements
have formulated a model of software architecture that that one can mix and match to create an architecture.
emphasizes the architectural elements of data, process- Shaw's approach is clearly an important and useful one
ing, and connection, highlights their relationships and and does much to promote the understanding of basic
properties, and captures constraints on their realization and important architectural concepts. Our approach,
or satisfaction. Moreover, we have begun to delineate on the other hand, emphasizes the importance of the
ACM SIGSOFT SOFTWARE ENGINEERING NOTES vol 17 no 4 Oct 1992 Page 52
underlying properties and relationships as a more gen- [14] D.E. Perry, The lnscape
eral mechanism that can be used to describe the partic- Environment, Proc. Eleventh Inter. Conf. on Soft-
ular types of elements and compositions in such a way ware Engineering, Pittsburgh, PA, IEEE Computer
Society Press, May 1989, pp. 2-12.
that provides a latitude of choice.
In conclusion, we offer the following conjecture: per- [15] D.E. Perry, Industrial Strength Software Development
haps the reason for such slow progress in the develop- Environments, Proe. I F I P Congress '89, T h e 11th
W o r l d C o m p u t e r Congress, San Francisco, CA,
ment and evolution of software systems is that we have Aug. 1989.
trained carpenters and contractors, but no architects.
[16] J.L. Peterson, Petri Nets, A C M C o m p u t i n g Sur-
veys, Vol. 9, No. 3, Sept. 1977, pp. 223-252.
REFERENCES [17] W.E. Riddle and J.C. Wileden, T u t o r i a l on Software
System Design: Description and .Analysis, Com-
[1] G.S. Avrulfin, L.K. Dillon., J.C. Wfleden, and puter Society Press, 1980.
W.E. Riddle, Constrained Expressions: Adding Anal-
[18] W.R. Rosenblatt, J.C. Wfleden, and A.L. Wolf, OROS:
ysis Capab~ties to Design Methods for Concurrent
Systems, I E E E Trans. on Software Engineering, Towards a Type Model for Software Development
Vol. SE-12, No. 2, Feb. 1986, pp. 278-292. Environments, Proe. O O P S L A ~89, New Orleans,
Louisiana, October 1989.
[2] J.L. Bentley, 'Writing Efficient P r o g r a m s , Addison-
[19] E. Sandewall, C. StrSmberg, and H. SSrensen, Software
Wesley, Reading, MA, 1982.
Architecture Based on Communicating Residential En-
[3] G.D. Bergland, A Guided Tour of Program Design vironments, Proc. F i f t h Inter. Conf. on Software
Methodologies, I E E E C o m p u t e r , Vol. 14, No. 10, Engineering, San Diego, CA, IEEE Computer Society
Oct. 1981, pp. 13-37. Press, Mar. 1981, pp. 144-152.
[4] B.W. Boehm, Software Engineering Economics, [20] R.W. Schwanke, R.Z. Altucher, and M.A. Platoff, Dis-
Prentice-Hail, Englewood Cliffs, N J, 1981. covering, Visualizing and Uontrolling Software Struc-
ture, Proe. Fifth Inter. W o r k s h o p on Soft-
[5] F.P. Brooks, Jr.,. T h e M y t h i c a l Man-Month, ware Specification and Design, Pittsburgh, PA,
Addison-Wesley, Re~ding, MA, 1972. May 1989, appearing in A C M S I G S O F T Notes,
[6] R.H. Campbell and A.N. Habermann, The Specifica- Vol. 14, No. 3, May 1989, pp. 147-150.
tion of Process Synchronization by Path Expressions, [21] M. Shaw, Larger Scale Systems R e q u i r e Higher-
L e c t u r e Notes in C o m p u t e r Science, No. 16, Level Abstractions, Proc. Fifth Inter. Workshop on
Apr. 1974, pp. 89-102. Software Specification and Design, Pittsburgh, PA,
[7] E.J. Chikofsky (ed.), Software D e v e l o p m e n t - - May 1989, appearing in A C M S I G S O F T Notes,
Vol. 14, No. 3, May 1989, pp. 143-146.
C o m p u t e r - a i d e d Software Engineering, Technol-
ogy Series, IEEE Computer Society Press, 1988. [22] A.Z. Spector, Modu]ar Architectures for Distributed
and Database Systems, P r o e . E i g h t h A C M
[8] G. Estrin, R.S. Fenchel, R.R. Razouk, and M.K. Ver-
SIGACT-SIGMOD-SIGART Symp. on Princi-
non, SARA (System ARchitects Apprentice), I E E E ples of Database Systems, Philadelphia,PA, A C M
Trans. on Software Engineering, Vol. SE-12, No. 2, Press, Mar. 1989, pp. 217-224.
Feb. 1986, pp. 293-277.
[23] J.A. Zachman, A Framework for Information Sys-
[9] P. Freeman and A.I. Wasserma~, Tutorial on Soft- tems Architecture, I B M Systems J o u r n a l , Vol. 26,
ware Design Techniques, IEEE Computer Society No. 3, 1987.
Press, 1976.
[10] D. Ja~ckson, Composing Data and Process Descriptions
in the Design of Software Systems, LCS Tech. Re-
p o r t 419, Massachusetts Institute of Technology, Cam-
bridge, MA, May 1988.
[11] F.C. Mish, x~rebster~s N i n t h New Collegiate Die-
tlonary, Merfiam Webster, Springfield, MA, 1983.
[12] J.E.B. Moss ~md A.L. Wolf, Toward Principles of In-
heritance and Subtyping for Programming Languages,
C O I N S Tec]~. R e p o r t 88-95, COINS Dept., Univ.
of Mass., Amherst, MA, Nov. 1988.
[13] J.D. Musa, Software Reliability: M e a s u r e m e n t ,
P r e d i c t i o n , Application, McGraw-Hill, New York,
NY, 1990.