Content uploaded by Patricia Lago
Author content
All content in this area was uploaded by Patricia Lago
Content may be subject to copyright.
Building up and Exploiting Architectural Knowledge
Philippe Kruchten
University of British Columbia
Vancouver, B.C., Canada
pbk@ece.ubc.ca
Patricia Lago Hans van Vliet
Vrije Universiteit
Amsterdam, NL
{patricia, hans}@cs.vu.nl
Timo Wolf
Technische Universität
München, Germany
wolft@in.tum.de
Abstract
Architectural knowledge consists of architecture
design as well as the design decisions, assumptions,
context, and other factors that together determine why
a particular solution is the way it is. Except for the
architecture design part, most of the architectural
knowledge usually remains hidden, tacit in the heads of
the architects. We conjecture that an explicit represen-
tation of architectural knowledge is helpful for building
and evolving systems. If we had a repository of archi-
tectural knowledge for a system, what would it ideally
contain, how would we build it, and exploit it in prac-
tice? In this paper we describe a use case model for an
architectural knowledge system.
1. Introduction
Architectural design, even well documented ac-
cording to all the good recipes is only one small part
of the Architectural Knowledge that is required to de-
sign a system, or that can be exploited out of a system
to build the next one, or that is required to successfully
evolve a system. Bosch and others have pointed that
design decisions, the tight set of interdependencies
between them, and their mapping to both the require-
ments, needs, constraints upstream, or the design and
implementation downstream are also a key component
of architectural knowledge [1,6,7,10].
The reasoning behind a design decision, and other
forces that drive those decisions (such as, company
policies, standards that have to be used, earlier experi-
ences of the architect, etc.), usually are not explicitly
captured. They are tacit knowledge, essential for the
solution chosen, but not documented. At a later stage, it
then becomes difficult to trace the reasons of certain
design decisions. In particular, during the evolution one
may stumble upon these design decisions, try to undo
them or work around them, and get into trouble when
this turns out to be very costly if not impossible. The
future evolutionary capabilities of a system can be bet-
ter assessed if this type of knowledge would be ex-
plicit.
Capturing design rationale has been a key research
topic for many years, leading to interesting models,
tools and methods [2, 3], but it has failed to transfer to
practice [8]. Why? This is mostly because the burden
to capture assumptions and decisions outweighs largely
the immediate benefits that the architect may draw.
These benefits would be felt much later, or by others. If
we are not careful to address the key problem: how to
move this knowledge out of the tacit level into at least
the documented level and then the formalized level, all
what we may do with architectural knowledge could
follow the same route as design rationale has done over
the years: nice ideas, but not practical. One way is to
automate the collection of rationale (or of decisions, or
both). Assuming for a while that we have solved the
problem, and that we have defined a repository of ar-
chitectural knowledge in the form of all design deci-
sions, how would we use it? Who would use it, to do
what?
2. Use Cases for Architectural Knowledge
Here is an initial set of use cases:
Incremental architectural review: what pieces of
Architectural Knowledge have been added or modi-
fied since the last review? Extract and visualize
these elements; browse and explore dependencies or
traces.
Review for a specific concern: from a given perspec-
tive (such as security, safety, reuse, etc.) what are
the knowledge elements involved? This consists in
building in some sense a “view” of Architectural
Knowledge restricted to that concern.
Evaluate impact: if we want to do a change in an
element, what are the elements impacted (decisions,
and elements of design). This may branch out to
various kinds of changes: change of an assumption,
change of a design decision.
Get a rationale: given an element in the design,
trace back to the decisions it is related to.
Study the chronology: over a time line, find what the
sequence of design decisions has been.
Add a decision: manually or via some tool; then in-
tegrate the decision to other elements of AK. (Simi-
larly for other AK elements).
Cleanup the system: make sure that all consequences
of a removed decision have been removed.
Spot the subversive stakeholder: identify who are the
stakeholders whose changes of mind are doing the
most damage to the system.
Similar but different, Spot the critical stakeholder:
the stakeholder who seems to have the most
“weight” on the decisions, and who therefore maybe
the one that could be most affected by the future
evolution of the system.
Clone AK: produce a consistent subset of AK to
prime the pump for a new system (reuse AK)
Integration: you want to integrate multiple systems
and decide whether they fit. The tool would help an-
swering questions about integration strategies.
Detection and interpretation of patterns: are there
patterns in the graphs that can be interpreted in a
useful fashion, and lead to guidelines for the archi-
tects. For example: decisions being hubs (“God” de-
cisions), circularity, decisions that gain weight over
time and are more difficult to change or remove.
Assuming we have captured architectural knowl-
edge as discussed above in some graph-like form,
where the vertices represent design decisions, and the
edges represent relationships between decisions, the
different use cases correspond to certain operations on
this graph. Some of these operations are relatively
straightforward. They correspond to a subset operation
(Clone AK, Review for a specific concern) or closure
operation (Evaluate impact, Cleanup the system).
A more interesting operation has to do with the de-
tection or matching of patterns or, rather, antipatterns.
Some of these can be cast as graph operations. E.g.,
detection of a “God” decision boils down to selecting
nodes with a high fan-in/fan-out. The identification and
operationalization of time-related patterns still is an
open issue.
One of the most interesting unsolved issues is how
to visualize architectural knowledge. The amount of
information is overwhelming, so we have to abstract
away from a lot of details. Developments in the area of
information visualization are relevant here [4]. Most of
these visualizations abstract away from details in the
graph representation, and present the result in terms of
tree maps, radial or conical representations, and the
like. In our opinion, though, this is not enough. The
visualizations have to direct our attention to the very
issue we want to convey [9], such as the subversive or
critical stakeholder.
Finally, if we can link our ontology of design deci-
sions to some thesaurus that describes the contents of
actual design documents, we may exploit thesaurus-
based browsers [5] to explore these resources. This is a
kind of data mining operation on documents containing
architectural knowledge, with a targeted visualization.
3. Conclusions
In this paper we discuss the notion of architectural
knowledge. If we had a repository of architectural
knowledge for a system, what would it ideally contain,
how would we build it, and exploit it in practice? We
describe a use case model for an architectural knowl-
edge system, together with an indication of the type of
operations needed to realize the uses cases
Acknowledgements
This research has partially been sponsored by the Dutch
Joint Academic and Commercial Quality Research & Devel-
opment (Jacquard) program on Software Engineering Re-
search via contract 638.001.406 GRIFFIN: a GRId For in-
FormatIoN about architectural knowledge; and by an Eclipse
Innovation grant from IBM.
References
[1] J. Bosch, "Software Architecture: the Next Step,"
in Proceedings of First European Workshop on
Software Architecture (EWSA 2004), St Andrews,
Scotland, 2004, Springer-Verlag, pp. 194-199.
[2] J.E. Burge and D.C. Brown, "Reasoning with de-
sign rationale," in J. S. Gero, ed., Artificial Intelli-
gence in Design '00, Netherlands: Kluwer, 2000, pp.
611-629.
[3] J. Conklin and M.L. Begeman, "gIBIS: A tool for
all reasons," Journal of the American Society for In-
formation Science, vol. 40, 1989.
[4] J.-D. Fekete, "The InfoVis Toolkit," in Proceed-
ings of IEEE Symposium on Information Visualiza-
tion 2004 (INFOVIS'04), 2004, pp. 167-174.
[5] C. Fluit, M. Sabou, and F. van Harmelen, "Ontol-
ogy-based information visualisation," in V. Gero-
imenko and C. Chen, ed., Visualising the Semantic
Web, Springer-Verlag, 2005.
[6] P. Kruchten, "An Ontology of Architectural De-
sign Decisions," in Proceedings of 2nd Groningen
Workshop on Software Variability Management,
Groningen, NL, 2004, Rijksuniversiteit Groningen.
[7] P. Lago and H. van Vliet, "Explicit Assumptions
Enrich Architectural Models," in Proceedings of
ICSE 2005, St. Louis, MO, USA, 2005, ACM, pp.
206-214.
[8] J. Lee, "Design Rationale Systems: Understanding
the Issues," IEEE Expert, 12 (3), 1997, pp.78-85.
[9] E.R. Tufte, Visual explanations: images and quan-
tities, evidence and narrative, Cheshire, CO: Graph-
ics Press LLC, 1997.
[10] J. Tyree and A. Ackerman, "Architecture Deci-
sions: Demystifying Architecture," IEEE Software,
vol. 22, no. 2, 2005, pp. 19-27.