296x Filetype PDF File size 0.08 MB Source: www0.cs.ucl.ac.uk
Software Architecture: a Roadmap
David Garlan
School of Computer Science
Carnegie Mellon University
5000 Forbes Avenue
Pittsburgh, PA 15213
(412) 268-5056
garlan@cs.cmu.edu
ABSTRACT design, regular conferences and workshops devoted speci-
Over the past decade software architecture has received fically to software architecture, a growing number of com-
increasing attention as an important subfield of software mercial tools to aid in aspects of architectural design,
engineering. During that time there has been considerable courses in software architecture, major government and
progress in developing the technological and methodologi- industrial research projects centered on software architec-
cal base for treating architectural design as an engineering ture and an increasing number of formal architectural stan-
discipline. However, much remains to be done to achieve dards. Codification of architectural principles, methods,
that goal. Moreover, the changing face of technology raises and practices has begun to lead to repeatable processes of
a number of new challenges for software architecture. This architectural design, criteria for making principled tradeoffs
paper examines some of the important trends of software among architectures, and standards for documenting, re-
architecture in research and practice, and speculates on the viewing, and implementing architectures.
important emerging trends, challenges, and aspirations.
However, despite this progress, as engineering disciplines
Keywords go, the field of software architecture remains relatively
Software architecture, software design, software immature. While the outlines of an engineering basis for
engineering software architecture are becoming clear, there remain nu-
merous challenges and unknowns. We can therefore expect
1 INTRODUCTION to see major new developments in the field over the next
A critical issue in the design and construction of any com- decade – both in research and practice. Some of these de-
plex software system is its architecture: that is, its gross velopments will be natural extensions of the current trajec-
organization as a collection of interacting components. A tory. But there are also a number of radical new opportuni-
good architecture can help ensure that a system will satisfy ties, brought about by the changing face of technology.
key requirements in such areas as performance, reliability, In this paper I examine some of the important trends of
portability, scalability, and interoperability. A bad archi- software architecture in research and practice. To set the
tecture can be disastrous. stage, I begin by describing the roles of architecture in
Over the past decade software architecture has received software systems development. Next I summarize the past
increasing attention as an important subfield of software and current state of research and practice. Finally, after
engineering. Practitioners have come to realize that getting considering some of the forces that are changing the world
an architecture right is a critical success factor for system of software systems themselves, I speculate on emerging
design and development. They have begun to recognize the trends, challenges, and aspirations.
value of making explicit architectural choices, and lever- 2 THE ROLES OF SOFTWARE ARCHITECTURE
aging past architectural designs in the development of new While there are numerous definitions of software architec-
products. Today there are numerous books on architectural ture, at the core of all of them is the notion that the archi-
tecture of a system describes its gross structure. This
structure illuminates the top level design decisions, include-
ing things such as how the system is composed of interact-
ing parts, where are the main pathways of interaction, and
what are the key properties of the parts. Additionally, an
architectural description includes sufficient information to
allow high-level analysis and critical appraisal.
3. Construction: An architectural description provides
Software architecture typically plays a key role as a bridge a partial blueprint for development by indicating the
between requirements and implementation (see Figure 1). major components and dependencies between them.
For example, a layered view of an architecture typi-
cally documents abstraction boundaries between
parts of a system’s implementation, clearly identify-
Requirements ing the major internal system interfaces, and con-
straining what parts of a system may rely on services
provided by other parts.
Software Architecture 4. Evolution: Software architecture can expose the di-
mensions along which a system is expected to
evolve. By making explicit the "load-bearing walls"
Code of a system, system maintainers can better under-
stand the ramifications of changes, and thereby more
accurately estimate costs of modifications. More-
over, architectural descriptions separate concerns
Figure 1: Software Architecture as a Bridge about the functionality of a component from the
ways in which that component is connected to (in-
By providing an abstract description of a system, the ar- teracts with) other components, by clearly distin-
chitecture exposes certain properties, while hiding others. guishing between components and mechanisms that
Ideally this representation provides an intellectually tracta- allow them to interact. This separation permits one
ble guide to the overall system, permits designers to reason to more easily change connection mechanisms to
about the ability of a system to satisfy certain requirements, handle evolving concerns about performance inter-
and suggests a blueprint for system construction and com- operability, prototyping, and reuse.
position. For example, an architecture for a signal process-
ing application might be constructed as a dataflow network 5. Analysis: Architectural descriptions provide new
in which the nodes read input streams of data, transform opportunities for analysis, including system consis-
that data, and write to output streams. Designers might use tency checking [2, 25], conformance to constraints
this decomposition, together with estimated values for input imposed by an architectural style [1], conformance
data flows, computation costs, and buffering capacities, to to quality attributes [9], dependence analysis [42],
reason about possible bottlenecks, resource requirements, and domain-specific analyses for architectures built
and schedulability of the computations. in specific styles [10, 15, 26].
To elaborate, software architecture can play an important 6. Management: Experience has shown that successful
role in at least six aspects of software development. projects view achievement of a viable software ar-
1. Understanding: Software architecture simplifies our chitecture as a key milestone in an industrial soft-
ability to comprehend large systems by presenting ware development process. Critical evaluation of an
them at a level of abstraction at which a system’s architecture typically leads to a much clearer under-
high-level design can be easily understood [20, 35]. standing of requirements, implementation strategies,
Moreover, at its best, architectural description ex- and potential risks [7].
poses the high-level constraints on system design, as 3 YESTERDAY
well as the rationale for making specific architectural In the distant past of ten years ago, architecture was largely
choices. 1
an ad hoc affair. Descriptions relied on informal box-and-
2. Reuse: Architectural descriptions support reuse at line diagrams, which were rarely maintained once a system
multiple levels. Current work on reuse generally fo- was constructed. Architectural choices were made in idio-
cuses on component libraries. Architectural design syncratic fashion – typically by adapting some previous
supports, in addition, both reuse of large components design, whether or not it was appropriate. Good architects
and also frameworks into which components can be – even if they were classified as such within their organiza-
integrated. Existing work on domain-specific soft-
ware architectures, reference frameworks, and ar- 1 To be sure, there were some notable exceptions. Parnas
chitectural design patterns has already begun to pro- recognized the importance of system families [33], and
vide evidence for this [8, 31]. architectural decomposition principles based on informa-
tion hiding [34]. Others, such as Dijkstra, exposed certain
system structuring principles [12].
tions – learned their craft by hard experience in particular 4 TODAY
domains, and were unable to teach others what they knew. Much has changed in the past decade. Although there is
It was usually impossible to analyze an architectural de- wide variation in the state of the practice, generally speak-
scription for consistency or to infer non-trivial properties ing, architecture is much more visible as an important and
about it. There was virtually no way to check that a given explicit design activity in software development. Job titles
system implementation faithfully represented its architec- now routinely reflect the role of software architect; compa-
tural design. nies rely on architectural design reviews as critical staging
However, despite their informality, architectural descrip- points; and architects recognize the importance of making
tions were central to system design. As people began to explicit tradeoffs within the architectural design space.
understand the critical role that architectural design plays in In addition, the technological basis for architectural design
determining system success, they also began to recognize has improved dramatically. Three of the important ad-
the need for a more disciplined approach. Early authors vancements have been the development of architecture de-
began to observe certain unifying principles in architectural scription languages and tools, the emergence of product
design [36], to call out architecture as a field in need of line engineering and architectural standards, and the codifi-
attention [35], and to establish a working vocabulary for cation and dissemination of architectural design expertise.
software architects [20]. Tool vendors began thinking
about explicit support for architectural design. Language 4.1 Architecture Description Languages and Tools
designers began to consider notations for architectural rep- The informality of most box-and-line depictions of archi-
resentation [30]. tectural designs leads to a number of problems. The
Within industry, two trends highlighted the importance of meaning of the design may not be clear. Informal diagrams
architecture. The first was the recognition of a shared rep- cannot be formally analyzed for consistency, completeness,
ertoire of methods, techniques, patterns and idioms for or correctness. Architectural constraints assumed in the
structuring complex software systems. For example, the initial design are not enforced as a system evolves. There
box-and-line-diagrams and explanatory prose that typically are few tools to help architectural designers with their
accompany a high-level system description often refer to tasks.
such organizations as a "pipeline,'' a "blackboard-oriented In response to these problems a number of researchers in
design,'' or a "client-server system.'' Although these terms industry and academia have proposed formal notations for
were rarely assigned precise definitions, they permitted representing and analyzing architectural designs. Generi-
designers to describe complex systems using abstractions cally referred to as "Architecture Description Languages''
that make the overall system intelligible. Moreover, they (ADLs), these notations usually provide both a conceptual
provided significant semantic content about the kinds of framework and a concrete syntax for characterizing soft-
properties of concern, the expected paths of evolution, the ware architectures [9, 30]. They also typically provide
overall computational paradigm, and the relationship be- tools for parsing, displaying, compiling, analyzing, or sim-
tween this system and other similar systems. ulating architectural descriptions.
The second trend was the concern with exploiting com- Examples of ADLs include Adage [10], Aesop [15], C2
monalities in specific domains to provide reusable frame- [28], Darwin [26], Rapide [25], SADL [32], UniCon [39],
works for product families. Such exploitation is based on Meta-H [6], and Wright [3]. While all of these languages
the idea that common aspects of a collection of related are concerned with architectural design, each provides cer-
systems can be extracted so that each new system can be tain distinctive capabilities: Adage supports the description
built at relatively low cost by "instantiating'' the shared of architectural frameworks for avionics navigation and
design. Familiar examples include the standard decomposi- guidance; Aesop supports the use of architectural styles; C2
tion of a compiler (which permits undergraduates to con- supports the description of user interface systems using an
struct a new compiler in a semester), standardized commu- event-based style; Darwin supports the analysis of distrib-
nication protocols (which allow vendors to interoperate by uted message-passing systems; Meta-H provides guidance
providing services at different layers of abstraction), fourth- for designers of real-time avionics control software; Rapide
generation languages (which exploit the common patterns allows architectural designs to be simulated, and has tools
of business information processing), and user interface for analyzing the results of those simulations; SADL pro-
toolkits and frameworks (which provide both a reusable vides a formal basis for architectural refinement; UniCon
framework for developing interfaces and sets of reusable has a high-level compiler for architectural designs that sup-
components, such as menus and dialogue boxes). ports a mixture of heterogeneous component and connector
types; Wright supports the formal specification and analy-
sis of interactions between architectural components.
Recently the proliferation of capabilities of ADLs has tools. But general-purpose object languages suffer from the
prompted an investigation of ways to integrate the notations problem that the object conceptual vocabulary may not be
and tools into larger ensembles. One of the results has been ideally suited for representing architectural concepts, and
an architectural interchange language, called Acme, which there are likely to be fewer opportunities for automated
provides a simple framework for describing architectural analysis of architectural properties.
structure and a flexible annotation mechanism for adding
semantics to that structure [18]. (Acme can be viewed as 4.2 Product Lines and Standards
the XML of architectural description.) Acme also supports As noted earlier, one of the important trends has been the
the definition of styles and enforcement of design con- desire to exploit commonality across multiple products.
straints through its tools. Two specific manifestations of that trend are improvements
in our ability to create product lines within an organization
More ambitious still, a number of researchers have begun and the emergence of cross-vendor integration standards.
to look at additional ways of integrating architecture-based
tools. The result promises to be a flexible "ADL Toolkit’’ With respect to product lines, a key challenge is that a
that will allow practitioners to create domain-specific ar- product line approach requires different methods of devel-
chitectural design environments largely by combining the opment. In a single-product approach the architecture must
capabilities of existing tools. Other efforts have sought to be evaluated with respect to the requirements of that prod-
integrate architectural development tools with other tool- uct alone. Moreover, single products can be built independ-
supported aspects of software development, such as re- ently, each with a different architecture.
quirements elicitation and resolution [7].
However, in a product line approach, one must also con-
Languages explicitly designed with software architecture in sider requirements for the family of systems, and the rela-
mind are not the only approach. There has been consider- tionship between those requirements and the ones associ-
able interest in using general-purpose object design nota- ated with each particular instance. Figure 3 illustrates this
tions for architectural modeling [8, 24]. Moreover, recently relationship. In particular, there must be an up-front (and
there have been a number of proposals that attempt to show on-going) investment in developing a reusable architecture
how the concepts found in ADLs can be mapped directly that can be instantiated for each product. Other reusable
into an object-oriented notation like UML [29, 23, 17]. assets, such as components, test suites, tools, etc., typically
These alternatives are illustrated in Figure 2. accompany this.
Requirements Product Product
Requirements Architecture
A B
Architecture C induced
Architecture constraint
in an ADL in UML
D E Product Line Product Line
Requirements Architecture
Code
Figure 3: Product Line Architectures
Figure 2: Software Architecture as a Bridge Although product line engineering is not yet widespread,
we are beginning to have a better understanding of the pro-
Path A-D is one in which an ADL is used as the modeling cesses, economics, and artifacts required to achieve the
language. Path B-E is one in which UML is used as the benefits of a product line approach. A number of case
modeling notation. Path A-C-E, is one in which an archi- studies of product line successes have been published. (For
tecture is first represented in an ADL, but then transformed example, see [13].) Moreover, organizations such as the
into UML before producing an implementation. Software Engineering Institute are well on their way to-
wards providing concrete guidelines and processes for the
Using a more general modeling language such as UML has use of a product line approach [37].
the advantages of providing a notation that practitioners are
more likely to be familiar with, and providing a more direct Like product line approaches, cross-vendor integration
link to object-oriented implementations and development standards require architectural frameworks that permit a
no reviews yet
Please Login to review.