Document PDF
Document PDF
Document PDF
Software Architecture
Knowledge Management
123
Editors
Muhammad Ali Babar Torgeir Dingsøyr
University of Limerick Norwegian University of Science
Lero-The Irish Software Engineering & Technology (NTNU)
Research Center Department of Computer
Limerick and Information Science
Ireland NO-7491 Trondheim
malibaba@lero.ie Norway
dingsoyr@idi.ntnu.no
v
vi Foreword
The third situation concerned the evolution of a mature and aging software sys-
tem that had to be adjusted to a set of new requirements affecting functionality and
quality requirements, as well the platform on which the system was running. The
architecture of the system, having evolved in yearly releases for many years, had
eroded quite significantly to the point that the development team tasked with ex-
tending the system had to spend a considerable amount of the project budget to
recreate the necessary part of the architecture in order to be able to refactor and
rearchitect the system in response to the new requirements. Again, the knowledge
about the architecture of the system had vaporized over time and caused significant
inefficiency in the evolution of the system.
The situations that I have described above are quite prototypical of the experi-
ences of virtually every engineer or architect who has spent some time in industrial
software development. However, as a software engineering community we have
grown accustomed to these problems, accepted them as facts of life and research
has mostly focused on dealing with the symptoms.
Soon it will be five years since I changed my position in academia for one in
industry. The reason for my decision to spend time in industry was that I felt I was
getting out of touch with reality; that the perception that I had about how large-
scale software engineering took place was different from the day to day existence
of software development teams, software architects and engineering managers. So,
what have I learned over the last years? The key lessons for me are twofold. First,
software development is a people process first and technological one second. The
customers of software products, services and systems, the engineers building it, the
business leaders and product managers envisioning it, are human beings with all
the psychological and sociological phenomena associated with the processes these
stakeholders use. It is very easy to underestimate the consequences of this when
working in academia or research in general. Second, there still is an enormous gap
between the state of research and the state of practice, despite the heroic efforts of
people on both sides to decrease it. There is a continuous need for people who are
able and willing to cross the boundary back and forth, not only through research
projects in collaboration with industry, but especially through immersion, i.e. work-
ing, in both worlds. These lessons are not necessarily novel or terribly insightful,
but in life some things can only be understood by experiencing them and I believe
in this more than ever.
The research presented in this book is unique and different in the sense that it
is the result of close collaboration between academia and industry. In addition, the
book addresses the root causes of the problems surrounding architectural knowl-
edge. The core of the problem in the situations described above is the vaporization
of architectural knowledge and the lack of a conceptual framework as wells as mech-
anisms, approaches and tools to avoid at least part of the problem. The book that you
are holding right now presents an important and valuable step forward in addressing
these concerns. When preparing to write this preface, I asked the chief architects at
Intuit, the company that I work for, what was their understanding of architectural
knowledge. Their thoughts focused on two key elements of architecting systems,
i.e. the criticality of combining theoretical knowledge with practical experience and
Foreword vii
the importance of translating customer and business requirements into a vision that
teams can rally around and execute. What better way to capture the importance
of architectural knowledge as described here - capturing practical experience and
translating it into generalized architectural knowledge and using this knowledge in
the communication of a vision of the system that is to be built.
Although we have talked about architectural knowledge in general, there is one
area that needs to be addressed explicitly: architectural design decisions. The key
responsibility of software architects, when forced to describe it in one sentence,
is to take architectural design decisions. The activities of the architect include the
work to collect sufficient information leading up to the decision and, after decisions
have been made, to communicate these and explain them to the people affected by
them. However, in the end these activities are in service to the key responsibility for
architects: to take the most appropriate design decisions that optimally balance all
the technical and non-technical as well as short-term versus long-term forces. The
research presented in this book is focused on that understanding and the results are
presented from that perspective.
In conclusion, this book on architectural knowledge presents a very important
and extremely valuable contribution to the field of software engineering and archi-
tecture research and practice. The Griffin project that produced a significant set of
its chapters has more than proved its value and I am honored to congratulate the
authors and editors on their results. I hope that this book and the research projects
that led to it will see equally admirable successors in the future.
A software architecture manifests the major early design decisions. These early
decisions determine the system’s development, deployment and evolution. Thus,
making better architectural decisions is one of the large challenges in software
engineering.
Recently, there has been much discussion about how this challenge can be met
by better managing architectural knowledge. Inspired by the general field of knowl-
edge management and knowledge management approaches in software engineering,
much focus is being given to methods, techniques and approaches for managing
architectural knowledge.
This book presents a concise and accessible description of the subject of knowl-
edge management in the software architecture discipline. We explain the importance
of sound knowledge management practices for improving software architecture pro-
cesses and products, and make clear the role of knowledge management in software
architecture and software development processes.
The major objectives of this book are to:
• Create a concise, timely and approachable reference describing the theoretical
concepts and their practical applications for managing architectural knowledge
• Provide a body of knowledge of software architectural knowledge by describing
relevant and useful results from software architecture research and practice. Such
a body of knowledge should help promote best practices in software architecture
knowledge management
• Show the opportunities for improving the software architecture process by de-
signing, deploying, and institutionalizing various methods of and practices in
managing software architectural knowledge
Many have argued that the availability of architectural knowledge can greatly im-
prove the software development process. If not managed, critical design knowledge
ix
x Preface
This book is relevant for information technology and software engineering profes-
sionals, in particular software architects and software architecture researchers. For
the industrial audience, the book gives a broad and concise understanding of the
importance of knowledge management for improving software architecture process
and building capabilities in designing and evaluating better architectures for their
mission- and business-critical systems. For researchers, the book will help to under-
stand the applications of various knowledge management approaches in an industrial
setting and to identify research challenges and opportunities. This book will give
university faculty a concise reference to incorporate a specialized but emerging topic
of architecture knowledge management in their courses on software architecture.
Book Organization
The introductory chapter provides an overview of the main concepts software ar-
chitecture and knowledge management. The rest of the book is organized in three
parts:
Part I, “Architecture Knowledge Management”, explains what architecture
knowledge management is, how it relates to software architecture and to knowledge
management, and why it is important in modern software engineering. In particular,
Preface xi
this part provides an overview of what the software architecture community can
learn from the knowledge management community, and the other way round.
Part II, “Tools and Techniques for Managing Architectural knowledge”, shows
what type of support is offered to architecture knowledge management in the prac-
tice by means of software tools and technologies. The tools are presented according
to the typical cases they support. The technologies are discussed for their ability to
support on-line architecture knowledge management communities within and across
organizations.
Part III, “Experience with Architecture Knowledge Management”, focuses on
how theory in architecture knowledge management has been put into practice. Re-
ports from companies cover both technical, managerial, and organizational practices
and lessons learned.
Acknowledgements
We are most thankful to the many authors we invited to contribute a chapter within
the scope and contents prescribed by us. We are also thankful to Remco C. de Boer,
who converted most of the figures to a format we could work with.
xiii
xiv Contents
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
Contributors
xix
xx Contributors
Antony Tang
Faculty of ICT (H39) Swinburne University of Technology, John Street, Hawthorn,
VIC 3122, Australia, atang@swin.edu.au
Hans van Vliet
Department of Computer Science, VU University Amsterdam, De Boelelaan 1081a,
1081 HV Amsterdam, The Netherlands, hans@cs.vu.nl
Olaf Zimmermann
IBM Research GmbH, Zurich Research Laboratory, Säumerstrasse 4,
8803 Rüschlikon, Switzerland, olz@zurich.ibm.com
Chapter 1
Introduction to Software Architecture
and Knowledge Management
Abstract Designing the global structure of a software intensive system – the soft-
ware architecture – is a knowledge-intensive process. The knowledge produced
and consumed during this process is broad and complex, and needs to be shared
and reused among different stakeholders, and across different life-cycle phases.
Managing architectural knowledge is the topic of this book. This introductory chap-
ter discusses the two fields that form the underlying basis for the topic of this book:
software architecture, and knowledge management.
1.1 Introduction
The traditional view holds that the requirements fully determine the structure of a
system. Traditional design methods work that way. Their aim is to systematically
bridge the gap between the requirements and some blueprint of an operational sys-
tem in which all of the requirements are met. It is increasingly being recognized that
other forces influence the architecture (and, for that matter, the design) as well:
• Architecture is influenced by the development organisation. In shop automation
systems, for example, the hardware and software for reading bar codes might be
subcontracted to some organisation having special expertise in that area. There
will then be one or more system components with externally-dictated functiona-
lity and interfaces to deal with this part of the problem.
1 Software Architecture and Knowledge Management 3
The latter definition reflects, among others, the insight that there may be more
than one structure that is of interest. In house construction, we also use different
drawings: one for the electrical wiring, one for the water supply, etc. These draw-
ings reflect different structures which are all part of the same overall architecture.
We generally observe the architecture through one of these more specific views. The
same holds for the software architecture. This is further elaborated in Sect. 1.2.3.
In the software architecture, the global structure of the system has been decided
upon. This global structure captures the early, major design decisions. Whether a
design decision is major or not really can only be ascertained with hindsight, when
we try to change the system. Only then will it show which decisions were really
important. A priori, it is often not at all clear if and why one design decision is more
important than another [127].
4 T. Dingsøyr and H. van Vliet
Viewed this way, the architectural design process is about making the important
design decisions. Next, these important design decisions need to be documented.
Both the process of making architectural decisions and their documentation for later
use are discussed in Sect. 1.2.2.
Today’s work in software architecture is broad in scope. Almost any topic in
software engineering is being rethought in architectural terms. The discussion in this
chapter is focused on how to design, name, and document software architectures,
since this is where the relation to knowledge management is most relevant.
If software architecture is just global design, we would be selling old wine in new
bottles. The design phase then is simply split into two subphases: architectural,
global design, and detailed design. The methods used in these two subphases might
be different, but both essentially boil down to a decomposition process, taking a set
of requirements as their starting point. Both design phases then are inward-looking:
starting from a set of requirements, derive a system that meets those requirements.
A ‘proper’ software architecture phase however has an outward focus as well.
It includes negotiating and balancing of functional and quality requirements on
one hand, and possible solutions on the other hand. This means requirements
engineering and software architecture are not subsequent phases that are more or
less strictly separated, but instead they are heavily intertwined. An initial set of
functional and quality requirements is the starting point for developing an initial ar-
chitecture. This initial architecture results in a number of issues that require further
discussion with stakeholders. For instance, the envisaged solution may be too costly,
integration with already existing systems may be complex, maintenance may be an
issue because of a lack of staff with certain expertise, or performance requirements
cannot be met. These insights lead to further discussions with stakeholders, a re-
vised set of requirements, and a revised architecture. This iterative process continues
until an agreement is reached. Only then will detailed design and implementation
proceed.
Design is a problem-solving activity, and as such very much a matter of trial and
error. In the presentation of a mathematical proof, subsequent steps dovetail well
into each other and everything drops into place at the end. The actual discovery of
the proof went probably quite different. The same holds for the design of software.
We should not confuse the outcome of the design process with the process itself.
The outcome of the design process is a ‘rational reconstruction’ of that process.
During design, the system is decomposed into parts that each have a lower com-
plexity than the system as a whole, while the parts together solve the user’s problem.
1 Software Architecture and Knowledge Management 5
There really is no universal method for this. The design process is a creative one,
and the quality and expertise of the designers is a critical determinant for its success.
Yet, during the course of the years, a number of ideas and guidelines have emerged
which may serve us in designing software. These have resulted in a large number of
design methods.
In a similar vein, architectural design methods have been developed. A good ex-
ample hereof is Attribute Driven Design (ADD), described in [34]. The input to the
ADD process are the requirements, formulated as a set of prioritized quality attribute
scenarios. A quality attribute scenario is a scenario as known from requirements
engineering, but whose description explicitly captures quality information.
ADD is described as a topdown decomposition process. In each iteration, one or
a few components are selected for further decomposition. In the first iteration, there
is only one component, ‘the system’. From the set of quality attribute scenarios, an
important quality attribute is selected that will be handled in the current refinement
step. For instance, we may decide on a first decomposition of the system into three
layers: a presentation layer, a business logic layer, and a data layer. In a next ADD
step, we may decide to decompose the presentation layer, and select usability as
the quality attribute that drives this decomposition. A pattern is then selected that
satisfies the quality attribute. For instance, a data validation pattern [123] may be
applied to verify whether data items have been entered correctly. Finally, the set of
quality attribute scenarios is verified and refined, to prepare for the next iteration.
ADD gives little guidance for the precise order and kind of refinement steps. This
is very much a matter of the architect’s expertise. The same rather global support
is given by other architecture design methods, as discussed by [146]. The global
workflow common to these methods is depicted in Fig. 1.1. At the centre, the back-
log is depicted. The backlog contains a list of issues to be tackled, open problems,
ideas that still have to be investigated, and so on. The name derives from Scrum,
an agile method [292]. There, the backlog drives the project. In (architecture) de-
sign projects, the notion of a backlog is usually not represented explicitly. Yet, it
is always there, if only in the head of the architect. There are three inputs to the
context architecture
synthesis
backlog evaluation
evaluation
requirements
results
backlog: context, requirements, and evaluation results. The context refers to such
things as upfront ideas the architect may have, available assets that can be used, con-
straints set, and the like. Obviously, the requirements constitute another important
input. In each step of the architecting process, one or a few items from the back-
log are taken and used to transform the architecture developed so far. The result of
this transformation is evaluated (usually rather informally), and this evaluation may
in turn change the contents of the backlog. New items may be added (for instance
new problems), items may disappear or become obsolete, and the priorities of
backlog items may change.
The architecture design process is very much driven by the architect’s experience,
much more so than by any of the so-called software design methods. An experienced
architect knows how to handle a given issue, rather than that some method tells him
how to perform a design iteration. Design methods that are applied at the more de-
tailed levels of design usually give much more guidance than those for architecture
design methods. But this guidance is used by inexperienced designers mostly. Since
architecture design is usually done by experienced designers, the amount of guid-
ance given, and needed, is less. Attention then shifts to techniques for documenting
the result of the design process: the decisions, their rationale, and the resulting
design.
If architecture is the set of design decisions, then documenting the architecture boils
down to documenting the set of design decisions. This is usually not done, though.
We can usually get at the result of the design decisions, the solutions chosen, but not
at the reasoning behind them. Much of the rationale behind the solutions is usually
lost forever, or resides only in the head of the few people associated with them, if
they are still around.
So the reasoning behind a design decision is not explicitly captured. This is 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 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 costly if not
impossible.
There are different types of undocumented design decisions:
• The design decision is implicit: the architect is unaware of the decision, or it
concerns ‘of course’ knowledge. Examples include earlier experience, implicit
company policies to use certain approaches, standards, and the like.
• The design decision is explicit but undocumented: the architect takes a decision
for a very specific reason (e.g. the decision to use a certain user-interface policy
because of time constraints). The reasoning is not documented, and thus is likely
to vaporize over time.
1 Software Architecture and Knowledge Management 7
observer
3-tier
SOA
X-tier
this system has to interface with, software developers, and of course the architect
himself. These stakeholders all have a stake, but the stakes may differ. End users
will be interested to see that the system will provide them with the functional-
ity asked for. Software developers will be interested to know where to implement
1 Software Architecture and Knowledge Management 9
In the architecting process, a lot of knowledge is being used and produced. An im-
portant part of this architectural knowledge concerns the solution chosen, in terms
of components and connectors, and as documented in views. From the previous
discussion, it is clear that the decisions that lead to this solution, are an impor-
tant ingredient of architectural knowledge as well. We thus arrive at the following
definition: Architectural Knowledge = Architectural Design + Architectural Design
Decisions [192]. This definition is used in most chapters of this book. From the lit-
erature survey on this topic discussed in Chap. 2, it is clear that other definitions
of this notion exist. Chapter 5 takes an even broader perspective in that knowledge
about the architectural process is included in the definition as well. The documen-
tation of architectural knowledge (both the solution, in views, and the decisions) is
discussed more extensively in Chap. 3.
The Oxford Dictionary and Thesaurus [243] defines knowledge as: “awareness or
familiarity gained by experience (of a person, fact, or thing)”, “persons range of
information”, “specific information; facts or intelligence about something”, or “a
theoretical or practical understanding of a subject”. In the philosophic literature,
knowledge has been viewed as “justified true belief”. Nonaka and Takeuchi [234]
and many others refer to two main types of knowledge, tacit and explicit knowledge
[255]. Definitions of these terms vary but many define tacit knowledge as knowl-
edge that a human is not able to express explicitly, but is guiding the behaviour of
the human. For example how to ride a bike is something that is difficult to express,
which you have to learn by trial and error. Explicit knowledge is knowledge that
we can represent, for example in reports, books, talks, or other formal or informal
1 Software Architecture and Knowledge Management 11
Several have suggested a hybrid strategy, which provides a balance between the
codified and personalized strategies [7, 92, 328]. For knowledge that is not subject
to frequent changes, a codification strategy is useful, as it can be reused without too
much effort to update it. On the other hand, much architectural knowledge is not
stable. For such knowledge, a personalization strategy may be appropriate, enabling
stakeholders to find “who knows what”.
Earl [107] has further classified work in knowledge management into schools
(see Table 1.3). The schools are broadly categorized as “technocratic”, “economic”
and “behavioural”. The technocratic schools are (1) the systems school, which
focuses on technology for knowledge sharing, using knowledge repositories; (2)
the cartographic school, which focuses on knowledge maps and creating knowl-
edge directories; and (3) the engineering school, which focuses on processes and
knowledge flows in organisations. The economic school focuses on how knowledge
assets relates to income in organisations. The behavioural school consists of three
subschools (1) the organisational school, which focuses on networks for sharing
knowledge; (2) the spatial school, which focuses on how office space can be de-
signed to promote knowledge sharing; and (3) the strategic school, which focuses
on how knowledge can be seen as the essence of a company’s strategy.
Many have been critical to the concept of knowledge management, and in partic-
ular to the use of information technology in knowledge management. Hislop [145]
questions the distinction between tacit and explicit knowledge. If explicit knowl-
edge cannot be managed independently, this means that information technology
will have a smaller part in knowledge management. This critique is also supported
by McDermot [223], who argues that “if people working in a group don’t already
share knowledge, don’t already have plenty of contact, don’t already understand
what insights and information will be useful to each other, information technology
is not likely to create it”. In addition, Swan et al. [309] criticize the knowledge man-
agement field for being too occupied with tools and techniques. They claim that
researchers tend to overstate the codifiability of knowledge and to overemphasize
the utility of IT to give organisational performance improvement. They also warn
that “codification of tacit knowledge into formal systems may generate its own
pathology: the informal and locally situated practices that allow the firm to cope
with uncertainty may become rigidified by the system”. The occupation with tools
is further discussed in the works of Huysman and de Wit [150], who characterize
1 Software Architecture and Knowledge Management 13
knowledge can be converted from tacit to tacit, from tacit to explicit, or from explicit
to either tacit or explicit knowledge through the following mechanisms:
• Socialisation means to transfer tacit knowledge to another person through obser-
vation, imitation and practice, what has been referred to as “on the job” training.
Craftsmanship has usually been learned in this way, where oral communication
is either not used or plays a minor part.
• Externalisation means to go from tacit knowledge to explicit. Explicit knowledge
can “take the shapes of metaphors, analogies, concepts, hypotheses or models”
[234].
• Combination is to go from explicit to explicit knowledge, that is, to combine
and systematize knowledge from different sources such as documents, meetings,
telephone conferences or bulletin boards. Systematizing this kind of explicit
knowledge is to reconfigure it by sorting, adding, combining or categorizing the
knowledge.
• Combination means to go from explicit to explicit knowledge, by taking knowl-
edge from different sources such as documents, meetings, telephone conferences,
or bulletin boards and aggregating and systematizing it.
• Internalisation means to take externalised knowledge and make it into indi-
vidual tacit knowledge in the form of mental models or technical know-how.
“Documents and manuals facilitate the transfer of explicit knowledge to other
people, thereby helping them experience the experiences of others indirectly (i.e.
‘re-experience’ them)” [234].
According to Nonaka and Takeuchi, knowledge passes through different modes of
conversion, which makes the knowledge more refined and spreads it across different
layers in an organisation.
In the much-cited book on learning organisations, The Fifth Discipline [294],
we find further characteristics of learning organisations: the ability of “systems
thinking” – to see more than just parts of a system. This often means to involve
people in an organisation to develop a “shared vision”, some common grounds that
make the work meaningful, and also serve to explain aspects that you yourself do
not have hands-on experience in. Another way of improving communication in an
organisation is to work on “mental models” that support action, “personal mastery”;
that people make use of their creativity and abilities. And finally “group learning” –
to enhance dialogue and openness in the organisation.
Companies developing information systems have failed to learn effective means for
problem solving to such an extent that they have learned to fail, according to an
article by Lyytinen and Robey [218]. One suggested mean to overcome this problem
is an increased focus on knowledge management.
In software engineering, there has been much discussion about how to manage
knowledge, or foster “learning software organisations” [22, 272]. In this context,
1 Software Architecture and Knowledge Management 15
1.4 Summary
Acknowledgements This research has been partially sponsored by the Dutch Joint Academic
and Commercial Quality Research and Development (Jacquard) program on Software Engineer-
ing Research via contract 638.001.406 GRIFFIN: a GRId For inFormatIoN about architectural
knowledge.
Chapter 2
Knowledge Management in Software
Architecture: State of the Art
2.1 Introduction
Over the past few years, the concept of ‘architectural knowledge’ has become more
prominent in literature and attempts are being made to arrive at a proper defini-
tion for this concept. In this chapter we present the state-of-the-art in architecture
knowledge management. To this end, we look at what precisely entails architectural
knowledge and what predominant philosophies exist for managing such knowledge.
In answer to the question ‘what is architectural knowledge?’, in Sect. 2.2 we de-
scribe four main views on architectural knowledge that emerged from a systematic
literature review, and explore their commonalities and differences. Using two or-
thogonal architectural knowledge dimensions, we define four categories of archi-
tectural knowledge. The potential knowledge conversions between these categories,
which we describe in Sect. 2.3, together form a descriptive framework with which
different architecture knowledge management philosophies can be typified. This
framework shows that the differences between the four views on architectural
knowledge are very much related to the different philosophies they are based on.
Although there exist several single-philosophy approaches that have both their
origin and scope on only one of the main philosophies, in recent years a shift towards
more overarching approaches can be observed. Four of such trends for architecture
knowledge management are discussed in Sect. 2.4.
In the mid-nineties, patterns became popular as a way to capture and reuse design
knowledge. People were disappointed by the lack of ability of (object-oriented)
frameworks to capture the knowledge necessary to know when and how to apply
those frameworks. Inspired by the work of Christopher Alexander on cataloging
patterns used in civil architecture, software engineers started to document proven
solutions to recurring problems.
2 Knowledge Management in Software Architecture 23
Initially, patterns focused mainly on object oriented design and reuse; the canon-
ical work in this area is the book by the ‘Gang of Four’ [130]. The aim was to let
those design patterns capture expert and design knowledge, necessary to know when
and how to reuse design and code. Soon, however, the patterns community extended
its horizon beyond object-oriented design. Nowadays, patterns exist in many areas,
including patterns for analysis (e.g., [125]), architectural design (e.g., [128, 64]),
and the development process (e.g., [82, 81]).
Patterns in software development serve two purposes. Patterns are reusable so-
lutions that can be applied to recurring problems. They also form a vocabulary that
provides a common frame of reference, which eases sharing architectural knowl-
edge between developers. Although patterns are usually documented according to
certain templates, there is not a standard template used for all patterns. The way in
which patterns are codified make them very suitable for human consumption, but
less so for automated tools.
are quite often not able to specify innovative requirements in the required detail
without having some knowledge about the intended solution’ [254]. Hence, in or-
der to specify sufficiently detailed requirements, one needs knowledge about about
the (possible) solutions, which means that requirements and architecture need to
be co-developed. This is a subtle, but important difference: the transition-view is
a bit older and denotes the believe that problem is followed by solution, whereas
the more recent co-development view emphasizes that both need to be considered
concurrently.
The relation between requirements and architecture has been a popular subject
of discourse since the early 2000s. Although the related STRAW workshop series
is no longer organized, many researchers still focus on bridging the gap between
requirements and architecture. A 2006 survey by Galster et al. [129] identified and
classified the methodologies in this area, including Jackson’s problem frames (later
extended to ‘architectural frames’ [262]), goal-oriented requirements engineering,
and the twin peaks model for weaving architecture and requirements [235].
For many years, software architecture has mainly been regarded as the high-level
structure of components and connectors. Many architectural description frame-
works, such as the IEEE-1471 standard [155] therefore have a particular focus on
documenting the end result of the architecting process.
Nowadays, the view on architecture seems to be shifting from the end result
to the rationale behind that end result. More and more researchers agree that one
should consider not only the resulting architecture itself, but also the design deci-
sions and related knowledge that represent the reasoning behind this result. All such
architectural knowledge needs to be managed to guide system evolution and prevent
knowledge vaporization [48].
The treatment of design decisions as first-class entities enables the consideration
of a wide range of concerns and issues, including pure technical issues, but also
business, political and social ones. Architects need to balance all these concerns in
their decision making. To justify the architectural design to other stakeholders, com-
munication of the architectural design decisions plays a key role. In that sense, the
decision-centric view is very much related to the (broader) field of design rationale.
If there’s anything clear from the four views on architectural knowledge, it must be
that there is not a single encompassing definition of what this knowledge entails.
A 2008 survey of definitions of architectural knowledge revealed that most studies
circumstantially define architectural knowledge. Those studies that do give a di-
rect definition are of recent date, and all of them have roots in the decision-centric
view [43].
2 Knowledge Management in Software Architecture 25
19.25
Tacit
- experience - goals
- expertise - constraints
- skills - assumptions
Ap plication-generi c
- concerns
Application-specific
- context
-patterns,styles,tactics - requirements
-reference architectures - design decisions
- ADLs - design rationale
- standards - views
- models
Explicit
Fig. 2.1 Architectural knowledge categories
Knowledge from each of the four architectural knowledge categories can be con-
verted to knowledge in another (or even in the same) category. This conversion
lies at the basis of different architecture knowledge management philosophies.
For some, architecture knowledge management may be mainly intended to sup-
port the transition from application-generic to application-specific knowledge. For
others, the interplay between tacit and explicit knowledge may be the essence of
architecture knowledge management.
Nonaka and Takeuchi defined four modes of conversion between tacit and ex-
plicit knowledge: socialization (tacit to tacit), externalisation (tacit to explicit), inter-
nalisation (explicit to tacit), and combination (explicit to explicit; cf. Chap. 1). Based
on the distinction between application-generic and application-specific knowledge,
we can define four additional modes of conversion:
• Utilization is the conversion from application-generic to application-specific
knowledge. It is a common operation in the architecting process where back-
ground knowledge and experience are applied to the problem at hand.
• Abstraction is the conversion from application-specific to application-generic
knowledge. In this conversion, architectural knowledge is brought to a higher
level of abstraction so that it has value beyond the original application domain.
• Refinement is the conversion from application-specific to application-specific
knowledge. Here, the architectural knowledge for a particular application is
analyzed and further refined and related.
• Maturement is the conversion from application-generic to application-generic
knowledge. It signifies the development of the individual architect as well as the
architecture field as a whole; a kind of learning where new generic knowledge is
derived and becomes available for application in subsequent design problems.
In total, there are 16 architectural knowledge conversions. Each conversion is
formed by pairing one of the four conversions between tacit and explicit knowledge
with one of the four conversions between application-generic and application-
specific knowledge. Together, the 16 conversions form a descriptive framework with
which different architecture knowledge management philosophies can be typified.
We saw earlier that the four views on architectural knowledge can all be related
to decision making. At the same time, we saw that there are also obvious differ-
ences between those views. Those differences are very much related to the different
architecture knowledge management philosophies they are based on.
28 R. Farenhorst and R.C. de Boer
The pattern-centric view, for example, is mainly geared towards the development
of a shared vocabulary of reusable, abstract solutions. As such, the development
of a shared tacit mental model is a major goal. This goal is achieved by sharing
application-generic patterns that are mined from application-specific solutions. A
second goal is the development of libraries of reusable solutions, which is made
possible by maturement of documented patterns by cataloging them. The knowl-
edge management philosophy in this view is primarily based on the following
architectural knowledge conversions, which are also visualized in Fig. 2.2:
(a) Abstraction and combination. The most obvious example of this conversion
is the process of pattern mining. Patterns are inherently abstractions. They
are mined from existing architectural solutions and described in a clear and
structured way to improve the reusability.
2 Knowledge Management in Software Architecture 29
(b) Utilization and combination. One of the ways in which patterns can be reused
in new designs is by looking them up in books, catalogs, or other repositories.
Architects who wish to design a system comprised of several independent pro-
grams that work cooperatively on a common data structure could look up one of
the many books available on architectural patterns (e.g., [64]) to find out that the
‘blackboard’ pattern is just what they need. Grady Booch works on the creation
of a Handbook of software architecture, of which the primary goal is “to fill this
void in software engineering by codifying the architecture of a large collection
of interesting software-intensive systems, presenting them in a manner that ex-
poses their essential patterns and that permits comparisons across domains and
architectural styles” [47].
(c) Maturement and combination. Documented patterns may be organized in pat-
tern catalogs. These catalogs present a collection of relatively independent so-
lutions to common design problems. As more experience is gained using these
patterns, developers and authors will increasingly integrate groups of related pat-
terns to form so-called pattern languages [276]. Although each pattern has its
merits in isolation, the strength of a pattern language is that it integrates solutions
to particular problems in important technical areas. An example is provided by
Schmidt and Buschmann in the context of development of concurrent networked
applications [275]. Each design problem in this domain – including issues related
to connection management, event handling, and service access – must be resolved
coherently and consistently and this is where pattern languages are particularly
helpful.
(d) Maturement and internalisation. Experienced architects know numerous pat-
terns by heart. Such architects have no trouble discussing designs in terms of
proxies, blackboard architectures, or three-tier CORBA-based client-server ar-
chitectures. Their exposure to and experience with those patterns has led to
internalised and matured pattern knowledge. The consequent shared, tacit vo-
cabulary can be employed at will, without the need to look up individual patterns
in order to understand what the other party means.
(e) Utilization and externalisation. When an architect has internalized several pat-
terns, the use of those patterns as a means for communication or design is a
combination of utilization (of the pattern) and externalisation (of the knowledge
about the pattern and its existence).
While the pattern-centric view aims to support the development of tacitly shared
application-generic architectural knowledge, the dynamism-centric view is much
more focused on explicit application-specific architectural knowledge. Although
some application-generic knowledge is utilized, the actual reasoning and reconfig-
uration uses application-specific knowledge. This architecture knowledge manage-
ment philosophy is therefore primarily based on two conversions:
(f) Refinement and combination. Corresponds to the formal reasoning over codi-
fied architectural solutions in terms of models that are consumable by non-human
agents. According to Bradbury et al., in a self-management system all dy-
namic architectural changes have four steps (initiation of change, selection of
30 R. Farenhorst and R.C. de Boer
• Pattern languages and catalogs. To allow for utilization and combination of ar-
chitectural knowledge architectural knowledge needs to be categorized in pattern
languages or catalogs. From these sources it can be quickly used in specific
applications. In addition it enables learning and reasoning.
• Architecture description languages. ADLs enable utilization and combination of
architectural knowledge in a formal way. Various types of ADLs exist, which
range in level of formality and purpose, the latter ranging from aiding under-
standing of software systems to enabling powerful analyses.
• Design decision codification. To support refinement and combination of archi-
tectural knowledge much effort has been put in methods, tools, and techniques
to codify architectural knowledge concepts. Design decisions are central to these
methods and tools, but also related concepts such as rationale and alternative
solutions are captured.
We saw earlier how the concept of ‘decisions’ seem to be an umbrella concept for all
views on architectural knowledge. We can now explain this better: ‘mature’ archi-
tecture knowledge management unifies conversions from all architecture knowledge
management philosophies, and is not merely limited to just one philosophy. This
concept, which we call ‘decision-in-the-large’, is related more to the architecting
process than to pure rationale management (which we could call ‘decision-in-the-
narrow’), even though codifying rationale and preventing knowledge vaporization
has been one of the prime drivers for the decision-centric philosophy. A focus on
‘decision-in-the-large’ seems driven more by architectural knowledge use cases than
by anything else, often under the concept ‘knowledge sharing’. A classification
of such use cases is presented by Lago et al. [195], which distinguishes between
architecting, sharing, assessing, and learning.
Obviously, some ‘decision-in-the-large’ approaches evolved from ‘decision-in-
the-narrow’ approaches. But the former starts to play a more prominent role in the
other philosophies, and hence the other views, too. In recent years, a shift towards
more overarching state-of-the-art approaches can be observed. Four main trends for
architecture knowledge management can be identified that mostly focus on specific
use cases for architecture knowledge management. These trends will be elaborated
upon in Sections. 2.4.1–2.4.4.
This trend focuses on specific architecting use cases related to intelligent and/or
real-time support for architects. One of the state-of-the-art approaches focuses on
providing architects or reviewers with a reading guide when looking for specific ar-
chitectural knowledge [45]. To save time, architects use this intelligent discovery
2 Knowledge Management in Software Architecture 35
method to quickly get to the important knowledge while skipping less relevant
documentation.
Other intelligent support approaches focus on modeling architectural knowledge
concepts in such a way that learning and reasoning is stimulated. One exam-
ple is provided by Kruchten, who proposes an ontology of architectural design
decisions [190]. The templates he proposes allow acquiring insights in not only im-
portant properties of design decisions (e.g. the status), but also in the relationships
between design decisions (e.g. ‘enables’ or ‘conflicts with’). When proper visualiza-
tion techniques are used this information is very useful for architects in the decision
making process, for example to model the backlog [146].
2.5 Justification
2.6 Summary
management and elaborated upon the architectural knowledge conversions that are
central for these views. The conversions were further illustrated by examples of
related work.
Based on the discussion of the main philosophies we identified four single-
philosophy approaches for architecture knowledge management: rationale manage-
ment systems, pattern languages and catalogs, architectural description languages,
and design decision codification. All these approaches have both their origin in
and scope on only one of the main philosophies. In recent years, however, a shift
towards more overarching approaches can be observed. Four main trends for archi-
tecture knowledge management can be identified that mostly focus on specific use
cases for architecture knowledge management (e.g. sharing, learning, traceability).
This state of the art in architecture knowledge management indicates a shift from
‘decision-in-the-narrow’ to ‘decision-in-the-large’.
We expect the interest in architectural knowledge to keep increasing over the
coming years. Although it is unlikely that we will see a unified view on architectural
knowledge anytime soon, the observed trends in architecture knowledge manage-
ment indicate that future developments on managing architectural knowledge may
further align the different views. We expect the trend towards ‘decision-in-the-large’
to continue, since both researchers and practitioners aim for a better understanding
of what architects do, what their knowledge needs are, and how this architectural
knowledge can best be managed in the architecting process.
Acknowledgements This research has been partially sponsored by the Dutch Joint Academic
and Commercial Quality Research and Development (Jacquard) program on Software Engineer-
ing Research via contract 638.001.406 GRIFFIN: a GRId For inFormatIoN about architectural
knowledge.
Chapter 3
Documentation of Software Architecture
from a Knowledge Management Perspective –
Design Representation
Philippe Kruchten
3.1 Introduction
Philippe Kruchten
University of British Columbia, Vancouver, Canada, e-mail: pbk@ece.ubc.ca
and, to a somewhat lesser extent, we will also focus on the lower left quadrant: the
application-generic explicit knowledge.
Architecture representation implies the use of models, architectural models. But
what is a model? M is a model of S if M can be used to answer questions about S,
where S is the system under consideration.
In the 1970s and through most of 1980s, because the concept of software archi-
tecture was not very well delineated from that of software design or “high-level
design”, there was very little agreement on how to document software architecture.
Various mixes of “boxes and arrows” diagrams were used as models, far too often
with not much precise semantics behind the boxes, and even less behind the arrows.
Some of this remains today, and constitutes what I call the “PowerPoint” level of
software architecture documentation. It is still very valuable in bridging the gaps
between various groups of stakeholders (the various people the architect has to deal
with), such as marketing, sponsors, quality, process, approval, certification, etc.
3.2.2 Views
Still today, modern software architecture practices rely on the principles that Perry
and Wolf enounced in the late 1980s in their pretty and simple formula: Architec-
ture = {Elements, Form, Rationale} [250]. The elements are the main constituents
3 Documentation of Software Architecture 41
The period between 1996 and 2006 brought complementary techniques in the form
of architectural methods, many of them derived from well established industry
practices. Methods like RUP (at Rational, then IBM) [189, 152], BAPO/CAFR (at
Philips) [237], S4V (at Siemens) [147, 300], ASC (at Nokia), ATAM, SAAM and
ADD (at the SEI) [175], among others, are now mature design and evaluation prac-
tices to analyze, synthesize, and valuate modern software architectures. In some
cases, the methods are backed by architectural description languages, assessment
methods, and stakeholder-focused, decision-making procedures.
Since many of the design methods were developed independently [146], they ex-
hibit certain similarities and differences motivated by the different nature, purpose,
application domain, or the size of the organization for which they were developed.
In essence, they cover essential phases of the architecting activity but are performed
in different ways. Common to some of these methods is the use of design decisions
that are evaluated during the construction of the architecture. These decisions are
elicited by groups of stakeholders, under the guide of architects, but the ultimate de-
cision makers are (a small group – often a single person) architects. Unfortunately,
design decisions and their rationale were still not considered as first-class entities
because they lack an explicit representation. As a result, software architects cannot
revisit or communicate the decisions made, which in most cases vaporize forever.
42 P. Kruchten
Rationale was present in the 1992 formula of Perry and Wolf, but in reality, it was
rarely captured explicitly in a form that would allow it to be revisited. This remains
a prevalent issue.
Rus and Lindvall wrote in 2002 that “the major problem with intellectual capital
is that it has legs and walks home every day” [272]. Current software organizations
suffer the loss of this intellectual capital when experts leave. The same happens
in software architecture when the reasoning required for understating a particu-
lar system is unavailable and has not been explicitly documented. In 2004, Jan
Bosch stated that “we do not view a software architecture as a set of components
and connectors, but rather as the composition of a set of architectural design deci-
sions” [48, 161]. The lack of first-class representation of design rationale in current
architecture view models brought the need to include decisions as first-class citizens
that should be embodied within the traditional architecture documentation.
There are several benefits of using design rationales in architecture as a mean to
explain why a particular design choice is made or to know which design alterna-
tives have been evaluated before the right or the optimal design choices are made.
Benefits can be achieved in the medium and long term because documenting design
rationale prevents the need for architecture recovery processes, which are mostly
used to retrieve the decisions when design, documentation, or even the creators of
the architecture are no longer available. In other cases, the natural evolution of a soft-
ware system forces previous design decisions to be replaced by new ones. Hence,
maintaining and managing this architectural knowledge requires a continuous atten-
tion to keep the changes in the code and the design aligned with the decisions, and
to use these to bridge the software architecture gap.
It is in this new context that Perry and Wolf’s old ideas [250] become relevant for
upgrading the concept of software architecture by explicitly adding the design deci-
sions that motivate the creation of software designs. Together with design patterns,
reference architecture, frameworks, etc., design decisions are a subset of the overall
architectural knowledge (AK) that is produced during the development of architec-
ture. Most of the tacit knowledge that remains hidden in the mind of the architects
should be made explicit and transferable into a useful form for later use, easing the
execution of distributed and collective decision-making processes.
The formula, Architectural Knowledge = Architectural Design + Architectural
Design Decisions, recently proposed by Kruchten, Lago and van Vliet [192], mod-
ernizes Perry and Wolf’s [250] idea and considers design decisions as part of the
architecture. We’ll use this formula: AK = AD + ADD, to structure the rest of this
chapter.
3 Documentation of Software Architecture 43
For many years, architectural knowledge was represented in very ad hoc fashion:
boxes and arrows of unspecified or fuzzy semantic value; the PowerPoint level
of architectural description. The challenge was to describe in a truly multidimen-
sional reality in a 2-dimensional space. Because the model, M, was poor, the set
of questions that could be answered regarding the system it represented remained
limited.
In the early 1990s, several groups around the world realized that the architecture
of a large and complex software-intensive system was made of multiple entangled
structures, and that the poor attempts of representing architecture using a single type
of flat blueprint was inherently doomed to fail. Different parties (or stakeholders)
are concerned by different aspects of an architecture. Each of these aspects is a
viewpoint, and can be addressed by a certain kind of architecture representation,
with a notation and language of its own. The views, however, do not correspond to a
decomposition of the architecture in parts, but are different projections, abstractions
or simplifications of a more complex reality.
Figure 3.1 is an example of a set of five views (from [152] and [188]). Very
similar sets of views appeared at Siemens [300] and elsewhere.
This concept of multiple views is not new, and Paul Clements traced it to a
1994 paper by David Parnas: “On a buzzword: hierarchical structure” [245]. An
architectural view is a partial representation of a system, from the perspective of a
End-user Programmers
Functionality Software management
Implementation
Logical View View
Process Deployment
View View
Over the last 20 years computer scientists in academia around the world have tried
to create architecture description languages (ADLs) to capture, represent, and rea-
son about essential elements of the conceptual architecture of a software-intensive
system. This follows the long tradition of programming languages: no computer sci-
entist would be “complete” who has not created his or her own language, and the
compiler that goes with it.
What ADLs have in common is that they are able to denote essential elements
of an architecture – components, package, as well as the relationship between these
components: connectors, interfaces, and to a certain extent some of the character-
istics and behaviour of these components and connectors – so that some form of
analysis, verification, and reasoning can occur, to derive or assess completeness,
consistency, ambiguity, performance, and other qualities. ADLs often offer both a
textual and a graphical notation, the intention being to have them readable by both
humans and machines.
ADLs have evolved from Rapide at Stanford, to ACME (CMU), Wright (CMU),
C2 (UCI), Darwin (Imperial College), to name only a few. Koala – developed by
Philips and based on Darwin – is the only one that has had some industry pene-
tration, and is used primarily to configure product-line instances in the consumer
electronics domain. Also AADL was developed by the SAE based on MetaH for the
automotive industry.
Finally, there has been some heated debate on the question of whether or not the
unified modeling language (UML) is an ADL. While not limited to architecture,
UML 2.0 certainly has all the elements to describe architecture. It is the notation
used to represent the 4 + 1 views above [152].
As an ADL is a notation to express an architectural model, encompassing the
key design decisions that bind the system, it should be an important tool for the
capture and representation of architectural knowledge. Unfortunately, so far, except
for UML, ADLs’ use has been very limited and mostly confined to academic labs.
3 Documentation of Software Architecture 45
In his 2003 paper, Jan Bosch [48] stressed the importance of design decisions as
“a first class citizen”, but did not describe in detail what they consist of. Tyree and
Ackerman describe the structure of an architectural design decision (see Table 1.1 in
Chap. 1) [325]. Kruchten in [190], then with Lago and van Vliet in [192], introduce
a more detailed template for documenting design decisions, particularly stressing
relationships between design decisions and between design decisions and other ar-
tifacts. Tang [314], Dueñas and Capilla [66, 103] have variations, and the SHARK
workshop in 2006 attempted to reconcile all these views.
Here is an example of attributes of an architectural design decision, from [190]
and [192]:
• Epitome (or the Decision itself). This is a short textual statement of the design
decision, a few words or a one liner. This text serves to summarize the decisions,
to list them, to label them in diagrams, etc.
• Rationale. This is a textual explanation of the “why” of the decision, its justi-
fication. Care should be taken not to simply paraphrase or repeat information
captured in other attributes, but to add value. If the rationale is expressed in a
complete external document, for example, a tradeoff analysis, then the rationale
points to this document.
• Scope. Some decisions may have limited scope, in time, in the organizations, or in
the design and implementation (see the overrides relationship below). By default,
(if not documented) the decision is universal. Scope might delimit the part of the
system, a life cycle time frame, or a part of the organization to which the decision
applies.
3 Documentation of Software Architecture 47
Rejected 1 Challenged 2
Obsolete 0
• State. Like problem reports or code, design decisions evolve in a manner that may
be described by a state machine (see Fig. 3.2):
– Idea. Just an idea, captured so it is not lost, when brainstorming, looking at
other systems etc.; it cannot constrain other decisions other than ideas.
– Tentative. Allows running “what if” scenarios, when playing with ideas.
– Decided. Current position of the architect or architecture team; must be con-
sistent with other related decisions.
– Approved. Approved by a review, or a board (for low-ceremony organizations,
not significantly different than decided).
– Challenged. A previously approved or decided decision that is now in jeopardy;
it may go back to approved without ceremony, but can also be demoted to
tentative or rejected status.
– Rejected. A decision that does not hold in the current system; but we keep them
around as part of the system rationale (see subsumes below).
– Obsolesced. Similar to rejected, but the decision was not explicitly rejected
(in favour of another one, for example), but simply became “moot,” irrelevant,
e.g., as a result of some higher-level restructuring.
• Author, Time-stamp, History. The person who made the decision and when.
Ideally we collect the history of changes to a design decision. State changes
are important, but so are changes in formulation and scope, especially with
incremental architectural reviews.
• Categories. A design decision may belong to one or more categories. The list of
categories is open ended. Categories are useful for queries and for creating and
exploring sets of design decisions that are associated with specific concerns or
quality attributes.
• Cost. Some design decisions have an associated cost, so it is useful to reason
about alternatives.
48 P. Kruchten
• Relationship with External Artifacts. Includes “traces from,” “traces to,” and
“does not comply with.” Design decisions trace to technical artifacts upstream:
requirements and defects, and artifacts downstream: design and implementation
elements. They also trace to management artifacts, such as risks and plans.
These relationships are almost as important as the decisions themselves. It is through
these relationships that decisions can be put to practical use: understanding part of
the rationale – the reason for certain decisions, for the choices made from among
several alternatives, for the incompatibilities between choices – impacts the analysis
of “what is affected if we were to change X, or Z?”
Architectural design decisions do not all play the same role in the architecting pro-
cess. Some are tightly coupled to the design itself, and can be traced directly to some
element (e.g., a class, a process, a package or subsystem, an interface) in the system
under development; other decisions are general properties or constraints that we im-
pose to the system, that sets of elements must satisfy, and, finally, some are linked
to the general political, sociological, and cultural environments of the development
or deployment.
An existence decision states that some element/artifact will positively show up, i.e.,
will exist in the system’s design or implementation.
There are structural decisions and behavioral decisions. Structural decisions lead
to the creation of subsystems, layers, partitions, and components in some view of
the architecture. Behavioral decisions are more related to how the elements inter-
act together to provide functionality or to satisfy some nonfunctional requirement
(quality attribute) or connector. Examples:
Dextrous Robot (DR) shall have a Laser Camera System.
DR shall use the Electromagnetic (EM) communication system to communicate with Ground-
Control.
In themselves, existence decisions are not that important to capture since they are
the most visible element in the system’s design or implementation, and the rationale
can be easily captured in the documentation of the corresponding artifact or element.
But we must capture them to be able to relate them to other, more subtle decisions,
in particular to alternatives (see Fig. 2.1).
50 P. Kruchten
This is the opposite of an existence decision, stating that some element will not
appear in the design or implementation. In a way, they are a subclass of existential
decisions.
It is important to document bans precisely because such decisions are lacking
any “hooks” in traditional architecture documentation. They are not traceable to any
existing artifact. Ban decisions are often made as possible alternatives are gradually
eliminated.
These are the decisions that do not relate directly to the design elements or their
qualities, but are driven more by the business environment (financial), and affect
the development process (methodological), the people (education and training), the
organization, and, to a large extent, the choices of technologies and tools. Executive
decisions usually frame or constrain existence and property decisions. Examples:
• Process decisions:
All changes in subsystem exported interfaces (APIs) must be approved by the CCB
(Change Control Board) and the architecture team.
• Technology decisions:
The system is developed using J2EE.
The system is developed in Java.
• Tool decisions:
The system is developed using the System Architect Workbench.
Software/system architecture encompasses far more than just views and quality at-
tributes à la IEEE std 1471-2000 [155]. There are all the political, personal, cultural,
3 Documentation of Software Architecture 51
financial, and technological aspects that impose huge constraints, and all the associ-
ated decisions are often never captured or they only appear in documents not usually
associated with software architecture.
Fig. 3.5 Decision graph from Spar Aerospace Dexterous Robot (fragment) [190]
If views and viewpoints are a good practice to document the design, and if a set of
design decisions offers a good complement in capturing (externalizing) additional
architectural knowledge, then there might be a way to combine the two approaches
for more cohesiveness and homogeneity. This is what Dueñas and Capilla [103]
have done in proposing a decision view of software architecture in which decisions
are entangled with design for each architectural view.
This new perspective extends the traditional views that are described in the IEEE
Std. 1471 [155] by superimposing the design rationale that underlies and motivates
the selection of concrete design options. Figure 3.9 depicts a graphical sketch of the
“decision view” [103, 191] in which design decisions are attached in the “4 + 1”
view model [188].
54 P. Kruchten
ns
Decisio
Design
ns
Decisio
Design Implementation
View
Logical View
Deeccis
D ionnss
isio
D e s i
iggnn
Use Case
View ns
e s ig n Decisio
D
c is io n s
De Deployment
Design View
Processs
View
Rationale, that is, an explicit articulation of the reasoning, the motivation of the
choice implied by the decision, has been present in the mind of software architect
all along; it was explicit in the formula of Perry and Wolf in 1992 [250]. The ra-
tionale can range from a simple pointer to a requirement to an elaborate trade-off
analysis between alternative solutions. Often, it also has to show that various con-
straints or previous decisions are taken into account. But, in practice the effort to
develop tools to capture and manage design rationale has not been very successful,
as Jintae Lee eloquently described [200]. The primary reason is that capturing ratio-
nale, except for a handful of important decisions; it is too tedious and does not bring
any immediate benefits to the person doing the capture. The benefit is largely down
the line, weeks or months later and for stakeholders others than the decision maker.
We found that much of the rationale is actually captured by the relationship
between design decisions (DDs) and other elements, in particular by tracing DDs
to requirements (upstream), to other decisions (see above), and to elements in the
design and its implementation (downstream).
3.6 Metaphors
There is one constant, though, throughout the whole (short) history of software ar-
chitecture, and regardless of the formality of the approach: it is the systematic use
of metaphors to describe architectural elements an architectures. Metaphors give
meaning to form and help us ground our conceptual systems. A metaphor is a form
of language that compares seemingly unrelated subjects: a rhetorical trope that de-
scribes a first subject as being equal or very similar to a second object in some way.
A metaphor implies a source domain: the domain from which we draw metaphorical
expressions, and a target domain, which is the conceptual domain we try to under-
stand or to describe. The metaphor operates a cognitive transfer from the source to
the target; it says in essence: “<the target> is <the source>.”
In Metaphors we live by [197], Lakoff and Johnson describe metaphors as “a
matter of imaginative rationality.” They permit “an understanding of one kind of
experience in terms of another, creating coherence by virtue of imposing gestalts
that are structured by natural dimensions of experience. New metaphors are capable
of creating new understanding and, therefore, new realities.” (p. 235)
Metaphors are everywhere in software architecture. We use so-called ontologi-
cal metaphors to name things: “clients and servers”, “layers”, “pipes and filters”,
“department stores and shopping cart,” etc. We organize those using structural
metaphors that are often visual and spatial: “on top of”, “parallel to”, “aligned with”,
“foreground, background”, but include richer ones such as “network”, “web”, or
“hierarchy” [245]. We use a wide variety of containers: “packages”, “repositories”,
“libraries”, “volumes”, etc. In reality, in the target domain, i.e., in the memory of
56 P. Kruchten
a computer, we would not find any up, down, aligned, packaged, etc. everything is
pretty scattered around; just look at a “core dump” file.
A mapping is the systematic set of correspondence that exists between con-
stituent elements of the source and the target domains. It allows some limited
reasoning in the target domain by analogy and inference. In our case, the tar-
get domain – software architecture – is rather abstract, and we try to draw from
source domains that are much more concrete. Then we use inference patterns from
the source conceptual domain to reason about the target one. “Ay, there’s the rub,
for” we may abuse the inference or have a faulty inference. This leads to flawed
metaphors, where the analogy “breaks” and the meaning in the target domain (in
software) is confusing at best. It is also very common when we attempt to combine
multiple metaphors, drawing form different source domains.
Metaphors have been used to describe general organization of software systems;
they have played an important role in the object-oriented movement, and then were
really put at the center of the pattern movement. No reasonable pattern can be suc-
cessful that is not supported by an elegant metaphor [64, 130]. More recently Beck
in eXtreme Programming (XP) described a practice he called “metaphor” to con-
vey the concept of a simple summary of the architecture [38]. It is unfortunate that
this practice has been the least successful of XP. Beck should have boldly called it
Allegory: an extended metaphor in which a story is told to illustrate an important
attribute of the subject, or even a Parable!
3.7 Summary
2. Architectural design, for the system under development, expressed using a com-
bination of appropriate notations and tools, adapted to the concerns of the various
parties involved (viewpoints). They are models of the system.
3. Architectural decisions, for the system under development, with their complex
interdependencies, and tracing upstream to requirements, context, and con-
straints, and tracing downstream to the design, and even the implementation.
They explain why the models are the way they are.
Chapter 4
Strategies and Approaches for Managing
Architectural Knowledge
Torgeir Dingsøyr
4.1 Introduction
Torgeir Dingsøyr
Department of Computer and Information Science, Norwegian University of Science and Tech-
nology (NTNU), NO-7491 Trondheim, Norway, e-mail: dingsoyr@idi.ntnu.no
as “how to ride a bike”, and explicit knowledge, which is available in reports, books
and informal or formal communication. Hansen et al. argued in an influential paper
in Harvard Business Review published in 1999 [143], that companies should focus
primarily on one of two strategies for knowledge management:
• Codification – to systematise and store information that constitutes the knowledge
of the company, and to make this available to the people in the company.
• Personalisation – to support the flow of information in a company by having a
centralised store of information about knowledge sources like a “yellow pages”
of who knows what in a company.
Earl [107] has further classified work in knowledge management into schools (see
Table 1.3). The schools are broadly categorised as “technocratic”, “economic” and
“behavioural”. The technocratic schools focus on information technology or man-
agement in supporting employees in knowledge-work. The economic school focuses
on how knowledge assets relates to income in organisations, and the behavioural
schools focus on orchestrating knowledge sharing in organisations.
Choosing a knowledge management strategy means to take a high-level deci-
sion on either codification or personalisation, and then suggestions for actions can
be taken from a relevant school. Some have argued that one should combine the
schools, for example in settings such as global software development [92]. The
main reasons for focusing on codification is in order to reuse knowledge (for an
example hereof, see Chap. 12). Knowledge, which has been codified once can be
reused many times. This is what many consulting companies do, and a strategy that
requires heavy use of information technology. Critics of the codification strategy
would argue that often, knowledge will be difficult to transfer across different con-
texts. Knowledge might become irrelevant or even misleading, and it will take much
resources to maintain such knowledge. Personalisation is then a strategy that re-
quires less information technology resources, but where it is crucial to make arenas
where people who have knowledge to exchange can meet. In software engineering,
the recent focus on agile software development [106] is a choice to mainly rely on
tacit knowledge transfer, which is a personalisation strategy.
Earl’s knowledge management schools will support different strategies. The cod-
ification strategy is supported either through the systems or engineering school.
The personalisation strategy is supported either through the cartographic, organ-
isational or spatial school. In the next sections, I will present approaches in the
technocratic and behavioural schools, which I believe is relevant to managing archi-
tectural knowledge. I will not address the commercial and strategic schools, as they
focus on issues more relevant for management in a company than the development
department. Finally, I will discuss criteria for selecting an approach in Sect. 4.3.
The technocratic schools are the systems school, which focuses on technology
for knowledge sharing, using knowledge bases or “repositories”; the cartographic
school, which focuses on knowledge maps and creating knowledge directories;
4 Strategies and Approaches for Managing Architectural Knowledge 61
and the engineering school, which focuses on processes and knowledge flows in
organisations. I will now describe each of these schools more in detail.
4.2.1 Systems
The underlying principle of the systems school is that knowledge should be codified
in knowledge bases. A knowledge base or knowledge repository stores knowledge,
experience, and documentation, sometimes about one particular topic, for example
“load testing of web applications”. How the base is filled with information varies
between repositories, some allow all employees to freely write down experience
(such as in a wiki), while others have an editing process to make sure that experience
is documented in a standard manner. Davenport and Prusak [89] divide between
three types of knowledge repositories:
• External knowledge repositories such as competitive intelligence.
• Structured internal knowledge repositories, such as research reports, product-
oriented market material.
• Informal internal knowledge repositories, such as reports of “lessons learned”.
In software engineering, there are several studies of both structured internal repos-
itories (a central concept in the Experience Factory [33]), and of informal internal
repositories.
One of the studies of knowledge repositories in the software engineering litera-
ture describes a system, which is used extensively over time [99]. A screenshot is
shown in Fig. 4.1. This example shows the simple structure of a note of experience;
a title, describing text, keywords and the author of the experience note.
Examples of notes from this company were “how to remove garbage from an
image in SmallTalk”, “technical problems with cookies” and “an implementation of
the soundex algorithm in Java”.
The study reports that the repository worked as “a behavioural arena that people
use in different ways, to create a culture of knowledge sharing, and [the tool] lets
people experience that others make use of their knowledge”. The tool was promoted
by posters for example outside the staff canteen.
The study further shows that the knowledge repository was in heavy use in the
company. Almost all of the developers interviewed in the study mentioned that they
were using it, and had contributed with writing experience notes. However, the man-
agers were not as active in using the notes as others. The study found five types of
usage of the knowledge repository:
1. Solve a specific technical problem.
2. Get an overview of problem areas.
3. Avoid rework in having to explain the same solution to several people.
4. Improve individual work situation by adjusting technical tools.
5. Find who has a specific competence in the company.
62 T. Dingsøyr
Fig. 4.1 A screenshot from a knowledge repository from a software consulting company
The combination of an easy to use tool and social incentives was identified in the
study as reasons for the success of the knowledge repository.
A critique of this approach to knowledge management has been that such repos-
itories are often not used in practice, creating what is referred to as “information
junkyards”. The systematic review of knowledge management research in software
engineering [41] identified one more study in addition to the one described above,
which shows that such tools are actually in use. The case studies show that it is pos-
sible to successfully implement knowledge repositories. Further the studies show
that benefits can be realised quickly and a repository can be used for other purposes
that support knowledge management than originally intended. However, it is im-
portant to note the importance of the context of the study, in particular the social
incentives for knowledge management.
What kind of implications does these findings have on knowledge repositories
aimed at architectural knowledge? First of all, a knowledge repository requires
a certain number of users to make it cost-efficient. For small companies, it will
probably make sense to make use of a personalisation strategy as much as possi-
ble. Some knowledge, however, will be of such a kind that is difficult to transfer
orally, and some kind of codification is needed. A lesson learned from the studies
4 Strategies and Approaches for Managing Architectural Knowledge 63
The principal idea of the cartographic school is to make sure that knowledgeable
people in an organisation are accessible to each other for advice, consultation,
or knowledge exchange. This is often achieved through knowledge directories,
skills management systems or so-called “yellow pages”, which can be searched for
information as required.
Skills can be broadly categorised in two groups – technical skills: Knowledge
about technology issues, and soft skills: Competencies of a more personal and social
flavour, like organising and handling complexities in project work, enabling people
to contribute with their resources, and customer communication.
It is of major importance to get the right people with the right soft and technical
skills to work on software development projects. Many companies have developed
knowledge management tools to assist them in the tasks of managing technical
skills, by surveying what kind of knowledge people have, and make an index of it.
The process of surveying and indexing and making this type of information avail-
able, I will refer to as skills management, and I will focus on technical skills in the
following.
A study from a software company reports on how tools for managing skills are
used [100]. What purposes do such tools serve, and do they satisfy needs other than
the expected use in resource allocation?
The tool in the study would indicate employee experience levels of 250 technical
skills, such as “testing and testing techniques” in Fig. 4.2. Employees would rate
themselves between “irrelevant” and “masters fully”. In addition to the current level,
people would indicate which level they wanted to be at in the future.
The tool was found to be in use for resource allocation and for short-term problem
solving by identifying and asking experts on topics. Also, the problem solving had a
long-term effect in letting employees know who to ask next time. Further, the skills
management tool is used for identifying new project opportunities and to support
skills upgrading. The tool was found to support learning practices and motivates
use at both an individual and company (projects and processes) level. This double
capability enabled integration and knowledge exchanges both vertically (between
organisational levels) and horizontally (between individuals and projects).
Some employees were critical to how people evaluated their skills, others ques-
tioned the level of detail on the available skills, and yet others felt that information
on soft skills was lacking.
But all in all, it seems that the usage of the tool was very much implanted in the
daily work of the organisation, and the tool supports a multitude of functions.
An argument for this school is that although it requires a technical infrastructure,
the investment is low because there is no need to codify knowledge.
64 T. Dingsøyr
How might this school be relevant for managing architectural knowledge? It does
not seem to be any studies of actual use of such systems for managing architectural
knowledge in the software engineering research literature. However, for companies
that employ a large number of people, knowledge of the particular skills of software
architects would be valuable, in order to solve architectural problems that emerge,
or for inviting people with particular skills to discussion or planning meetings.
The engineering school of knowledge management has its roots in business pro-
cess reengineering. Consequently it focuses on processes. The systematic review
on knowledge management in software engineering found two major categories of
engineering school approaches. The first contains work done by researchers who
investigate the entire software process with respect to knowledge management. The
second contains work done by researchers who focus on specific activities and how
the process can be improved within this activity. The specific activities were formal
routines, mapping of knowledge flows, project reviews, and social interaction.
In relation to development processes for software, the systems and engineering
schools support sharing of explicit knowledge. Both of these schools require a tech-
nical infrastructure in order to facilitate knowledge sharing. However, a finding both
4 Strategies and Approaches for Managing Architectural Knowledge 65
1. Discuss pros and cons of the software architecture in the initial design meeting.
Document major design decisions as well as their rationale.
2. Organise discussions about the quality of the architecture during development;
especially focus on the architecture’s unforeseen consequences for the development.
3. Analyse the architecture after implementation through technical analysis of source
code, CVS logs and other explicitly available information – look for suspicious ef-
fects. This step focuses on architectural knowledge derived from the evolution of the
system.
4. Gather the responsible people for software architecture in a workshop - examine
initial pros and cons of the architecture, suspicious effects, and ask:
• Which major decisions were right?
• Which major decisions were not right?
6. Finally, analyse the cost and benefits of suggested architectural changes, and imple-
ment the most beneficial ones.
from studies in other fields of the systems school [170] and studies of a specific
engineering approach, electronic process guides, is that it is difficult to get such
technology in actual use [98]. However, many companies have invested in such
infrastructure, and this indicates that we need a better understanding of the factors
that lead to effective knowledge sharing within these two schools.
Whether focusing on processes in general, or specific processes, the focus in
this school is on making descriptions of processes so that work can be done more
effectively or with higher quality than without such support. An example suggested
process within management of architectural knowledge, is the described in Fig. 4.3,
which aims at producing “thorough” learning, what some refer to as double-loop
learning [97].
I have not found studies of how processes for managing architectural knowledge
work in practice, but there are many frameworks for evaluating architecture, which
has a learning component, for example ATAM [176]. However, findings from soft-
ware engineering indicate that it is impossible to rely only on process descriptions
when performing work tasks, access to human experts or discussion partners will be
equally important. Also, studies from software engineering show that it is possible
to define and implement software process in a beneficial and cost-efficient manner
in small software organisations. However, special considerations must be given to
their specific business goals, models, characteristics, and resource limitations.
66 T. Dingsøyr
There are few studies of how such networks are applied in practice in software
engineering. We find three studies of such networks, describing the role of networks
and how they can be applied in improving software development processes. A find-
ing in one study is that networks are likely to be successful if they are based on
informal networks that may exist prior to the formal introduction.
With respect to software architecture, the organisational school is a low-cost op-
portunity for companies that have a sufficient number of employees working with
or interested in architecture to establish a forum. General knowledge management
studies advice that people-oriented approaches are used in addition to codification
initiatives, and communities of practice is then a possible choice.
How can office space be designed for knowledge sharing? This is the central ques-
tion in the spatial school. The systematic review on knowledge management in
software engineering did not identify works in this area, but this is something, which
many companies use both to support creative processes and to give an image of
themselves as “modern”. Central arenas for knowledge sharing can be around the
water cooler, coffee machine, printer or canteen, it can be meeting rooms for differ-
ent purposes, like rooms especially designed for brainstorming. Whether employees
use cubicles, open-plan offices or cell offices, are decisions that will impact knowl-
edge sharing. In agile software development, some attention has been given to how
the design of the office space allows informal communication, and especially on
how status information is shown on “walls”. Such walls are popular to make status
information visible for team members and for colleagues, and typically display the
information shown in Fig. 4.4.
4.4 Summary
As we have seen in the previous sections, there are many options when focusing on
knowledge management, and many are relevant for knowledge related to software
engineering and to architectural knowledge.
Software companies who want to establish better knowledge management prac-
tices need first of all to decide on which strategy is most important for them relating
to the architectural knowledge. Is the knowledge that is important for the company
of a kind, which can be shared between people, or is it of such a kind that some form
of codification is needed. The size of the company and number of software archi-
tects and software development projects will be important when choosing a strategy.
Larger volumes will in most cases require a greater need for codification. However,
the nature of the knowledge to be shared is also important, architectural knowledge
might be of a form, which makes codification more efficient than for example oral
communication. Companies who have chosen agile development methods might
benefit from managing architectural knowledge in the same way they manage other
software engineering knowledge, through oral communication in frequent meetings
and using visual assistance, like showing architectural information on a wall.
Chapter 5
Supporting the Software Architecture Process
with Knowledge Management
Abstract The aim of this chapter is to describe how the software architecture pro-
cess can benefit from providing knowledge management support to the software
development professional in general and software architects in particular. This chap-
ter focuses on the kinds of support that can be provided to capture and manage
architectural knowledge consumed or generated during the software architecture
process. The chapter briefly describes different activities of the software architecture
process and identifies the kinds of actors involved and their respective knowledge
needs. It shows how to organize different elements of architectural knowledge into
a meta-model that can be initiated for tailoring organizational specific knowledge
models and developing tool support. This chapter is based on the premise that
managing knowledge is a management task rather than a technical problem of rep-
resenting knowledge. Hence, this chapter finally discusses the management aspects
by presenting a task model of managing architectural knowledge.
5.1 Introduction
Chapter 1 has provided an introduction and brief description of the important the-
oretical concepts related to the research and practice of software architecture and
knowledge management disciplines. This chapter intends to identify the needs of
knowledge management for different activities of the software architecture process
and how various approaches, techniques, and tools can be used to capture and man-
age the knowledge that is required or generated during the software architecture
process. By now, it has been mentioned many times that software architecting is
one of the most important processes in developing and evolving large scale software-
intensive systems. For the research in this chapter, software architecture is an artifact
as well as the process used to develop and maintain that artifact, which is composed
of several large and small design decisions. Like any other process, the software
architecture process also involves various activities, tasks, roles, and artifacts.
Software architecting is considered a complex and knowledge-intensive pro-
cess [320, 268]. The complexity lies in the fact that software architecting involves
a lot of decision making. Several dozens of tradeoffs need to be made to satisfy
current and future requirements from a potentially large set of stakeholders, who
may have competing vested interests in architectural decisions [3, 137]. The knowl-
edge required to make suitable architectural design decisions and to rigorously
evaluate those design decisions is usually broad, complex, and evolving. The req-
uisite knowledge can be technical (such as patterns, tactics, and quality attribute
analysis models) or contextual, also called Design Rationale (DR), (such as de-
sign options considered, tradeoffs made, assumptions, and design reasoning) [10].
The former type of knowledge is required to identify, assess, and select suitable
design options for design decisions. The latter is required to provide the answers
about a particular design option or the process followed to select that design op-
tion [104, 139]. We consider both kinds of knowledge as architectural knowledge,
which is characterized by the information that is required or generated during the
software architecture process consisting of several activities such as architectural
analysis, architectural synthesis, architectural evaluation, architectural implemen-
tation and architectural maintenance [9, 146, 313]. All of these activities require
and generate technical as well as contextual architectural knowledge. Hence, we
assert that management of architectural knowledge is vital for improving an orga-
nization’s architectural capabilities. Researchers and practitioners agree that if not
appropriately managed, knowledge underpinning the key architectural decisions is
lost, and hence is unavailable to support subsequent decisions to maintain and evolve
the software architecture of a system [10, 23, 325].
Software architecture researchers and practitioners have developed several ap-
proaches to support the different activities of the software architecture process.
However, until recently there has been little effort spent on providing appropriate
guidance and/or effective infrastructure for capturing and managing the details on
which design decisions are based, along with explanations of the use of certain
types of design constructs (such as patterns, styles, tactics and so on). Chapter 12
provides one example hereof. It has been mentioned that such information may
prove quite valuable throughout the software development lifecycle [48, 109]. The
unavailability of suitable and systematic approaches to capturing and sharing ar-
chitectural knowledge may preclude organizations from growing their architectural
capabilities and reusing architectural assets. Moreover, the knowledge concerning
the domain analysis, architectural patterns used, design alternatives considered and
evaluated, and design decisions made is implicitly embedded in the architecture
and/or becomes the tacit knowledge of architects [48, 320, 325].
Recently, there have been several efforts aimed at improving the quality of
the software architecture process by developing effective knowledge management
approaches, techniques, and tools (hereafter called architecture knowledge manage-
ment (AKM) technologies) to facilitate the management of explicit and implicit
architectural knowledge generated during the architecting process; see Chap. 6. This
5 Supporting the Software Architecture Process with Knowledge Management 71
chapter is aimed to enumerate different activities and tasks involved in the software
architecture process and to describe how those activities and tasks can be supported
by knowledge management. It seems pertinent to mention that the major objec-
tive of knowledge management is to improve business processes and practices by
utilizing individual and organizational knowledge resources. These include skills,
capabilities, experiences, routines, cultural norms, and technologies [256]. It has
already been mentioned in Chap. 1 that the software architecture process needs or
generates both explicit and implicit knowledge. These are mutually complementary
entities that interact with each other in various creative activities [234]. In the con-
text of this chapter, we define architecture knowledge management as an approach
to improving the software architecture process outcomes by introducing various pro-
cesses and practices for identifying, capturing architectural knowledge and expertise
and making it available for transfer and reuse across projects in an organization.
More formally, we use the definition of knowledge management provided in [109]
according to which knowledge management “is the process that deals with system-
atically eliciting, structuring and facilitating the efficient retrieval and effective use
of knowledge. It involves tacit knowledge of experts and explicit knowledge, codified
in procedures, process and tools. Knowledge management stretches from know-how
to know-what and know-why.”
The software architecting process can be considered a macro level process, which
may involve several micro-level processes composed of many activities and tasks
for designing, documenting, evaluating and maintaining software architectures for
systems. The software architecture community (i.e., researchers and practitioners)
has proposed several design methods and models such as Attribute-Driven Design
(ADD) method [34], Business Architecture Process and Organization (BAPO) [15],
the rationale unified process, and Siemens’ 4 Views (S4V) [147]. Others have fo-
cused on providing architecture evaluation frameworks and process models such
as architecture tradeoff analysis method (ATAM), architectural level modifiabil-
ity analysis (ALMA), and quality-driven architecture design and quality analysis
method [220]. Recently, some researchers have proposed a general model of ar-
chitecture design based on five previous design models [146] (see also Chap. 1).
However, this model covers only three activities of the software architecture process:
1. Architectural analysis aims to define the problems to be solved. An architect
examines architectural concerns and context in order to come up with a set of
architecturally significant requirements.
2. Architectural synthesis aims to design architectural solutions for a set of archi-
tecturally significant requirements. An architect may consider several available
design options before selecting the ones that appear to be the most appropriate
and optimal.
72 M. Ali Babar
Fig. 5.1 A model of the architecture life cycle (reproduced from [313])
It has been mentioned that the software architecture process aims to solve a mix
of ill- and well-defined problems, which involve processing a significant amount
of knowledge. Architects require topic knowledge (learned from text books and
courses) and episodic knowledge (experience with the knowledge) [268]. One of
the main problems in the software architecture process is that the knowledge un-
derpinning the design decisions and the processes and activities leading to those
decisions [10, 48] is usually not sufficiently captured and managed. Hence, such
knowledge is not available or not easily accessible if needed later on. This type of
knowledge involves things like the rationale for selecting and the impact of certain
middleware choices on communication mechanisms between different tiers, why an
API is used instead of a wrapper, and who to contact to discuss the performance of
different architectural choices.
Much of this knowledge is episodic and usually not documented [320]. The ab-
sence of a disciplined approach to capturing and managing architectural knowledge
has many downstream consequences. These include:
• The evolution of the system becomes complex and cumbersome; resulting in
violation of the fundamental design decisions
• Inability to identify design errors and
• Inadequate clarification of arguments and lack of information sharing about the
design artifacts and process.
All these cause loss of substantial knowledge generated during the software archi-
tecture process, thus depriving organizations of a valuable resource, loss of key
personnel may mean loss of knowledge [139, 165, 320].
Software architecture researchers and practitioners have developed several meth-
ods (such as a general design model [146], APTIA [173], ATAM[72], PAS [338]) to
support the different activities and tasks of the software architecture process in a dis-
ciplined manner. Some of these do emphasize the need and importance of managing
architectural knowledge to improve reusability and grow organizational capabilities
in the architecture domain. Except for [71], there is no approach that explicitly states
what type of knowledge needs to be managed and how, when, where, or by whom.
Also, none of the current approaches provides any conceptual framework for iden-
tifying the required knowledge and tasks to be performed in order to provide the
required knowledge. Our previous research has concluded that the lack of suitable
techniques, guidance, tools, and resources is one of the main reasons that practi-
tioners and organizations are not able to design and deploy appropriate knowledge
management strategies to support the software architecture process [10, 12].
To address the issues caused by the general lack of knowledge management sup-
port throughout the lifecycle of the software architecture, researchers have recently
been quite active in developing appropriate approaches and suitable tools for intro-
ducing the knowledge management in the software architecture process. One of the
most focused topics among architecture knowledge management researchers has
been the identification and modeling of knowledge claimed to be needed during
74 M. Ali Babar
the software architecture process. Researchers have also identified the architectural
knowledge needed by software development teams, and have proposed the kinds
of incentives required to encourage people sharing architectural knowledge. Other
researchers have identified Use Case Models for managing architectural knowl-
edge [193]. These Use Case Models identify the actors who either consume and/or
generate architectural knowledge, and the Use Cases describing different ways in
which the identified actors can capture or use the architectural knowledge using an
appropriate knowledge repository. In order to provide suitable tooling support for
the identified knowledge needs and actors, software architecture researchers have
used either existing knowledge management tools [2, 193] or have developed new
ones (see Chapter 6).
The main objective of the architecture knowledge management technologies
(e.g., methods, techniques, tools) being developed is to help organizations as well
as individuals to capture and manage the different kinds of architectural knowledge
needed to support the software architecture process. Once the architectural knowl-
edge needed to support the software architecture activities have been identified, it
can be organized to provide some guidance for assessing and appropriately using the
existing architecture knowledge management techniques and tools or developing the
new ones where required.
In this section, we describe the architectural knowledge needed to support the differ-
ent activities of the software architecture process in more detail. The activities that
are specifically addressed from the knowledge management perspective are shown
in Fig. 5.2, which also identifies some of the elements of architectural knowledge
either used or generated during the software architecture process.
Before we can discuss the knowledge needed or generated during different ac-
tivities of the software architecture process, it is appropriate to also describe who
are the potential consumers or producers of architectural knowledge. As previously
mentioned, several researchers have presented architecture knowledge Use Case
Models, which identify the actors who are expected to use, produce, and exploit
architectural knowledge. Some of these actors are software architects, project man-
ager, developers, researchers, maintainers, analysts, reviewers, and students. The
descriptions of these actors can be found in [193]. It has been mentioned that in this
chapter we would limit our discussion about those actors’ knowledge needs that are
usually involved in the activities shown in Fig. 5.2.
Figure 5.2 shows some of the key activities of the software architecture pro-
cess, which usually starts with the identification of , also called quality attributes.
The ASRs are usually derived from business goals in Quality Attribute Workshop
(QAW [29]) kinds of sessions in which all major stakeholders participate. During
this activity the stakeholders’ need to have access to quality attributes’ knowl-
edge, general scenarios, and domain knowledge. The stakeholders are expected
to bring with them the knowledge about the business drivers, organizational ex-
pectations of the system being developed and contextual and technical constraints.
Such knowledge is explicated during the QAW sessions. Such knowledge is con-
sidered architectural knowledge as it usually guides the architectural decisions.
Such knowledge needs to be captured for future reference, only scenarios may not
be enough. The facilitator of the QAW workshop should have access to knowl-
edge about the process to be followed, artifacts to be consulted or created, and
pre- and post-conditions of each of each of activity in this process. It should also
be known if there are some templates to be used in order to capture the knowl-
edge and how to customize those templates based on the project or organizational
requirements.
A software architect makes design decisions to satisfy the architectural require-
ments. Such decisions are made in an iterative process in which an architect or
design team identify the available options, evaluate them for tradeoff analysis and
select the most appropriate ones considering the technical, business, and organiza-
tional constraints. This process can be either ad-hoc or systematic by following the
steps recommended by a design method such as Attribute Driven Design (ADD),
which exploits the knowledge of architectural styles and design tactics. As shown
in Fig. 5.2, the architecture design decisions are mainly motivated by ASRs, which
provide the criteria used to reason about and justify the architectural choices [35].
The ADD method follows a recursive decomposition process in which each stage of
decomposition results in certain decisions by choosing suitable architectural tactics
and patterns to satisfy a set of ASRs. Architects usually enlist several design op-
tions, which are based on architectural patterns or tactics, that are expected to have
the potential of satisfying different architecturally significant requirements char-
acterizing the required quality attributes. The process of selecting suitable design
options has implicit or explicit analysis of each available design option or tradeoff
analysis between different design options [3]. Hence, the knowledge about differ-
ent design methods, requirements constraints, quality attribute models, architectural
76 M. Ali Babar
styles and patterns and their potential impact on different quality attributes is usually
needed to support the design decision making process. The architecture design
activity produces knowledge about the assumptions underpinning the design de-
cisions, tradeoffs performed, constraints considered, weaknesses, and strengths of
the chosen design decisions and the rejected ones.
Once made, architectural design decisions need to be documented to support the
subsequent design, analysis and development decisions. Software architecture com-
munity emphasizes the importance of documenting architecture design in terms of
views (see Chap. 3), each view presents a different perspective of the architecture.
During this activity, software architects need the knowledge about different ap-
proaches to describing software architectures (such as IEEE 1471 [155], V&B [71],
and 4 + 1 [188]), guidelines on tailoring such approaches for specific situations,
policies and procedures for documenting architectural decisions, and the kinds of
contextual knowledge that should be captured. Moreover, they also need to know
if there are generic or company specific templates to be used for describing key
architectural decisions and rationale underpinning those design decisions. Addition-
ally, it is also important to know which views are important to cater the needs of
stakeholders.
Architecture design, documentation, and evaluation are iterative steps in the pro-
cess [35]. Architecture evaluation attempts to ensure that the architectural decisions
are the right ones. The main tasks of the software architecture evaluation activ-
ity are: generating utility tree for characterizing quality attributes with scenarios,
identifying suitable reasoning frameworks to be used, determining and understand-
ing architectural approaches (e.g., styles, patterns, and tactics) used, evaluating the
proposed architectural approaches with respect to quality attributes and tradeoffs re-
quired, prototyping or simulating parts of the architectures that appear problematic,
appropriately and sufficiently recording evaluation findings along with the ratio-
nale and justifications, and visualizing the risks and risk themes with an appropriate
mechanism such as a results tree.
In order to perform these and other knowledge-intensive and complex tasks,
software architects and reviewers need to have knowledge about the available archi-
tecture evaluation methods (such as reported in [39, 72]), and techniques and how
to tailor them based on the contextual constraints. Several researchers have reported
comparative and evaluation studies of software architecture evaluation methods
in [13, 101, 174] that can be a good source of knowledge about the architecture
evaluation methods and techniques. Based on more than ten years of research in
software design and analysis methods and techniques, researchers from the Soft-
ware Engineering Institute (SEI) have also proposed ten principles of architecture
design and analysis [173]. A good knowledge of these principles and how to apply
them is expected to improve the software architecture process and artifacts. More-
over, the evaluation team also needs to know the rationale and contextual constraints
underpinning the proposed architectural choices. Such knowledge is expected to be
sufficiently captured during the architecture design and documentation and made
available to evaluators through a knowledge repository or suitable tool.
5 Supporting the Software Architecture Process with Knowledge Management 77
Table 5.1 Summary of the activities, tasks, participants and needed AK for the software architecture process
Activity name Main tasks Major participants AK needed
Architectural The main tasks are: examine architectural Evaluation manager/project Business goals, organizational processes and
analysis concerns and context in order to come up manager/evaluation team/architect procedures, general scenarios, concrete
with ASRs. Identify main quality attributes. and whoever required scenarios, guidelines for running a QAW
Develop quality sensitive scenarios. workshop, similar systems developed.
Prioritize the scenarios. Facilitate a
workshop as QAW.
Architectural The main tasks during this stage are: clarifying Architect and senior software Generic design options, architectural styles and
synthesis and understanding ASRs, identifying designers design patterns, tactics. Rationale
suitable design options, evaluating the underpinning previous design decisions and
design options with respect to desired level quality attributes. Knowledge about the
of different quality attributes, performing existing or future systems to be integrated.
tradeoffs, selecting suitable design
decisions.
Architectural The main tasks are: generating utility tree, Evaluation team, architect and all Rationale for design decisions. Reasoning
evaluation selecting suitable reasoning frameworks, major stakeholders. framework, styles, patterns, and tactics.
assessing the suitability of design decisions Checklists of tasks to be performed during
and used patterns, recording findings and evaluation, information about different
justifications for them, and building a architecture evaluation process models and
results tree to visualize risks and non-risks. methods. Standards and procedures to be
followed and templates for recording
evaluation findings.
Architectural im- The main tasks are: making detailed design and Designers and developers Reasoning Knowledge to understand the
plementation implementation decisions, implementing architecture design, implementation
design, ensure implementation complies standards, strengths and weaknesses of
with architectural decisions and other implementation frameworks.
constraints.
Architectural Many of the tasks performed during the Developer, designer, and architect. Apart from the knowledge required during the
maintenance previous stages. Impact analysis is previous stages, justification for changes,
performed to assess potential effects. and impact analysis techniques.
M. Ali Babar
5 Supporting the Software Architecture Process with Knowledge Management 79
Need Reviews
Has Architecturally Satisfies
Evaluation Software
Significant
Used in Influences Architecture
Requirement
Participates Specify Effects Part of Documents
Rationale Has
Involves Specified by
Uses Belong to Consists of
Has
Contains Architecture
Stakeholder Creates Scenario
Addresses Addressed by Design
Created by Decision
Contains
Interests to Used in Captures
Extracted Effected
From by
Pattern
Uses
Interested in Captured by
Documented
Captured by by
View Architecture
Includes Included in
Description
Fig. 5.3 A model of organizing architectural knowledge for supporting the software architecture
process
constructs and terminology used when describing the software architecture process
and its artifacts.
The model has been built by abstracting entities and their relationships from sev-
eral available models such as DAMSAK [10], IEEE 1471 [155], and the SARA
report [236]. The process of constructing this model was guided by the principles
of the Entity Relationship (ER), a formal modeling methodology [36], and by us-
ing the Unified Modeling Language (UML) for database design [230]. Since the
models upon which the meta-model is based have been taken from the literature
or have been assessed with reference to the literature on software architecture such
as reported in [155, 236], we do not consider the need of evaluating this meta-
model. Following paragraphs provide a brief description of each entity and the type
of architectural knowledge that is captured by each of them.
The Stakeholder entity characterizes those people who have any kind of interest
in the architecture process or product [236] such as developers, testers, managers,
evaluators, maintainers and many more [72]. This entity aims to manage the knowl-
edge required to keep track of the people who contribute to or consult a knowledge
base. Such information can be used to design a recognition program for motivating
people to contribute or use an architectural knowledge repository. This entity also
helps manage the knowledge about how a stakeholder is related to architectural sig-
nificant requirements, scenarios, architectural views, and evaluation performed on a
proposed software architecture.
Architecturally significant requirements (ASRs) are those requirements that
have broad cross-functional implications. Such requirements are often called non-
functional requirements (NFRs), also called quality attributes (QAs) [34, 236], but
can also include functional aspects such as security functionality. This entity is used
to describe and explain the various aspects of an ASR. Such as the relation of an
80 M. Ali Babar
and evaluated. The rationale entity also characterizes all the background informa-
tion that may be used or generated during the process of making architectural design
decision. Such information is valuable to people who deal with the product of the
decision making process [48]. Each architectural design decision is supposed to
have a rationale attached to it and that rationale is captured along with the architec-
ture description. Hence, the Rationale entity is associated with both the architecture
design decision and the architecture description entities.
Architecture Description entity characterizes the data required to document an ar-
chitecture according to certain standards or approaches (see Chap. 3). The V&B [71]
approach also emphasizes the need to capture information that cuts across several
views as well as rationale for architectural design decisions. This entity is related to
architecture description, software architecture, and view entities.
A View or an architectural view is a model of an architectural structure or other
elements of software architecture from the perspective of a related set of concerns
that interest to a particular group of stakeholders [155]. Views are used to describe a
software architecture throughout its lifecycle for the specific purpose of understand-
ing and analyzing the different aspects of system development and performance.
This entity represents the contemporary practice in this discipline where views are a
necessary part of any architectural description; and views provides stakeholders with
necessary knowledge to design architectural structures and to understand different
aspects of a system’s design.
The Evaluation entity characterizes the architectural knowledge required and
generated during architecture evaluation. It also captures and managed the knowl-
edge about the activities undertaken to determine the quality of an architectural
design decisions and to predict the quality of a system whose architecture comprises
of the evaluated architectural design decisions. Moreover, it also represents the
knowledge that is captured about the findings from evaluating a given architecture.
This entity is related with stakeholders, who participate in evaluation, scenarios,
which are used in evaluation, and the software architecture being evaluated.
Architecture Architecture
Knowledge Feedback Knowledge
Goals Measurement
Architecture Architecture
Knowledge Knowledge
Identification Use
Architecture Architecture
Knowledge Knowledge
Acquisition Preservation
Architecture Architecture
Knowledge Knowledge
Development Distribution
The operational tasks of the architecture knowledge management task model are
related to the tasks required to identify, capture, and manage the knowledge required
to support the software architecture process. The following paragraphs provide a
general description of each of these tasks and how each of them can support the
management of architectural knowledge:
Architectural knowledge identification intends to determine the types and sources
of knowledge that is available in a certain context and important to achieve the
strategic goals of architecture design knowledge management. For example, sources
of architecture design knowledge may be humans (such as architects, and design-
ers) and non-humans (such as design patterns, case studies, and software design
documents). We have already identified several kinds of architectural knowledge
consumed or produced in the software architecture process along with the sources
of the knowledge in Sect. 5.4. Other researchers have also identified different kinds
of architectural knowledge and its consumers and producers which have been or-
ganized into Use Case Models of architecture knowledge management [192]. Both
of these sources have identified main kinds of architectural knowledge that needs
to be acquired and managed for supporting the software architecture process as we
describe in the following paragraphs.
Architectural knowledge acquisition is required to elicit the architectural knowledge
from the sources of the knowledge determined as part of the previously described
task. This is particularly important for implicit architectural knowledge. If the source
of the implicit knowledge is humans then the performance of this task should take
into account the socio-psychological aspects of gathering knowledge from humans,
as human sources may not necessarily be motivated to give away their knowledge.
There are several kinds of approaches, developed in the sociological and psycholog-
ical disciplines, which can be exploited to acquire knowledge from human sources.
We have enlisted several of such knowledge acquisitions techniques (such as inter-
views, brainstorming, repertory grid, protocol analysis, and Delphi technique) along
with their respective advantages and disadvantages in [10]. For acquiring knowledge
from literature and case studies, we have developed an architectural knowledge ac-
quisition approach, call pattern mining [11]. We have demonstrated that this is very
promising approach that can help organizations to distill great amount of knowledge
from literature with relatively less amount of effort and time.
Architectural knowledge development purports to package, consolidate, and en-
hance the available architectural knowledge. This task is usually achieved through
communicating the knowledge, integrating knowledge from different sources, and
representing it in a certain format. For example, software architecture community
has proposed several templates to organize and present architectural knowledge in a
format that is considered succinct and able to represent the captured knowledge at a
suitable abstraction level [2, 9]. The architectural knowledge development task can
also exploit the concepts provided by the Experience Factory approach to improving
software quality [32]. According to this approach, a separate business unit is respon-
sible for identifying, acquiring, and repackaging reusable knowledge for improving
the software quality by reusing knowledge and experience. We have also proposed
5 Supporting the Software Architecture Process with Knowledge Management 85
5.7 Summary
This chapter aims to explain how the software architecture process can be sup-
ported by knowledge management. We have discussed different challenges caused
by the lack of appropriate knowledge management support in the software archi-
tecture process. We have also identified the activities and tasks that need to be
undertaken in order to manage the knowledge that is either consumed or produced
during the software architecture process. To help provide appropriate mechanism of
managing architectural knowledge, this chapter first identifies the knowledge that
is relevant to the different phases of an architecture lifecycle. We have identified
the knowledge needs of different stakeholders involved in the activities of the soft-
ware architecture process. A meta-model has been presented that can help organize
the architectural knowledge consumed or produced. This meta-model can be tai-
lored to provide appropriate tooling support for managing architectural knowledge.
Then, we have presented a task model of managing architectural knowledge. This
task model identifies two strategic level and six operational level tasks that need to
be performed in order to provide an integrated support mechanism for managing
architectural knowledge. We have also explained the different approaches and mea-
sures that are required to perform each of the tasks of the architecture knowledge
management task model.
We assert that the architecture knowledge management task model shown in
Fig. 5.4 coupled with the theoretical concepts and practical approaches provided
by different knowledge management school of thoughts as described in Chap. 1 and
available tooling support as described in Chap. 6 can provide sufficient guidance,
a framework and tools to provide knowledge management support throughout the
lifecycle of a software architecture as shown in Fig. 5.1 following the software archi-
tecture process shown in Fig. 5.2. Moreover, the presented meta-model of Fig. 5.3
shows how to organize the knowledge needed by different stakeholders in order to
benefit from or perform different tasks of the architecture knowledge management
task model presented in this chapter.
Acknowledgement This work is partially supported by Science Foundation Ireland under grant
number 03/CE2/I303-1. I am also thankful to my colleague Nour Ali for proofreading this chapter.
Chapter 6
Tools and Technologies for Architecture
Knowledge Management
6.1 Introduction
Formal
Formal
Explicit Explicit
Type of
Documented Knowledge Documented
Tacit Tacit
Implicit Implicit
Fig. 6.1 Pyramid of knowledge types and the associated knowledge management strategies [159]
6 Tools and Technologies for Architecture Knowledge Management 93
In this section, we describe use cases for AKM tooling to present the potential set of
tool features in this domain and also set the stage for presenting existing tools and
technologies (discussed in Sects. 6.3–6.5). The use cases define the requirements for
developing an AKM tool, i.e. who would use it (actors), to do what (use cases)? We
came up with this use case model by surveying a series of papers [10, 113, 192, 326],
which provide at least some kind of usage of AK (requirements, services, functions,
use cases, etc.). We formed a superset of use cases by selecting, merging, and gen-
eralizing from the use cases of the individual approaches. Some of them came from
interviews with practicing architects, while others originate from researchers’ expe-
rience. Furthermore some use cases have been implemented in tools, while others
remained in the “wish-list” of researchers.
6.2.1 Actors
We present the use cases (UC) by grouping them into four distinct categories, as il-
lustrated in Fig. 6.2: Actors either consume AK by using it for specific purposes, or
produce AK by creating new or modifying existing AK [195]; knowledge manage-
ment concerns general low-level functionality to manage AK data; and intelligent
94 P. Liang and P. Avgeriou
AKM System
Producing AK
Consuming AK
UC6
UC1 Apply AK
Learn AK UC11
Synthesize AK
UC4
Share AK
UC2 UC7
View AK and their Reuse AK UC12
Architect relationship Translate AK
UC5
Identify stakeholder
UC8
UC3 Elicit/Capture AK UC13
Trace AK Recover architectural
Requirements decisions
engineer
UC09
Distill AK UC14
Evaluate AK
User
Developer
UC10 UC15
Knowledge Management Integrate AK Conduct a trade-off
analysis
UC16
Add/Store AK
Intelligent Support
UC19
Maintainer Notify user about
new AK UC21
UC17 Enrich AK (semi-) UC23
Reviewer Offer decision-
Edit AK automatically
making support
UC20
AK versioning UC22
UC18 Cleanup the UC24
Search/Retrieve AK architecture Assess design
maturity
Use Case
Legend UCs interact UCs interact UCs interact
with Architect with Reviewer with User
support concerns automating AKM tasks within the architecting process that require
either rigor or intelligence.
We do not claim that the list of use cases is exhaustive, but they do cap-
ture all use cases in the surveyed literature. Some use cases are kept unchanged
from the original source (e.g. Assess design maturity [326]) while others have
been merged (e.g. Reuse AK [326] includes Clone AK [192] and Stimulate reuse
of best practices [113]), or generalized (e.g. Identify stakeholders is generalized
from Identify the subversive stakeholder [192] and Identify affected stakeholders
on change [326]). These use cases, together with their included and specialized
use cases, are discussed within the presentation of the AKM tools in Sects. 6.3 and
6.4. In this section, we very briefly discuss each use case, and refer to the origi-
nal sources for more information. It is noted that the actors are explicitly specified
only for the use cases whose actor is the Architect or the Reviewer and not the
generic User. Also we consider the generalization relationship between use cases
as in [40].
6 Tools and Technologies for Architecture Knowledge Management 95
Consuming AK
• UC1, Learn AK [313]: learn and comprehend the AK, e.g. understand the ratio-
nale of a design decision.
• UC2, View AK and their relationships [196]: view both AK elements and re-
lationships e.g. the architectural decisions made and the relationships between
these decisions.
• UC3, Trace AK [12]: trace between various AK elements, e.g. design decisions,
rationale, and design.
• UC4, Share AK [313]: share knowledge with one or more actors of the system.
• UC5, Identify stakeholder [192, 326]: the architect identifies a stakeholder ac-
cording to certain criteria, e.g. who has the most “weight” on the architectural
decisions.
Producing AK
• UC6, Apply general AK [313]: use application-independent AK, e.g. apply archi-
tecture patterns to solve the problems at hand.
• UC7, Reuse AK [326]: the architect reuses AK in another project context, e.g.
reusing architectural design decisions from an old to a new project.
• UC8, Elicit/Capture AK [10, 196]: elicit and capture AK from various resources,
e.g. individuals, teams, or documents.
• UC9, Distill AK [313]: distill specific knowledge from a system into general
knowledge (e.g. architecture pattern) that can be reused in future systems.
• UC10, Integrate AK [313]: integrate different types of information into con-
crete AK, e.g. integrate stakeholder requirements, system context, and technology
constraints into system requirements.
• UC11, Synthesize AK [313]: the architect applies the design decisions and pro-
duces the system design (e.g. components and connectors).
• UC12, Translate AK [208]: translate the formal AK based on a given AK domain
model into another domain model to facilitate reuse.
• UC13, Recover architectural decisions [326]: the architect reconstructs decisions
with their associated rationale from an existing or 3rd party system.
• UC14, Evaluate AK [313, 326]: the reviewer performs a critical evaluation of the
AK, e.g. to make sure that requirements have been satisfied in the architecture
design.
• UC15, Conduct a trade-off analysis [326]: analyze the architecture by trading off
different quality attributes.
Knowledge Management
• UC16, Add/Store AK [192]: add and store elements of AK into the knowledge
repository.
• UC17, Edit AK [10]: modify or delete AK elements in the repository.
• UC18, Search/Retrieve AK [196, 313]: search through the existing AK using
certain criteria (e.g. keywords and categories, etc.).
96 P. Liang and P. Avgeriou
Intelligent Support
In this section, we present the AKM tools that support the codification strategy by
discussing for each one: a brief introduction, how they support the use cases listed in
Sect. 6.2.2 (full or partial support) and their special focus (e.g. architecture design
support, evaluation support, etc.). The order of presenting the tools is organized
according to the type of knowledge they support: the SEI-ADWiki supports docu-
mented AKM; ADkwik and ADDSS support both documented and formal AKM;
and the rest support formal AKM.
6.3.1 SEI-ADWiki
6.3.1.3 Share AK (UC4): users can share the content of architecture documents with
other users after saving the content in wiki pages.
6.3.1.4 Add/Store AK (UC16): users can add and save architectural artifacts in wiki
pages.
6.3.1.5 Edit AK (UC17): users can change and remove the content of architecture
document in wiki pages.
6.3.1.6 Search/Retrieve AK (UC18): users can use the search box on every wiki
page to search the entire wiki by keywords.
6.3.1.7 Notify user about the AK changes (UC19): users can opt to receive noti-
fication (e.g. by email) when a monitored wiki page (documented AK) is
modified by other users or when a new wiki page is created.
6.3.1.8 AK versioning (UC20): users can create different versions for the architec-
ture artifacts represented in wiki pages through the versioning function of
wiki.
6.3.1.9 View the change history of AK (includes UC20): users can view the change
history based on the versioned AK. The change history documents which
part of the architecture has been added or modified since the last review.
AK versioning produces versioned AK for viewing the AK change history,
therefore this UC includes UC20.
Special Focus
SEI-ADWiki is able to create and maintain architecture documentation in a dy-
namic and collaborative way. The basic form of knowledge in SEI-ADWiki is the
wiki page (documented AK), which provides a combination of editing and version
management tools with the advantage of open access.
6.3.2 ADkwik
ADkwik1 (Architectural Decision Knowledge Wiki) is a Web 2.0 system which sup-
ports the collaborative decision-making work of software architects [291]. Similarly
to other wikis, the users (team members) only need a Web browser to work with the
system. But still ADkwik is different from a plain standard wiki which is explained
in details below. An elaborate application of ADkwik is discussed in Chap. 12.
Supported Use Cases
6.3.2.1 View AK (UC2): users can use the navigation bar to view the AK in a dy-
namic wiki page (e.g. all dependencies to an architectural decision) using
Web 2.0 context-aware mashup techniques [17].
6.3.2.2 Trace AK (UC3): users can create and manage dependency relationships
based on the SOAD architectural decision model [346].
1 www.alphaworks.ibm.com/tech/adkwik.
98 P. Liang and P. Avgeriou
6.3.2.3 Share AK (UC4): users can share AK across project boundaries with other
users. Special attention is given to architecture decisions, which are codified
in formal AK and shared according to the SOAD model.
6.3.2.4 Reuse AK (UC7): users can reuse the AK about enterprise application
architectures contained in the architectural decision repository.
6.3.2.5 Harvest AK (generalized UC from UC8 and UC9): users can update the
AK with new decisions, experiences, patterns and rationale gathered by
both successful and failed projects. This UC concerns eliciting/capturing
AK (e.g. decisions) and distilling AK (e.g. patterns) and, therefore it is a
generalized UC from UC8 and UC9.
6.3.2.6 Search/Retrieve AK (UC18): users can search/retrieve the AK from the
tagged wiki pages.
6.3.2.7 AK versioning (UC20): users can manage different versions of the AK by
tracing the wiki changes at the page level.
6.3.2.8 Offer decision-making support (UC23): users can find and reuse appropriate
decisions in the architectural decision repository.
Special Focus
The main difference of ADkwik from other wikis is that ADkwik is an applica-
tion wiki as opposed to a plain standard wiki. It is supported by relational database
underneath whose tables are structured based on the SOAD domain model [346],
while standard wikis also have databases, but the tables are wiki pages. The AK in
ADkwik is also structured according to SOAD model to enable formal AK shar-
ing between stakeholders and projects. Consequently ADkwik combines the open
access of wikis and formal knowledge based on the underneath domain model to
provide efficient AK sharing and management.
6.3.3 ADDSS
6.3.3.3 Trace AK (UC3): users can trace architectural decisions to other elements
(e.g. Architecture, Stakeholder) based on the ADDSS architectural decision
domain model.
6.3.3.4 Share AK (UC4): users can interact and share AK through groupware sup-
port in order to check and solve their conflicts. Another solution to share
AK in ADDSS is to generate standard documents (e.g. PDF) with all the
architectural information, and send it to related stakeholders.
6.3.3.5 Elicit/Capture AK (UC8): users can capture the architectural design deci-
sions using a template that consists of mandatory and optional attributes.
6.3.3.6 Chronological view of AK (included in UC2): users can view the archi-
tectural decisions in a chronological order, to better understand the decision
making process. This is a special case of viewing AK and their relationships
and, therefore it is an included UC of UC2.
6.3.3.7 Add/Store AK (UC16): users can add/store architectural design decisions or
design patterns and architectural styles. Decisions can be described using
free text, and patterns/styles can be described using graphical and textual
description.
6.3.3.8 Search/Retrieve AK (UC18): users can query the system about related
requirements, decisions and architectures.
6.3.3.9 Offer decision-making support (UC23): users can make design decisions by
selecting well-known design patterns and architectural styles.
Special Focus
ADDSS uses a flexible approach based on a set of mandatory and optional attributes
for characterizing architectural design decisions. Hence, ADDSS provides a cus-
tomizable codification strategy that makes capturing AK more flexible. ADDSS
focuses on the evolution of AK by capturing both architecture designs and architec-
tural design decisions following an iterative process, and visualizing this evolution
over time. ADDSS also stresses on applying general knowledge (e.g. architectural
patterns).
6.3.4 Archium
The Archium3 [161, 163] aims at providing traceability among a wide range of AK
concepts such as requirements, decisions, architecture descriptions, and implemen-
tation. The tool facilitates the maintenance of this AK (e.g. resolve conflicts and
synchronize various parts) during the life cycle of a system. All these AK concepts
can be expressed in a single language: the Archium language.
Supported Use Cases
6.3.4.1 Trace AK (UC3): users can trace architectural decisions to requirements,
architectural models and implementation in the Archium language.
3 www.archium.net.
100 P. Liang and P. Avgeriou
6.3.5 AREL
The Knowledge Architect (KA) is a tool suite for capturing, using, translating,
sharing and managing AK. It is based on a common AK repository accessed by
different clients (Document Knowledge Client, Excel and Python Plug-in, Knowl-
edge Explorer and Knowledge Translator) [208]. The tool suite makes extensive use
of technologies developed for the Semantic Web to allow for formal AK manage-
ment. The Knowledge Architect is one outcome of the GRIFFIN project, discussed
in Chap. 8.
Supported Use Cases
6.3.6.1 View AK and their relationship (UC2): users can view the AK entities and
their relationships in the Knowledge Explorer.
6.3.6.2 Trace AK (UC3): users can create traceability between AK entities using
the different client tools.
6.3.6.3 Share AK (UC4): users can share AK entities with other users by storing it
centrally in the Knowledge Repository and accessing it using the various
client tools.
6.3.6.1 Elicit/Capture AK (UC8): users can elicit/capture AK by annotating archi-
tecture documents and models using the KA client tools.
6.3.6.5 Integrate AK (UC10): users can integrate various types of AK (from re-
quirements to design artifacts) into the Knowledge Repository based on a
common domain model.
6.3.6.6 Translate AK (UC12): users can perform automatic translation based on
different AK domain models through the Knowledge Translator [207].
6.3.6.7 Add/Store AK (UC16): users can save the captured (annotated) AK entities
into the Knowledge Repository through the client tools.
6.3.6.8 Edit AK (UC17): users can edit the AK entities through the client tools.
6.3.6.9 Search/Retrieve AK (UC18): users can query the AK entities and their re-
lationships in the Knowledge Repository through its Query Engine, using
the RDF query language.
6.3.6.10 Check completeness of AK (included in UC24): users can check the com-
pleteness of AK in a document (e.g. whether a Decision Topic has been
addressed by at least one Alternative) through the Document Knowledge
6 Tools and Technologies for Architecture Knowledge Management 103
6.3.7 SEURAT
In this section, we present the AKM tools that support the hybrid strategy in the
same structure as in Sect. 6.3.
6.4.1 EAGLE
EAGLE [114, 113] is an AK sharing portal that implements best practices from
knowledge management for improving AK sharing. The main features of EA-
GLE include integrated support for both codified and personalized AK, support
for stakeholder-specific content, and AK subscription and notification. EAGLE is
a result of the GRIFFIN project, discussed in Chap. 8.
6 Tools and Technologies for Architecture Knowledge Management 105
6.4.2 PAKME
6.5 Technologies
Some of the AKM tools described in the previous sections were not built from
scratch but made use of various technologies. Such technologies are generic and can
be employed to support the AKM use cases presented in Sect. 6.2. In this section, we
6 http://193.1.97.13:8080/.
6 Tools and Technologies for Architecture Knowledge Management 107
present a number of these technologies to demonstrate their value for AKM tools,
and to assist tool vendors in selecting the appropriate ones for their own needs. The
order of presenting the technologies is organized according to the type of knowl-
edge they support: Web portal, blog and wiki support the hybrid strategy, voting and
ranking support the personalization strategy, and the rest support the codification
strategy.
A Web portal [131, 319] is a Web site that provides integrated modules, like hosted
databases, yellow pages, discussion boards, news push, document management,
email and more. Web portals automatically personalize the content generated from
these modules to provide a personalized experience to users. The yellow pages mod-
ule can record the expertise area, involved projects and contact information of all the
architects in an organization, thus providing support for personalized AK sharing
(UC4). Emails, news push and discussion boards provide communication support
for AK sharing (UC4) through a collaboration space among users. News push also
supports AK changes notification (UC19) when personalized information is changed
(e.g. personnel movement).
This technology is also useful for codified AK management. The hosted cen-
tral databases and client/server architecture can facilitate AK sharing (UC4), and
Web forms can be used for tracing (UC3), eliciting/capturing (UC8), adding/storing
(UC16), and editing (UC17) AK.
Different from yellow pages, blogs and wikis are both editable Web pages by indi-
vidual users who are distributed over the network. Blogs are for single users, and
wikis are designed to enable anyone to contribute or modify content, so they both
support personalized AK sharing (UC4). For example individual users can provide
up-to-date and more reliable personal information, such as their expertise area and
personal knowledge.
As a collaborative Web editing system, wikis also support codified AK manage-
ment for both documented and formal AK. We classify the wikis as general wikis
for documented AKM (e.g. SEI-ADWiki) and semantic wikis for formal AKM
(e.g. ADkwik). Both types of wikis can support the following AKM use cases:
AK viewing (UC2) and AK traceability (UC3), adding/storing AK (UC16), editing
AK (UC17), searching/retrieving AK (UC18), user notification about AK changes
(UC19), and AK sharing (UC4). Some practical experience of applying wikis to
support AK sharing can also be found in [116].
108 P. Liang and P. Avgeriou
Generic wikis simply document AK in the wiki pages. On the other hand, seman-
tic wikis provide semantic support through formal models (e.g. semantic annotation
and semantic query of AK). In addition, wikis have also been used in requirements
engineering to support requirements knowledge management in a codification strat-
egy, e.g. for documented requirements [91] and formal requirements knowledge
[212].
Voting and ranking is a method to evaluate and rank the characteristics (e.g. cred-
ibility and reliability, etc.) of objects or people by different users in an online
community. It has been widely applied in many social networking systems (e.g.
LinkedIn) and C2C business platforms (e.g. eBay) for the evaluation and ranking of
personal information.
The personal information recorded in Web portals, wikis and yellow pages has
unavoidably personal and subjective bias (e.g. the expertise of an architect). Using
the voting and ranking mechanism can partially mitigate this problem, and provide
more credible personal information. For example ranking the expertise of different
stakeholders on a technology platform by other members of an organization helps to
create reliable “who knows what” information, and thus efficient personalized AK
sharing (UC4).
6.5.5 Ontologies
6.5.6 Plug-in
A plug-in consists of a program that connects and interacts with a host system (e.g.
a Web browser or an email client) to provide a specific function on demand. This
technology is quite beneficial for promoting AK usage through tools that archi-
tects have being working and are familiar with. Typical tools that architects use
through the architecting process include word processors for architecture documen-
tation, spreadsheets for quantitative architecture evaluation and UML modelers for
architecture design.
Examples of the tool plug-in technology include the KA Document Knowledge
Client (Word plug-in) and AREL (UML modeling tool plug-in). Both plug-ins sup-
port the following AKM use cases: Learn AK (UC1), View AK (UC2), Trace AK
(UC3), Elicit/Capture AK (UC8), Synthesize AK (UC11), Add/Store AK (UC16)
and Edit AK (UC17).
This technology concerns the management of multiple revisions of the same unit of
information. The versioning function of wikis, SVN (Subversion) and CVS (Con-
current Versions System) are typical examples of this technology. Wikis can track
the version changes at the page level. For every page, it is easy to look up earlier
versions, display the differences between two versions, and revert to an older ver-
sion. SVN and CVS provide similar functions for the version management of files
which can be used to record documented AK (e.g. Word documents) and also for-
mal AK (e.g. RDF files). AK evolves rapidly during the architecting process, and
effective version management of AK can support directly AK versioning (UC20)
and indirectly viewing the change history of AK (includes UC20).
Web 2.0 aims to enhance creativity, information sharing, collaboration and func-
tionality of the Web. Interesting techniques in Web 2.0 for codified AKM include
push and pull mechanisms, tags and context-aware mashups. Push and pull mecha-
nisms (e.g. RSS – Rich Site Summary) can be used to notify user about AK changes
(UC19) for subscribed users [114]. Tags can be used to search/retrieve AK (UC18)
for Web pages that have been tagged. Context-aware mashups can be used to view
AK and their relationships (UC2) e.g. all the inter-dependent elements of an archi-
tectural decision can be shown in a dynamic mashup Web page, which combines the
AK elements from more than one source into a single integrated Web page [17].
6 Tools and Technologies for Architecture Knowledge Management 111
6.6 Summary
For the effective usage of AK in the architecting activities, the AKM tools have
been recognized as a great contribution [7]. In this chapter, we provide a survey of
current tools and technologies with respect to the AKM strategies they adopt and the
use cases they support. We hope to help AKM tool developers in understanding the
state-of-the art and practice and get inspired in building their own tools. We expect
that depending on their specific needs and organizational context, they will mix and
match the appropriate technologies and ideas from existing tools, in order to build
customized AKM tools. We are confident that, as more AKM tools are built, more
AK will be used in practice and shared among organizations and thus contribute to
establishing AKM in the daily organizational practices.
It is noted that the following use cases, identified in Sect. 6.2, have not been
fully supported (implemented) by existing AKM tools: UC5 (Identify stakeholder),
UC11 (Synthesize AK), UC13 (Recover architectural decisions), UC14 (Evaluate
AK), UC21 (Enrich AK (semi-) automatically), and UC24 (Assess design maturity).
We regard these use cases as the future challenges, which AKM tool developers
can work on to provide more added value to existing AKM. We also believe that
some promising technologies can be the key for implementing these use cases,
such as NLP for intelligent support (advices and guidelines for making decisions)
[196], context-aware text mining for the elicitation of user interests about AK, and
ontology inferencing for the enrichment of AK.
Acknowledgements This research has been partially sponsored by the Dutch Joint Academic
and Commercial Quality Research & Development (Jacquard) program on Software Engineer-
ing Research via contract 638.001.406 GRIFFIN: a GRId For inFormatIoN about architectural
knowledge.
Chapter 7
Establishing and Managing Knowledge Sharing
Networks
Patricia Lago
Abstract This chapter gives an overview of the approaches supporting the estab-
lishment and the management of social networks aimed at knowledge sharing. We
identify two approaches. The first approach is made of networks driven by tech-
nologies and potentially providing support for architecture knowledge management,
like grid computing and peer-to-peer technologies. These were initially meant for
implementing very specific and low level services; nowadays they cover broader
spectra like knowledge management in a distributed setting and knowledge grids.
The second approach is made of networks autonomously created from already ex-
isting social communities. These are further enabled by Web 2.0 technologies and
services.
The chapter describes the approaches and their inter-relations, and it highlights
the needs for architecture knowledge management they can potentially support.
An overview of some widely known approaches in the current practice further
emphasizes which potential architecture knowledge management needs have been
actually fulfilled. In this way, we illustrate what has been already experimented
with, and what are the architecture knowledge management needs requiring further
investigation.
7.1 Introduction
Software developers are knowledge workers. They take decisions on design issues,
apply patterns, negotiate solutions, and so on. These software developers usually
do not operate in a vacuum, but are part of one or more social networks, commu-
nities of people they interact with. Such a social network may consist of just the
members of the current project, a circle of experts in a specific area, the members of
a standardization body, etc.
Patricia Lago
VU University Amsterdam, The Netherlands, e-mail: patricia@cs.vu.nl
People can always use architectural knowledge in isolation. For instance, share
their own expertise, but also consume knowledge from a shared knowledge pool.
However, when looking at the big picture, a body of knowledge is always the result
of multiple contributors; it evolves thanks to active consuming and incremental re-
finement; it implies motivation and shared interests; it should represent a real added
value to individuals and/or organizations.
To achieve the characteristics mentioned above, AKM needs the support of some
kind of networking platform, i.e. a framework enabling and supporting people and
systems to carry out activities on a network (typically the Internet). A network is
often identified with physical computer network, i.e. a group of computers inter-
connected via a physical network. In modern times, however, platforms also (and
especially) support the creation and management of virtual social networks, i.e. so-
cial structures of nodes (typically individuals or enterprises) hiding the details of
the underlying physical network and tied together by higher level relations, such as
values, friendship, vision; but also business, profession and expertise.
With this differentiation in mind, we can decouple a physical computer network
from a virtual social network. As an example, Fig. 7.1 shows an enterprise organized
in two branches (Branch A and Branch B): in each branch there is a virtual group
made of three member nodes. This example can be visualized as a virtual social
network (upper part of the figure), which hides the details of the underlying physical
computer network (in the lower part of the figure). In this chapter we specifically
focus on the upper part, the virtual social network. We discuss how peer-to-peer
networks, Grids and the Semantic Web can support social networking in the specific
context of AKM. To this end, we first explain the AKM characteristics we use for
discussion.
To discuss the suitability of the different networking platforms for AKM we use the
AKM aspects summarized in Table 7.1.
By supporting the flow (and not necessarily the storage) of information on a
network, a personalization strategy aims at sharing tacit knowledge among partici-
pants. A codification strategy, instead, helps in systematizing, storing and making
available explicit knowledge. A hybrid strategy looks for the right balance between
personalization and codification, and therefore the right mix of tacit and explicit AK.
Moreover, as we focus on networking platforms, two of the three knowledge
management schools discussed in Chap. 4 can be applied: the technocratic school
focusing on systems for knowledge codification and personalization, and the or-
ganizational school focusing on models for orchestrating knowledge sharing in
communities and enterprises.
AK types, AKM strategies and KM schools will be used to discuss the AKM
support provided by the different types of networking platforms.
first contacts the central peers to receive the list of who shares it. Thereafter, the
peer can directly connect to the peers in the list. Discovery information is quick
and efficient. Nonetheless, hybrid centralized networks have a single point of fail-
ure which makes them vulnerable to attacks. If the central server (the “center of the
star”) is down, the network collapses completely. This has been demonstrated by
the nowadays known “Napster case”, where the Records Industry forced Napster to
shut down, proving the vulnerability of the hybrid centralized network model.
In this type of network AK can be naturally managed at the central server. Both
codification and personalization strategies could be supported, in that the partic-
ipating peers could share either content or the information about their skills and
expertise. Nonetheless, in both cases the failure of the central server would make the
whole network unavailable, which makes this type of network quite unsuitable for
AKM. A kind of hybrid approach could be to use this network for codification pur-
poses only, and rely on an alternative more reliable technology for personalization,
which demands higher availability to build trust among the participants.
Purely decentralized networks (in Fig. 7.2b, also called pure P2P networks) are
distributed systems without any centralized control. All nodes are equivalent in
functionality. They are organized in a random graph and use floods to discover
contents stored by peers. Each node visited during a flood (each node chooses a
neighbor at random) evaluates the query locally on the data items that it stores. This
model does not impose any constraint on the topology or on the placement of the
shared contents. It is suitable for very dynamic communities, sharing contents with
similar characteristics and existing in multiple duplicated copies, like mass-market
data sharing applications. It cannot efficiently locate rare data items, for which a
large fraction of the network must be visited.
Extreme dynamism and freedom makes purely decentralized networks very suit-
able for implementing personalization strategies in dynamic enterprises with an
open organization culture: AK sharing mechanisms like yellow pages and expe-
rience profiles can be easily exchanged, and the drawback of temporarily discon-
nected peers has less importance than in codification strategies (who is not available
cannot help either). Still, peers can share their codified knowledge with the (maybe
positive?) effect of “taking the knowledge with them when they are not connected”.
This can create important incentives in favor of AK sharing, e.g. authorship is
automatically recognized as the shared knowledge is identified with the peer it-
self. Following the technocratic KM school, purely decentralized networks (like all
P2P networks) have been created to share contents, in this case creating distributed
knowledge bases that dynamically change in terms of both structure and available
contents. Such P2P networks also follow the organizational KM school by support-
ing dynamism, i.e. informal networks and autonomous creation of communities of
practice. Without any type of central point of control, though, poor support can be
given to important AKM aspects like architecture compliance or alignment to shared
terminology.
Partially centralized networks (in Fig. 7.2c) combine the efficiency and resilience
of centralized networks, with the dynamics of decentralized ones. They yield a
120 P. Lago
hierarchical topology made by two types of peers: the super-peers establish a back-
bone network of (centralized) index servers; they maintain the central indices for
the information shared by the peers connected to them, called leaf nodes, or simply
peers. When a new peer joins the network, it connects to a single super-peer, which
gathers and stores the information about the peer and its shared contents. Super-
peers are assigned based on certain criteria (typically bandwidth and processing
capacity). In spite of their central role, super-peers are not single points of failure:
if one of them fails, another peer will be promoted to super-peer and replace it. By
forwarding queries only to those peers that potentially provide matching contents,
super-peers significantly reduce discovery time, and overall network traffic.
Thanks to the balance between dynamism (of the peers) and centralization
(supported by the super-peers), partially centralized networks can support hybrid
AKM strategies: central information about expertise and skills, codified architec-
tural knowledge, its classification and location can be managed by the super-peers,
whereas personalization strategies can be implemented by dynamically available
peers. Moreover, super-peers can represent (sub-)communities that remain available
also when peer members are disconnected.
Looking back to Table 7.2, the majority of the P2P network models here dis-
cussed exhibit the following properties:
Dynamism. Once assigned, peer’s neighbors cannot be dynamically re-organized
to mirror the relativity of the current knowledge shared on the different nodes.
In this way, peer groups cannot mime too dynamic situations like teams of
professionals assigned to certain projects for a limited duration. Knowledge com-
munities need the dynamic reconfiguration of the peer groups driven by the
evolution of the shared knowledge.
Semantic knowledge description. Knowledge sharing is too coarse grained: con-
tents are typically shared at the “file level”, hence limiting the scope of the
searches to an external, pre-defined classification scheme. In this way, successful
sharing depends very much on having a common terminology shared among all
network members, and classification keywords that fit all their needs and well
represent the knowledge they want to share. Both preconditions are not feasi-
ble in communities spanning heterogeneous expertise, geographical boundaries,
multiple departments, or different enterprises [44].
Heterogeneity. Heterogeneity in knowledge and/or expertise is not well sup-
ported. Apart from the fact that a basic P2P principle is in the peers being all
the same, the actual contents (i.e. the semantics) of the shared knowledge is
not well described. In AKM communities architectural knowledge is typically
very variable and of diverse granularity. Hence, semantic support for knowledge
description is absolutely necessary.
To overcome these limitations, P2P networks can be combined with other ap-
proaches. Both Grids and the Semantic Web provide interesting solutions to the
shortcomings just mentioned.
7 Knowledge Sharing Networks 121
7.2.1.3 Grids
Fig. 7.3 Business grids [232]: (a) enterprise and departmental, (b) hierarchical collaborating, (c)
Virtual Enterprise Organization (VEO), (d) hosting
122 P. Lago
can be seen as “grids of grids” including smaller (or departmental) grids. De-
pending on the level of integration, enterprise grids can be organized as loose
collections of departmental grids (shown in Fig. 7.3a) or as integrated, hierarchi-
cal networks of collaborating grids (in Fig. 7.3b): the more integration, the higher
the synergistic value delivered to the whole enterprise. A clear advantage of the
latter type of integration is that departments can exchange and share their knowl-
edge still remaining within the enterprise boundaries. In the case of departmental
grids, instead, only computational resources can be shared, hence leading to a
collection of islands with no transfer of knowledge.
Communities of practice in the software architecture field can be mapped on en-
terprise grids in a quite straightforward way: they reflect departments (or project
and teams within them); the more integrated the grids, the better the AKM strate-
gies. Nonetheless, success of AK sharing depends very much on the culture of
the organization, and on the policies in place [77].
Enterprises spanning multiple countries (thus crossing multiple administrative
domains as illustrated in Fig. 7.3b) may differ in legal requirements each depart-
ment should comply with. This can have a non-negligible impact on the type
and ways knowledge can be shared, as typically occurs in large organizations
carrying out global software development with off-shored departments.
Virtual Enterprise Organizations (VEOs) occur when different organizations
(falling under different administrative domains) collaborate. In this case, the
VEO (in Fig. 7.3c) regards only a subset of the whole enterprise grid. This type
of grid can be adopted in case of partnership- or sub-contractor relationship be-
tween companies. In a partnership, VEOs have a “peer” relationship, which is
typically regulated by a combination of the policies of the partners. In a sub-
contractor relationship, the one administrative domain (the main contractor) has
priority over the other, hence imposing its policies on the VEO. This typically
means that knowledge is transferred from the supplier (fulfilling the contract) to-
wards the main contractor, and less in the other direction.
AKM examples exist for both partnerships or sub-contracting. In the first case,
AK needs to be aligned and integrated. For instance, one of the major prob-
lems when IT enterprises close partnerships or are merged, is to understand how
to integrate their knowledge. To this end, we need to capture and represent the
semantics of the shared knowledge, one of the main challenges addressed by
knowledge grids [343].
Hosting grid is an environment providing resources and/or services to customers
(Fig. 7.3d). Typical examples are computing on demand or electronic transaction
management, but can also include e.g. on-line consulting or CRM. This would
mean that the ability to provide a good service to an enterprise directly depends
on the ability of the grid itself to support sharing of knowledge in a bi-directional
way: from the hosting enterprise to the consuming enterprise – to provide the
skills and services the hosting company is payed for, and from the consumer
back to the hosting enterprise – to deliver all necessary knowledge to get the best
fitting and tailored service.
7 Knowledge Sharing Networks 123
To our knowledge, hosting has not been discussed in the literature, at least not
from a technological point of view. In our opinion, grid technologies could
offer new business opportunities, for instance to transform AK as a business asset
and offer on-line knowledge-based expertise and support through a hosting grid
connection.
Ian Foster [124], the “father” of Grid, proposed a checklist for three main Grid char-
acteristics: (1) coordination of resources/contents that are not subject to centralized
control, (2) use of standard, open, general-purpose protocols and interfaces, and (3)
delivery of non-trivial qualities of service.
The business grids discussed so far denote the specific adaptation of the grid
paradigm to the context of business applications. Business applications (like AKM
in the context of enterprises) have not been explicitly excluded from traditional Grid
environments; however, their specific nature has been most often ignored. Business
grids in general, and their use for AKM in particular, clearly feature characteristics
(2) and (3) of the Foster definition: an open standards-based approach (characteris-
tic (2)) is key for realizing a shared infrastructure spanning different administrative
domains; business applications certainly require nontrivial qualities of service (char-
acteristic (3)) due to their highly networked nature, i.e. their coexistence with other
applications and services. For instance, the knowledge grid of a global enterprise,
unifying the AK communities of practice at all sites, must ensure qualities like
security, availability, performance, just to mention some.
Coordination of resources/contents (characteristic (1)) is fulfilled in most of the
cases, even if we should distinguish between centralized control and organizational
policies. For example, whilst different IT systems even within a single enterprise
may well be controlled (managed) by the various groups that use them, there is
likely to be some central policy set upon each of these by the enterprise. In more ad-
vanced scenarios (such as, again, communities of practice that cross organizational
boundaries) even a central policy may not exist. To support this situation, decentral-
ized solutions become more attractive, like those featured by the unstructured P2P
network models discussed in Sect. 7.2.1.2.
The grid models discussed in this section are independent from the type of knowl-
edge they share, and how they do it. Moreover, the notion of grid does not prescribe
if AK is tacit or explicit, or if the applications implemented by a certain grid support
codification or personalization strategies. Rather, grids aim at supporting heteroge-
neous knowledge and hybrid strategies, and unify them in a networked matrix of
participants. Thus, P2P networks and grids mainly differ (and complement each
other) in heterogeneity: grids support heterogeneous contents and participants, P2P
networks support heterogeneous structures of similar contents and twin participants.
The Semantic Web [329] is intended to make the Web more intelligent by improving
the value of, and interactivity with, the vast amount of data on the Web. It is based
on three building blocks [117]: the Resource Description Framework (RDF) is the
124 P. Lago
basic format to describe information on the Web. On top of that, ontology languages
define the terms used to describe and represent an area of knowledge [330]. The Web
Ontology Language (OWL) can define ontologies in a standard way for them to be
compatible and hence comparable. Thirdly, inference engines analyze ontologies to
find new relations among terms and data.
The wide and fast spreading of the Semantic Web is tangible in daily life: by in-
serting a sentence in a Web browser we can be easily connected to that one-matching
web site, or suggested with amazingly fitting hits. But this is just the top of the ice-
berg: companies crowd-source their most innovative products by analyzing opinions
expressed in social networks, whereas medical research counts enormous advances
by connecting knowledge bases once isolated and nowadays merged into a richer,
global body of knowledge.
Thanks to standard ontologies and inference engines able to scan the “Web of
data”, the Semantic Web can offer advanced approaches for data integration, knowl-
edge management and decision support. This is a powerful framework usable in any
type of context, including networks of professionals and data in the field of architec-
ture knowledge [117]. Still, the integration of knowledge born in different contexts
remains a very difficult and still insufficiently addressed problem. The Semantic
Web recognizes two main approaches to translate, or match, different ontologies [5]:
Direct matching defines the relations between pairs of ontologies using solely the
information contained in those two ontologies. The resulting information de-
pends on the actual contents of the used ontologies. It is very expensive and
inefficient, as each time a new ontology is created, new ad hoc matchings must
be added. This approach seems to be applicable only in very specific contexts
where different ontologies share a large enough number of common data items.
Indirect matching uses external background knowledge to derive the matching.
The relations between two (or more) ontologies is defined in terms of a core,
shared vocabulary that acts as standard reference. This approach assumes that
the knowledge context yields some level of maturity where a core vocabulary
can be defined.
We can find back these approaches in AKM, where enterprises use different, often
similar terms to mean same concepts. For instance, Liang et al. [207] compare di-
rect and indirect matching in AK management to measure their cost-effectiveness.
The GRIFFIN Grid (discussed in Chap. 8) exploits an indirect ontology matching
approach to loosely integrate collaborating organizations in a virtual and distributed
knowledge sharing community. Much work has been done in mining existing AK
bases or bodies of knowledge to generalize and codify AK instances in formalized
ontologies.
The Semantic Web provides the technology to define ontologies (thus support-
ing a codification strategy) so that the represented knowledge can be shared by
and become interoperable for any type of knowledge communities, including AKM
communities. For this to become true, the knowledge users need to discover new
ontologies, which are not known to them before, and use them to annotate the
content and formulate their information requests. This demands for environments
7 Knowledge Sharing Networks 125
that support creating and maintaining ontologies, and sharing them in a controlled
manner.
It must be noticed that the main focus in Semantic Web is on codification of
knowledge, even if the very same mechanisms are applicable to realize personaliza-
tion strategies, for instance, to semantically relate the information shared by people
in social networks and put them into contact [248]. This is already being done in
many social networking applications like Facebook or LinkedIn.
Table 7.3 summarizes the properties of Business Grids and the Semantic Web
separately, and highlights their respective pros and cons w.r.t. the AKM aspects.
In various application domains and research communities, the literature reports
on attempts to combine these approaches to support (either implicitly or explic-
itly) knowledge communities. Here we report on some examples, with the aim to
illustrate how they can support AKM.
As discussed in Sect. 7.2.1.2, P2P networks do not account for semantic rela-
tionships amongst resources. Many surveys have been carried out to solve these
shortcomings (e.g. [6, 110, 16]), with almost equivalent solutions: the combina-
tion of P2P and the Semantic Web technology in an attempt to overcome such
limitations.
Table 7.3 AKM aspects of Business Grids and the Semantic Web
BUSINESS GRIDS SEMANTIC WEB
Summary Groups of nodes with hybrid Web of semantically annotated
characteristics. Types of business information and services, and
grids are: (hierarchical) enterprise related enabling technologies.
and departmental, VEOs, hosting Seen as one, global platform, no
grids specific organization is assumed
Dynamism (−) Possible but not explicitly (−) Possible but not explicitly
addressed addressed
Semantic (−) Possible but not explicitly (+) Semantic Web technologies are
description of addressed. AK sharing is supported especially conceived to describe
knowledge if the right business grid models and retrieve knowledge and
are chosen (e.g. VEOs enable AK associated semantics
sharing, departmental grids don’t)
Heterogeneity (+) Support both heterogeneous (+) Supports integration of any type
resources and services, and of knowledge, for both codification
heterogeneous knowledge. The and personalization AKM
latter can be used to support hybrid strategies
AKM strategies
AK type Any Any
AKM strategy Any Codification (to enable any AKM
strategy on top)
KM school Organizational Technocratic
126 P. Lago
For instance, Siebes et al. [299, 140] aim at supporting personalization strategies
in knowledge sharing. They introduced a model to semantically describe the exper-
tise of peers and how peers promote it as advertisement messages in a network, in
which a shared ontology is used. This model assumes that one ontology is shared
among all community members. This makes is very suitable for AKM communi-
ties within the same domain or practice, but less attractive for e.g. VEOs where
sub-communities need their own ontology. In the latter case, the ontology matching
problem must be solved to translate the knowledge from one ontology to another.
Works like [21, 6] realized environments that support the dynamic reconfigura-
tion of group memberships depending on the evolution in e.g. the knowledge shared
or the interests of the individuals. By sharing expertise descriptions and sending
around advertisements, AKM communities can grow and change dynamically.
An emerging trend in virtualization is Cloud Computing. Both Grid Computing
and Cloud Computing implement the more general model of Utility Comput-
ing [183]. However, while the first evolved in a scientific community as a means
to solve computationally challenging tasks, the latter focuses on Web-scale ap-
plications and services, and introduces innovative business models. By building
services on a Cloud Computing infrastructure, enterprises are suddenly granted with
potentially unlimited resources in terms of both storage, execution, services and
application logics. This way they can solve increasingly pressing issues like scal-
ability, availability, performance, flexibility, time to market; and they can realize
the promise of the Internet to offer same opportunities to e.g. large organizations
and startups. As summarized in BusinessWeek [179], “The term ‘cloud computing’
encompasses many areas of tech, including software as a service, a software dis-
tribution method pioneered by Salesforce.com about a decade ago. It also includes
newer avenues such as hardware as a service, a way to order storage and server
capacity on demand from Amazon and others. What all these cloud computing
services have in common, though, is that they are all delivered over the Internet,
on demand, from massive data centers.”. As such, Cloud Computing encompasses
many areas of technologies from software-as-a-service, to hardware-as-a-service, to
social networks or Web 2.0, further discussed in Sect. 7.3.
practice (COPs) are groups of people sharing common interests and expertise, who
arise naturally as organic networks with permeable boundaries, where people join
and leave depending on how interests evolve, or ’hot topics’ shift, over time. Such
communities are driven by the value (information, interests or practices) provided
to the members of the community. The focus is on learning.
Because communities of practice are voluntary, what makes them successful over
time is their ability to generate enough excitement, relevance, and value to attract
and engage members [336]. While teams are very efficient in producing a final
product resulting from cross-functional expertise, they may hinder cross-team in-
teraction, hence leading to isolation. COPs, in turn, can bridge this isolation gap by
cross-connecting knowledge.
This self-organization of COPs does not preclude the possibility for enterprises
to start them intentionally, and provide the right mechanisms for them to grow.
Gongla and Rizzuto [135] indicate three forces that are influential in COPs evo-
lution, namely people, processes and technology. Among the lessons learned, the
authors highlight that successful communities always grow around people who
share a common interest or expertise, and fail if, for instance, too much attention
is given to process and technology. While technologies are fundamental to support
the sharing of tacit and later of explicit knowledge, they should always be flexible to
fit the needs of the people, and adapt to their specific habits and preferences. A sim-
ilar observation has been reported by Thomas et al. [321] for virtual teams working
in global settings. While technology results absolutely crucial to effectively support
collaboration, its successful use should be regularly monitored and timely changed
if not fitting well in people’s work.
Various studies report on technologies supporting knowledge communities. Tho-
mas et al. [321] report on the top 20 technologies used in more than 20 organizations.
Next to what they call “comfort technologies” common to all organizations (audio
conferencing, email and phone) the mostly used tools are related to project- and
task management, version management and people-to-people communication (all
used in between 73% and 80%). More complicated tools like knowledge portals
and wiki’s score relatively low (55% and 7%, respectively). Technologies explicitly
mentioned in [135] include on-line directories, search engines, and yellow pages to
identify individuals and groups according to their knowledge and expertise. These
aim at supporting personalization strategies – for COPs to grow, build community
identity and trust, and to quickly link individuals on cross-functional teams with
their peers. Technologies mentioned to support codification strategies include on-
line repositories, classification and categorization schema tools, portals, and tools
for collaboration and decision-making.
The term Web 2.0 became prominent after the O’Reilly Media Web 2.0 conference
in 2004. According to O’Reilly [242], “Web 2.0 is the business revolution in the
computer industry caused by the move to the Internet as a platform, and an attempt to
understand the rules for success on that new platform.” As such, Web 2.0 represents
a paradigm shift in how people use the Web [209], introducing social more than
just technological innovation. For instance, Web 2.0 introduces open contribution
of knowledge, and its global (if not free) access. This has been a major revolution
in what enterprises always considered as industrial secret and their differentiating
factor.
Lin [209] defined this social innovation in terms of three principles that Web
2.0 technologies should support: simplicity to attract and involve common people,
scalability to ensure global access, and sensibility to report about and influence
popularity.
Though recognizing that the definition of Web 2.0 remains elusive, Clarke [70]
identifies four key aspects of Web 2.0 from a marketing perspective: syndication of
(1) content, (2) advertising, (3) storage and (4) effort. There, syndication refers to the
loose, unincorporated affiliation of people or companies, and the loose distribution
of media material. In its essence, the central aspect of Web 2.0 can be identified
in the transformation of the Web into a global platform for information sharing
(corresponding to content syndication) coupled with the ability of both individuals
and organizations to contribute new information and modify existing one. This led
7 Knowledge Sharing Networks 129
to cascading effects, like open access to any type of resources, new business models,
and new privacy and ethical concerns.
In Clarke’s classification, effort syndication is especially relevant for AKM com-
munities. He observes that individuals perceive themselves as participating to a
community, whereas their efforts and behaviour are part of an economy being
used (either officially or unofficially) for profit. The communitarian perspective
implies a fifth key aspect of Web 2.0 termed social syndication, this embracing
“cross-leveraging and collaboration of content, effort and infrastructure”.
Yakovlev [340] gives an overview of widely known Web 2.0 mechanisms that
enable the autonomous creation of virtual communities of peers. Among them we
find wiki’s (used by enterprises to aggregate input from members of various fo-
cused groups), RSS feeds (allowing community members to remain up-to-date on
selected subjects), social networking (supporting autonomous community build-
ing) and folksonomies (supporting users of a social environment in collaboratively
creating and managing tags to annotate and categorize content).
As observed by Passant et al. [248], the emergence of social networks allow to
build apparently unrelated islands of information. Semantic Web capabilities and
Web 2.0 technologies together can support detecting complex networks of relations
among these islands, hence inferring new knowledge.
7.3.2.2 Wiki’s
First created in 1994 (WikiWikiWeb), wiki systems’ initial goal was to give people
the ability to quickly put content on the Web. While very much used in private
communities within enterprises, wiki’s were meant for the general public – to
gather content bottom-up, delegate control on content to its contributors and reach
consensus.
O’Leary [240] describes the pros and cons of wiki systems in making tacit knowl-
edge explicit. By making available information about contributors, wiki’s can link
people with common interests. They are very suitable to describe best practices, and
gather and structure information like vocabularies and taxonomies. On the other
hand, wiki’s typically lack referees or peer reviews, fact that can lead to inaccu-
rate information. Nonetheless, some limitations are mitigated by more advanced
features, like the ability to control changes by alerting the original contributors
or people interested in a particular subject, and by categorizing contributors by
reliability or level of expertise.
Semantic wiki’s combine wiki’s properties, such as ease of use, collaboration,
and linking, with Semantic Web technologies, such as structured content, knowl-
edge models in the form of ontologies, and reasoning. They offer simple ways to
semantically annotating information, seamless semantic search, and extraction of
metadata from contents like articles and documents.
Recently, wiki’s are being increasingly used as knowledge management tools.
As reported in [274], a weakness of normal wiki’s is that knowledge is easy to
create but increasingly difficult to retrieve. Semantic wiki’s provide a solution to
130 P. Lago
this problem, by allowing its uses to easily enrich the captured knowledge, and
further instantly benefit from the unavoidable additional effort. Several European
Union projects investigated knowledge management in semantic wiki’s [www.kiwi-
project.eu, nepomuk.semanticdesktop.org].
AKM demands for a mix of generic and domain specific features. Farenhorst
and van Vliet [116] observed that wiki’s can be very supportive to the architecting
process. Nonetheless, in their list of do’s and dont’s, very little turns to be specific
to architectural knowledge, and the main strengths of using wiki’s resulted to be
their support for a central storage place for any type of information and its use for
connecting people. In comparing the existing AKM tools, they further identify a
main advantage shared by all of them, namely their use of a tailored database and
underlying knowledge model that support well knowledge retrieval. Wiki’s are weak
in this respect: simplicity is indeed at the cost of efficiency. Nonetheless, semantic
wiki’s might have been solved this issue.
A different though successful approach based on wiki’s is discussed in Chap. 12
where the focus is purely on supporting AK codification and sharing.
7.4 Summary
sharing social networks seem mature enough for use in the practice, we feel that
they are still largely unexplored in their combination, and full potential.
Acknowledgements We would like to thank Frank van Harmelen and Maarten van Steen for their
helpful comments.
This research has been partially sponsored by the Dutch Joint Academic and Commercial Qual-
ity Research and Development (Jacquard) program on Software Engineering Research via contract
638.001.406 GRIFFIN: a GRId For inFormatIoN about architectural knowledge; and by the Euro-
pean Community FP7 grant agreement 215483 Software Services and Systems (S-Cube) Network
of Excellence.
Chapter 8
The GRIFFIN Project: Lessons Learned
Hans van Vliet, Paris Avgeriou, Remco C. de Boer, Viktor Clerc, Rik Farenhorst,
Anton Jansen, and Patricia Lago
8.1 Introduction
Hans van Vliet (B), Remco C. de Boer, Viktor Clerc, Rik Farenhorst, and Patricia Lago
VU University Amsterdam, The Netherlands, e-mail: [hans,remco,viktor,rik,patricia]@cs.vu.nl
Paris Avgeriou and Anton Jansen
University of Groningen, The Netherlands, e-mail: paris@cs.rug.nl,gradius@fmf.nl
The GRIFFIN project develops notations, tools and associated methods to ex-
tract, represent and use architectural knowledge that currently is not documented or
represented in the system. In GRIFFIN, Architectural Knowledge is defined as the
integrated representation of the software architecture of a software-intensive sys-
tem) or a family of systems), the architectural design decisions, and the external
context/environment.
GRIFFIN was partly inspired by earlier research we carried out in design space
analysis. In [57], we analyzed the complete design space of an electronic commerce
system. In the end, three feasible solutions remained. For each of these feasible so-
lutions, trade-offs had to be made, and certain requirements had to be relaxed on the
way to the final solutions. After the exercise, we confronted an experienced archi-
tect in the domain of electronic commerce with our analysis. He told us he knew
these three solutions existed. But he also told us he did not (anymore) know of the
trade-offs made on the way to these solutions. This architectural knowledge had
apparently vaporized. This is typical for many a software development processes.
Architectural knowledge is like material floating in a pond. When not touched for
a while, it sinks and disappears from sight. The original goal of the GRIFFIN
project was to make this architectural knowledge explicit as much as possible, to
prevent it from getting out of sight. Paraphrasing [327], this can be summarized
as “What architects know, and how they know it”. In the next sections, we give
an overview of the case studies carried out and the results obtained, and conclude
with lessons learned w.r.t.software architecture knowledge management. In terms
of the classification given in Chap. 2, our research fits the decision-centric view on
software architectural knowledge, with specific attention to three of the four trends
mentioned in Sect. 2.4: Sharing architectural knowledge, Aligning architecting with
requirements engineering, and Intelligent support for architecting.
In the first year of the project, we tried to characterize the use of architectural knowl-
edge in the Netherlands at that time. We devised a model of architectural knowledge,
an abstract conceptualization of the architectural knowledge domain, and applied
this model to various participating organizations. We also constructed a series of
use cases for architectural knowledge, and performed survey-based research to get
insight in the way practitioners view and use architectural knowledge.
Our initial model of architectural knowledge was based on existing literature and our
own insights and ideas. We next tried to map actual usage of architectural knowledge
8 GRIFFIN Project: Lessons Learned 139
in four participating organizations onto this model. These four organization can be
described as follows:
• RFA, a large software development organization, responsible for development and
maintenance of systems for among others the public sector.
• VCL, a large, multi-site consumer electronics organization where embedded
software is developed in a distributed setting.
• RDB, an SME performing independent software product audits for third parties.
• PAV, a large scientific organization that has to deal with software development
projects spanning a long time frame (up to a period of more than ten years).
The initial model exhibited a number of mismatches between our theory and indus-
trial practice. The initial model highly conformed to the IEEE-1471 standard for
architectural description [155]. IEEE-1471 prescribes the use of so-called ‘View-
points to describe the architecture from the perspective of different stakeholders.
The resulting ‘Views (partial descriptions of the architecture) are aggregated in a
single architecture description. Although stakeholders and their concerns play a key
role in any software architecting process, the tight coupling of the model to IEEE-
1471’s Views and Viewpoints turned out to be a mismatch with most organizations
practice. In hindsight this need not come as a big surprise, since organizations can
(and do) use other approaches for documenting their architectures, which need not
coincide with the IEEE-1471 way.
From a closer inspection of the mismatching concepts we learned that those con-
cepts could either be expressed in terms of other concepts already present in the
model, or as more generic concepts that are used by the organizations. We therefore
constructed a new model of architectural knowledge that is both minimalistic and
complete. We regard a model as complete if there are no concepts from other ap-
proaches that have no counterpart in the model. With ‘minimalistic we signify the
feature that it should not be possible to express some concepts from the model in
any other concepts from the model. Based on these insights we modified the initial
model to obtain a model that is both complete and minimalistic. Because of this
latter feature, we refer to our model as a core model of architectural knowledge;
elements that can be modeled in terms of core elements do not belong to the core.
Our core model of architectural knowledge is depicted in Fig. 8.1. As a result
of the minimalistic aspect of this model, the core model leaves room for the use of
different architecture description methods, including IEEE-1471. In our core model
of architectural knowledge, the concepts of Stakeholder and Concern coincide with
the, widely accepted, definitions of these terms in IEEE-1471: a stakeholder is “an
individual, team, or organization (or classes thereof) with interests in, or concerns
relative to, a system” [155]. Both IEEE-1471 concepts of Architectural Model and
View are subsumed in our notion of Artifact, i.e. an inanimate information bearer
such as a document, source code, or a chapter in a book. Storing or describing the
Architectural Design in either of these artifacts can be abstracted to a single ac-
tion to reflect. The Architectural Design can be reflected using different Languages,
including models, figures, programming languages, and plain English.
140 H. van Vliet et al.
action attribute
element subclass
*
instantiation 1..* cardinality 1
in Artifact Stakeholder
participation 1..*
legend
* * 1
to produce
to reflect
1..*
to use
Language using
1 in * *
to assume Architectural
on Activity Role
influence 1 Design
1 * 1..*
1 upon
in
Architectural 1 to perform
to enforce
Design Decision
*
Decision Concern
1 1..*
Architectural Design Decisions are defined as those Decisions that are assumed
to influence the Architectural Design and can be enforced upon this Architectural
Design, possibly leading to new Concerns that result in a need for taking sub-
sequent decisions. This decision loop captures the relations between subsequent
Architectural Design Decisions. This loop also corresponds to the divide and con-
quer technique of decision making, in which broadly scoped decisions are taken
which may result in finer grained concerns related to the broader concern. It also
mimics the feedback loop identified in [146].
Although the original model did not entirely fit all organizations, diagnosis of the
use of architectural knowledge in those organizations at least showed that each of
the organizations has its own perspective on architecture knowledge management,
resulting in different issues at each of the organizations. The central issue within
RFA was how to share architectural knowledge between stakeholders of a project.
The main question within VCL was how compliance with architectural rules can
be enforced in this multi-site environment. RDB was mainly concerned with how
auditors can discover the architectural knowledge they need to do a proper audit.
The main challenge for PAV was how to improve traceability of its architectural
knowledge. While the mismatches between theory and practice still prevented us
from pinpointing the exact areas of improvement, at least we had an idea where to
search for those areas in a next research iteration. These insights provided the basis
for the subsequent research in each of these areas, as discussed in Sects. 8.3–8.6.
More details about the core model as well as the mapping of architectural knowledge
use of the four participating organizations onto this model can be found in [44].
Another use of the core model of architectural knowledge is as a common vocab-
ulary for different organizations. The architectural knowledge of each organization
remains expressed in its own terminology, and the core model is used as a shared,
reference standard defining the mapping between different knowledge concepts. In
our vision, organizations can collaborate on the Web in a grid-like configuration of
connected sites, forming a virtual community. In this scenario, the AK mapping via
the core model can be used to integrate the services shared on the grid, and therefore
facilitate further AK sharing, and collaboration.
Our research into sharing architectural knowledge took place in a large software
development organization, responsible for the development and maintenance of sys-
tems for among others the public sector, termed RFA in Sect. 8.2.1. We started from
the premise that architectural knowledge sharing is best supported by codifying this
knowledge in terms of our core model. In our first case study in RFA, we found that
stakeholders will only share knowledge if the necessary incentives are created [115].
We continued this line of reasoning in a second case study, resulting in a hybrid
codification/personalization knowledge management strategy [114], allowing for a
8 GRIFFIN Project: Lessons Learned 145
The research within RDB, an SME performing independent software product audits
for third parties, started from a very real problem: how to find and comprehend the
architectural knowledge that resides in software product documentation [45]. This in
turn led to investigating further “ontological” problems: how is architectural knowl-
edge, in particular design decisions, related to evaluation criteria that auditors use
when searching for relevant information. We noted a remarkable similarity between
architectural decisions and requirements [46].
Auditors have three major questions regarding software product documentation
and the architectural knowledge contained in it. These three questions are:
1. Where should I start reading?
2. Which documents should I consult for more information on a particular architec-
tural topic?
3. How should I progress reading? In other words, what is a useful ’route’ through
the documentation to gain a sufficient level of architectural knowledge?
Auditors who perform a software product audit would greatly benefit from tools and
techniques that can direct them to relevant architectural knowledge. We refer to the
goal of such tools and techniques as ‘Architectural Knowledge Discovery’. A core
capability of Architectural Knowledge Discovery is the ability to grasp the semantic
structure, or meaning, of the software product documentation. Employing this struc-
ture transforms the set of individual texts into a collection that contains architectural
knowledge elements and the intrinsic relations between them. A technique we de-
ployed to support the discovery of directions to relevant architectural knowledge is
Latent Semantic Analysis (LSA) [205].
In [45], we describe the application of LSA to an example audit case involving 80
documents. The case concerns the reconstruction of the early phase of the software
148 H. van Vliet et al.
product audit, in which the auditors need to attain a global understanding of the
software product in order to further assess its quality.
In general, when auditors commence a software product audit they want to gain
an initial, high-level understanding of the software product. This global understand-
ing is necessary to successfully perform the audit, since it is a prerequisite for
subsequent audit activities. For instance, in scenario analyses the supplier of the
software product is asked how the product reacts to certain change scenarios or fail-
ure scenarios. In order to judge the answer the supplier provides, an auditor needs
to have a thorough understanding of the software product. Otherwise, the supplier
might provide an answer that is incomplete or inconsistent with the real state of the
product, without this being noticed.
Auditors who want to attain overall comprehension of the software product can
be guided through the documentation using the semantic structure discovered by
LSA. A route that is preferred by all auditors we interviewed is to start with high-
level, global information and gradually descend to texts that contain more detailed
and fine-grained information. A single term that can be expected to cover the high-
level information about the software product well is the term ‘architecture’. By using
LSA in combination with ‘architecture’ as the term of interest, we were able to iden-
tify a 2-page fact sheet that contained a condensed architectural overview, without
ever using the word ‘architecture’ itself.
Since we were investigating the use and findability of architectural knowledge in
quality audits, it was almost inevitable that we ran into the question of the nature of
architectural knowledge in this context. A quality audit is different from a ‘normal’
forward-engineering situation in that auditors will form an opinion about the actual
state of the software product and compare that with their opinion on what this state
should be. It became obvious to us that in this way auditors take ‘virtual’ architec-
tural decisions which they compare with the actual architectural decisions taken for
the software product.
Since the auditor’s virtual architectural decisions form a baseline for compari-
son, they are often referred to as evaluation criteria. Given their status as things that
should be present, one could alternatively refer to them as (architectural) require-
ments, albeit requirements with a different origin than the client. This, in turn, led to
a more general investigation of the relation between requirements and architecture.
Although many would agree that there is some relation between architecture and
requirements, the conventional view is that requirements and architecture belong to
different domains. From our investigation, we believe that this view may be false.
That, metaphorically speaking, architecturally significant requirements and archi-
tectural design decisions accumulate in some kind of a ‘magic well’. Observers
peering into the well see what they wish for. People wishing to find architecturally
significant requirements will see architecturally significant requirements; people
looking for architectural design decisions will find architectural design decisions.
Currently, the challenges in requirements management and architecture knowl-
edge management are approached as if there are two separate ‘information wells’.
Both communities perform research on comparable challenges without paying
too much attention to what the others are doing. A focus on architectural design
8 GRIFFIN Project: Lessons Learned 149
too abstract and did not always understand these rules. We studied the organiza-
tion to identify reasons for these problems. Our research, described in [77], learned
that root cause of these problems was not the description of the rules, but the pro-
cess by which these rules were developed and subsequently communicated across
the development sites. The major improvements included ongoing communica-
tion between the central team and the various development sites, implementing
compliance verification and explicitly registering deviations from the architectural
rules.
To further substantiate these results, we next researched the contribution of ar-
chitectural knowledge (architectural rules in particular) to overcome the challenges
experienced in global software development. We compared VCL with another or-
ganization (ABC) involved in global software development. Whereas VCL focuses
on the formulation of rules pertaining to the architecture of the product, ABC fo-
cuses on rules and measures regarding the architecture process. Our research showed
that some of the challenges of global software development cannot be addressed
by product-based rules alone. In addition, measures in the process are necessary to
overcome cultural and team-collaboration challenges experienced in global software
development [77].
Reflecting on the research performed and the literature on global software de-
velopment, we concluded that, based on the differences that exist, there is no
one-size-fits-all software development process that addresses all challenges involved
in global software development. Consequently, we shifted our focus towards the
identification of a set of practices related to the management of architectural knowl-
edge to overcome specific issues. These practices can be incorporated in existing
software development methodologies.
We collected a set of practices [75], and characterized these practices by, among
others, determining the strategy towards knowledge management supported by
these practices (i.e., a personalization strategy or a codification strategy, follow-
ing [143, 92]). Examples of practices include frequent traveling of key individuals,
conducting a shared kick-off meeting in which principles of the software architec-
ture are exchanged, and different forms of frequent communication across develop-
ment sites. We performed a large-scale validation of these practices at an industrial
partner that joined the GRIFFIN project (VCL2). This organization has a number
of software development centers at different locations and focuses on improving its
capabilities by using architecture knowledge management efficiently across these
locations. For the validation, we conducted a large empirical study aimed at estab-
lishing a baseline of the current architecting practice. As a part of this case study
we validated our set of practices for architecture knowledge management with the
architects of VCL2. We learned, among others, that practices that focus on a per-
sonalization strategy for architecture knowledge management are preferred over
practices that support a codification strategy.
In future research, we intend to augment these practices by delving architec-
ture knowledge management practices from a series of global software development
projects on which independent software products audits have been performed.
8 GRIFFIN Project: Lessons Learned 151
At first glance, providing traceability addresses both these questions. Firstly, trace-
ability should make architectural analysis more transparent by offering an explicit
traceable reasoning path between the different analysis models. Secondly, provid-
ing traceability both within and between documents makes relationships between
documents explicit. This is very much in line with the knowledge management per-
spective, which requires to make both the knowledge entities and their relationships
explicit.
We have come up with an approach towards AK traceability that is based on
codifying AK and particularly emphasizes the relationships. The approach, called
the Knowledge Architect, consists of a method and a supporting tool suite. The
method consists of the following six different activities:
1. Identify knowledge management issues. In this activity, we identify the deeper
AK management issues an organization is facing. In the case of PAV, the need of
making the architectural analysis more transparent is derived from the fact that
current analysis results are not widely understandable. The need of knowing how
architectural documents relate comes from the issue that PAV is uncertain with
respect to the maturity of its design, i.e. is the design complete, consistent, and
correct enough to be built and fulfill the requirements?
2. Derive a domain model. This activity aims at identifying the actual AK entities
that can help in dealing with the issues mentioned in the aforementioned activity.
We formalize this knowledge with the help of ontologies [18]. For PAV, this
means that we identify what AK is important to know and to relate for making a
152 H. van Vliet et al.
quantitative analysis transparent (see [164] for an in-depth description), and for
inter-relating architecture documents (see [160]). In both cases emphasis is put
on making this knowledge traceable.
3. Capture AK. Once the AK and its relationships are made explicit, we capture
this AK using a codification approach, thereby creating the missing traceability.
The supporting tool suite offers several tools that use the ontology of the derived
model to assist a stakeholder with capturing relevant AK. To decrease the bur-
den on the stakeholders, these tools are integrated in a non-intrusive way with
the tools in which the AK is created and also provide some automated support.
For quantitative analysis, we have developed two analysis model tools, one for
Python, and one for Excel [164]. We have applied and validated these two tools
during architecture analysis at PAV concerning performance and cost models. For
relating documents, the suite incorporates the Document Knowledge Client, a
plug-in for Microsoft Word [160]. Similarly, we have applied this plug-in on soft-
ware architecture document and validated it within the purpose of architecture
evaluation activities.
4. Use AK. Once the AK and its relationships have become explicit and therefore
traceable, it may be used to address the identified knowledge management issues
identified in the first activity. Typically, this involves specialized visualizations
to highlight concrete issues. For example, the Document Knowledge Client can
colour pieces of text in a document that require further elaboration, when the AK
is incomplete, inconsistent, or incorrect. Another example are the dependency
graphs rendered by the analysis model tools that allows system analysts in PAV to
identify the inter-dependencies between the system parameters of their analysis
models that influence the design space.
5. Integrate AK. Typically, AK is described in various forms and is captured by
different tools. To have a complete perspective on the software architecture, the
Knowledge Architect uses a central AK repository to integrate the AK of various
knowledge sources, e.g. Word, Excel, Python, Excel, etc. Since AK might come
from different organizations, each having their own specific domain model, this
repository supports ontology mappings. Using these mappings, the AK of dif-
ferent sources can be integrated to form a single overall traceable picture of the
architecture. We have developed various models to predict the quality and costs
of such mappings (see [206, 207]).
6. Evolve AK. AK constantly evolves over the life-time of a system and this evolu-
tion also needs to be explicit. The Knowledge Architect tool suite supports the
documentation of the AK evolution in two ways. Firstly, the central AK reposi-
tory offers versioning of the AK in the central AK repository, thereby making the
history of AK traceable. Secondly, the repository will be integrated with a SCM
to have a traceable co-evolution with the artifacts the AK originates from.
In the future, we want to explore two activities in more depth: evolving and integrat-
ing AK. Firstly, we would like to investigate in real life cases how the AK evolves
over time. Can we perhaps identify patterns in this evolution and strategies to deal
with this evolution? Secondly, regarding AK integration, we would like to know to
8 GRIFFIN Project: Lessons Learned 153
what extent and under which conditions our predictions of the cost and quality of
AK integration hold.
8.8 Summary
In the GRIFFIN project, we have carried out a number of case studies within partic-
ipating industries. The close collaboration between research and industry has given
us a number of important insights in what works and what doesn’t in software
architecture knowledge management:
• Different industrial domains have different knowledge models, and we need an
infrastructure that deals with that.
• Software architects are not likely to (extensively) codify their knowledge of and
by themselves.
• Effective software architecture knowledge management follows a hybrid knowl-
edge management strategy.
• Software architecture knowledge management needs support of lightweight, just-
in-time, tools.
It is an illusion to try to coerce different organizations, or even different groups
within the same organization, into adopting the same domain structure and termi-
nology. Our core model, as discussed in Sect. 8.2.1 can act as an “esperanto” to
allow for a mapping between different local vocabularies. This core model can then
be used to share architectural knowledge in a grid-like configuration.
Software architects are busy people. It is their job to find, negotiate, and imple-
ment solutions. It is not their job to codify knowledge. At best, we may expect them
to partially codify their knowledge. If we deem it important to support software ar-
chitects in the management of their knowledge, such support of necessity has to be
able to deal with incomplete information, such as a design decision without a ratio-
nale, or a decision topic with a very incomplete set of design alternatives. To stretch
the idea even further, it would be advantageous to be able to mine architectural
knowledge from “normal” artifacts produced by architects.
Many knowledge management initiatives start with the idea to codify knowledge.
We did too, and learned that this is not the best way to go. Part of the knowledge
of software architects will remain tacit, and in circumstances we must be able to
find the right person, instead of the right document. Software architecture knowl-
edge management therefore should follow a hybrid strategy, incorporating both
codification and personalization.
Finally, software architecture knowledge management can successfully be sup-
ported by a wide variety of tools. In order to be used at all, these tools should be easy
to learn, and fit the daily practice of the architects. If such tools have a steep learning
curve, they are not likely to be used. Since architects are already overwhelmed with
information, the tools should lead them to the right information at the right time.
Acknowledgements This research has been partially sponsored by the Dutch Joint Academic
and Commercial Quality Research and Development (Jacquard) program on Software Engineer-
ing Research via contract 638.001.406 GRIFFIN: a GRId For inFormatIoN about architectural
knowledge.
Chapter 9
Software Architecture Design Reasoning
9.1 Introduction
Software architects make a series of design decisions when designing system archi-
tecture. Despite the need to make correct architectural design decisions, architects
often omit to provide design rationale or justifications for their design decisions.
Software architects instead focus on creating design outcomes. Presently there are
no commonly accepted practices in the industry to carry out systematic design rea-
soning, architects often rely on their experience and intuition when making design
decisions. Such an unstructured decision making approach has certain implications
on design quality, experienced architects are more likely to make better design deci-
sions. On the other hand, inexperienced designers may not design as well. This case
designing their solutions. This contrasts with the participants of the control group
who largely used intuition and knowledge to design. The control group’s objec-
tive was to complete the design and satisfy the requirements without having to
justify them. Other studies have also shown that design rationale documentation
helps designers understand and reason about their design [51, 171].
A well-designed architecture should be justifiable through sound and logical
design rationale. The design reasoning process ought to consider all relevant ar-
chitecture requirements, address the design issues, consider trade-offs between the
design options before deciding on the outcomes. The explicit representation of
this tacit knowledge serves many purposes in the development life cycle such as
review and maintenance. Table 9.1 summarizes the purposes for having such a
rationale-based architectural design approach.
Back in 1958, it was suggested that argumentation could be used to induce con-
clusions from contextual data [323]. This approach explicitly represents the design
deliberation process. One of the characteristics is that they model as links the rela-
tionships between design goals and design results. Examples include Issue-Based
Information System (IBIS), Decision Representation Language (DRL), and Ques-
tions, Options and Criteria (QOC) [228]. Unfortunately, these methods have not
been successful in practice because of their difficulties in capturing and communi-
cating design rationale [298, 200].
Another approach is to use templates to aid design reasoning capture, including
[71] and [325]. Such an approach is beginning to receive attention in the indus-
try as practitioners recognize the importance of recording design reasoning. UML
CASE tools such as Rational Rose and Enterprise Architect1 provide some easy-
to-use facilities to capture design rationale. Although template-based methods can
capture design rationale, they provide limited support to relate the contexts of design
decisions.
In order to make design reasoning easy to adopt by software development orga-
nizations without losing the design reasoning capabilities of argumentation-based
methods, we have developed AREL as a hybrid approach that incorporates de-
sign rationale template and design reasoning relationships based on these previous
works [71, 228, 325]. AREL has been designed to capture useful design reasoning
information with minimal documentation overheads.
the design. Without the inputs, we would miss out on the contextual information
that tells us why we need the design. Without the design decisions, we may not
understand the justifications or reasons for choosing a design. Therefore, in model-
ing design reasoning, we need to depict the causal relationships between the design
inputs, design decisions and design outputs. We suggest that this relationship is a
simple causal relationship between the causes of a design and the effects of a design.
9 Software Architecture Design Reasoning 159
In this way, design reasoning is modeled by a description of the design context, the
design justification, the design outcome and their causal relationships.
IEEE-1471-2000 specifies that architectural rationale should provide the evi-
dence for the consideration of alternative architectural concepts and the rationale
for the choices made. It is a general guideline that does not provide much detail
to help implement a design reasoning model. In a discussion session on updating
IEEE-1471, some refinements have been suggested to overcome this issue [23].
AREL captures both the design rationale and the design model, which is real-
ized through a UML tool, Enterprise Architect (EA). The design model includes
architecturally significant requirements and the actual architecture design. AREL
supports the association between the design model and the design rationale of its
design decisions. The AREL model is based on the reasoning model described ear-
lier: (a) design concerns raise a design decision, (b) design decision captures design
issues and design rationale; (c) the design outcomes are the results of a design
decision.
Figure 9.1 shows the conceptual model of AREL. Design concerns such as re-
quirements cause the need for design decisions to be made. When a design decision
is made, it is justified by its design rationale. To make a design decision, differ-
ent design options may be considered, these alternative designs can help architects
consider their relative pros and cons. When a design decision is finally made, there
would be a chosen design and may be some alternative designs. Alternative de-
signs are those design options that have been considered but discarded. Alternative
designs are important because they are evidence to show that the designers have
considered more than one design options before making a design decision, they also
show the reasons why these alternatives are not as appropriate as the chosen design.
A chosen design element is a UML entity to model the design, e.g. class, com-
ponent or database table. Each design element can influence other parts of a system
due to its behavior or constraints. These design elements will in turn become design
concerns that influence other parts of a design. For instance, using AJAX to con-
struct web pages creates a consequential issue of having to handle the web browser’s
BACK button. AJAX being part of the solution space therefore becomes a part of the
problem space, i.e. a new design concern. Such design consequences could trigger
a chain of interdependent designs and design decisions.
Design Concerns
Attribute: Design Design Decision Design Options
constraint
Chosen Alternative
Design Design
Design decisions can sometimes be made without applying any systematic reason-
ing or documenting their justifications. Making appropriate design decisions by
intuition relies on the abilities and experience of the designer; making design deci-
sions through systematic reasoning, on the other hand, requires explicit justification
using design rationale. Documenting design rationale for the entire system can be
9 Software Architecture Design Reasoning 161
very costly and probably unnecessary, and so we focus on architectural issues that
are often complex, intertwining and require much investigation.
Design rationale is the reasons for choosing a particular design from a range
of alternatives at a decision point. To do so, we must first articulate the design is-
sues to resolve. An issue may simply be designing to satisfy some design concerns.
For instance, what data do I need to show in the user interface? More often than
not in architectural design, issues are more complicated because of conflicting and
competing influences from different design concerns such as quality requirements.
For instance, how do I retrieve the data securely and maintain system performance?
There may be more than one possible solution. Design rationale therefore helps
the reasoning process and captures the justifications for selecting a solution. It ex-
plains why a design is better than the other alternatives. AREL uses qualitative and
quantitative design rationale to capture such justifications (see Table 9.3).
Qualitative design rationale supports design reasoning by way of arguments.
Architects may document the justifications of a decision by arguing the relative ad-
vantages and disadvantages of different design options, or using a trade-off analysis
method such as ATAM [34]. Quantitative design rationale records the relative costs,
benefits and risks of a design option using ordinal numbers, between 1 (the lowest)
and 10 (the highest). The main reasons for capturing quantitative rationale are to
allow a quantifiable comparison between alternative design options, and enable ar-
chitects to highlight risky or costly decisions that need to be investigated further. For
example, if the implementation risk is high, architects may continue to decompose
the architecture through a series of decisions until the risk becomes manageable
[315].
162 A. Tang and H. van Vliet
The result of a design decision would be some chosen designs that are a part of
the total solution. This chosen design either realizes the requirements of a system,
or it provides some design structures that are used in realizing the requirements.
The design outcomes can be any design artifacts, example are architectural model,
database models, design components and classes.
A chosen design outcome may influence another part of a solution and as such it
becomes a design concern to a new decision, as we have seen in the AJAX example
earlier. Since a design outcome can associate with other decisions through the causal
relationship, it is possible to have a graph that consists of a chain of relationships
that connect design concerns, decisions and design outcomes.
AREL is a model which defines the information used in design reasoning, it un-
derpins the software architecture design reasoning process described here. Design
methods such as the waterfall method, iterative method or agile method focus on
the organization of events and teams in software development; technology based
methods such as object-oriented analysis and design focus on modeling techniques
that produce specific design artifacts. A reasoning based design method, however,
has a different perspective – the focus is on using reasoning to create and justify
design decisions made for architectural design. The considerations used in a design
reasoning approach are therefore broader and not just focusing to producing de-
sign artifacts. The design reasoning approach is not meant to replace other design
methods, but rather it adds a new dimension to designing software architecture to
complement existing design methods.
The architectural life-cycle described by [146] comprises three distinct activities:
architectural analysis, architectural synthesis and architectural evaluation. Archi-
tectural synthesis is the design activity in this architectural life-cycle. The design
reasoning process described in this chapter primarily addresses the architectural syn-
thesis activity but it also covers architectural analysis and evaluation. The shaded
area in Fig. 9.2a shows the scope of the design reasoning process with respect to
the architectural activities described in [146]. The architectural design reasoning
process spans across architectural synthesis and the other activities because design
reasoning would involve analysis as well as evaluation.
Chapter 1 describes architectural design as a problem-solving activity, the design
workflow consists of three activities: requirements gathering, backlog creation and
design evaluation. Creating backlog is an important activity in which architects ar-
ticulate what design problems are there to be solved. It requires design context and
requirements as inputs for defining the design problems in the backlog. All three
activities require design reasoning support (shaded area in Fig. 9.2b).
9 Software Architecture Design Reasoning 163
(a)
(b)
Fig. 9.2 (a) and (b) Design reasoning coverage at two levels of architectural design
Design is a cognitive activity that requires the architects to organize, induce and
assimilate different kinds of information. Early work has indicated that this cog-
nitive process can differ between architects where experienced architects generally
use a better design approach, and therefore yielding better results [318]. As such, it
would be advantageous to investigate into design reasoning strategies, making them
explicit so that there is a systematic approach to considering design problems. A
conceptual model for design decision has been suggested by [162] where they de-
scribe the architecting process, however key activities that are required to support
this model have not been articulated.
In order to address the design reasoning gap in software architecture, our starting
point is to make use of the causal relationships between design concerns, design
decisions and design outcomes. We suggest to take five steps in the design reasoning
process. The five steps (i.e. step 1–5) are depicted by the numbered arrows between
the entities (Fig. 9.3). The arrows indicate the design reasoning steps, and they can
be repeated for a design. By connecting AREL entities that are causally related,
designers can trace the causes and effects of those design decisions. These 5 design
reasoning steps are performed repeatedly to decompose the design and create design
details, shown by the layers of decisions in Fig. 9.3.
164 A. Tang and H. van Vliet
The results of the design reasoning process are captured, i.e. design decisions,
design rationale, design outcomes and their relationships. Figure 9.3 shows the
relationships between these entities in an AREL model.
[172], or eliciting architectural issues for design synthesis [85]. The graphical
modeling of the causal relationships between design concerns and design de-
cisions in AREL enables architects to visually relate them for inspection and
traceability. Current practice in the industry requires an architect to have the
knowledge and experience to associate related design concerns, and they often
do that from a set of textual specifications. It is therefore easy to omit a de-
sign issue where interrelated design concerns should be considered in a design
scenario.
How does one know that certain design concerns must be considered together
to form a design topic? This is essentially asking how an architect knows what
to design. There are two possibilities: Firstly, a software architect would have
certain basic knowledge and understanding of the design principles for associat-
ing related design concerns; secondly, architectural design knowledge can assist
architects by showing general design concern associations with design topics.
A design decision can trigger a chain of subsequent decisions, and typically it
is for deciding how to further design the system. For instance, the layering of
software components might be a high-level decision to group related compo-
nents together, and follow-on decisions are required to define common interfaces
between software layers.
So how deep should the design reasoning process go before an architect is satis-
fied? This is a question related to how much details is enough in an architectural
design to enable detailed design and development. We address this issue by em-
ploying a risk mitigation strategy. Architects are required to estimate the risk of
implementing a design. If the risk is low, it means that the architect is confident
that the design contains sufficient details, otherwise the architect needs to further
explore the design [315].
3. Identifying Design Options. An important aspect of design reasoning is to iden-
tify possible design options. This is a key step in synthesizing a design. It requires
an architect to have sufficient knowledge of the problem and certain creativity in
deriving potential solutions. This can come from understanding the relevant first
principles of design, having some design experience and so on.
In a study [318], it has been observed that architects and designers tend to bias
towards the first impression of a design. For participants who were involved in
a test procedure to use a design reasoning process, it has been observed that
they would modify their initial design after they consider alternative design op-
tions. On the other hand, designers who do not use a design reasoning process,
especially for the inexperienced designers, the first impression of a design usu-
ally becomes the final design. This observation implies that designers who can
identify and consider alternative design options can improve the design quality.
4. Evaluating Design Options. At each decision point, an architect would need to
choose which identified design options is best suited to meet all the related design
concerns and fulfilling the design constraints exerted by these design concerns.
There are a number of possible results from an evaluation: (a) there is no design
solution that can meet the relevant design concerns; (b) there is a single possible
solution; and (c) there are more than one possible design solutions. In case of (a),
certain trade-offs may have to take place to relax the constraints of the decision,
166 A. Tang and H. van Vliet
different trade-off analysis methods could be employed [176, 3]. In case of (c),
an architect has to evaluate the pros and cons of the available options to choose
the best option.
In analyzing the pros and cons of different design options, a qualitative reasoning
approach may work quite well. The approach proposed in [325] employs differ-
ent types of design rationale as a guideline for architects to assess the weakness,
benefits and other aspect of a design.
5. Backtracking Decisions to Revise Design Concerns. Design decisions are often
interrelated, a software design decision often leads to a chain of subsequent de-
sign decisions. Subsequent design decisions have to be made because (a) the
initial design decision lacks design details and thus requires further elaborations;
(b) the initial design decision has created new design issues that need to be re-
solved. As interrelated design decisions are made, architects may find that the
eventual solution is not viable. Therefore previous design decisions have to be
revised and new decisions to be considered.
When no design solutions can be found at a decision point, the design concerns
that dictate the decision must be re-examined because of their causal relation-
ships. Each design concern constrains a design decision in some ways, when the
constraints cannot be satisfied by any solutions, then the decision is not viable.
A compromise can be reached if some of these constraints are relaxed. To do so,
architects can backtrack design decisions to relax their constraints.
If a design constraint comes from a requirement, architects would have to nego-
tiate with the relevant stakeholders in order to have them relaxed. If a design
constraint to be relaxed is itself a design outcome, then changing the design
outcome implies reconsidering all previous decisions that have led to this de-
sign outcome (see step 5 in Fig. 9.3). In this case, design reasoning backtracking
involves revisiting previous decisions and design constraints to ensure that the
design constraints of all related design concerns can be fulfilled.
The design reasoning process focuses on how to reason with a design. The key
steps in the design reasoning process are associating design concerns to decision
points, justifying each decision point, checking that all design constraints are met,
and backtracking to revise decisions if no viable solution is found. These simple
steps can be used in conjunction with other design methodologies.
Architectural Description
Requirement Specifications
∝ designs
∝
∝ inspects
∝
Architecture Design Specification
∝ designs ∝ inspects
∝ ∝
Researchers
Architects
∝ inspects
∝
∝ designs
∝
High-Level Design
∝ reasons
∝
∝ validates
∝
case study the architectural design for the system infrastructure and two application
systems are studied.
The consulting firm has a design team formed by architects and designers to
carry out requirement elicitation, architectural and software design. There were four
architects/designers in the design team. All of them have had many years of expe-
rience in the IT industry and at least 5 yrs. on document management applications.
The firm uses an internal development and documentation standard, and they also
have an internal and external review process. The development methodology can be
typified as structured analysis and design. The design team does not use any design
reasoning methods during design.
The research team consists of two researchers who work independently of the de-
sign team to analyze the information. The research team analyzes the specifications
prepared by the design team, these specifications include functional requirement
specification, architectural design specification, high-level design specification and
traceability matrix between requirements and designs. With the supplied documen-
tation, the research team constructed the AREL models using the design reasoning
process to reverse engineer the design decisions made. The design team then vali-
date the issues and questions raised by the design reasoning process with the design
team.
The researchers first examine the specifications, it has been observed that there is
very little documented design rationale. When they exist, they are buried within the
text of the specifications. The researchers then apply the reasoning process to reverse
engineer the design decisions. The researchers imported the summarized specifica-
tions into an AREL model. This was achieved by a custom developed software to
168 A. Tang and H. van Vliet
FTR-01 Access to the ACC-01 Users can log in from any office, Components:: Integrated Windows Authentication configured
system will be provided site or using remote access tools and
for external users. have the same access as in their home
office according to IT policy. Fulfilment
Constraints - supports single sign-on (SSO) for an intranet application.
-Client machine may use Constraints - Supports SSO for internet Explorer 2 or later, may not work with
a proxy server. -Client machine may use a proxy server. other browsers.
Design concern
scan the specifications and retrieve the requirements. The import process created the
design concerns and chosen designs as UML artifacts stereotyped by architectural
elements. The nodes in the model contain a unique identity and a brief description
of a requirement or a design component. There are a total of 419 design concerns,
consisting of 254 functional requirements, 77 non-functional requirements and 88
pieces of contextual information about the system. All of them were imported from
the specifications into the model. There are also a total of 86 design components.
Using the AREL model, the researchers carried out a reverse engineering exer-
cise to discover the design decisions. This is done by associating relevant design
concerns to a design decision (using reasoning step 2), and then find all the pos-
sible design outcomes that are affected by this decision (using reasoning step 3).
Using this process, the researchers hope to uncover the design reasoning and find
any design issues. The result was a series of AREL decision diagrams, an example
is shown in Fig. 9.5.
The example in Fig. 9.5 shows the requirements related to secured access to the
document management system. The researchers have associated the relevant re-
quirements to a design decision node (i.e. Decision on Connectivity). The design
concerns are: (FTR-01) access to the system will be provided to external users;
(ACC-01) users can log in from any office or from home using remote access tools;
Component to support integrated Windows Authentication Server; and performance
requirements. The decision to consider connectivity is to employ a hardware load
balancer to realize the design and to use a DNS server.
It was indicated in the specification that the hardware load balancer cannot sup-
port external proxy server connections because web accesses cannot be routed to the
right server if proxies are used. The design to use a load balancer is primarily for
the performance requirement. The design outcome obviously contradicted with the
9 Software Architecture Design Reasoning 169
requirements where external users most likely would access through a proxy server.
This fundamental requirement cannot be satisfied by the existing hardware. More-
over, if the designers attempt to implement this unwittingly, the performance of the
web site would be adversely affected.
By associating the relevant requirements to the design outcomes, we can identify
the contradictions in the design because not all the design concerns can be fulfilled
by the design. Furthermore, inter-related design may conflict each other. If the load
balancer does not support connections through the proxy servers, then there is no
way to support external and internal users who access the system from home. This
design conflict was raised with the design team and the design team acknowledged
this oversight because they had not associated the external access requirement to the
load balancer design.
The researchers analyzed the system by reverse engineering the design decisions
made to create the software architecture. Many cases of ambiguous design ra-
tionale were identified. These cases were then presented to the design team to
validate if they were real design issues, and all the findings were confirmed to be
valid. Through this exercise, it was shown that a systematic design reasoning pro-
cess would help architects to uncover design issues and achieve a better quality
architectural design.
Using the design reasoning approach, researchers have identified 83 issues, of
which 29 are ambiguous design concerns, eight issues related to designs that cannot
be fully justified through reasoning with the design concerns, and 46 issues that are
ambiguous description of design outcomes. With the identified design issues, we
analyze the likely causes of why they occur so that we have some insights on how
design reasoning may help to improve the situation. The following are cases where
design reasoning has uncovered architectural design issues. These cases represent
failures that could be avoided if design reasoning steps are taken.
When the architects were interviewed, they indicated that they had not really
considered this particular aspect. When the researchers discussed the possible
impacts of this omission, the architects then started to identify potential design
issues that can arise from it. There are two new design issues concerning security
policies, redefining user group privileges and access rights, and access control of
external users. The architects agreed that these newly discovered design issues
should be addressed. This example illustrates that missing associations of cross-
cutting design concerns can cause architectural significant design decisions to be
omitted. The likely reasons for such omission are because the system is inher-
ently complex, and system analysis and design is based on textual specifications
where minor details can be overlooked. Design reasoning step 2 (see Sect. 9.4)
can circumvent this problem by encouraging architects to consciously associate
related design concerns to identify new design issues.
2. Conflicting design concerns. When the researchers map the design concerns or
requirements to the AREL model, it has been found that some design concerns
cannot be realized by the current design because they conflict with each other.
Architects did not realize that interrelated design concerns should be dealt with
together, resulting in hidden requirement conflicts that are not detected by the
architects.
For instance, one requirement is to allow users to ubiquitously access the system
and retrieve all types of documents using remote access tools (ACC-002-01); an-
other requirement specifies that all files are to be converted to readable format
for viewing when the user does not have the program installed (EDM-008-01);
the system design specifies that remote tools such as Citrix and blackberries are
to be used (AA-ASM-908). These requirements and design come from differ-
ent areas of the specifications. When they are analyzed together, conflict arises:
(a) requirement ACC-002-01 is by itself ambiguous, it is not specific as to what
remote tools should be included in the supported list of tools. This is some-
what clarified by the design assumption AA-ASM-908; (b) when blackberries
are required to render documents for viewing, a design conflict is detected. The
blackberry device cannot render documents for viewing.
In this example, the conflict was detected when relevant design outcomes and
requirements are linked together. The design issue becomes visible and when it
is realized that no design option can satisfy the combined requirements, a design
conflict is thus detected.
3. Ambiguous design concerns. When the researchers map the design concerns, in
terms of requirements, to the design components using the AREL model, the
researchers found some inconsistencies between the design concerns and the
design outcomes. Most notably, there were design components that could not
be traced to the specific design concerns. For instance, the architectural design
specified the use of the load balancer, the idea was to distribute web requests
to multiple web servers. However, there were no specific non-functional re-
quirements that outline what level of performance was required. There were,
however, general requirements which state that the system must have “im-
proved client performance” and “automated failover”. The researchers verified
9 Software Architecture Design Reasoning 171
that these design concerns were the ones that had driven the design decision on
performance.
The architects were asked about this decision, and the architects thought that it
would be a good idea to have a load balancer. The architects might be right intu-
itively with regards to improving the general performance of a system. However,
the decision from this ambiguous design concern had created two architectural
issues: firstly, what level of performance should the system deliver? Secondly,
the use of a load balancer has created new design issues relating to preserving
stateful user sessions in the application design. Subsequent to this realization, the
architects have backtrack the decision and revisited this design area (step 5 of the
design reasoning process).
4. No apparent reasons for a design decision. Even though the requirement and
design specifications of the system were organized and extensive, there was very
little design rationale that was explicitly documented in these documents. After
reconstructing the AREL design reasoning map, it was discovered that in some
of the designs, the design reasoning could not be deduced by the researchers. For
instance, requirements PRO-007-01 and PRO-007-02 specified that documents
that are stored in the application system would be reviewed periodically. The
architects chose to realize these requirements by using a standard reporting mod-
ule that require the document reviewers to search for the documents available for
review.
When the researchers inquired what other design options had been considered,
it was found that the first solution that came to mind (i.e. standard reporting
module) was the final solution. There was no evaluation of alternative design
solutions. One of the possible design solutions in this case was to create an event
driven reporting mechanism where reviewers are notified automatically when
documents are due for reviews. If a design reasoning approach was used, the
architects might have considered this alternate solution. Another study [318] has
shown that designers who do not employ design reasoning can fail to consider
alternative design options.
In summary, it has been found that the design process undertaken by the archi-
tects were inadequate to address all the architectural design issues of the system.
We suggest that this is due to the lack of a systematic design reasoning process.
Architects’ design analysis are functionality focused, and this approach seems to
be ineffective when dealing with cross-cutting concerns in architectural design.
A design reasoning approach offers a new perspective to systematic architectural
design.
Interviews were conducted with the design team at the end of each review session.
They were asked to comment on the research findings and the methodologies, the
following comments were given by the architects and the designers:
172 A. Tang and H. van Vliet
1. Graphical communication tool. The AREL model can be a useful tool to commu-
nicate design reasoning with their clients because it is easy to trace the graphs.
Architects want to use them to validate requirements and architectural design
reasoning with their clients. They suggested to have the clients sign-off the de-
sign reasoning model, and use it to manage any potential changes to the design
reasoning.
2. Facilitate negotiation. The AREL model can depict line of reasoning to the
client, including the viable options and their pros and cons. It allows the soft-
ware architects to argue the necessity to compromise certain requirements. Thus
it becomes a reasoning tool to help discussions and deliberations of requirements
and design.
3. Traceability. Supporting tools are available to import specifications to create
AREL models, making it easier to build the AREL model. This facility enables
the software architects to build models for visualization and better traceability.
The requirement traceability matrix that is developed by the design team cur-
rently does not completely document the relationships between requirement and
design, the AREL model has provided a better traceability in this case.
4. Facilitate learning. The information contained in the UML diagrams enables
architects in other areas of design to quickly understand the design and its
reasoning, making it easier to comprehend the overall design.
There are overheads in creating an additional model to support design reasoning.
The question is if the costs justify the benefits. At this stage, we do not have empir-
ical data to support the costs and benefits of this method. However, if the reasoning
model is built during the design process, the time taken to create the reasoning mod-
els should be a lot less than reverse engineering because the designers already have
the background of the system and the UML entities do not need to be reentered
again. On the other hand, if design issues were not uncovered at the early stage, it
would be a lot more costly to fix them.
During the course of the architectural design, the software architects had created a
traceability matrix between requirements and design components. The architects ini-
tially thought that such traceability matrix would allow them to thoroughly analyze
and design the system, it turned out that it was only partially useful. In summary,
the researchers are able to pinpoint architectural design reasoning gaps in the de-
sign. Through analyzing the gaps, we have noticed that ad hoc design decision
making does not provide a systematic approach to architectural design. As a result,
conflicts in requirements and design have occurred, certain requirements are am-
biguous, and decisions have not been well-thought out. The results of this study have
indicated that design reasoning can help to achieve the goals described in Table 9.1,
a summary is shown in Table 9.4.
9 Software Architecture Design Reasoning 173
A qualitative research method is used in this empirical case study. The researchers
reverse engineered the design reasoning models of the system using its requirement
and design specifications. The design reasoning model was used to assess if a design
reasoning process could improve the design process. A direct application of the
design reasoning method to the system would have been the preferred approach for
testing this method. If another design team that does not use the method carries out
the same design in parallel, the comparison between the two would yield directly
comparable results. However for sizable real-life system development, this is almost
impossible because of funding issues. As such, we have opted to use the reverse
engineering method as a mean to obtain design data for comparisons.
One could argue that the researchers can benefit from the hindsight. However,
the designers have more experience in the application domain than the researchers.
Without a similar background, the researchers’ only method is the design reasoning
approach. The researchers were not aware of the possible issues that might appear in
174 A. Tang and H. van Vliet
this type of applications. Therefore, the design issues that have been uncovered by
the researchers to a large extent can be attributed to the design reasoning technique.
Although the design team has more experience in this domain, the researchers
have similar years of general design experience, so it is possible that such experi-
ence may bias the findings. It is very difficult to distinguish to what extent design
experience or design reasoning attribute to a high quality design. An empirical study
has shown that design reasoning can help inexperienced designers to design better
[318]. Using the results from both studies, we suggest that the need for experi-
ence and design reasoning is relative to the complexity of the architectural design.
Although we cannot distinguish which one of the two factors (i.e. reasoning or ex-
perience) is more important, we think that highly complex problems would require
design reasoning techniques to aid the thought process.
9.6 Summary
In this chapter, we have outlined a design reasoning method that comprises of five
steps. This method is iterative in nature, and it is based on the causal relationships
between design concerns, design decisions and design outcomes. Using the AREL
model, we have applied this design method to a real-life system. In the empirical
study, it has been found that design reasoning steps to associate design concerns
and to identify design options are the two important reasoning steps in design.
The architects involved in this case study were interviewed at the end of the
study. They have confirmed that by using design reasoning, it helps them to delib-
erate and negotiate design, determine trade-offs and review the architectural design.
They have also noted that the graphical representation of AREL is simple, thereby
making the design reasoning process intuitive and easy to use. From this observa-
tion, we suggest that such simplicity can overcome some of the issues faced by
existing design rationale models where complex representations have hindered their
implementation [79, 58, 206].
Acknowledgements This research has been partially sponsored by the Dutch Joint Academic
and Commercial Quality Research and Development (Jacquard) program on Software Engineer-
ing Research via contract 638.001.406 GRIFFIN: a GRId For inFormatIoN about architectural
knowledge.
Chapter 10
Modeling and Improving Information Flows
in the Development of Large Business
Applications
10.1 Introduction
Creating and using an effective architecture for a new application requires a wide
variety of skills and knowledge. As the above questions illustrate, information and
knowledge needs to come from the users of an application. Familiarity with the
domain is indispensable in understanding business processes and requirements. At
the same time, technical knowledge is a mandatory requirement for developing an
This chapter describes the concept of using information and experience flow for
improving the architectural knowledge sharing in software development process. It
also demonstrates how to explicitly model the flow of information and experience.
The rest of the chapter is structured as follows. Section 10.2 presents information
flow modeling as a technique to visualize and discuss communication and flow
of experience in a software project. It has been developed at Leibniz Universität
Hannover. This technique is illustrated on a large business project, in Sect. 10.3,
leading to an overview map. It contains a feedback capturing mechanism and an
Experience Forum as architectural building blocks for effective learning and evo-
lution. Section 10.4 discusses options for experience exploitation mechanisms as
a special case for knowledge management. We have implemented those aspects for
SOA projects, exploiting its flexible architecture and process-related building blocks
(Sect. 10.5). Related work is addressed within each section.
In every software development project, requirements must flow from customers and
users to the developers. Feedback must flow back to developers, as the effective flow
of information and feedback is a prerequisite to the above-mentioned learning cy-
cles. Modeling the flow of information in a project can, therefore, help to understand
some dependencies and opportunities better. We use the term “information flow” as
a generalization of the different types of information flowing, such as requirements,
feedback, and context information.
Table 10.1 Overview of the purposes of information flow modeling in software projects
Supporting new flows through tools and techniques
Improving requirements Designing use and
or
processes and practices Flow of experiences
Increasing awareness and overview
10 Modeling and Improving Information Flows 179
alike [88]. A tool or technique can be offered to facilitate the work of stakeholder.
This support can make the new flows more attractive and contribute to their accep-
tance. By design of the tool or technique, new flows are encouraged or enforced. For
example, it is possible to build tools and techniques specifically for improving cer-
tain flow patterns. The FastFeedback tool provides feedback on use cases while they
are elicited during stakeholder interviews. It was built for analyzing concrete infor-
mation flow models in the requirements elicitation phase of a large administrative
project [281].
Information flow models are usually created in an interactive process of inter-
views, consistency checks and workshops. A moderator uses a visualization to focus
and document discussions. Information flow models can be considered a type of
knowledge in their own right. Learning about communication in a project will be
captured and expressed in information flow models in Sect. 10.5.
Information flow modeling needs to address the above purposes. A number of con-
cepts were developed during the FLOW project at Leibniz Universität Hannover.
These concepts enable model builders to focus on relevant properties of com-
munication and information flow, while omitting most other aspects of an SOA
project.
Fluid representations include meetings and oral communications, blogs, chats,
informal Wikis, phone calls, and personal e-mails not accessible to others. Fluid
information is commonly used in most development organizations, but many current
process models are restricted to solid information.
Solid representation refers to documents and stores with certain character-
istics:
1. Information can be retrieved by others
2. Without the help of the author or source
3. Even after some time has expired and
4. In a form that supports dissemination
All other representations are called fluid.
Not every act of fluid communication is relevant to a project (e.g., personal chat,
random meetings at the coffee machine). However, ignoring fluid requirements leads
to errors, misunderstandings, and parallel work. There are trade-offs: Creating solid
representations and retrieving information is often more effort-consuming than fluid
exchange via human interaction. In turn, fluid information can be forgotten, and it
is limited in access. Combining advantages of both styles is the basis for designing
individual networks of flows.
It is important to note that we do not assume each and every requirement or
piece of information needs to be solidified in the end. For some purposes, fluid
10 Modeling and Improving Information Flows 181
<control>
solid
<information type> <experience>
(optional tag) (optional tag)
<doc name> <doc type>
In <label> Out
fluid
<information type> <experience> <support>
<person> <group> (optional tag) (optional tag)
representations are more appropriate than solid. For example, many users will prefer
giving oral or informal feedback over writing reports. FLOW is used to explicitly
modeling previously tacit knowledge on fluid representations of information. We
take fluid information very seriously and discuss it in detail (see below), but we do
not claim it must become a requirement in all cases.
We model, analyze and improve information flows in software projects. Models
are often sketched on whiteboards and redrawn in PowerPoint or other graphical
editors. The notation must, therefore, be simple and avoid unnecessary detail.
The syntax shown in Fig. 10.1 was designed to convey the concepts of informa-
tion flow:
• Stores are depicted by easy-to-draw symbols that are provided in most drawing
tools: A document symbol and a human face. Humans are the most important fluid
stores, while documents are the classical storing device of solid information.
• Identifiers refer to individuals or roles, depending on the purpose of a model.
• Multiple document or person symbols refer to one or more stores of the same
document type or group of persons. Details are omitted intentionally.
• Flows are represented by arrows. All flows originating from a solid store are solid.
All flows originating from a fluid store are fluid.
• Flows originating from an activity can be either solid or fluid: A model builder
can express an intention or assumption by using fluid or solid style.
• Tags on arrows can be used to highlight specific types of information flowing.
Requirements and derived information are the default type.
• Experience is depicted in a different color or in gray.
• The activity symbol is a box. Flows may be attached to each side. The box
indicates decomposition: there are different options to implement an activity.
In this section, problems and feedback during the development large business ap-
plications are visualized using the FLOW notation. The visualization will help to
understand and compare different flows of feedback. Step by step, a more desirable
situation will be designed. In subsequent sections, support for implementing that
vision will be presented.
182 K. Schneider and D. Lübke
The main challenges for requirements and feedback in large applications have
been described above. In short, the aspects were:
The above challenges are now considered one by one. A series of FLOW diagrams
visualize the argumentation.
Many stakeholders and users. There are large groups of stakeholders and several
developers in a project. The feedback from stakeholders to developers is specified
as a fluid flow because we cannot rely on written feedback. Fluid feedback is more
convenient to provide for stakeholders, but it is more challenging for storing and
analyzing.
Figure 10.2 makes no further statements about the nature and implementation of
this flow. By analyzing the situation, it turns out that all stakeholders may provide
requirements, including management, system administrators and users of the appli-
cation. Users are considered a specific kind of stakeholders. This fact is modeled
by a generalization relationship. It is not explicitly part of the FLOW notation, but
adopted as an extension.
Both feedback and requirements are types of information flows. We assume that
“giving feedback” requires using the application. Only users do that (Fig. 10.3),
while other stakeholders (e.g., managers) may provide requirements, but not feed-
back. In the next step, we want to follow the information flows more closely. At
this point, it is not obvious where stakeholders (including users) get the information
Fig. 10.2 Undefined flow between many stakeholders and several developers
10 Modeling and Improving Information Flows 183
Fig. 10.4 Long flows between stakeholders and developers, with unclear aspects
that enables them to give feedback and formulate requirements. It is not realistic
to let users communicate with developers via phone calls or emails (fluid flow).
There should be an instance that decides about the feedback that eventually leads
to changes. Change management as in Fig. 10.4 is a usual way of organizing this
filtering activity. A group of user representatives receive the fluid input of users and
take it into change management. As a result, there is a document containing change
requests. Those are the definite basis for developers. It is (intentionally) unclear in
Fig. 10.4 who makes decisions in change management.
The information flows in Fig. 10.4 and respective processes are long and te-
dious. Why should a user or other stakeholder take the time and effort to provide
input? Triggering improvements in an application are the most obvious reason. De-
velopers provide a new release to users. Another information flow that acts as an
incentive is an immediate visibility of feedback to peer users. When feedback is
available to other users, they can directly respond to problems, maybe even resolve
misunderstanding or spurious flaw. Social recognition may encourage more people
to contribute feedback and responses. Short-term visibility of feedback can be an
important incentive for turning a group of users into a Community of Practice [335].
For clarity, we focus on users and their feedback only (Fig. 10.5). The branch of
stakeholders and their requirements can be discussed in an analogous way.
Speed. At this point, the process of improving the application is rather long. User
representatives, change management with written change requests, and the devel-
opers writing a new release are chains of information flows and transformations.
184 K. Schneider and D. Lübke
Fig. 10.5 Improved releases and social recognition among peers as incentives for feedback
Fig. 10.6 Increasing speed through direct and fluid information flows
It may be faster to allow direct communication links among most participants. Fluid
information flows are usually faster than solid ones. This leads to Fig. 10.6.
However, Fig. 10.6 looks very cluttered and difficult to organize. There are many
different paths of information, and most of them are fluid. The entire model looks
very fluid, which generally implies fast flows but high risks for losing information,
or polluting it with errors. Therefore, we design an activity into the communica-
tion model. Obviously, users will use the application at some point. By including
that activity into the information flow model, we emphasize its importance. Within
the FLOW model, we are only interested in the implications on information flow,
but not in any other application details. In Fig. 10.6, the Application Release con-
stitutes information for Users – in an unspecified way. Slightly more precise than
Fig. 10.6, we state that the application release is needed as a prerequisite or tool for
the “use application” activity (i.e., arrow from bottom). Figure 10.7 also explains
where users get the information for their feedback: By using the application, they
are stimulated to provide feedback. We want to avoid distracting users from their
main task. Therefore, feedback must be collected close to using the application.
10 Modeling and Improving Information Flows 185
We decide to let this information flow into the activity of using the application. In
addition, we require context to be collected with the feedback. The box representing
the activity hides all details. We also decide to provide solid feedback (a document
or artifact), which requires some sort of transformation within the use application
activity. This document can be read by users. Together with fluid communication
from user representatives, the document implements the feedback loop that sup-
ports social recognition for users who provide feedback. At a later point, we will
have to decide how to implement “use application” with the above-stated properties
and information flows.
Avoid errors. Figure 10.7 still contains lengthy flows including several consecu-
tive transformations. This corresponds to an information flow pattern that indicates
a high risk of errors (see the Chinese Whisper pattern [307]). We decide to make bet-
ter use of the feedback document. In Fig. 10.8, the feedback document will be used
in change management directly. User representatives will also use it for making
decisions. We assume management will be represented in change management, too.
Fig. 10.8 Shorter flows and more intense use of feedback document
186 K. Schneider and D. Lübke
Fig. 10.9 Replacing a simple document by the Experience Forum architectural element
This resolves our last remaining question mark. By using the same document in all
places, probability of inconsistencies is reduced.
Integrate learning from experience. At this point we emphasize the use of knowl-
edge and experience. For that purpose, the single feedback document is promoted
to an activity called “Experience Forum” (see Fig. 10.9). As an activity it might
be called “use Experience Forum”, but at this point we decide to emphasize the
architectural element associated with the activity. The activity box hides the imple-
mentation details of an Experience Forum. In Sect. 10.4, options are compared for
implementing the boxes in Fig. 10.9.
Use
Experience Change
Application
feedback Forum Mgmt.
Users w/ capturing
Change
requests
Application
Release
Developers
Fig. 10.10 Final flows and activities to be supported. Result of designing information flows
• There are embedded cycles between Experience Forum and participating groups
of people (developers and representatives). The learning cycle of users includes
using the application in practice.
• There must be interesting stuff in the center box.
• The sequence of FLOW diagrams facilitated making decisions and designing in-
formation flow aspects – not just analyzing a given architecture. The diagrams
themselves constitute knowledge relevant for software architecture.
In Sect. 10.4, the center box is discussed in detail.
This section outlines the principles and activities involved in a systematic ex-
perience exploitation [282]. Architecture knowledge management includes han-
dling of experiences. Architecture is an area that relies on learning by experience,
since there are only a few general principles guiding it (such as information hid-
ing, three-tier-architectural pattern, etc.). Experience is regarded a special kind of
knowledge.
We use “information” as the general term covering feedback, experience, and
other information relevant to a software architect’s task. We adopt a pragmatic defi-
nition for experience, as consisting of (1) an observation, (2) a related emotion and
(3) a conclusion, according to [281].
According to this definition, there needs to be an authentic source (observation),
not just a belief or theoretical deduction. An emotional response is the key for re-
membering what happened. Both good and bad emotions may trigger that effect. In
188 K. Schneider and D. Lübke
*
*
∝ Rating ∝
Rating
Software
Bug Feature Process Process
Support
Report Request shortcoming Experience
Request
Fig. 10.12 Experience cycle with core activities of experiential learning and flows
190 K. Schneider and D. Lübke
Unlike usual representations of the experience cycle, Fig. 10.12 also shows incom-
ing and outgoing flows of information as the “flow interface” [285] of the experience
cycle. Depending on its implementation, experience engineering can include exter-
nal knowledge from other sources (input from the right in Fig. 10.12). Note that the
terminology used below slightly differs from traditional terms presented in the in-
troductory chapters of this book. This is due to a different emphasis in the following
presentation of experience engineering [282]. For example, activating experience
refers to making someone aware of his or her experiences. In this context, it is more
adequate to consider activation a first step of “externalization” or “codification”.
Experiences need to be activated. It is not sufficient to wait for feedback and
experience to pop up [284]. Instead, there should be mechanisms for provoking
creative breakdowns [289]. During periods of intense work, such a breakdown is
needed to make knowledge workers aware of the experience or insights they just
gained. Obviously, the delicate balance must be kept between too little activation
and too many interruptions (breakdowns).
Collecting and storing feedback and incoming material is a necessary but not
sufficient condition for implementing the full experience cycle. Management and
software engineers tend to confuse storing experience with the full learning cycle.
Storing and searching require technical support. However, the remaining parts of the
experience cycle cannot be skipped or neglected without major drawbacks [30, 286].
Experience engineering includes the tedious tasks of validating, comparing, and
transferring incoming material into more reusable elements. Without experience en-
gineering, false feedback and misleading statements of experience will be stored
and distributed to others. This puts the credibility of an experience exchange at
risk. Sometimes, input sources are inconsistent due to different contexts. Therefore,
comparing and analyzing contexts adds a lot of value to the consolidated output.
It is a major misunderstanding to expect altruistic behavior. An expert or user
needs reasons to provide input [88]. It is also unrealistic to expect that others will
be eager to get and reuse experience [278]. Instead, most knowledge workers, such
as architects, consider experience yet another source of support for their main task
of designing an application. Therefore, experiences and other input should be trans-
formed into recommendations for architects. They should tell architects what to
do under which circumstances (contexts), not just offer past experiences of other
people. This requires a creative transformation – which can usually not be fully
automated.
Even dissemination is more difficult than it may appear: It is not sufficient to
post results (best practices, feedback, etc.) on a Web site or in an experience base.
This would require users to actively search for relevant information. Since they do
not know what activities are supported, their search may fail several times – and
leave them frustrated with the repository. We derived several conclusions from this
observation [284]. Within the scope of this contribution, it should be noted that
results must be presented in a way so that they can be immediately reused [308]. For
this purpose, it is important to know the work practices of the people to support –
application users and architects, in our example.
10 Modeling and Improving Information Flows 191
The experience cycle in Fig. 10.12 shows activities and dependencies; infor-
mation will flow along the dependency arrows, and between activities and the
experience base. This informal notation is not completely consistent with the FLOW
notation defined above. Therefore, a few comments are in place to clarify the
relationship between the two models:
• The Experience Forum requires certain incoming and outgoing flows of informa-
tion. This is called the “flow interface” of the activity [285].
• The entire experience cycle needs to be covered within Fig. 10.12. The input and
output of the experience cycle needs to match the information flow interface of the
Experience Forum. Parts of the experience cycle (including some of its activities)
may not be visible in Fig. 10.10: they are internal parts of the Experience Forum
activity.
Fig. 10.13 An Experience Forum may contain some or all steps of the experience cycle
The feedback and experience support mechanisms proposed above can effectively
be implemented. We sketch a solution available to SOA application development as
an example.
The main driver behind SOA is the idea of better aligning the business with its sup-
porting IT infrastructure. Software should be easily maintainable and it should be
possible to quickly change it in order to adapt to changing business environments.
Different roles need to collaborate for an SOA to work properly. Especially busi-
ness process designers and software developers need to work together to closely
couple business requirements and processes to the software. Only such collabora-
tion guarantees that changes to the business requirements can be anticipated and
implemented in the software in a short time-frame.
10 Modeling and Improving Information Flows 193
mistakes and from the experiences users make with the newly developed busi-
ness processes and software. This includes the development of user interfaces and
the granularity of tasks for the users. Information flow models helped to conceive
concepts and mechanisms for systematic reuse of feedback and experience. Un-
like other large business application projects, SOA offers opportunities for weaving
experience management mechanisms into the business application.
The concept of integrating experiences in a large business project relies on tool sup-
port to make it work in practice. The support software has to make the proposed
information flows “affordable” in terms of time and effort for all stakeholders in-
volved. Required software components must be non-intrusive and quickly available.
Gathering feedback is a common task in all SOA applications. It should not be re-
implemented in every application, but the needed functionality should become part
of the SOA infrastructure. This way, it is possible for all SOA applications to benefit
from the experience mechanisms without adding their own implementation.
Our technical solution is the Experience Forum for SOA applications [217]. An
implementation was integrated into the SOA-Me platform [215] that supports ser-
vice composition and human interaction with the application. Its principles are as
follows:
• Business applications consist of services. Service detection is not affected by our
approach; we do not further discuss it here.
• Business processes are the backbones of SOA applications. Business processes
are modeled in a notation like BPMN [337] or EPC [226].
• Tools like SOA-Me [215] can generate service orchestrations from business pro-
cess models. They integrate references to services. As a result, an operational
SOA application is created.
• There are advanced options for creating basic user interfaces from extensions of
business process models. User interfaces can be generated from abstract models.
This technique is called model-based user interfaces [216, 249, 324].
These principles are illustrated in Fig. 10.14. Services are combined according to
business processes. They are orchestrated (combined) by SOA-Me and can include
user interfaces. In principle, the orchestration is extended by generating access to an
Experience Forum. Feedback can be entered, and existing feedback relevant for the
task at hand is displayed. SOA-Me is a feasibility prototype. It serves as a proof of
concept and demonstrates the above-mentioned concepts for “integrating feedback
mechanisms into SOA at a very low cost”.
The key concept is the easy access to the application and service context. Users
do not have to specify where they are (in terms of user interface) or what they
do (in terms of business process steps). Nevertheless, receivers of feedback like
developers, architects, or peer users can benefit of complete context information. It
is attached for free.
10 Modeling and Improving Information Flows 195
Fig. 10.14 Generator orchestrates SOA application from services and business process
10.6 Summary
Building large applications using existing process models and building blocks
requires skills and knowledge from several different domains. It reaches from tech-
nical details of building those applications and architectural principles to knowledge
of the application domain. No architect can cover everything at the beginning of a
project. By their very nature, large and long-lived applications will go through an
evolution.
We suggest treating that evolution as a technical iteration and a learning pro-
cess at the same time. Systematic learning from feedback and experience requires a
196 K. Schneider and D. Lübke
learn using the application. Architects learn by getting more feedback and rich
context information. Finally, a company learns by improving its information flow
and communication infrastructure, using information flow models and building
custom-made support for their architects.
Acknowledgements The work on information flow was supported by DFG project InfoFLOW
(2008–2011). Good comments by the editors helped to improve this chapter.
Chapter 11
AKM in Open Source Communities
Abstract Previous chapters in this book have dealt with Architecture Knowledge
Management in traditional Closed Source Software (CSS) projects. This chapter will
attempt to examine the ways that knowledge is shared among participants in Free
Libre Open Source Software (FLOSS1) projects and how architectural knowledge is
managed w.r.t. CSS. FLOSS projects are organized and developed in a fundamen-
tally different way than CSS projects. FLOSS projects simply do not develop code
as CSS projects do. As a consequence, their knowledge management mechanisms
are also based on different concepts and tools.
11.1 Introduction
One should not expect to find in FLOSS the same knowledge management ap-
proaches and tools that are in use or considered in CSS. With respect to the
architectural knowledge views (Chap. 2) the dynamism-centered view requires for-
malization of architectural knowledge and is probably distant from the “spirit” of
OSS which is centered on the creation of source code. Also the requirements-centric
view requires a cohesive team that co-evolves the requirements and the architecture
in an iterative fashion, and therefore is more appropriate for closed development
environments in which the collaboration is more direct. The decision-centric view
seems to be very attractive for FLOSS projects, since the explicit documentation of
architectural decisions’ rationale will enable distant developers to better capture the
essential characteristics of FLOSS projects; however to the best of our knowledge
1 We use the term FLOSS in order to accommodate all three terms: Free, Libre, Open, that are in
use to denote open source software
it is not currently used (at least not explicitly with tools specific to this approach) in
FLOSS. For several reasons (that we will explain later in this chapter) it seems
that the predominant approach to knowledge management is the pattern-centric
approach.
This chapter attempts to provide answers to such questions, as:
• How do FLOSS processes differ from CSS processes? How are FLOSS projects
organized and managed? Which are the incentives and motivations behind par-
ticipating in a FLOSS project? How is architecture defined, implemented and
assessed in FLOSS? Which is the current understanding about the level of quality
of FLOSS architectures w.r.t. CSS architectures?
• How is quality pursued and achieved in FLOSS in general? How are deci-
sions made for shaping FLOSS architectures? Is there anything like FLOSS
architecture documentation?
• How is knowledge managed in FLOSS in general, who are the knowledge cre-
ation and maintenance mechanisms and tools in FLOSS, is FLOSS knowledge
personalized, codified or both? How is domain AK matched with application
AK? Who are the carriers of AK in FLOSS? How do all these apply to AKM
in particular? What is the role of major software companies that support FLOSS
on a regular basis?
• What should be expected in the future regarding AKM in FLOSS? Which are
the research directions? What are the implications for software architecture
education?
Initially, the chapter discusses briefly the fundamental differences between CSS and
FLOSS processes providing the context for the analysis that follows. Then it pro-
ceeds by briefly discussing software architecture in FLOSS and moves into the core
issue, i.e. how software architectural knowledge is generated, captured and managed
by FLOSS communities. Sources for the chapter material are academic papers and
books, and web resources, such as FLOSS project discussion lists, blogs, wikis, web
pages and white papers, combined with authors’ personal studies and experience
with/on FLOSS, or FLOSS like projects.
the FLOSS system at hand, but want to collaborate with volunteer or paid devel-
opers and users, in order to achieve better results in terms of effort and quality
of development. Hybrid FLOSS projects provide a means for developing software
with mutual benefit, both for FLOSS communities and software companies. Some
of these projects started from companies and were later donated to the FLOSS
community for their further evolution and development.
Another variation of FLOSS projects concerns research originated projects. Such
projects evolve from the research efforts of academics and other researchers to open
source software implementing these efforts. The FLOSS software and the academic
research then co-evolve and contribute “iteratively” to one-another with the FLOSS
software providing useful feedback for “untested” research ideas, and new research
ideas used to point the FLOSS software to initially unanticipated directions.
There are many differences between FLOSS processes and CSS processes. Typ-
ically CSS processes are quite formal, with clearly defined, large scope, phases
and pose many constraints on software development, attempting to impose disci-
pline and produce high quality software products. CSS processes foresee one or
more Architectural phases. As an example the well known waterfall model has
two such phases, namely Architectural Design followed by Detailed Design. How-
ever [122, 68] FLOSS processes are much less formal, with fewer, lower scope
phases, such as fast debugging and releasing. Architecture and design decisions are
handled by the initiator or the core group of developers before opening the source
code to FLOSS participants and therefore are not subject to open discussion and
negotiation [122]. This model of architecture development seems to make certain
views to AKM less “natural” for FLOSS. For example the requirements-centric view
is based in the co-evolution of the requirements and the architecture. However the
bulk of FLOSS developers who are sometimes the source of new and interesting
requirements are not part of the core architecting team or associated with this team
directly.
Software architecture is requirements and quality driven. Major driver for de-
sign decisions in FLOSS is modularity which is necessary in order to divide work
among FLOSS participants. Modularity helps newcomers to locate modules of their
own interest and focus on them, without bothering about other, irrelevant system
architecture modules.
If FLOSS lacks an explicit architecture definition phase and consequently ex-
plicit architectural documentation, then how is architecture defined, implemented
and assessed in FLOSS? The adoption of FLOSS in many organisations has raised
the issue of FLOSS quality evaluation. Due to the nature of FLOSS development
where standard practices include open access to the source code, shared software
artifact repositories, peer review of committed code, asynchronous global develop-
ment and lack of formal support, traditional software quality models may not be
sufficient.
An array of quality models specifically targeted to FLOSS development can be
found in the literature, but most of them are either purpose specific (e.g. they focus
on the business or application domain of the FLOSS system) or require significant
human intervention [273]. However, little attention has been paid up to now for
202 I. Stamelos and G. Kakarontzas
assessing high level system architecture in FLOSS. There is definitely space here
for further investigation and research. Software Architecture Reconstruction (SAR)
tools such as those evaluated in [138] can play a significant role in FLOSS projects
which are interested in starting an AKM effort.
Two problems often associated with the use of patterns in general, including
architectural patterns are:
1. They are not enforced in the source code and developers can accidentally violate
them while developing their systems. However most FLOSS projects provide
the core architecture and the independently developed components must plug in
this provided framework. In the case of FLOSS, this is not considered a sig-
nificant limitation on the implementation approach however, but rather essential
in the way FLOSS software is developed: the developers must follow precise
rules to achieve interoperation of their source code with the rest of the system
(e.g. implement specific interfaces) which makes accidental violation of the core
architectural patterns more difficult, so this problem is partially solved. At the
same time research efforts that statically enforce conformance of object-oriented
source code with architectural descriptions such as ArchJava [4], might solve this
problem entirely in the future if they become more mainstream and widely used.
2. The second problem with patterns is that their textual description is inherently
not appropriate for the automatic application of patterns in the source code. Re-
search efforts such as the formalization of design patterns [311] and the use of
Model Driven Software Development (MDSD) methods based on rules [49] aim
at solving this problem. However in the case of FLOSS automatic application of
patterns may very well be irrelevant since FLOSS developers often prefer devel-
oping source code as a creative intellectual exercise, rather than using automated
code generation techniques.
Also in terms of AKM we distinguish between the following broad categories of
FLOSS projects:
1. “Pure” FLOSS projects. In these projects AK exists in many forms: wikis,
HTML pages, forums, mailing lists, video casts, podcasts, books etc. (e.g.
Apache HTTP server). Therefore in these projects AK is not managed explicitly
but rather emerges gradually.
2. Hybrid FLOSS projects. In these projects which evolved from a CSS project
usually owned by a company and later evolved to a FLOSS project, there is
an initial core team of developers which has designed the core architecture and
has documented it (e.g. Apache Axis and Jini). The core architecture is usually
well thought with an explicit rationale serving the functional and quality require-
ments of the application, and this contributes in the success that many of these
projects enjoy. Usually these projects use design or architectural patterns as a
vehicle to both achieve desired quality properties and communicate architectural
knowledge.
3. Research originated OSS projects. These projects have evolved from the research
efforts of a research group or research community. AK for these projects takes
the form of research papers and/or books which explain in details the architec-
tural decisions. In many cases such projects have contributed even in the creation
of new architecture standards for their domains, such as the Globus toolkit con-
tribution to the standard architecture for grid computing. Effectively academic
204 I. Stamelos and G. Kakarontzas
architecture.9 In particular, the topics covered are the Architecture Overview, the
Server Startup and the Request Process Flow. However, no documentation is pro-
vided that explicitly justifies the decisions made. Sometimes, documentation is
given in standard diagrammatic form (see for example the UML sequence diagram
for server startup10).
Architecture related information can also be found in books that are easy to find
because the open nature of FLOSS projects provide the opportunity to research, ex-
plore, understand and document independently what has happened or is happening
in those projects. As an example, [28] provides its reader with a short description of
the fundamentals of Apache architecture. Ridruejo [213] is more focused on Apache
and gives also an overview of Apache architecture. Kew [178] is even more to the
point, providing both an overview and a detailed picture. Bits and pieces can also
be found in various Internet freely available resources, such as slides of conference
presentations and consultant firms’ Internet pages.
Because of the lack of formal documentation that is frequently encountered in
pure FLOSS projects, tutorials and other sources of knowledge often appear on an
individual basis, trying to alleviate the problem. One such example is the Apache
Tutor,11 constructed by the author of [178] that, quoting from its home page, “aims
to be the definitive independent online source of help and information for applica-
tions built on the Apache webserver”. It is interesting to note that “Both contents
and interactivity is important, and the software used provides for multiple authors to
contribute to content development, at more than one level” and “All articles are pub-
lished in an interactive framework, and invite comments (annotations) from readers,
as well as online editing.” As with FLOSS code development, the development and
maintenance of these Internet FLOSS knowledge resources is sought to be made on
a voluntary basis.
This section discusses two examples of open source software architectures and their
rationale. These particular projects were chosen based on their use of architectural
means to achieve specific quality requirements that are essential for their provided
services. The first such project is Apache Axis which requires flexibility and ex-
tensibility and uses a well-known design pattern to satisfy these requirements. The
second project we discuss is Jini Starter Kit which is an open source implementa-
tion of the Jini specifications. Jini’s architecture is specifically designed to addresses
the challenges of distributed computing [332]. These two projects are examples of
the hybrid OSS project category since they both started from companies and later
became open source community projects. Also in terms of the AKM views, both
9 http://tomcat.apache.org/tomcat-6.0-doc/architecture/index.html
10 http://tomcat.apache.org/tomcat-6.0-doc/architecture/startup/serverStartup.pdf
11 http://www.apachetutor.org/
206 I. Stamelos and G. Kakarontzas
projects are examples of the pattern-centric view since they use design and archi-
tecture patterns extensively to achieve specific quality goals and at the same time,
as a side-effect (intended or not) to communicate the rationale of these decisions to
participating developers.
Apache Axis12 is a Simple Object Access Protocol (SOAP) engine. It evolved from
the Apache SOAP project which started as a contribution from IBM of an early
implementation of the SOAP protocol to Apache in 1999.
Essentially Axis processes SOAP messages and can be used in two distinct ways:
as a server and as a client. Used as a client Axis can be embedded in applica-
tions using the Axis API and prepare messages for requests. Used as a server Axis
can processes incoming messages. There is a multitude of transport protocols, web
services protocols and services in which Axis must remain open. Therefore the pre-
dominant quality requirement for Axis is extensibility and flexibility that enables
adaptation in any specific situation. To achieve better extensibility and flexibility
Axis adopted the Chain of Responsibility design pattern [130] for its core part which
handles the processing of messages. With this design pattern the handlers of a call
are arranged in a chain and the call is processed from any handler in the chain which
has the required knowledge and knows how to handle a message.
The consequences of the chain of responsibility design pattern are:
1. The inherently low coupling between the collaborating components, since com-
ponents are not required to know a priori which other components will handle a
request.
2. The flexibility in changing the responsibilities or adding more responsibilities
even at system runtime, by adding more handlers or replacing existing handlers.
3. The handling of a message is not guaranteed if there is not a handler in the chain
that knows how to handle a specific request or if the chain is not configured
properly.
The rationale of the architecture design of Axis is explained in detail in the Axis
Architecture Guide.13 As can be seen in Fig. 11.1, a chain of handlers is a handler
itself by extending the Handler interface and therefore it can be combined with other
chains which contain other handlers recursively.
This allows Axis to contain three chains, global, transport and services, which
contain a number of handlers internally. The Transport chain is responsible for pro-
cessing the transport protocol of a message (e.g. HTTP, SMTP, etc.). Global chains
are applied in all messages regardless of the specific service that is requested. Fi-
nally service chains are the service handlers of messages and contain the application
logic for the processing of a message. In Axis used as a server the sequence of chains
12 http://ws.apache.org/axis/
13 http://ws.apache.org/axis/java/architecture-guide.html
11 AKM in Open Source Communities 207
is first the transport chain, then the global chain and finally the service chain and in
Axis used as a client this sequence is reversed. A chain is an ordered sequence of
handlers. When Axis is used as a server in the service chain the request is serviced
by the service implementation and the flow changes direction from request to re-
sponse. When Axis is used as a client the flow changes direction in the transport
chain. The actual handler which changes the direction of the flow by processing a
request and producing a response (server), or by sending a request and receiving
a response (client) is called the pivot handler. The sequencing of chains, the chain
handlers and the pivot handlers in Axis are depicted in Fig. 11.2.
Jini Starter Kit is an implementation of the Jini technology for distributed com-
puting [83]. Jini specification and implementation were initially developed at Sun
Microsystems and were later released as open source under the Apache 2.0 license
with an announcement from Sun14 . Jini is now available as an open source project15.
Jini has a very interesting architecture which addresses many of the issues in-
volved in distributed object computing [332]. Essentially Jini architecture exposes
the differences of distributed object computing to the application programmers in-
stead of attempting to hide them so that local and remote objects are treated the
14 http://www.sun.com/smi/Press/sunflash/2005-10/sunflash.20051019.5.xml
15 http://www.jini.org
208 I. Stamelos and G. Kakarontzas
Fig. 11.2 Chains, handlers and pivoting in core Axis message handling
same way. This exposure complicates applications’ programming but the additional
complication is not unnecessary and can in fact be considered essential for the de-
velopment of robust and reliable distributed object applications. More specifically
the differences of distributed computing in relation to local computing include dif-
ferences in latency, memory access, partial failure and concurrency [332]. Jini uses
the concept of a federation of services which come together to achieve a task on be-
half of a user. The dynamic nature of Jini allows services to be added and removed
from the system dynamically at any time. A service can be anything, for exam-
ple a service that prints documents, a service that represents a device, a document
management service etc. Jini provides an infrastructure service, called the Lookup
Service, an application of the Lookup architectural pattern [180], which allows ser-
vices to be registered and later discovered by other services. The Lookup Service is
therefore the bootstrapping mechanism of a Jini system. A service uses first a dis-
covery protocol to discover the Lookup Service and then a join protocol to join the
Lookup Service. As can be seen in Fig. 11.3, a service first emits a multicast mes-
sage looking for a Lookup Service. The service has a service object with a service
interface and is described additionally with service attributes. These attributes will
be later used in addition to the service’s interface from clients looking for services.
The service joins the Jini system by transferring the service object and the service
attributes to the Lookup Service.
A client uses a Lookup Service to request a service with a particular interface
using also additional attributes that describe the required service. A service object
is then downloaded to the client. The client then uses this object to communicate
directly with the service provider as depicted in Fig. 11.4.
11 AKM in Open Source Communities 209
Services in Jini are not assumed to be available for ever since network partitions
and other problems may in fact make them unavailable. Jini applies here the Lease
architectural pattern [180], and uses leases to ensure that registered services are in
fact available. Each registered service is granted a lease and is required to renew this
lease periodically. Failure to do so will result in the removal of the service from the
Lookup Service registry. Leases are also used in other services (besides the Lookup
Service) and can be exclusive, which means that a service can only be used by one
user at a time, or non-exclusive.
Jini also supports distributed transactions that span multiple services as well as
distributed events for asynchronous communication of services.
The architecture of Globus Toolkit follows the hourglass model. In this model
there is a core of basic services over which global services and applications are
developed. Under the basic services there is an interface layer with local operating
and resource clustering systems (e.g. PBS and Condor pools).
Globus services are grid services which follow the Open Grid Service Architec-
ture (OGSA). The main goal of OGSA is the standardization of the basic services
for grids so that these services are interoperable. OGSA is a set of principles which
describes the way that grid services look and behave, but does not specify the
details for the implementation of grid services and grid containers hosting these
services. The Open Grid Services Implementation (OSGI) is an additional standard
describing all the necessary implementation details.
Globus Toolkit implements the OGSI standard and provides higher level grid ser-
vices which are based on OGSA. As is mentioned in the project’s website: “Since
the release of the Globus Toolkit 3.0, the Globus Project offers an open source
collection of Grid services that follow OGSA architectural principles. The Globus
Toolkit also offers a development environment for producing new Grid services that
follow OGSA principles. OGSA is a product of the Grid community at large, and it
has a major focal point in the Global Grid Forum (GGF). Members of the Globus
Alliance have made significant contributions to the development of OGSA”.
11 AKM in Open Source Communities 211
We have already seen above that knowledge in FLOSS is mainly stored in commu-
nication media, e.g. wikis, mailing lists and forums. However, occasionally FLOSS
projects provide themselves more dedicated and organized structures that implic-
itly support knowledge management in the FLOSS world. One such example is the
FLUID18 project.
FLUID project is “an open, collaborative project to improve the user experi-
ence of community source software”. In other words, FLUID provides a “living
library of sharable user interface components that can be reused across community
source projects. These components are built specifically to support flexibility and
customization while maintaining a high standard of design quality”. The project site
does not provide just code: it provides also User Experience,19 i.e. a repository of
design models and other resources, tools, and documentation to assist user interface
design and implementation.
Another example of an open community that stores and manages knowledge in
the form of patterns is the Open Management Consortium20. They propose, de-
fine and discuss innovative pattern-based solutions to common problems, such as
the “Adaptive Deployment” and “CodeData Split” patterns. Each pattern initiates a
discussion thread and patterns are specified in templates that consist of predefined
fields. Such fields are Intention, Motivation, Applicability, Structure, Consequences,
Implementation, Known Uses, Related Patterns.
It is interesting to notice that architectural knowledge is maintained also in the
form of Anti-patterns, i.e. patterns that produce a negative effect, theyshould be
17 http://www.globus.org/alliance/publications/papers.php
18 http://wiki.fluidproject.org/display/fluid/Open+Source+Design+Pattern+Library
19 http://fluidproject.org/index.php/user-experience
20 http://openmanagement.org/community/omc
212 I. Stamelos and G. Kakarontzas
avoided and whenever they appear, they must be addressed by some counter-
measures. One such Anti-pattern is the “Service Monolith” proposed by Alex
Honor.21
Independent of the activity they generate, these projects are good examples of
how FLOSS world of projects can combine agile and open development processes
with development tools that go beyond the typical configuration management and
bug tracking systems.
What should be expected in the future regarding AKM in FLOSS? FLOSS world
is continuously evolving and software architecture will most probably draw more
attention than today.
The abundance of hybrid FLOSS projects, sponsored by companies, will prob-
ably lead to more organized software development modes. In such a context,
architectural decisions are expected to be more transparent and justified, with the
rationale behind them better explained. As Fidgerald [122] points out, “analysis and
design are expected to be more complex because of the need to address vertical
business domains with hard to meet requirements”. This suggestion leads to more
stringent requirements for software architecture, and therefore renders the need for
better software architecture resources more urgent. It is also reasonable to expect
that such information will be better organized and stored in specific tools to allow
more visibility in the project.
An interesting research direction which is to the best of our knowledge unex-
plored would be to integrate SAR tools with existing and readily available FLOSS
resources such as wikis, mailing lists and so forth. The integration that we envision
is using SAR tools to identify potential problems such as potentially fragile classes
(e.g. due to large number of dependencies) and then automatically seek information
in existing FLOSS resources for these potential problems that may explain their
status. For example [138] refers to an example evaluation of a project using the
JDepend tool, which uncovered a package being both highly abstracted and rela-
tively unstable. This high abstraction seems to imply that the package is intended
for reuse, and therefore its relative instability is particularly problematic. The au-
thors used discussions with the development team to find out why: “In order to
explore this measure, we constructed a set of views around this package and pre-
sented them to the development team. The package turned out to be undergoing
extensive migration from a previous design. In order to accommodate compatibil-
ities with existing packages, the product package had to maintain a high level of
dependencies with other packages. When the migration is complete in near future,
the package will be refactored into several components to improve its modifiability
and reusability” [138]. An example of identifying the “extensive migration” using an
existing OSS resource is to consider the number of recent commits of this particular
21 http://openmanagement.org/community/open standards/omc design patterns
11 AKM in Open Source Communities 213
package classes. This information is available from FLOSS tools. Future research
can identify such “interesting” pieces of information from existing OSS resources
and use SAR integration with these resources in a constructive approach, to produce
architectural knowledge.
One should also expect more FLOSS projects related to software architectural
knowledge to appear. FLOSS communities have proved to be self-sustainable and
continuously evolving. We have already seen a number of FLOSS projects and Web
sites that aim to support FLOSS participants in decision making and managing ar-
chitectural solutions. It is reasonable to expect such projects to flourish in the future.
They will not only produce design resources for FLOSS communities, but they will
also provide a valuable resource for software engineering learners, who are willing
to explore and exploit informal and spontaneous sources of software architecture
information.
The latter consideration provides interesting opportunities for software architec-
ture education. As already mentioned, educating novice software architects is one of
the hardest tasks a software instructor has to face, partially because of the abstrac-
tion needed and the lack of clear understanding of the implications of architectural
decisions. A universe of FLOSS projects that will focus in software architecture
would provide an additional source of education material that can be combined with
formal educational resources, such as course materials and dedicated management
learning systems.
Communicating architectural decisions’ rationale is a very important aspect in
the success of FLOSS projects. It will allow the core architecture team to dissemi-
nate architectural knowledge in a more direct and systematic way to developers. It
will also allow developers to grasp this knowledge much faster and easier. For these
reasons we consider the decision-centric view of AKM a particularly relevant ap-
proach for FLOSS projects. As we mentioned earlier web-based tools for AKM that
support group communication [67] (Sect. 6.3.3) can be tested effectively in FLOSS
projects. Therefore the use of such decision-centric tools for AKM in FLOSS can
be of mutual benefit for both communities (FLOSS and AKM).
11.6 Summary
However we believe that the decision-centric view with Web-based tools may also
be very appropriate for the FLOSS community, which has a culture of using web-
based tools anyway for many aspects of software development (communication, bug
tracking, etc.)
We have reviewed certain cases in FLOSS where architectural knowledge is at
least stored in some way, available for consultation by interested FLOSS partici-
pants. Typical means for storing information (not only about architecture) in FLOSS
are discussion lists and threads, wikis, forums etc. We have also encountered open
content Web sites that provide resources (in the form of management and design
patterns) for specific application domains, such as user interfaces.
FLOSS belongs clearly to Earl’s behavioural school of knowledge management
(see Table 1.3). In particular, it belongs to the organisational school, focusing on
networks for sharing knowledge, supported by communities, aiming to draw knowl-
edge from a pool of gifted software developers and implicitly redistribute new
knowledge to the community of users and developers through FLOSS mechanisms
and tools.
Another interesting global issue about knowledge management in FLOSS is
the “organisational memory”, mentioned in Chap. 1. The FLOSS universe has a
good organisational memory, because its members esteem one another, and seek-
ing and finding undocumented knowledge pieces becomes natural and welcomed.
While seeking already documented knowledge is considered harmful, because it
simply wastes other people time, asking clever questions and trying to answer
interesting questions is considered as important as (almost) writing good code.
Knowledge providers and mentors receive credits for their support to newcomers
and are considered valued members of the community. In addition, migration from
one FLOSS project to another is free and frequent, and helps a lot towards dissem-
inating knowledge and ultimately in building the FLOSS organisational knowledge
and memory.
Table 11.1 summarizes the Architecture Knowledge Management activities in
FLOSS.
Finally we have speculated about the future of AKM in FLOSS, expecting more
and better AKM infrastructure and richer AKM resources. We have also identi-
fied software architecture education to be greatly facilitated by those increasing
resources in the future.
Chapter 12
Architectural Knowledge in an SOA
Infrastructure Reference Architecture
Abstract In this chapter, we present an industrial case study for the creation and
usage of architectural knowledge. We first introduce the business domain, service
portfolio, and knowledge management approach of the company involved in the
case. Next, we introduce a Service-Oriented Architecture (SOA) infrastructure ref-
erence architecture as a primary carrier of architectural knowledge in this company.
Moreover, we present how we harvested architectural knowledge from industry
projects to create this reference architecture. We also present feedback from early
reference architecture users. Finally, we conclude and give an outlook to future
work.
This section gives an overview of IBM Global Technology Services and its mid-
dleware service product line. It introduces SOA infrastructures as the technology
domain the case study is concerned with, as well as supporting assets and the
knowledge management strategy employed by IBM Global Technology Services.
In this first section, we briefly review general architectural concepts such as
viewpoints, methods, and reference architectures. Not all of these concepts pertain
to architectural knowledge explicitly; however, they helped us to create and lever-
age such knowledge successfully. An understanding of our usage of these concepts
helps to appreciate the central role of architectural knowledge in the case. As a
reader who is familiar with these concepts and is primarily interested in our usage
of architectural knowledge, as opposed to its context in the case, you may want to
skip this first section.
IBM Global Services is one of the world’s largest business and Information Tech-
nology (IT) services providers. It is a rapidly growing part of IBM; at present, over
190,000 professionals serve clients in more than 160 countries. IBM Global Ser-
vices comprises two major divisions: IBM Global Business Services and IBM Global
Technology Services (GTS) [153]. In this chapter we focus on GTS services which
pertain to IT infrastructure elements such as middleware.
GTS is structured into four business areas: Integrated Technology Services (ITS),
Maintenance and Technical Support Services, Strategic Outsourcing, and Managed
Business Process Outsourcing. These business areas support clients in a number
of ways: Some clients decide to develop and integrate applications themselves; for
such clients, GTS provisions hardware and/or software and provides maintenance
support. Other clients seeks help in the design, implementation, and management
of IT solutions; ITS offers a portfolio of related service products. Finally, turnkey
solutions and management of applications and infrastructure can be provided to
clients through outsourcing and managed services capabilities.
The case study presented in this chapter concerns the ITS business area, which
has a project-centric nature. We focus on SOA infrastructure services delivered in IT
strategy projects, as well as in the architecture, design, and implementation phases
of application development and integration projects.
The ITS strategy builds on an asset-based business model. ITS ensures a globally
consistent service delivery and a high quality of project results by standardizing its
services as reusable assets [238]. Following this asset-based business model, the
success of a service project is no longer bound to the personal skills and experience
of the individual project team members exclusively, but is ensured by the reuse of
predefined service assets. This is especially important for emerging geographies and
new topic areas in which the skill and experience base has not been fully established
yet.
ITS calls its service assets service products, acknowledging their standardized
nature. This name also conveys the vision of services being developed, packaged,
documented, and maintained just like software products. Service products precisely
define the nature and structure of the professional services in a globally consis-
tent fashion; they codify a significant part of the intellectual property of ITS. The
12 Architectural Knowledge in an SOA Infrastructure Reference Architecture 219
portfolio of service products spans a wide range of topic areas such as middle-
ware services including SOA infrastructure design and implementation, systems
and service management consulting and implementation services, but also storage
and server design including capacity planning, health checks and managed ser-
vices [153]. Service products respond to a shift of client preferences from custom
developed and integrated application islands to packaged, integrated, and pretested
end-to-end solutions.
ITS is organized into service product lines. Each service product line owns mul-
tiple related service products jointly targeting a certain technology domain. The
sum of the service products across all service product lines supports rapid, asset-
based project initiation and delivery and enables clients to focus their attention on
the core competencies differentiating them from their competitors; related savings
can be invested in additional revenue-generating capabilities. The service product
lines in ITS complement hardware from the IBM Server and Technology Group
and software from IBM Software Group. This portfolio allows GTS to combine
services, hardware, software, and knowledge of business processes seamlessly and
effectively, which helps to provide the desired end-to-end solutions.
Service products in all service product lines are built through strong investments
in research, intellectual property creation and management, acquisitions, and brand
discipline – all of which are needed to create a competitive portfolio. In this chapter,
we focus on selected SOA infrastructure services which are offered by the middle-
ware service product line. Two examples of service products in this service product
line are “SOA Integration Services – Connectivity and Reuse” and “Design and
Implementation for WebSphere ESB”. We will introduce these service products in
Sect. 12.1.3.
communication and offer an optimized suite of insurance services. The GTS team
architected, deployed, and implemented a robust SOA infrastructure leveraging IBM
WebSphere software. The solution included an integration of the client’s existing
IBM CICS backend running on zSeries nodes, along with implementation of a clus-
tered pair of IBM xSeries servers running the Microsoft Windows XP operating
system to host a new ESB and service registry platform. With the new integration so-
lution, the client is able to serve its partners and customers more efficiently and has
sharpened its competitive edge. The service product “SOA Integration Services –
Connectivity and Reuse” was used to design and implement the outlined solution.
A world-leading manufacturer of welding systems used SOA to cut its file sup-
port costs by 95% and improve its return-on-capital-employed ratio by working with
GTS to create an integration platform based on IBM WebSphere Message Broker for
Multiplatforms and a CISCO Linux driver. This new mission-critical ESB integra-
tion platform allows the client to automate its delivery and replenishment processes
and to integrate its existing backend system and its new supply chain manage-
ment software. This implementation leveraged the service product “SOA Integration
Services – Design and Implementation for WebSphere Message Broker”.
Having introduced the case study domain both from a business and from a tech-
nical perspective, let us investigate which role architectural knowledge plays in the
case.
To support its asset-based business model and the creation and usage of service
products, GTS leverages many supporting assets as carriers of architectural knowl-
edge. In this section, we introduce two particularly relevant types of such assets,
methods and reference architectures.
Methods. IBM Global Services has long recognized the importance of using soft-
ware engineering and architecture design methods [146] to provide repeatable
means of delivering proven solutions and to achieve project success and, in turn,
client satisfaction. A method framework called IBM Unified Method Framework
(UMF) organizes the work performed by practitioners and enables the design and
delivery of end-to-end solutions such as those outlined in the previous section.1
UMF provides prescriptive guidance on “what” needs to be created by a project
team in terms of common work products and “how” to produce these work products
in terms of activities, tasks, and roles as defined in [239].
UMF provides a common language among IBM practitioners delivering solu-
tions to clients, thus providing consistency across solutions. This requires a common
structure: In response to this need, Unified Method Architecture (UMA) defines
a metamodel underpinning UMF. UMA was developed as a common metamodel
1 The predecessor of UMF, the IBM Global Services Method, has been used on client projects
since 1998. The method changed its name several times during this period.
222 O. Zimmermann et al.
for the integration of several IBM methods including the Rational Unified Process
(RUP), the IBM Global Services Method, Rational Summit Ascendant, the IBM
World Wide Project Management Method (WW/PMM), and others.
UMA defines a method framework consisting of method content and a process.
UMA represents a consistent and repeatable approach to accomplishing a set of
objectives based on a collection of techniques and practices:
• Method content represents the primary reusable building blocks of the method
that exist outside of any predefined project lifecycle (process).
• The process shows the assembly of method content into a sequence or workflow
(represented by a work breakdown structure) used to organize a project and to
develop a solution. A task is the smallest unit of work in a UMA process; tasks
can be aggregated into activities and phases.
Method content contains the following work products, which define the inputs and
outputs of tasks as method elements:
• Artifacts are tangible inputs and outputs that may come with examples or a pre-
defined template. They serve as basis for reuse. “Use case model” and “software
architecture document” are examples of such artifacts.
• Deliverables are a grouping of task outputs that represent value to a client or other
project stakeholders; typically they are the result of packaging several other work
products for sign-off and delivery.
• Outcomes are intangible results. They are used to convey the completion of
tasks and activities with results that are less tangible than artifacts (e.g., trained
practitioners, installed software, configured system).
Reference architectures. GTS leverages reference architectures [34] to support the
service product development and usage. A reference architecture defines a to-be-
model of and blueprint for solutions recurring in a particular domain. It has a
well-defined scope, specifies the requirements the solutions satisfy, and captures
related architectural decisions. It is the objective of reference architectures to guide
practitioners through the architecture design activities and to communicate related
best practices (e.g., solution building blocks that worked for other practitioners who
encountered similar design problems on already completed projects).
Reference architectures may take different forms depending on their usage sce-
nario and target audience: A reference architecture used by a software vendor to
position products during presales differs from one used by a professional services
firm to divide labor and to exchange knowledge between projects. We use the term in
the latter form, faithful to the vision of Enterprise Solutions Structure (ESS) [252]:
An ESS reference architecture provides a consistent set of officially approved,
method-conformant work products (e.g., design artifacts) for a particular applica-
tion domain and architectural style (here: enterprise applications and SOA). To build
an economy of scale, it is imperative to agree on a particular terminology set and
standardize the structure of and the relationships between the work products (e.g.,
design artifacts). To accomplish these goals, the artifacts in reference architectures
must conform to the notation prescribed by the method employed. In our context,
12 Architectural Knowledge in an SOA Infrastructure Reference Architecture 223
UMF recommends the usage of the Unified Modeling Language (UML) [271] for
many artifacts.
Reference architectures take a governing role during service product creation,
ensuring architectural consistency and quality and avoiding undesired overlap.
generated reports, which are available in textual form (i.e., HTML and PDF
documents). SOAI RA concentrates on models for the following UMF artifacts:
• System context
• Use case model
• Non-functional requirements
• Architectural decisions
• Logical Component Model (CM)
• Physical Operational Model (OM)
The system context diagram shows the major relationships to external systems and
resources that are leveraged within SOAI RA. When UMF is employed, UML or
informal rich pictures are used to create system context diagrams. The Use Case
Model (UCM) captures how practitioners work with SOAI RA, but also shows how
humans users or applications interact with an SOA infrastructure (use case is a UML
term). Non-Functional Requirements (NFRs) define the quality attributes [157] of
the system and the constraints under which the system must be built. Constraints are
technical limitations imposed upon a solution by external forces. NFRs are typically
captured in free form or in structured text. In SOAI RA, the NFR artifact specifies
selected quality attributes to consider on SOA projects, e.g., interoperability.
Logical component modeling per se is the responsibility of an application ar-
chitect, often based in a professional services firm such as IBM Global Business
Services, providing business analysis, design and development services (among
others). The SOAI RA component model captures the application and middleware
components that are relevant for SOA infrastructure design: When creating a spec-
ified OM (see below), infrastructure architects must have an understanding of the
logical components hosted by the infrastructure under design. UMF recommends
using UML component and/or profiled class diagrams as CM notation.
The Operational Model (OM) is a key artifact in SOAI RA. UML or informal
rich pictures are commonly used to create OMs. SOAI RA provides a conceptual
OM and a specified OM; it does not go down to a physical OM level of elaboration.
The two SOAI RA OMs serve as an umbrella for and bridge between the physical
OMs which are defined in service products.2
Architectural decisions is another key work product in SOAI RA. For SOAI
RA we adopted the metamodel and the decisions from the SOA Decision Modeling
(SOAD) project [347]. Unlike most reference architectures, SOAD captures the deci-
sions to be made during adoption of the reference architecture on a particular project
(which we refer to as design issues), not those already made during the creation of
the reference architecture (decision outcomes). This focus shift helps to tailor SOAI
RA according to project needs: Not all SOA infrastructure design projects require
2 The three-level OM hierarchy supports an iterative and incremental refinement approach to
infrastructure design, which is in line with the advice given by common architecture design meth-
ods [146]. For instance, a technology-neutral design of locations, nodes, and deployment units
(conceptual OM) should be established before platform-specific ESB communication protocols
and products such as HTTP or Java Massage Service (JMS) are selected (specified OM) and
configured in the selected ESB product (physical OM) [80, 342].
226 O. Zimmermann et al.
all SOAD decisions as not all SOA patterns such as ESB, service composition, and
service registry are always used. Selecting such patterns and related implementation
platforms is part of the decision making.
Figure 12.1 illustrates the artifacts and viewpoints in SOAI RA. For instance, the
system context, the use case model, and the NFR artifacts all belong to the scenario
viewpoint in Kruchten’s 4 + 1 view model [188], whereas the CM belongs to the
logical viewpoint and the OM to the physical viewpoint.
The figure also shows that architectural decisions are not only used in their tradi-
tional role of capturing design rationale and decisions made, but also to organize the
reference architecture. Bidirectional links to and from the level 1 CM and the con-
ceptual OM are maintained. We provide more information about this central role
of the decision model and the three levels of architectural decisions (conceptual,
technology, and vendor asset level) in Sect. 12.2.2.
SOAI RA adopted the results of the SOA Decision Modeling (SOAD) project.
SOAD is an industrial research and knowledge engineering project we have been
conducting since January 2006. It has three project objectives and types of results:
1. Defining the concepts of a decision-centric architecture design method, e.g.,
a knowledge domain metamodel optimized for reuse and collaboration. These
concepts are introduced in separate publications, e.g., [347].
12 Architectural Knowledge in an SOA Infrastructure Reference Architecture 227
Concepts. The knowledge domain metamodel is the SOAD concept most rele-
vant for this case study. It remained stable since September 2006 except for minor
revisions such as renaming classes and attributes.
We distinguish decisions made and decisions required to facilitate reuse: An AD-
Issue instance informs the architect that a single architecture design problem has to
be solved. ADAlternative instances then present possible solutions to this problem.
ADOutcome instances record an actual decision made to solve the problem includ-
ing its rationale. Closely related ADIssues are grouped into ADTopicGroups, which
form a hierarchy. Dependencies between ADIssues are modeled as a dependsOn as-
sociation; in [347], we define more dependency relations. The metamodel is shown
in Fig. 12.2.
Executive Level
Application Architecture Infrastructure Architecture Example
Business Executive
Requirements Decisions e.g. Platform Preferences
Decisions
Conceptual Level
Integration Layer
Consumer Layer
QoS Layer
Logical VP: Process Layer Physical VP:
Conceptual Service Layer Conceptual e.g. Message Exchange Pattern
Decisions Component Layer
Decisions
Resource Layer
Technology Level
Integration Layer
Consumer Layer
QoS Layer
Logical VP: Process Layer Physical VP:
Technology Service Layer Technology e.g. Transport Protocol
Decisions Component Layer Decisions
Resource Layer
Resource Layer
VP – Viewpoint
Fig. 12.3 Layers and levels in RADM for SOA (Source: [347])
decisions and their rationale. They refer to the actual business processes in their
name attributes (“customer enquiry”, “claim check”, and “risk assessment”).
Content. The RADM for SOA is organized into levels and layers: An overarching
executive level comprises issues regarding requirements analysis and technical de-
cisions of strategic relevance. A conceptual level, a technology level and a vendor
asset level follow [347]. Architectural layers further structure the RADM. Fig-
ure 12.3 shows the resulting model structure (each box represents an ADTopicGroup
comprising ADIssues dealing with the same topic area on one refinement level).
The same top-level topic groups are defined on the conceptual, the technology,
and the vendor asset level. The level and topic group hierarchy serves as a table
of decision model content. The hierarchical structure is motivated by our observa-
tion that the technical discussions during SOA design often circle around detailed
features of certain vendor products, or the pros and cons of specific technologies,
whereas many highly important strategic decisions and conceptual concerns tend to
be underemphasized. These discussions are related, but should not be merged into
one; they reside on different refinement levels. Separating design concerns in such a
way is good practice; e.g., RUP recommends a similar incremental approach for
UML class diagrams used as design models. We adopted this recommendation
for decision models and made the three refinement levels explicit in the RADM
for SOA.
There are topic groups for seven logical SOA layers, consumer, process, service,
component, resource, integration, and QoS layer, which are introduced in [20]. Two
topic groups on each level contain issues pertaining to the logical and physical view-
point that can not be assigned to any layer. The model can be tailored and irrelevant
parts removed, e.g., if only issues dealing with processes, but not issues dealing with
230 O. Zimmermann et al.
ESB integration are of interest in a particular project context. About a dozen subject
area keywords are defined and expressed as topic tags, e.g., “session management”,
“transaction management”, “workflow”, and “error handling”.
Figure 12.4 is an excerpt of an ADIssue description in the RADM for SOA. The
issue deals with the I N M ESSAGE G RANULARITY of a service operation. This issue
qualifies as a an architectural decision to be included in the RADM for SOA, as its
outcome has a significant impact on the quality attributes of the SOA-based system
under construction and the issue recurs for each service operation.
In many cases, the ADAlternatives of an ADIssue in the RADM for SOA refer
to an already existing patterns, e.g., those documented by Buschmann et al. [64], by
Fowler [126], or by Hohpe and Woolf [148]. In this case, no patterns are available
yet; we plan to publish the descriptions of the issue and its pattern alternatives (D OT,
BAR, D OTTED L INE, and C OMB) in the future.
At present, the RADM for SOA consists of 86 ADTopicGroups and 389 ADIs-
sues with about 2000 ADAlternatives. The knowledge base is still growing, now at
a slower pace than in the beginning of the project. While this growth could continue
infinitely, we plan to freeze the knowledge engineering once the 500 most relevant
issues have been compiled. The knowledge base will still have to be reviewed pe-
riodically to ensure that the contained information remains up to date. Issues and
alternatives will become obsolete as technology evolves; new ones will be required.
The SOAD level and layer structure helps to organize these activities and reduce
the related effort; conceptual knowledge dates at a slower pace than that on the
technology and on the vendor asset level.
Tool. Architectural Decision Knowledge Wiki is a Web-based collaboration system
and application wiki which implements the SOAD metamodel as well as additional
concepts. It supports about 70 use cases. The tool is featured in [291, 347].
12 Architectural Knowledge in an SOA Infrastructure Reference Architecture 231
at the conceptual level and details those by adding NFR and other information at
the specified level. Figure 12.5 is a screen caption of a UML class diagram in
IBM Rational Software Modeler. The classes are annotated with a stereotype called
ConceptualNode which indicates that they represent an OM concept. The
nodes host deployment units, which correspond to SOA infrastructure elements. For
instance, the “application server node” hosts a “service integration bus” unit.
Figure 12.5 also shows that nodes in the conceptual OM are linked to SOAD is-
sues, which are made available via the Architectural Decision Knowledge Wiki tool
(as introduced in the SOAD overview in Sect.12.2.2). In the example, the applica-
tion server node in the conceptual OM has issues such as C OMPONENT C ONTAINER
A SSET and W EB S ERVICES P ROVIDER A SSET attached. This link between OM el-
ements and SOAD issues is a key feature in SOAI RA: It uses the scope attribute
defined in the SOAD metamodel introduced previously.
We follow the same approach to link logical components and related issues.
With this approach, we make architectural knowledge available in the tool the ar-
chitect works with during design; however, we do not model the rather rich issue
descriptions in the same UML model, but couple architecture elements and related
issues loosely to ensure flexibility and usability of the two parts of the architectural
knowledge, logical CM and physical OM on the one hand (design artifacts) and
architectural decision knowledge on the other hand (rationale).
12 Architectural Knowledge in an SOA Infrastructure Reference Architecture 233
The first source of input for the RADM for SOA was personal project experi-
ence [345, 348]. As a second step, we factored in selected architectural knowledge
from projects technically led by peers, leveraging a company-wide SOA and Web
services practitioner community with more than 3500 members. We screened sev-
eral hundred architectural decisions from more than 30 projects from several ge-
ographies and industries. A third type of input was systematic literature screening,
e.g., SOA and patterns books, technology introductions, and vendor documentation.
Originally, we had employed an ad hoc approach to incorporating these sources
of input. This ad hoc approach to asset harvesting turned out to be more labor intense
than originally anticipated: We were tempted to fix quality problems straight away,
adding our own expertise prematurely. This approach did not scale and did not pro-
duce a satisfying model. Hence, we switched to a systematic approach. It consists
of a basic four-step knowledge harvesting process and related decision modeling
guidance.
2. In the integrate step, existing information in the raw input is copied into appro-
priate attributes defined in the SOAD metamodel (see later).
3. In the harden step, the issue is decomposed if necessary, e.g., if there is a violation
of the level structure because concepts, technology characteristics, and product
features are covered in a single ADIssue. Moreover, the issue and alternative
information is completed in this step, for example with less obvious alterna-
tives, missing pros and cons, additional decision drivers, and additional decision
dependencies. The contributing project might have to be contacted to clarify
certain aspects.
4. In the align step, the new model element is reviewed and edited for readability
and consistency with already existing parts of the model.
It is worth noting that it is possible to iterate and harvest knowledge incrementally,
although Fig. 12.6 seems to suggest a linear process.
Review step. During the review step, two qualification criteria are applied to decide
whether an issue should be included in a RADM:
1. The first criterion is the reuse potential: Is a real architecture design problem
described, does the raw input qualify as an architectural decision? Does a can-
didate issue pertain to one of the principles and patterns defining SOA as an
architectural style? Does it present real alternatives? Will it recur, i.e., does it
have sustainable, long lasting character or is it a tactical or temporary decision?
Does it avoid to reference proprietary features or characteristics?
2. The second criterion is technical and editorial quality: Is the issue technically
sound, particularly the justification for the chosen design? Did the contributing
project succeed? Does its description read well? Is established terminology used,
e.g., are the referenced design model elements defined in the literature? Can issue
and outcome be separated from each other?
A high reuse potential as indicated by the answers to the questions regarding the
first criterion is mandatory. If there are doubts about the technical quality of the
candidate issue, it is not used; the editorial quality can be improved with reason-
able editing effort if there is a strong need for the issue (e.g., high reuse potential).
The contributing practitioner may be contacted in such a case to obtain additional
information about the circumstances under which the decision was made.
Integrate, harden, and align steps. When integrating and hardening knowledge that
qualifies for inclusion in the RADM, the raw input is mapped to the SOAD meta-
model as indicated in Table 12.1 (transitioning from decisions made to decisions
required).
In [347], we define quality heuristics for architectural decision models, which ad-
vise on the number of nesting levels and how to work with the logical and temporal
236 O. Zimmermann et al.
In this section, we discuss our own experience with the SOAD concepts and the
RADM for SOA content, as well as feedback from early adopters of SOAI RA.
238 O. Zimmermann et al.
Usage of SOAD within the SOAI RA project made evident that architectural de-
cisions recur: Another SOA reference architecture project had already compiled a
draft version of an architectural decisions artifact, which we received in January
2007. It captured 50 decisions and 42 of these decisions were already covered by
our RADM for SOA which at that time contained about 100 issues.
The model-driven approach of SOAD was seen to be superior to text template-
based decision capturing. From a tool perspective, filtered report generation was an
important feature (easing reviews and reference architecture customization). Unlike
previous reference architectures that only capture decisions made during reference
architecture development (outcomes), SOAD documents the decisions required dur-
ing adoption of the reference architecture (issues). This distinction caused some
misunderstandings because we had named the issue an “AD” initially; after the
renaming, the separation of problem and solution was welcomed.
Depth, breadth, and technical quality of the RADM for SOA content were ac-
knowledged and appreciated by the reviewers. One early action point was to explain
the level and layer structure in detail; consumers of the SOAI RA can not be as-
sumed to be familiar with these concepts (even if they are standard concepts in
MDD and software architecture). To do so, we authored supporting documentation
and added the topic group hierarchy to the architectural decision report generation
feature in the Architectural Decision Knowledge Wiki tool. To make the position in
the hierarchy clear in the issue name, we defined naming conventions.
Early users appreciated the knowledge captured in single issues and alternatives,
but struggled to stay orientated when being confronted with several hundred issues,
even when being supported by the scope, phase, and role attributes and the decision
topic hierarchy in the Architectural Decision Knowledge Wiki tool. As a second step
after having added the attributes, we provided additional search, filter, and export
capabilities for ease of orientation and consumption. Finally, we added concepts
such as entry points and decision status management based on the modeled decision
dependencies. These concepts are explained in detail in [347].
SOAD has been used on ten industrial SOA projects so far. Architects reviewed up
to 200 out of 389 issue descriptions and reused up to 50 issues during their decision
making on projects. Acceleration of the design activities and quality improvements
were reported on these cases; all practitioners welcomed vision and approach of
SOAD. Architectural Decision Knowledge Wiki was downloaded from IBM alpha-
Works more than 630 times (the download is free of charge; registration is required);
220 users are registered in an IBM internal hosted instance. The RADM for SOA
was transferred to four IBM lines of business.
12 Architectural Knowledge in an SOA Infrastructure Reference Architecture 239
Experience with SOAD concepts (metamodel). The fundamental hypothesis that ar-
chitectural decisions recur if the same architectural style is employed on multiple
projects in an application genre was confirmed numerous times. We interacted with
several hundred architects during the project. Only one of them disagreed, which
turned out to be a misunderstanding: We do not claim and require that the decision
outcome always is the same; only the issue, expressing the need for a decision and
the related background information has to recur to make SOAD work.
The attributes in the SOAD metamodel were rated well. They were seen to
be understandable intuitively, conveying useful information, and giving enough
information about the aspects of a decision that matter during decision making. A
few additional attributes were suggested, for instance the organizational reach of a
decision.
While the concept of refinement levels was acknowledged, the four levels in the
RADM for SOA were not seen to be the only solution. Other model organization
schemes such as architectural viewpoints and panes as defined by The Open Group
Architecture Framework (TOGAF) [241] were suggested. Decision dependency
management was seen as important differentiator of SOAD.
Experience with SOAD content (RADM for SOA). Model scoping and the level of
detail on which individual decisions are represented in the RADM for SOA were
appreciated and seen as appropriate (i.e., issues modeled that are not obvious or
trivial, captured knowledge relevant on SOA industry projects and documented in
an understandable way). Acceleration of decision identification and improved de-
cision making quality were reported. In one case, the effort for the creation of a
SOA principles deliverable decreased from eight to five person days because thir-
teen out of fifteen required decisions were present in the RADM for SOA and could
be reused.
Some confusion regarding proactive vs. retrospective decision modeling oc-
curred; one user simply copied the issue descriptions and the recommendation
attribute in the RADM to outcome instances in his deliverable. This caused neg-
ative feedback from a senior architect in a team-internal quality assurance review.
We can conclude that the writing style has a significant impact on the success of a
RADM. User expectations must be managed; SOAD is not designed to make archi-
tectural thinking obsolete. Project-specific requirements and RADM content must
be matched.
A rollout to additional, non-SOA application domains such as archiving solutions
and systems management is planned.
Experience with tool (Architectural Decision Knowledge Wiki). The user feedback
regarding the value of Architectural Decision Knowledge Wiki was encouraging:
users appreciated that all knowledge required during architectural decision making
can be conveniently located in a single place and that the system comes with a
set of initial content (i.e., samples and decision modeling guidance). The realized
use cases were seen to be meeting practitioner wants and needs. The presentation
of ADIssues, ADAlternatives, and ADOutcomes on a single HTML page received
positive reactions. However, users reported that they found it rather difficult to orient
240 O. Zimmermann et al.
themselves and navigate in large models. In early versions, the static topic group
hierarchy was the only order defined; the decision dependency relations were not
fully leveraged at that point. Additional visual elements were requested, as well as
a closer integration with other tools for architects.
12.5 Summary
Abstract This chapter presents the analysis and key findings of a survey on archi-
tectural knowledge sharing. The responses of 97 architects working in the Dutch
IT Industry were analyzed by correlating practices and challenges with project size
and success. Impact mechanisms between project size, project success, and architec-
tural knowledge sharing practices and challenges were deduced based on reasoning,
experience and literature. We find that architects run into numerous and diverse
challenges sharing architectural knowledge, but that the only challenges that have
a significant impact are the emotional challenges related to interpersonal relation-
ships. Thus, architects should be careful when dealing with emotions in knowledge
sharing.
13.1 Introduction
The invitation to participate in the survey was sent out by e-mail to 360 members
of the Netherlands (NL) Architecture Community of Practice (ACoP) of the ABC
company. The ACoP consists of experienced professionals practicing architecture
at various levels (business, enterprise, IT, software, and systems architecture) in
project or consultancy assignments. The survey was closed after 3 weeks. By that
time, 142 responses were collected; 97 respondents had answered the majority of
the questions (93 had answered all). The other 45 responses were discarded because
no questions about AK sharing had been answered. The survey consisted of 37
questions: 20 directly related to AK sharing, and 17 related to the context in which
the AK sharing took place.
13.3 Analysis
The analysis of the 97 valid survey responses was performed in three phases: first,
the current state of AK practice and challenges was established by comparing the
respondents’ answers to the 20 AK related questions. The analysis of four of these
questions is presented in Sect. 13.3.1: three questions about AK practices and one
about challenges in AK sharing. In phase one, we examined the responses by
ordering and grouping them.
Second, the relationship between the AK practices and challenges and their con-
text was analyzed by determining significant correlations between the AK-related
responses and some of the 17 context-related questions. The two context factors of
project success and project size are analyzed systematically in Sect. 13.3.2. The re-
sult of phase two is a set of statistically significant correlations between responses
to AK related questions, and the size and success of the projects they pertained to.
13 Successful Architectural Knowledge Sharing: Beware of Emotions 245
In the third phase of the analysis, we reasoned and discussed about the results
from the first two phases. Two of the authors have been practicing architects in the
ABC company for more than a decade. Based on reasoning, literature and their expe-
rience we deduced causality and impact mechanisms from the correlations, leading
to an observed impact model that is presented in Sect. 13.3.3. Further discussions
are presented in Sect. 13.4.
In this section, the responses to four of the AK related questions are analyzed,
presenting the results of phase 1 of the analysis.
The four questions are:
• What type of architectural knowledge have you provided to or acquired from
ABC in your latest assignment?
• Why did you share architectural knowledge to your colleagues in ABC?
• When did you share architectural knowledge in your latest assignment?
• What challenges in architectural knowledge sharing did you experience in your
latest assignment?
100%
90%
80%
70%
60%
50%
40%
30%
20%
10%
0%
s_akt_std s_akt_tlsmeth s_akt_prctc s_akt_prodkn s_akt_req s_akt_dd s_akt_buskn s_akt_ptrn s_akt_ra s_akt_legal
100%
90%
80%
70%
60%
50%
40%
30%
20%
10%
0%
w
ct
ry
re
pu
gl
ro
lik
om
co
et
pe
tu
la
rs
us
re
cip
w_
dn
re
sa
re
ex
pe
ec
w_
pb
w_
w_
bl
re
w_
ak
gt
m
w_
w_
m
ak
w_
ak
m
s_
sa
ak
ak
co
ak
s_
w_
ak
s_
ak
w_
s_
s_
w_
s_
s_
s_
ak
ak
ak
s_
s_
s_
The only motivation that more architects disagree with (38%) than agree with
(17%) is salary. A related finding is the unpopularity of management expectation as
a motivator: 65% of respondents are at most impartial to this motivator.
AK Sharing Timing When did you share architectural knowledge in your latest
assignment?
The distribution of the response values is visualized in Fig. 13.3. By far the most
popular times to share AK are when problems occur, at the end of projects and
when asked by colleagues (other than managers); these three timings are all used
often or very often by over 50% of the architects. Almost 30% of architects indicate
248 E.R. Poort et al.
100%
90%
80%
70%
60%
50%
40%
30%
20%
10%
0%
s_akh_problems s_akh_prjend s_akh_collask s_akh_mgtask s_akh_freetime s_akh_evening s_akh_prjcnt
100%
90%
80%
70%
60%
50%
40%
30%
20%
10%
0%
s
rt
ck
ns
ys
ills
al
st
to
pr
ill
ua
lic
ee
er
di
ac
rin
tim
pa
w
rm
tru
rs
ap
fla
la
co
sk
nf
st
fq
nd
fm
no
tin
sh
pe
kh
de
l_
fo
te
gt
cu
in
co
fin
l_
in
qu
ef
l_
l_
ch
ow
st
in
si
l_
l_
m
l_
ch
l_
l_
l_
in
ch
l_
ch
l_
l_
ck
ch
re
ch
ch
l_
ch
s_
ch
ch
l_
gr
s_
ch
ch
ch
s_
s_
ch
l_
la
s_
s_
ch
s_
s_
l_
s_
s_
s_
ch
l_
s_
s_
s_
ch
s_
ch
s_
s_
s_
s chl requnders, s chl stkhpart, s chl custdiv are all related to communication is-
sues on group level (as opposed to personal level); this is the category of
challenges that most architects consider relevant in their latest projects
s chl infqual, s chl inflack, s chl infincons are about issues with quality or ab-
sence of codified AK; this is the second most commonly relevant category of
challenges
s chl time, s chl delays are related to planning; this is the third most commonly
relevant category of challenges
other challenges all less commonly relevant than the three categories mentioned
above, are related to obtaining resources, interpersonal issues, teaming, continu-
ity and management
In discussions about challenges in knowledge sharing, “knowledge is power” [27]
is often cited as a reason for professionals not to want to share knowledge. In our
survey however, lack of willingness to share knowledge emerges as the least rel-
evant challenge, which the majority of architects find irrelevant, and which only
18% find relevant. The next least relevant challenge is lack of management appre-
ciation, which only 21% find relevant. The unpopularity of this response suggests
that, even though we have seen in Sect. 13.3.1 that both salary and management ex-
pectations are at the bottom of the list of reasons to share AK, architects are not
actively discouraged by their management’s apparent disinterest. Seeing that 65%
of respondents are at most impartial to management as a motivator (Fig. 13.2) and
almost 80% are at most impartial to management as a challenge (Fig. 13.4), one
might conclude that architects do not see management as an important factor in
Architectural Knowledge Sharing. As we will see later on, they might be wrong
about this.
In this section, we analyze the relationship between the AK practices and challenges
and their project context, by examining significant correlations between the AK-
related responses and some of the context-related questions. The two context factors
analyzed here are project success and project size.
The first context factor analyzed is project success, as perceived by the architects.
Perceived project success3 is determined by asking the architects how they rated
seven aspects of project success on a five-point Likert scale from Poor to Excellent.
The aspects they rated are: Sticking to budget, Delivery in time, Client satisfaction,
Management support, Personnel turnover, Solution quality and Team satisfaction.
The combined answers of these seven aspects were subsequently averaged to obtain
a quantification of overall project success per case. Cronbach’s alpha test for internal
consistency [84] was used to verify that these seven responses measure the same
construct of success (al pha = 0.82).
3 We use the terms “project success” and “perceived project success” interchangeably, always
meaning the success as perceived by the architects and reported in the survey
250 E.R. Poort et al.
The second context factor analyzed is project size. Projects were assigned an
exponential size category between 1 and 5, based on the number of project mem-
bers: 10 or less became category 1, 11–30 category 2, 31–100 category 3, 101–300
category 4, and over 300 category 5.
Table 13.1 shows the Spearman’s rho correlations between project success and
the AK practice related responses in column prj succ rho. Correlations between
project size category and the AK practice related responses are in column prj size
rho.
Correlations with a positive or negative slope of over 0.2 and a significance level
of under .05 (indicated by one or two asterisks) are considered significant and dis-
cussed here. In the discussion of the correlations, some speculation is presented as
to the underlying mechanisms, based on the experience of the practicing architects
among the authors.
Cause and Effect. One of the objectives of this survey was to gain insight into mech-
anisms around architectural knowledge sharing in projects. In other words, we were
looking for ways in which Architectural Knowledge Sharing impacts projects and
vice versa – questions of cause and effect.
When analyzing correlations like the ones found in this survey, the question of
causality between the correlated measurements deserves careful consideration. The
mere presence of a correlation by itself does not imply a causal relationship. In order
to determine potential causality, we resorted to three additional means: reasoning,
literature and the experience of two of the authors as practicing architects in ABC.
The four categories of measurements we are correlating here are:
AKS Practices. The responses related to the type, motivation and timing of archi-
tectural knowledge sharing
AKS Challenges. The responses to the question: “What challenges in architec-
tural knowledge sharing did you experience in your latest assignment?”
Project Success. The perceived success of the respondents’ latest project
Project Size. The size of the respondents’ latest project (category based on num-
ber of project members)
There are six possible correlations between these four categories. We are not ana-
lyzing correlations between AKS Practices and Challenges. Figure 13.5 visualizes
potential causality arrows for the five remaining possible correlations. In this figure
and Fig. 13.8, a causality arrow from A to B symbolizes that A has impact on B,
implying that making changes to A would cause related changes in B. The arrows
are based on the following reasoning:
Project Size ↔ Project Success. Project size is well known to influence project
success in many ways, both in literature [54, 168] and experience, so the primary
arrow of causality is from Size to Success
Project Size ↔ AKS Practices. Experience indicates that mechanisms determin-
ing project size are only marginally impacted by architectural knowledge sharing;
on the other hand, project size determines factors like organizational and phys-
ical distance between project members, which are obvious factors in AKS. We
13 Successful Architectural Knowledge Sharing: Beware of Emotions 251
conclude that any correlation found means that project size impacts AKS, and
not the other way around.
Project Size ↔ AKS Challenges. Like with AKS Practices, project size causes
AKS challenges. There are some challenges that may in time conversely influ-
ence project size: for example, difficulty to obtain the appropriate skills may
either lead to a smaller project because there is no staff available, or to a
larger project because the lower skill level is compensated by adding more staff.
We conclude that there is a primary causal arrow from project size to AKS
challenges, and a potential secondary reverse arrow.
Project Success ↔ AKS Practices. Examples of causality in both directions are
experienced: e.g., a more successful project may lead to a better atmosphere
causing more knowledge to be exchanged, or conversely more knowledge shar-
ing may contribute to a more successful project. We conclude that we cannot
a priori attach causality direction to correlations found between project success
and AKS practices.
Project Success ↔ AKS Challenges. The word challenge is used here as a syn-
onym for obstacle, which can be defined as something that makes achieving one’s
objectives more difficult. Since the objective here is a successful project, the pri-
mary arrow of causality is by definition from Challenge to Success. There is also
a possibility of reverse causality here: challenges may be exacerbated or caused
by (lack of) project success, e.g. the atmosphere in an unsuccessful project may
lead to lack of trust.
5.00
5.00
4.00
4.00
proj_success
proj_success
3.00
3.00
2.00
2.00
R sq Linear = 0.045
R sq Linear = 0.077
1.00
1.00
1.00 2.00 3.00 4.00 5.00 1 2 3 4 5
s_akw_1to1 s_akh_prjcnt
(a) Motivation: interpersonal relationships (b) Continuous AKS
5.00 5.00
4.00 4.00
proj_success
Proj_success
3.00 3.00
Scale
3.0
2.5
2.0
2.00 1.5
2.00 1.0
Fit line for Total
1.00 1.00
We find no correlation between project success and the type of the Architectural
Knowledge shared.
Motivation: s akw persrel, s akw return, s akw reciproc Remarkably, all motiva-
tion responses that are related to one-to-one relationships between colleagues
show a significant negative correlation with project success. Figure 13.6a visu-
alizes this relationship, showing a clearly downward slanting cluster: the x-axis
represents the individual architects’ average mark given to these three responses.4
There are many possible explanations, but in view of our findings about AK
sharing challenges a few items further down, the most plausible one appears to
be related to trust. Problems in projects tend to reduce trust, which might cause
architects to place more value on interpersonal motives.
Motivation: s akw mgtexpect Even though management expectations are consid-
ered one of the least important motivations for sharing AK by the architects, it
is the only motivation that has a positive correlation with project success. The
explanation may also be related to trust levels: architects working on successful
4 The lines in the scatter plots in this section represent linear regression fit lines and their 95%
confidence interval.
13 Successful Architectural Knowledge Sharing: Beware of Emotions 253
projects have more confidence in their management, and hence are more inspired
or motivated by them.
Timing: s akh prjcnt The only AK sharing timing response that has a correla-
tion with project success is continuous AK sharing during the project. However,
visual inspection of Fig. 13.6b suggests that this is a spurious effect.
Challenges: s chl conflict, s chl sitetrust and s chl nowill Since there is by def-
inition a causality between AKS challenges and project success, we expect to
find correlations. Remarkably, only three challenges are significantly correlated
with project success. These three challenges, all with a very clear negative cor-
relation, have in common that they are related to interpersonal relationships and
emotion: conflicts, trust and willingness to share AK. We have plotted the corre-
lation between project success and the individual architects’ average mark given
to these three responses related to interpersonal challenges in Fig. 13.6c. As for
the other challenges, finding no correlation indicates one of two things: either the
challenge is so insignificant that the correlation is too small to be measured in a
sample this size, or the challenge is somehow neutralized.
From these correlations, we can draw the following conclusion: the only significant
AKS challenges that are not neutralized in projects are those related to emotion
and interpersonal relationships. In less successful projects, there is less trust and
willingness to share AK, and more conflict. This appears not to affect the type of
AK shared. It does, however, have a significant effect on architects’ motivation to
share architectural knowledge: in more successful projects, they are more motivated
by management and less by interpersonal relationships between colleagues.
Correlation with project size. We proceed to discuss the correlations between ar-
chitectural practices and challenges and project size, as documented in column 5 of
Table 13.1. We find nine significant correlations. Summarizing, in larger projects,
architects tend to:
• Face significantly more challenges of multiple kinds
• Share more knowledge about tools and methods, but less about products and
vendors
Project size has no effect on AK sharing motivation or timing.
s akt tlsmeth Architects in larger projects share slightly more information related
to tools and methods than architects in smaller projects. This is likely due to the
fact that there are simply more developers to educate on tools and methods.
s akt prodkn Architects in some smaller projects tend to share more knowledge
related to products and vendors. We suspect that this is due to the fact that in
larger projects, decisions about products and vendors are often made on a higher
(management) level, whereas smaller project architects are more likely to be in-
volved in these decisions, and hence have to share more knowledge related to
products and vendors.
AKS challenges Table 13.1 shows that out of the 18 types of challenges surveyed,
seven are significantly correlated to project size. We have also calculated the ag-
gregated AKS challenge level as the average of each architect’s challenge-related
254 E.R. Poort et al.
s_chl_top11
n_pri_members
5.00
s_chl_bottom7
n_pri_members
s_chl_top11
n_pri_members
s_chl_bottom7
n_pri_members
4.00
3.00
2.00
R Sq Linear = 0.069
R Sq Linear = 0.186
1.00
1 10 100 1000
responses. It turns out this aggregated AKS challenge level is correlated to project
size with a correlation coefficient of 0.356 at a 0.001 significance level. The seven
challenges at the bottom of Table 13.1 are the only ones that are also individually
correlated to project size. Apparently, some challenges are universal, and oth-
ers are considered less relevant in smaller projects, bringing down their average
response value. We have illustrated this by plotting the average response values
of both the seven least commonly relevant and the 11 most commonly relevant
challenges against project size in Fig. 13.7. The figure confirms that there is in-
deed a clear upward trend, and that it is steeper for the less commonly relevant
challenges.
Based on the fact that larger projects are likely to include more distinct depart-
ments or locations, and the well-known issue of tension between departments,
we would expect larger projects to suffer more from emotion-related challenges.
We do indeed find correlations between project size and lack of both willing-
ness (0.245) and trust (0.244), but no significant correlation with the challenge
of conflicts and differences of opinion.
We now use the correlations observed in Sect. 13.3.2 to obtain a more detailed
picture of causality. Figure 13.8 shows the causality arrows between the four cate-
gories of measurements as visualized in Fig. 13.5, but the AKS category boxes have
13 Successful Architectural Knowledge Sharing: Beware of Emotions 255
been replaced with more specific subcategories corresponding to the responses that
showed correlations. Additional symbols show whether correlations are positive or
negative. Specifically, we have:
• Replaced the generic box AKS Challenges with a box Less common AKS Chal-
lenges, representing the seven least common AKS challenges that have significant
positive correlations with project size.
• Created a box Interpersonal challenges inside the Less common AKS Challenges
box, representing the three challenges related to willingness, trust and conflict
that are negatively correlated with project success.
• Replaced the generic AKS Practices box with four specific boxes representing the
practices that we have found to be correlated with either project size or project
success.
• Added + and − symbols to the causality arrows representing the sign of the
observed correlations.
There is one correlation that we had not discussed yet: that between project size
and perceived project success. Figure 13.6d displays a very clear relationship be-
tween project size and perceived project success. Perceived project success and the
logarithmic project size category described above show a negative Spearman’s rho
correlation coefficient of −0.449, with a significance of 0.000. This is in line with
results found by [168], and conversely provides some additional validation that our
input data behave according to known properties of IT projects. Brooks [54] gives a
clear explanation of one of the mechanisms that cause this correlation. Surprisingly,
a more recent survey [111] does not find this correlation.
Figure 13.8 summarizes in one picture the combined mechanisms in the interplay
between AKS and project size and success. We see how project size impacts some
challenges, and which challenges impact project success. We also see that project
size impacts the type of knowledge shared, and we observe a relationship between
AKS motivation and project success, a relationship with an as yet undetermined
arrow of causality.
256 E.R. Poort et al.
In this section, we further discuss the results found above and threats to validity, and
we relate them to additional related material found in literature.
These results are based on a survey of architects in one IT services company in one
country. This limitation is somewhat softened by the fact that 64% of respondents
work mostly at customers’ sites, but the results are certainly influenced by cultural
aspects of both the ABC company and the Netherlands location. It would be very
interesting to repeat the survey in other companies and locations.
The ordering of the responses in Table 13.1 and the response value distribution
bar charts is based on average response values. The meaning of the average number
itself is not clear, since the Likert-scale is not equidistant. An alternative order-
ing quantity would be the percentile responses of e.g. the two most positive Likert
values. This would have the advantage of being able to say exactly what the or-
dering quantity means, but the disadvantage of ignoring the information inherent
in the detailed distribution of responses. Visual inspection of the bar charts shows
that, with the exception of Fig. 13.1, the order of the responses would not be that
much different, specifically in those cases where we have based reasoning on the
response ordering. As an example: the “seven least commonly relevant challenges”
in Fig. 13.4 that we have discussed above would also be the seven bottom-most
challenges if ordered by percentile of respondents answering “Relevant” or “Very
Relevant”.
A final threat is caused by our approach of doing multiple statistical tests, and
deriving our model from significant statistical results found in those tests. This ap-
proach implies a risk of introducing spurious statistical results in the model. We
have mitigated this risk by using reasoning, experience and literature, but it would
be interesting to further validate the model by using it to predict results in other
surveys.
Project success has long been an active research topic. Traditionally, project success
is defined in terms of meeting time, cost and quality objectives [251]. These corre-
spond to the first three of the seven project success criteria used in our survey. More
recently, it has been observed that projects can be successful in ways that cannot be
measured by these traditional criteria. Based on these insights, Baccarini et al. [25]
have constructed a conceptual framework for project success. Baccarini’s frame-
work distinguishes between Project Management Success, which includes the three
13 Successful Architectural Knowledge Sharing: Beware of Emotions 257
traditional criteria of time, cost and process quality, and Product Success, which
adds criteria related to the product in a more strategic way, involving the product’s
goal and purpose and product satisfaction. In Baccarini’s framework, our criteria
would all fall in the Project Management Success category, with the exception of
Solution Quality. Team Satisfaction in Baccarini’s framework can relate to both
project and product; in our experience, this is especially true for architects, who
derive a large part of their job satisfaction from product quality. This observation
is confirmed by research by Linberg et al. [210] and more recently by Procaccino
et al. [257], who observe that developers’ perception of project success often devi-
ates significantly from the traditional criteria. Developers (including architects) tend
to judge success by criteria that extend beyond the project, sometimes even to the
extent that even canceled projects can be successful in their eyes.
An interesting finding about motivation in this survey is the observed shift in motiva-
tion source from colleagues to management in more successful projects. Could there
be an either/or effect, in the sense that the 1-on-1 motivation by colleagues and mo-
tivation by management are somehow mutually exclusive? In that case, one would
expect a negative correlation between these two motivation sources, which we did
not measure (Spearman’s rho = 0.107 with a two-tailed significance of 0.295). We
conclude that the mechanisms causing these shifts are independent. The finding
does, however, cause one to wonder about architects’ apparent indifference to man-
agement expectations as either a motivator or a challenge. The well-known Chaos
Reports [305] already showed empirical evidence for management attention being a
key project success factor.
Markus already identified the importance of being aware of one’s motivation
long before the term architect was used in the context of system design: “Self-
examination of interests, motives, payoffs, and power bases will lend much to the
implementor’s ability to understand other people’s reactions to the systems the im-
plementor is designing. . . ” [219]. In literature, motivation is reported to have the
single largest impact on developer productivity[42, 221]. Moreover, in system de-
velopment, the architecture represents the system’s earliest design decisions with the
highest impact on success [34]. Combining these facts, it is only to be expected that
the motivation to share Architectural Knowledge is correlated with project success.
Our results not only point to the importance of motivation and its source, but also
shed some light on the mechanisms through which motivation and emotion impact
project success through Architecture Knowledge management.
Finally, some words on the topic of emotion, a term that we introduced in
Sect. 13.3.2 as the common element between the three only challenges that have
a significant negative correlation with project success: Conflicts and differences of
opinion, Lack of trust between the project locations and No willingness to share
258 E.R. Poort et al.
knowledge. During the analysis, we often wondered how it was possible that we
did not find any significant correlation between the other challenges in AKS and
Project Success. Consider, for example, the most commonly encountered challenge:
Difficulty to achieve common understanding of requirements. How can a project be
successful without common understanding of requirements? As stated above, the
only plausible explanation is that all of these other challenges are apparently neu-
tralized. With neutralize we mean that if these challenges occur, there are other
factors that prevent them from having a significant impact on project success. In the
case of our example, these could be compensating activities to promote the common
understanding of requirements, such as client meetings. In the end, the only chal-
lenges that are not neutralized are those related to lack of trust, willingness, conflicts
and differences of opinion: all issues in interpersonal relationships that have a strong
negative emotional connotation. Apparently, it is harder for architects to neutralize
challenges when such negative emotions are involved. This is a phenomenon that
the practicing architects among the authors have often observed in real life, and it
should be no surprise, given that architects are human beings. The significant finding
here is that these emotional challenges are not neutralized where all other challenges
are, and hence they merit extra attention, leading to the warning in our title: Beware
of Emotions
We conclude:
F OR ARCHITECTS , TO UNDERSTAND THEIR MOTIVATION AND DEAL WITH
EMOTIONS ARE CRUCIAL KNOWLEDGE SHARING SKILLS .
13.5 Summary
We set out on this survey with two goals, which were both achieved: to establish
the current state of architectural knowledge sharing in the ABC company and its
customers, and to gain insight into the mechanisms around architectural knowledge
sharing in projects. In order to gain this insight, we looked at architects’ responses to
four questions about AK sharing, and the correlations between these responses and
their latest projects’ success and size, and we reasoned about impact mechanisms
and causality.
The analysis revealed the following mechanisms:
• Architects face many challenges sharing architectural knowledge in projects
• These challenges are more numerous and diverse in larger projects than in smaller
ones.
• The most common of these challenges are related to group level communication
issues, the quality of codified knowledge and planning issues.
• However, these common challenges are not correlated with project success, so
apparently they are generally neutralized somehow.
• The only challenges that are correlated with project success are the ones related
to interpersonal relationships: conflicts, trust and willingness to share knowledge.
13 Successful Architectural Knowledge Sharing: Beware of Emotions 259
Acknowledgements This research has been partially sponsored by the Dutch Joint Academic
and Commercial Quality Research and Development (Jacquard) program on Software Engineer-
ing Research via contract 638.001.406 GRIFFIN: a GRId For inFormatIoN about architectural
knowledge.
References
261
262 References
13. Ali-Babar, M., Zhu, L., Jeffery, R.: A Framework for classifying and comparing software ar-
chitecture evaluation methods. In: Proceedings of the 15th Australian Software Engineering
Conference, pp. 309–319. Melbourne, Australia, IEEE Computer Society (2004)
14. Allmann, C., Winkler, L., Kölzow, T.: The requirements engineering gap in the OEM-
supplier relationship. J. Univers. Knowl. Manag. 1(2), 103–111 (2006)
15. America, P., Rommes, E., Obbink, H.: Multi-View Variation Modeling for Scenario Analysis.
Springer, Heidelberg (2003)
16. Androutsellis-Theotokis, S., Spinellis, D.: A survey of peer-to-peer content distribution
technologies. ACM Comput. Surv. 36(4), 335–371 (2004)
17. Ankolekar, A., Krötzsch, M., Tran, T., Vrandečić, D.: The two cultures: Mashing up web 2.0
and the semantic web. Web Semant. Sci. Serv. Agents World Wide Web 6(1), 70–75 (2008)
18. Antoniou, G., van Harmelen, F.: A Semantic Web Primer. MIT, Cambridge (2004)
19. Argyris, C., Schön, D.A.: Organizational learning II: Theory, method and practise. Organi-
zation Development Series. Addison Wesley, Boston MA (1996)
20. Arsanjani, A.: Service-Oriented Modeling and Architecture. IBM developerWorks (2004)
21. Arumugam, M., Sheth, A., Arpinar, I.B.: Towards peer-to-peer semantic web: A distributed
environment for sharing semantic knowledge on the web. In: International World Wide Web
Conference (WWW) (2002)
22. Aurum, A., Jeffery, R., Wohlin, C., Handzic, M.: Managing Software Engineering Know-
ledge. Springer, Berlin (2003)
23. Avgeriou, P., Kruchten, P., Lago, P., Grisham, P., Perry, D.: Architectural knowledge and
rationale - Issues, trends, challenges. ACM SIGSOFT Software Eng. Notes 32, 41–46 (2007)
24. Babu, T.L., Seetha Ramaiah, M., Prabhakar, T.V., Rambabu, D.A.: ArchVoc – Towards an
ontology for software architecture. In: Second Workshop on SHAring and Reusing Ar-
chitectural Knowledge – Architecture, Rationale, and Design Intent (SHARK/ADI). ACM
(2007)
25. Baccarini, D.: The logical framework method for defining project success. Proj. Manag. J.
30, 25–32 (1999)
26. Bachmann, F., Merson, P.: Experience using the web-based tool wiki for architecture
documentation. Tech. Rep. SEI-2005-TN-041, Carnegie Mellon University (2005)
27. Bacon, S.F.: Religious Meditations (1597)
28. Bales, D., Greenwald, R., Stackowiak, R.: Oracle Application Server 10g Essentials.
O’Reilly, California (2004)
29. Barbacci, M.R., Ellison, R., Lattanze, A.J., Stafford, J.A., Weinstock, C.B., Wood, W.G.:
Quality Attribute Workshops (QAWs). Tech. Rep. CMU/SEI-2003-TR-016, SEI, Carnegie
Mellon University, USA. (2003)
30. Bartsch-Spörl, B.: Transfer of experience – issues beyond tool building. In: Workshop on
Learning Software Organizations, pp. 3–8. Fraunhofer Publica, Kaiserslautern, Germany
(1999)
31. Basili, V., Rombach, H.: The TAME project: Towards improvement-oriented software
environments. IEEE Trans. Software Eng. 14(6), 758–773 (1988)
32. Basili, V.R., Caldiera, G.: Improving software quality reusing knowledge and experience.
Sloan Manag. Rev. 37(1), 55–64 (1995)
33. Basili, V.R., Caldiera, G., Rombach, H.D.: The experience factory. In: Marciniak, J.J. (ed.)
Encyclopedia of Software Engineering, vol. 1, pp. 469–476. Wiley, New York (1994)
34. Bass, L., Clements, P., Kazman, R.: Software Architecture in Practice, 2nd edn. Addison
Wesley, MA (2003)
35. Bass, L., Kazman, R.: Architecture-Based Development. Tech. Rep. CMU/SEI-99-TR-007,
Software Engineering Institute (SEI), Carnegie Mellon University, Pittsburgh, USA (1999)
36. Batini, C., Ceri, S., Navathe, S.B., Navathe, S.: Conceptual Database Design: An Entity-
Relationship Approach. Addison-Wesley, MA (1991)
37. Bechhofer, S., van Harmelen, F., Hendler, J., Horrocks, I., McGuinness, D., Patel-Schneider,
P., Stein, L.: Web ontology language (OWL) reference. W3C Recommendation. http://
www.w3.org/TR/2004/REC-owl-ref-20040210/ (2004)
References 263
38. Beck, K.: Extreme Programming Explained: Embrace Change. Addison-Wesley, Boston
(2000)
39. Bengtsson, P., Lassing, N., Bosch, J., van Vliet, H.: Architecture-level modifiability analysis
(ALMA). J. Syst. Software 69(1–2), 129–147 (2004)
40. Bittner, K., Spence, I.: Use Case Modeling. Addison-Wesley, Boston MA (2002)
41. Bjørnsson, F.O., Dingsøyr, T.: Knowledge management in software engineering: A system-
atic review of studied concepts and research methods used. Inform. Software Tech. 50(11),
1055–1168 (2008)
42. Boehm, B.: Software Engineering Economics. Prentice-Hall, Englewood Cliffs NJ (1981)
43. de Boer, R.C., Farenhorst, R.: In search of architectural knowledge. In: 3rd Workshop on
Sharing and Reusing architectural Knowledge (SHARK). Leipzig, Germany (2008)
44. de Boer, R.C., Farenhorst, R., Lago, P., van Vliet, H., Clerc, V., Jansen, A.: Architectural
knowledge: Getting to the core. In: Proceedings of the 3rd International Conference on the
Quality of Software-Architectures (QoSA), pp. 197–214. Springer, Heidelberg, LNCS 4880
(2007)
45. de Boer, R.C., van Vliet, H.: Architecture knowledge discovery with latent semantic analysis:
Constructing a reading guide for software product audits. J. Syst. Software 81(9), 1456–1469
(2008)
46. de Boer, R.C., van Vliet, H.: On the similarity between architecture and requirements. J. Syst.
Software 82(3), 544–550 (2009)
47. Booch, G.: Handbook of Software Architecture. URL http://www.booch.com/architecture/
index.jsp
48. Bosch, J.: Software architecture: The next step. In: Oquendo, F., Warboys, B., Morrison, R.
(eds.) Software Architecture, First European Workshop (EWSA), pp. 194–199. Springer,
Heidelberg, LNCS 3047 (2004)
49. Boussaidi, G.E., Mili, H.: A model-driven framework for representing and applying design
patterns. In: 31st Annual International Computer Software and Applications Conference,
pp. 97–100. IEEE (2007)
50. Bradbury, J.S., Cordy, J.R., Dingel, J., Wermelinger, M.: A survey of self-management in
dynamic software architecture specifications. In: 1st ACM SIGSOFT Workshop on Self-
Managed Systems, pp. 28–33. Newport Beach, California (2004)
51. Bratthall, L., Johansson, E., Regnell, B.: Is a design rationale vital when predicting change
impact? - A controlled experiment on software architecture evolution. In: 2nd International
Conference on Product Focused Software Process Improvement, pp. 126–139. Springer
Verlag. Lecture Notes in Computer Science 1840 (2000)
52. van den Brink, P.: Social, Organization, and technological conditions that enable knowledge
sharing. Ph.D. thesis, Technische Universiteit Delft (2003)
53. Broekstra, J., Kampman, A., van Harmelen, F.: Sesame: A generic architecture for storing
and querying RDF and RDF schema. In: Proceedings of the 1st International Semantic Web
Conference (ISWC), pp. 54–68 (2002)
54. Brooks, F.P.: The Mythical Man-Month. Addison-Wesley, Reading, MA (1975)
55. Brown, J.S., Duguid, P.: Organizational learning and communities-of-practise: Toward a
unified view of working, learning and innovation. Organizat. Sci. 2(1), 40–57 (1991)
56. de Bruin, H., van Vliet, H.: Quality-driven software architecture composition. J. Syst.
Software 66(3), 269–284 (2003)
57. de Bruin, H., van Vliet, H., Baida, Z.: documenting and analyzing a context-sensitive design
space. In: Bosch, J., Gentleman, M., Hofmeister, C., Kuusela, J. (eds.) Software Architec-
ture: System Design, Development and Maintenance, Proceedings 3rd Working IFIP/IEEE
Conference on Software Architecture, pp. 127–141. Kluwer, Dordecht (2002)
58. Buckingham Shum, S., Hammond, N.: Argumentation-based design rationale: What use at
what cost? Int. J. Hum. Comput. Stud. 40(4), 603–652 (1994)
59. Burge, J.: Software engineering using design rationale. Ph.D. thesis, Worcester Polytechnic
Institute. URL http://www.wpi.edu/Pubs/ETD/Available/etd-050205-085625/ (2005)
60. Burge, J., Brown, D.: An integrated approach for software design checking using rationale.
In: Gero, J. (ed.) Design Computing and Cognition, pp. 557–576. Kluwer, Dordecht (2004)
264 References
61. Burge, J., Brown, D.: Rationale-based support for software maintenance. In: Dutoit, A.,
McCall, R., Mistrı̀k, I., Paech, B. (eds.) Rationale Management in Software Engineering,
pp. 273–296. Springer, Heidelberg (2006)
62. Burge, J., Brown, D.: SEURAT: Integrated rationale management. In: Proceedings of the
30th International Conference on Software Engineering (ICSE), pp. 835–838. ACM (2008)
63. Burge, J., Brown, D.: Software engineering using rationale. J. Syst. Software 81(3), 395–413
(2008)
64. Buschmann, F., Meunier, R., Rohnert, H., Sommerlad, P.: Pattern-Oriented Software Archi-
tecture: A System of Patterns. Wiley, New York (1996)
65. Buxton, J.N., Randell, B.: Software engineering techniques: Report of a Conference spon-
sored by the NATO Science Committee, Rome, Italy, 27–31 October 1969. NATO, Scientific
Affairs Division, Brussels (1970)
66. Capilla, R., Nava, F., Dueñas, J.C.: Modeling and documenting the evolution of architec-
tural design decisions. In: 2nd Workshop on Sharing and Reusing architectural Knowledge –
Architecture, rationale, and Design Intent (SHARK/ADI), p. 9. ACM (2007)
67. Capilla, R., Nava, F., Pérez, S., Dueñas, J.C.: A web-based tool for managing architectural
design decisions. In: 1st ACM Workshop on Sharing Architectural Knowledge (SHARK).
Torino, Italy, ACM (2006)
68. Capiluppi, A., Lago, P., Morisio, M.: Characterizing the oss process. In: 2nd Workshop on
Open Source Software engineering (2002)
69. Chowdhury, F.: Practice of team based management.
http://www.bdresearchers.org/Article/PracticeofTeamBasedManagement (2008)
70. Clarke, R.: Web 2.0 as syndication. J. Theor. Appl. Electron. Commerce Res. 3(2), 30–43
(2008)
71. Clements, P., Bachmann, F., Bass, L., Garlan, D., Ivers, J., Little, R., Nord, R., Stafford, J.:
Documenting Software Architectures : Views and Beyond, 1st edn. Addison Wesley, Boston
MA (2002)
72. Clements, P., Kazman, R., Klein, M.: Evaluating Software Architectures: Methods and Case
Studies. Addison-Wesley, MA (2001)
73. Clements, P., Kazman, R., Klein, M., Devesh, D., Reddy, S., Verma, P.: The duties, skills,
and knowledge of software architects. In: 6th Working IEEE/IFIP Conference on Software
Architecture (WICSA), p. 20. IEEE Computer Society, Mumbai, India (2007)
74. Clements, P., Northrop, L.: Software Product Lines: Practice and Patterns. Addison-Wesley,
Boston (2002)
75. Clerc, V.: Towards architectural knowledge management practices for global software de-
velopment. In: 3rd Workshop on Sharing and Reusing Architectural Knowledge (SHARK),
ICSE 2008. ACM (2008)
76. Clerc, V., Lago, P., van Vliet, H.: Assessing a multi-site development organization for archi-
tectural compliance. In: Proceedings of the 6th Working IEEE/IFIP Conference on Software
Architecture. IEEE Computer Society (2007)
77. Clerc, V., Lago, P., van Vliet, H.: Global software development: Are architectural rules
the answer? In: Proceedings of the 2nd IEEE International Conference on Global Software
Engineering (ICGSE 2007), pp. 225–234. IEEE Computer Society (2007)
78. Clerc, V., Lago, P., van Vliet, H.: The architect’s mindset. In: Proceedings of the 3rd Interna-
tional Conference on the Quality of Software-Architectures (QoSA). Springer, Heidelberg,
LNCS 4880 (2007)
79. Conklin, E., Burgess-Yakemovic, K.C.: A process-oriented approach to design rationale. In:
Moran, T., Carroll, J. (eds.) Design Rationale: Concepts, Techniques and Use, chap. 14,
pp. 393–427. Lawrence Erlbaum Associates (1996)
80. Cook, D. Cripps, P., Spaas, P.: An Introduction to the IBM Views and Viewpoints Framework
for IT Systems. IBM developerWorks (2008)
81. Coplien, J.O., Harrison, N.B.: Organizational Patterns of Agile Software Development.
Prentice Hall, Englewood Cliffs, NJ (2004)
82. Coplien, J.O., Schmidt, D.C.: Pattern Languages of Program Design. Addison Wesley,
Boston MA (1995)
References 265
83. Coulouris, G., Dollimore, J., Kindberg, T.: Distributed Systems: Concepts and Design, 4th
edn. Addison Wesley, Boston MA (2005)
84. Cronbach, L.J.: Coefficient alpha and the internal structure of tests. Psychometrika 16(3),
297–334 (1951)
85. Cui, X., Sun, Y., Mei, H.: Towards automated solution synthesis and rationale capture in
decision-centric architecture design. In: 7th Working IEEE/IFIP Conference on Software
Architecture (WICSA ’08), pp. 221–230 (2008)
86. Damian, D.: Stakeholders in global requirements engineering: Lessons learned from practice.
IEEE Software 24(2), 21–27 (2007)
87. Damian, D., Izquierdo, L., Singer, J., Kwan, I.: Awareness in the wild: Why communica-
tion breakdowns occur. In: 2nd International Conference on Global Software Engineering,
pp. 81–90. IEEE Comput. Soc. (2007)
88. Davenport, T., Probst, G.: Knowledge Management Case Book – Best Practises. Publicis
MCD, Germany (2000)
89. Davenport, T.H., Prusak, L.: Working Knowledge: How Organizations Manage What They
Know. Harvard Business School Press, Cambridge, MA (1998)
90. Davies, J., Fensel, D., Van Harmelen, F., NetLibrary, I.: Towards the Semantic Web:
Ontology-driven Knowledge Management. Wiley, New York (2003)
91. Decker, B., Ras, E., Rech, J., Jaubert, P., Rieth, M.: Wiki-based stakeholder participation in
requirements engineering. IEEE Software 24(2), 28–35 (2007)
92. Desouza, K., Awazu, Y., Baloh, P.: Managing Knowledge in Global Software Development
Efforts: Issues and Practices. IEEE Software 23(5), 30–37 (2006)
93. Desouza, K.C.: Barriers to effective use of knowledge management systems in software
engineering. Comm. ACM 46(1), 99–101 (2003)
94. Desouza, K.C., Evaristo, J.R.: Managing knowledge in distributed projects. Comm. ACM
47(4), 87–91 (2004)
95. Dierkes, M., Berthoin Antal, A., Child, J., Nonaka, I.: Handbook of Organizational Learning
and Knowledge. Oxford University Press, New York (2001)
96. Dingsøyr, T., Conradi, R.: A survey of case studies of the use of knowledge management in
software engineering. Int. J. Software Eng. Knowl. Eng. 12(4), 391–414 (2002)
97. Dingsøyr, T., Lago, P., van Vliet, H.: Assumptions promote Learning about Architectural
Knowledge. In: von Wangenheim, C.G., Rocha, A.R. (eds.) 8th International Workshop on
Learning Software Organizations, pp. 59–67. Rio de Janeiro, Brazil (2006)
98. Dingsøyr, T., Moe, N.B.: The impact of employee participation on the use of an electronic
process guide: A longitudinal case study. IEEE Trans. Software Eng. 34(2), 212–225 (2008)
99. Dingsøyr, T., Røyrvik, E.: An empirical study of an informal knowledge repository in a
medium-sized software consulting company. In: Proceedings of the 25th International Con-
ference on Software Engineering (ICSE25), pp. 84–92. IEEE Computer Society, Portland,
Oregon, USA (2003)
100. Dingsøyr, T., Røyrvik, E., Djarraya, H.K.: Practical knowledge management tool use in a
software consulting company. Comm. ACM 48(12), 96–100 (2005)
101. Dobrica, L., Niemela, E.: A survey on software architecture analysis methods. IEEE Trans.
Software Eng. 28(7), 638–653 (2002)
102. Drucker, P.: Post-Capitalist Society. Butterworth Heinemann, Oxford (1993)
103. Dueñas, J.C., Capilla, R.: The decision view of software architecture. In: Morison, R.,
Oquendo, F. (eds.) 2nd European Workshop on Software Architecture. Pisa, Italy (2005)
104. Dutoit, A.H., Paech, B.: Rationale management in software engineering. In: Chang, S.K.
(ed.) Handbook of Software Engineering and Knowledge Engineering, vol. 1. World Scien-
tific Publishing, Singapore (2001)
105. Dybå, T.: Enabling software process improvement: An investigation on the importance of
organizational issues. PhD thesis, Norwegian University of Science and Technology (2001)
106. Dybå, T., Dingsøyr, T.: Empirical studies of agile software development: A systematic
review. Inform. Software Tech. 50(9), 833–859 (2008)
107. Earl, M.: Knowledge management strategies: Towards a taxonomy. J. Manag. Inform. Syst.
18(1) (2001)
266 References
108. Easterby-Smith, M., Lyles, M.A.: The Blackwell handbook of organizational learning and
knowledge management. Blackwell Publishing, Oxford, UK (2003)
109. Ebert, C., Man, J.D.: Effectively utilizing project, product and process knowledge. Inform.
Software Tech. 50(6), 579–594 (2008)
110. Ehrig, M., Tempich, C., Broekstra, J., van Harmelen, F., Sabou, M., Siebes, R., Staab,
S., Stuckenschmidt, H.: SWAP: Ontology-based knowledge management with peer-to-peer
technology. In: Workshop on Ontology-based Knowledge Management. Co-located with the
German Conference on Knowledge Management, Lecture Notes in Informatics (2003)
111. Emam, K.E., Koru, A.G.: A replicated survey of IT software project failures. IEEE Software
25(5), 84–89 (2008)
112. Euzenat, J., Shvaiko, P.: Ontology Matching. Springer, New York (2007)
113. Farenhorst, R., Izaks, R., Lago, P., van Vliet, H.: A just-in-time architectural knowledge
sharing portal. In: Proceedings of the 7th Working IFIP/IEEE Conference on Software
Architecture (WICSA7), pp. 125–134. IEEE Computer Society (2008)
114. Farenhorst, R., Lago, P., van Vliet, H.: EAGLE: Effective tool support for sharing architec-
tural knowledge. Int. J. Cooper. Inform. Syst. 16(3/4), 413–437 (2007)
115. Farenhorst, R., Lago, P., van Vliet, H.: Prerequisites for successful architectural knowledge
sharing. In: Proceedings of the 2007 Australian Software Engineering Conference (ASWEC
2007), pp. 27–36. IEEE Computer Society (2007)
116. Farenhorst, R., van Vliet, H.: Experiences with a wiki to support architectural knowledge
sharing. In: Third Workshop on Wikis for Software Engineering (Wiki4SE) (2008)
117. Feigenbaum, L., Herman, I., Hongsermeier, T., Neumann, E., Stephens, S.: The semantic
web in action. Scientific American (2007)
118. Feldmann, R.L., Althoff, K.D.: On the status of learning software organisations in the year
2001. In: Althoff, K.D., Feldmann, R.L., Mller, W. (eds.) Learning Software Organizations
Workshop, Lecture Notes in Computer Science, vol. 2176, pp. 2–6. Springer, Kaiserslautern,
Germany (2001)
119. Feller, J., Fitzgerald, B.: Understanding Open Source Software Development. Addison
Wesley, Boston MA (2001)
120. Fensel, D.: Ontology-based knowledge management. IEEE Comput. 35(11), 56–59 (2002)
121. Fischer, G., Ostwald, J.: Knowledge management: problems, promises, realities, and chal-
lenges. IEEE Intell. Syst. 16(1), 60–70 (2001)
122. Fitzgerald, B.: The transformation of open source software. MIS Q. 30(3), 587–598 (2006)
123. Folmer, E., van Gurp, J., Bosch, J.: A framework for capturing the relationship between
usability and software architecture. Software Process Improv. Pract. 8(2), 67–87 (2003)
124. Foster, I.: What is the grid?. URL www-fp.mcs.anl.gov/∼foster/Articles/WhatIsTheGrid.pdf
(2002)
125. Fowler, M.: Analysis Patterns: Reusable Object Models. Addison-Wesley, Boston MA (1997)
126. Fowler, M.: Patterns of Enterprise Application Architecture. Addison-Wesley, Boston MA
(2003)
127. Fowler, M.: Who needs an architect. IEEE Software 20(5), 11–13 (2003)
128. Fowler, M., Rice, D., Foemmel, M., Hieatt, E., Mee, R.: Patterns of Enterprise Application
Architecture. Pearson, Boston MA (2002)
129. Galster, M., Eberlein, A., Moussavi, M.: Transition from requirements to architecture: A
review and future perspective. In: 7th ACIS International Conference on Software Engi-
neering, Artificial Intelligence, Networking, and Parallel/Distributed Computing (SNPD),
pp. 9–16 (2006)
130. Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns: Elements of Reusable
Object-Oriented Software. Addison-Wesley, Boston MA (1994)
131. Gant, J., Gant, D.: Web portal functionality and state government e-service. In: Proceedings
of the 35th Annual Hawaii International Conference on System Sciences (HICSS), pp. 1627–
1636. IEEE Computer Society (2002)
132. Georgas, J.C., Taylor, R.N.: Towards a Knowledge-Based Approach to Architectural Adap-
tation Management. In: 1st ACM SIGSOFT Workshop on Self-managed systems, pp. 59–63.
Newport Beach, California (2004)
References 267
133. Ghosh, T.: Creating Incentives for Knowledge Sharing. Tech. rep., MIT Open Courseware,
Sloan school of management, Cambridge, MA, USA (2004)
134. Girvan, M., Newman, M.: Community structure in social and biological networks. Proc. Natl.
Acad. Sci. 99(12), 7821–7826 (2002)
135. Gongla, P., Rizzuto, C.R.: Evolving communities of practice: IBM global services experi-
ence. IBM Syst. J. 40(4), 842–862 (2001)
136. Gorton, I.: Essential Software Architecture. Springer, Heidelberg (2006)
137. Gorton, I., Haack, J.: Architecting in the Face of Uncertainty: An Experience Report. In:
Proceedings of the 26th International Conference on Software Engineering (ICSE 2004).
Edinburgh, Scotland (2004)
138. Gorton, I., Zhu, L.: Tool support for just-in-time architecture reconstruction and evaluation:
An experience report. In: 27th International Conference on Software Engineering (ICSE’05),
pp. 514–523. ACM (2005)
139. Gruber, T.R., Russell, D.M.: Design knowledge and design rationale: A framework for repre-
senting, capture, and use. Tech. Rep. KSL 90-45, Knowledge Systems Laboratory, Standford
University, California, USA (1991)
140. Haase, P., Siebes, R., van Harmelen, F.: Peer selection in peer-to-peer networks with semantic
topologies. In: ICSNW, pp. 108–125 (2004)
141. Hall, H.: Input-friendliness: Motivating knowledge sharing across intranets. J. Inform. Sci.
27(3), 139–146 (2001)
142. Hall, J., Jackson, M., Laney, R., Nuseibeh, B., Rapanotti, L.: Relating software require-
ments and architectures using problem frames. In: IEEE Joint International Conference on
Requirements Engineering, pp. 137–144 (2002)
143. Hansen, M.T., Nohria, N., Tierney, T.: What is your strategy for managing knowledge? Harv.
Bus. Rev. 77(2), 106–116 (1999)
144. Harrison, N.B., Avgeriou, P., Zdun, U.: Using patterns to capture architectural decisions.
IEEE Software 24(4), 38–45 (2007)
145. Hislop, D.: Mission impossible? communicating and sharing knowledge via information
technology. J. Inform. Tech. 17, 165–177 (2002)
146. Hofmeister, C., Kruchten, P., Nord, R., Obbink, H., Ran, A., America, P.: A general model of
software architecture design derived from five industrial approaches. J. Syst. Software 80(1),
106–126 (2007)
147. Hofmeister, C., Nord, R., Soni, D.: Applied Software Architecture. Addison Wesley, Boston
MA (2000)
148. Hohpe, G., Woolf, B.: Enterprise Integration Patterns. Addison-Wesley, MA (2004)
149. Houdek, F., Schneider, K.: Software experience center. The evolution of the experience
factory concept. In: International NASA-SEL Workshop (1999)
150. Huysman, M., de Wit, D.: Practices of managing knowledge sharing: Towards a second wave
of knowledge management. Knowl. Process Manag. 11(2), 81–92 (2004)
151. Huysman, M., Wulf, V.: IT to support knowledge sharing in communities, towards a social
capital analysis. J. Inform. Tech. 21, 40–51 (2006)
152. IBM: Rational Unified Process. IBM Rational Software (2007). http://www.ibm.com/
software/awdtools/rup/
153. IBM Global Technology Services: Services Overview. http://www.ibm.com/services/
us/index.wss
154. IBM Software Group: Product Overview. http://www.ibm.com/software
155. IEEE1471: IEEE Recommended Practice for Architectural Description of Software-
Intensive Systems. Tech. rep., IEEE (2000)
156. International Standards Organization (ISO): ISO/IEC 9126-1:2001, Software Quality
Attributes, Software engineering – Product quality, Part 1: Quality model (2001)
157. ISO/IEC 9126-1: Software Engineering – Product Quality – Part 1: Quality Model. ISO
(2001)
158. ISO/IEC 42010 WD3: Architectural description, working draft 3. ISO, Geneva (2008)
159. Jansen, A.: Architectural design decisions. PhD thesis, University of Groningen (2008)
160. Jansen, A., Avgeriou, P., van der Ven, J.S.: Enriching software architecture documentation.
J. Syst. Software, doi: 10.1016/j.jss.2009.04.052 (2009)
268 References
161. Jansen, A., Bosch, J.: Software architecture as a set of architectural design decisions. In:
Proceedings of the 5th IEEE/IFIP Working Conference on Software Architecture (WICSA),
pp. 109–119. IEEE Computer Society (2005)
162. Jansen, A., Bosch, J., Avgeriou, P.: Documenting after the fact: Recovering architectural
design decisions. J. Syst. Software 81(4), 536–557 (2008)
163. Jansen, A., van der Ven, J.S., Avgeriou, P., Hammer, D.K.: Tool support for architectural
decisions. In: 6th Working IEEE/IFIP Conference on Software Architecture. Mumbai, India.
pp. 44–53. IEEE Computer Society (2007)
164. Jansen, A., de Vries, T., Avgeriou, P., van Veelen, M.: Sharing the architectural knowledge
of quantitative analysis. In: Proceedings of the 4th International Conference on the Quality
of Software-Architectures (QoSA), pp. 220–234. Springer, Heidelberg, LNCS 5281 (2008)
165. Jarczyk, A.P., Loffler, P., Shipmann, F.M., III.: Design rationale for software engineering:
A survey. In: Proceedings of the 25th Hawaii International Conference on System Sciences,
vol. 2, pp. 577–586 (1992)
166. Jeffery, R., Basili, V.: Validating the tame resource data model. In: Proceedings of the 10th
International Conference on Software Engineering (ICSE 1988). Singapore (1988)
167. Johannson, C., Hall, P., Coquard, M.: Talk to Paula and Peter – They are experienced.
In: F.B.G. Ruhe (ed.) International Conference on Software Engineering and Knowledge
Engineering (SEKE’99), Workshop on Learning Software Organizations. LNCS, vol. 1756,
Springer, Heidelberg (1999)
168. Jones, C.: Software Assessments, Benchmarks, and Best Practices. Addison-Wesley, Boston
MA (2000)
169. Kalfoglou, Y., Schorlemmer, M.: Ontology mapping: the state of the art. Knowl. Eng. Rev.
18(01), 1–31 (2003)
170. Kankanhalli, A., Tan, B.C.Y., Wei, K.K.: Contributing knowledge to electronic knowledge
repositories: An empirical investigation. MIS Q. 29(1), 113–143 (2005)
171. Karsenty, L.: An empirical evaluation of design rationale documents. In: Proceedings of
the SIGCHI Conference on Human Factors in Computing Systems: Common Ground,
pp. 150–156 (1996)
172. Kazman, R., Abowd, G., Bass, L., Clements, P.: Scenario-based analysis of software
architecture. IEEE Software 13, 47–55 (1996)
173. Kazman, R., Bass, L., Klein, M.: The essential components of software architecture design
and analysis. J. Syst. Software 79, 1207–1216 (2006)
174. Kazman, R., Bass, L., Klein, M., Lattanze, T., Northrop, L.: A basis for analyzing software
architecture analysis methods. Software Qual. J. 13, 329–355 (2005)
175. Kazman, R., Bass, L., Webb, M., Abowd, G.: SAAM: a method for analyzing the properties
of software architectures. In: 16th International Conference On Software Engineering
(ICSE-16), pp. 81–90. IEEE Computer Society Press, Sorrento, Italy (1994)
176. Kazman, R., Klein, M.H., Barbacci, M., Longstaff, T.A., Lipson, H.F., Carrière, S.J.: The
architecture tradeoff analysis method. In: ICECCS, pp. 68–78 (1998)
177. Kazman, R., Kruchten, P., Nord, R., Tomayko, J.: Integrating Software Architecture-Centric
Methods into the Rational Unified Process. Tech. rep., Software Engineering Institute,
CMU/SEI-2004-TR-011 (2004)
178. Kew, N.: Apache Modules Book: Application Development with Apache. Prentice-Hall,
Englewood Cliffs, NJ (2007)
179. King, R.: How cloud computing is changing the world. Business Week Online (August 2008)
180. Kircher, M., Jain, P.: Pattern-Oriented Software Architecture: Patterns for Resource
Management, Volume 3. Wiley, New York (2004)
181. Kiryakov, A., Ognyanov, D., Manov, D.: OWLIM - A pragmatic semantic repository
for OWL. In: Proceedings of the 6th Web Information Systems Engineering (WISE),
pp. 182–192. Springer, Berlin (2005)
182. Kitchenham, B., Hughes, R., Linkman, S.: Modeling software measurement data. IEEE
Transactions on Software Engineering 27(9), 788–804 (2001).
References 269
183. Klems, M., Nimis, J., Tai, S.: Do clouds compute? a framework for estimating the value
of cloud computing. In: Seventh Workshop on E-Business (WeB2008), Lecture Notes in
Business Information Processing (LNBIP). Springer, Berlin (in press)
184. Klyne, G., Carroll, J., McBride, B.: Resource Description Framework (RDF): Concepts and
Abstract Syntax. W3C Recommendation (2004). URL http://www.w3.org/TR/rdf-concepts/
185. Kneuper, R.: Supporting Software Processes Using Knowledge Management. In: S.K.
Chang (ed.) Handbook of Software Engineering and Knowledge Engineering, pp. 579–606.
World Scientific, Singapore (2001)
186. Kolb, D.: Experiential Learning experience as a source of learning and development.
Prentice-Hall, Englewood Cliffs, NJ (1984)
187. Krafzig D., Banke K., Slama D.: Enterprise SOA. Prentice-Hall, Englewood Cliffs, NJ (2005)
188. Kruchten, P.: The 4 + 1 View Model of Architecture. IEEE Software 12(6), 42–50 (1995)
189. Kruchten, P.: The Rational Unified Process, An Introduction, third edn. Addison-Wesley,
Reading, MA (2003)
190. Kruchten, P.: An Ontology of Architectural Design Deciions in Software-Intensive Systems.
In: 2nd Groningen Workshop on Software Variability Management. Groningen, The
Netherlands (2004)
191. Kruchten, P., Capilla, R., Dueñas, J.C.: The Decision’s View Role in Software Architecture
Practice. IEEE Software 26(2), 36–42 (2009)
192. Kruchten, P., Lago, P., van Vliet, H.: Building up and Reasoning about Architectural Know-
ledge. In: C. Hofmeister, I. Crnkovic, R. Reussner (eds.) Quality of Software Architectures,
Proceedings 2nd International Conference, LNCS, vol. 4214, pp. 43–58. Springer, Berlin
(2006)
193. Kruchten, P., Lago, P., van Vliet, H., Wolf, T.: Building up and exploiting architectural
knowledge. In: Proceedings of the 5th IEEE/IFIP Working Conference on Software Archi-
tecture (WICSA), pp. 291–292. IEEE Computer Society, USA (2005)
194. Kwan, I., Damian, D., Storey, M.A.: Visualizing a Requirements-centred Social Network
to Maintain Awareness Within Development Teams. In: Workshop on Requirements Engi-
neering Visualization (REV). Minneapolis-St. Paul, MN, USA (2006)
195. Lago, P., Avgeriou, P.: First Workshop on Sharing and Reusing Architectural Knowledge.
ACM SIGSOFT Software Eng. Notes 31(5), 32–36 (2006)
196. Lago, P., Farenhorst, R., Avgeriou, P., de Boer, R.C., Clerc, V., Jansen, A., van Vliet, H.:
The GRIFFIN collaborative virtual community for architectural knowledge management.
In: A. Finkelstein, A. van der Hoek, J. Grundy, I. Mistrı̀k, J. Whitehead (eds.) Collaborative
Software Engineering. Springer, Berlin (in press)
197. Lakoff, G., Johnson, M.: Metaphors we live by. The University of Chicago Press, Chicago
(1980)
198. Lampson, B.W.: Hints for computer system design. Oper. Syst. Rev. 15(5), 33–48 (1983)
199. van Lamsweerde, A.: From system goals to software architecture. In: M. Bernardo, P. In-
verardi (eds.) Formal Methods for Software Architectures, LNCS, vol. 2804, pp. 25–43.
Springer, Berlin (2003)
200. Lee, J.: Design rationale systems: understanding the issues. IEEE Expert 12(3), 78–85 (1997)
201. Lee, L., Kruchten, P.: Capturing software architectural design decisions. In: 20th Annual
Canadian Conference on Electrical and Computer Engineering (CCECE’07). IEEE,
Vancouver (2007)
202. Lee, L., Kruchten, P.: Customizing the capture of software architectural design decisions. In:
21st Annual Canadian Conference on Electrical and Computer Engineering (CCECE’08).
IEEE, Niagara Falls, ON (2008)
203. Lee, L., Kruchten, P.: A tool to visualize architectural design decisions. In: S. Becker,
F. Plasil, R. Reussner (eds.) 4th International Conference on the Quality of Software
Architecture (QoSA). LNCS, vol. 5281, pp. 43–54. Springer, Berlin (2008)
204. Lee, L., Kruchten, P.: Visualizing software architectural design decisions. In: R. Morrison,
D. Balasubramaniam, K. Falkner (eds.) European Conference on Software Architecture
(ECSA 2008). LNCS vol. 5292, pp. 359–362. Springer, Berlin (2008)
270 References
205. Letsche, T., Berry, M.: Large-Scale Information Retrieval with Latent Semantic Indexing.
Inform Sci 100(1–4), 105–137 (1997)
206. Liang, P., Jansen, A., Avgeriou, P.: Selecting a high-quality central model for sharing archi-
tectural knowledge. In: Proceedings of 8th International Conference on Quality Software
(QSIC 2008), pp. 357–365. IEEE Computer Society Press, USA (2008)
207. Liang, P., Jansen, A., Avgeriou, P.: Sharing architecture knowledge through models: quality
and cost. The Knowl. Eng. Rev. 24(3) (2009)
208. Liang, P., Jansen, A., Avgeriou, P.: Collaborative Software Architecting through Knowledge
Sharing. In: A. Finkelstein, A. van der Hoek, J. Grundy, I. Mistrı̀k, J. Whitehead (eds.)
Collaborative Software Engineering. Springer, Berlin (to appear)
209. Lin, K.J.: Building web 2.0. Computer 40(5), 101–102 (2007)
210. Linberg, K.: Software developer perceptions about software project failure: a case study. J.
Syst. Software 49(2–3), 177–92 (1999)
211. Lindvall, M., Rus, I., Jammalamadaka, R., Thakker, R.: Software tools for knowledge
management. Tech. rep., DoD Data Analysis Center for Software (2001)
212. Lohmann, S., Heim, P., Auer, S., Dietzold, S., Riechert, T.: Semantifying requirements
engineering - the softWiki approach. In: Proceedings of the 4th International Conference on
Semantic Technologies (I-SEMANTICS), pp. 182–185 (2008)
213. Lopez, D.: Sams Teach Yourself Apache 2 in 24 Hours. Sams (2002)
214. Lua, E.K., Crowcroft, J., Pias, M., Sharma, R., Lim, S.: A survey and comparison of
peer-to-peer overlay network schemes. Commun. Surveys Tutor., IEEE 7(2), 72–93 (2005)
215. Lübke, D.: An Integrated Approach for Generation in Service-Oriented Architecture
Projects. Phd thesis, Leibniz Universität Hannover (2007)
216. Lübke, D., Lüecke, T., Schneider, K., Gòmez, J.M.: Model-driven development of business
applications using event-driven process chains. In: 2006 GITMA International Conference,
pp. 95–98. Global Information Technology Management Association, Orlando, USA (2006)
217. Lübke, D., Schneider, K.: Leveraging feedback on processes in SOA Projects. In: I. Richard-
son, P. Runeson, R. Messnarz (eds.) EuroSPI. LNCS, vol. 4257, pp. 195–206. Springer,
Berlin (2006)
218. Lyytinen, K., Robey, D.: Learning failure in information systems development. Inform. Syst.
J. 9, 85–101 (1999)
219. Markus, M.L.: Power, politics, and M.I.S. implementation. Commun. ACM 26(6), 430–444
(1983)
220. Matinlassi, M., Niemela, E., Dobrica, L.: Quality-driven architecture design and quality
analysis method: A revolutionary initiation approach to a product line architecture. Tech.
Rep. 456, VTT Technical Research Centre of Finland, Espoo (2002)
221. McConnell, S.: Rapid Development. Microsoft Press (1996)
222. McDermott, R.: Learning Across Teams – How to build communities of practice in team
organizations. Knowledge Manage. Rev. 2(8) (1999)
223. McDermott, R.: Why information technology inspired but cannot deliver knowledge
management. Calif. Manage. Rev. 41(4), 103–117 (1999)
224. Medvidovic, N., Taylor, R.: A classification and comparison framework for software
architecture description languages. IEEE Trans. Software Eng. 26(1), 70–93 (2000)
225. Meier, J., Homer, A., Hill, D., Taylor, J., Bansode, P., Wall, L., Boucher Jr, R.,
Bogawat, A.: Application Architecture Guide 2.0–Designing applications on the .NET
platform. Microsoft, Redmond, WA (2008)
226. Mendling, J., Nüttgens, M.: EPC Markup Language (EPML) – An XML-based interchange
format for Event-Driven Process Chains (EPC). Inform. Syst. e-Bus. Manage. (ISeB) 4(3),
245–263 (2005)
227. Mills, J.A.: A pragmatic view of the system architect. Commun. ACM 28(7), 708–717 (1985)
228. Moran, T., Carroll, J.: Design Rationale: Concepts, Techniques, and Use. Lawrence Erlbaum
Associates, USA (1996)
229. Schuster N., Zimmermann, O.: Architectural Decision Knowledge Wiki. http://www.
alphaworks.ibm.com/tech/adkwik
References 271
230. Naiburg, E.J., Maksimchuk, R.A.: UML for Database Design. Addison-Wesley, Reading
MA (2001)
231. Napster: (2009). URL free.napster.com
232. Networked European Software and Services Initiative (NESSI) – Grid: Grid vision and
strategic research agenda (2008). URL www.soi-nwg.org
233. Newman, M., Girvan, M.: Finding and evaluating community structure in networks. Phys.
Rev. E 69(2) (2004)
234. Nonaka, I., Takeuchi, H.: The Knowledge-Creating Company : How Japanese Companies
Create the Dynamics of Innovation. Oxford University Press (1995)
235. Nuseibeh, B.: Weaving Together Requirements and Architectures. IEEE Comput. 34(3),
115–117 (2001)
236. Obbink, H., Kruchten, P., Kozaczynski, W., Hilliard, R., Ran, A., Postema, H., Lutz, D.,
Kazman, R., Tracz, W., Kahane, E.: Report on Software Architecture Review and Assess-
ment (SARA), Version 1.0. At http://philippe.kruchten.com/architecture/SARAv1.pdf. Tech.
rep. (2002)
237. Obbink, H., Mller, J.K., America, P., van Ommering, R., Muller, G., van der Sterren, W.,
Wijnstra, J.G.: Copa: A component-oriented platform architecting method for families of
software-intensive electronic products (tutorial). In: SPLC1, the First Software Product Line
Conference. Denver, Colorado (2000)
238. Object Management Group: Reusable Asset Specification, Version 2.2 (2005)
239. Object Management Group: Software & Systems Process Engineering, Metamodel
Specification (SPEM) (2008)
240. O’Leary, D.E.: Wikis: From each according to his knowledge. Computer 41(2), 34–41 (2008)
241. Open Group: The Open Group Architecture Framework, Version 8.1.1. http://www.
opengroup.org/togaf
242. O’Reilly, T.: What is Web 2.0 – design patterns and business models for the next generation
of software. http://www.oreillynet.com/pub/a/oreilly/tim/news/2005/09/30/what-is-web-20.
html
243. Oxford Dictionary and Thesaurus. Oxford (1995)
244. Parnas, D.L.: On the criteria to be used in decomposing systems into modules. Commun.
ACM 15(12), 1053–1058 (1972)
245. Parnas, D.L.: On a ‘buzzword’: hierarchical sructure. In: J.L. Rosenfeld (ed.) IFIP Congress
74, pp. 336–339. North-Holland, Stockholm, Sweden (1974)
246. Parnas, D.L.: On the design and development of program families. IEEE Trans. Software
Eng. 2(1), 1–9 (1976)
247. Parnas, D.L., Clements, P., Weiss, D.M.: The modular structure of complex systems. IEEE
Trans. Software Eng. 11(3), 259–266 (1985)
248. Passant, A., Mulvany, I., Mika, P., Maisonneauve, N., Lser, A., Cattuto, C., Bizer, C.,
Bauckhage, C., Alani, H.: Mining for Social Serendipity. In: H. Alani, S. Staab, G. Stumme
(eds.) Social Web Communities, no. 08391 in Dagstuhl Seminar Proceedings, pp. 21–26.
Schloss Dagstuhl, Schloss Dagstuhl – Leibniz-Zentrum fuer Informatik, Germany (2008)
249. Paternó, F., Santoro, C.: One Model, Many Interfaces. In: C. Kolski, J. Vanderdonckt
(eds.) Fourth International Conference on Computer-Aided Design of User Interfaces,
pp. 143–154. Kluwer, Dordrecth (2002)
250. Perry, D., Wolf, A.: Foundations for the Study of Software Architecture. ACM Software
Eng. Notes 17(4), 40–52 (1992)
251. Pinto, J., Slevin, D.: Project success: definitions and measurement techniques. Project
Manage. J. 19, 67–72 (1988)
252. Plachy, E.C., Hausler, P.A.: Enterprise solutions structure. IBM Syst. J. 38(1), 4–11 (1999)
253. Pohl, K., Sikora, E.: COSMOD-RE: Supporting the Co-Design of Requirements and
Architectural Artifacts. In: E. Sikora (ed.) 15th International Requirements Engineering
Conference, pp. 258–261. IEEE Computer Society, USA (2007)
254. Pohl, K., Sikora, E.: Structuring the Co-design of Requirements and Architecture. In:
P. Sawyer, B. Paech, P. Heymans (eds.) 13th Working Conference on Requirements Engi-
neering: Foundation for Software Quality (REFSQ), LNCS, vol. 4542, pp. 48–62. Springer,
Trondheim, Norway (2007)
272 References
255. Polanyi, M.: The Tacit Dimension, Anchor Books, vol. 540. Doubleday, Garden City, New
York (1967)
256. Probst, G.J.B.: Practical Knowledge Management: A Model That Works. Prism, Arthur D.
Little (1998). URL http://know.unige.ch/publications/Prismartikel.PDF
257. Procaccino, J.D., Verner, J., Shelfer, K., Gefen, D.: What do software practitioners really
think about project success: an exploratory study. J. Syst. Software 78(2), 194–203 (2005)
258. Prudhommeaux, E., Seaborne, A.: SPARQL Query Language for RDF. W3C Working Draft
(2006). URL http://www.w3.org/TR/rdf-sparql-query/
259. Ramesh, B., Jarke, M.: Towards Reference Models for Requirements Traceability. IEEE
Trans. Software Eng. 27(1), 58–93 (2001)
260. Ramil, J.F., Lehman, M.M., Kahen, G.: The FEAST Approach to Quantitative Process
Modelling of Software Evolution Processes. In: F. Bomarius, M. Oivo (eds.) Profes, LNCS,
vol. 1840, pp. 311–325. Springer, Oulu, Finland (2000)
261. Ran, A., Kuusela, J.: Design Decision Trees. In: 8th International Workshop on Software
Specification and Design, pp. 172–175 (1996)
262. Rapanotti, L., Hall, J.G., Jackson, M., Nuseibeh, B.: Architecture-driven Problem Decompo-
sition. In: 12th IEEE International Requirements Engineering Conference (RE), pp. 80–89
(2004)
263. Rechtin, E.: Systems Architecting: creating and building complex systems. Prentice-Hall,
Englewood Cliffs, NJ (1991)
264. Regli, W., Hu, X., Atwood, M., Sun, W.: A Survey of Design Rationale Systems:
Approaches, Representation, Capture and Retrieval. Eng. Comput. 16(3–4), 209–235 (2000)
265. Risson, J., Moors, T.: Survey of research towards robust peer-to-peer networks: search
methods. Comput. Networks 50(17), 3485–3521 (2006)
266. Rittel, H., Webber, M.: Planning Problems are Wicked Problems. In: N. Cross (ed.)
Developments in Design Methodology, pp. 135–144. Wiley, New York (1984)
267. Robbins, J.E., Hilbert, D.M., Redmiles, D.F.: Using critics to analyze evolving architectures.
In: Joint proceedings of the second international software architecture workshop (ISAW-2)
and international workshop on multiple perspectives in software development (Viewpoints
’96) on SIGSOFT ’96 workshops. ACM, San Francisco, CA, USA (1996)
268. Robillard, P.N.: The role of knowledge in software development. Commun. ACM 42(1),
87–92 (1999)
269. Royce, W.E., Royce, W.: Software architecture: Integrating process and technology. TRW
Quest 14(1), 2–15 (1991)
270. Rozanski, N., Woods, E.: Software Systems Architecture: Working With Stakeholders Using
Viewpoints and Perspectives. Addison-Wesley, Boston (2005)
271. Rumbaugh, J., Jacobson, I., Booch, G.: The Unified Modeling Language Reference Manual,
The (2nd Edition). Pearson Higher Education (2004)
272. Rus, I., Lindvall, M.: Knowledge management in software engineering. IEEE Software
19(3), 26–38 (2002)
273. Samoladas, I., Gousios, G., Spinellis, D., Stamelos, I.: The sqo-oss quality model: Measure-
ment based open source software evaluation. In: IFIP 4th International Conference on Open
Source Systems (OSS 2008), pp. 237–248. Springer, Berlin (2008)
274. Schaffert, S., Bry, F., Baumeister, J., Kiesel, M.: Semantic wikis. IEEE Software 25(4), 8–11
(2008)
275. Schmidt, D.C., Buschmann, F.: Patterns, frameworks, and middleware: their synergistic
relationships. In: Proceedings of the 25th International Conference on Software Engineering.
IEEE Computer Society, Portland, Oregon (2003)
276. Schmidt, D.C., Fayad, M., Johnson, R.E.: Software patterns. Commun. ACM 39(10), 37–39
(1996)
277. Schmidt, D.C., Stal, M., Rohnert, H., Buschmann, F.: Pattern-Oriented Software Architec-
ture: Patterns for Concurrent and Networked Objects, vol. 2. Wiley, New York (2000)
278. Schneider, K.: Realistic and Unrealistic Expectations about Experience Exploitation. In:
Conquest 2001, pp. 171–182. ASQF Erlangen (2001)
References 273
279. Schneider, K.: Experience Based Process Improvement. In: J. Kontio, R. Conradi (eds.)
Proceedings European Conference on Software Quality (ECSQ 2002), LNCS, vol. 2349,
pp. 114–123. Springer, Berlin (2002)
280. Schneider, K.: What to Expect from Software Experience Exploitation. J. Universal Comput.
Sci., www.jucs.org, 8(6), 44–54 (2002)
281. Schneider, K.: Generating Fast Feedback in Requirements Elicitation. In: P. Sawyer,
B. Paech, P. Heymans (eds.) Requirements Engineering: Foundation for Software Quality
(REFSQ 2007), LNCS, vol. 4542, pp. 160–74. Springer, Berlin (2007)
282. Schneider, K.: Experience and Knowledge Management in Software Engineering. Springer,
Berlin (2009)
283. Schneider, K., Basili, V.R., von Hunnius, J.: Experience in Implementing a Learning
Software Organization. IEEE Software 19(3), 46–49 (2002)
284. Schneider, K., Hunnius, J.v.: Effective experience repositories for software engineering.
In: Proceedings International Conference on Software Engineering, pp. 534–539. IEEE
Computer Society, Portland, Oregon (2003)
285. Schneider, K., Lübke, D.: Systematic tailoring of quality techniques. In: B. Hindel (ed.)
World Congress of Software Quality 2005, vol. III – Online Complement, pp. 121–130.
iSQI, Munich, Germany (2005)
286. Schneider, K., Schwinn, T.: Maturing experience base concepts at daimlerChrysler. Software
Process Improve. Pract. 6, 85–96 (2001)
287. Schneider, K., Stapel, K.: Informationsflussanalyse für angemessene Dokumentation
und verbesserte Kommunikation. In: H. Züllighoven (ed.) Software Engineering 2007,
pp. 263–264. Köllen, Hamburg, Germany (2007)
288. Schneider, K., Stapel, K., Knauss, E.: Beyond Documents: Visualizing Informal Commu-
nication. In: B. Berenbach, O. Gottel (eds.) Third International Workshop on Requirements
Engineering Visualization (REV 08), pp. 31–40. IEEE Computer Society, Barcelona, Spain
(2008)
289. Schön, D.A.: The Reflective Practitioner: How Professionals Think in Action. Basic Books,
New York (1983)
290. Schultze, U., Leidner, D.E.: Studying knowledge management in information systems
research: Discourses and theoretical assumptions. MIS Quart. 26(3), 213–242 (2002)
291. Schuster, N., Zimmermann, O., Pautasso, C.: ADkwik: Web 2.0 collaboration system for
architectural decision engineering. In: Proceedings of the 19th International Conference on
Software Engineering & Knowledge Engineering (SEKE), pp. 255–260 (2007)
292. Schwaber, K., Beedle, M.: Agile Software Development with Scrum. Prentice-Hall,
Englewood Cliffs, NJ (2002)
293. Schwartz, D.G.: Encyclopedia of Knowledge Management. Idea Group Reference, Hershey,
USA (2006)
294. Senge, P.M.: The Fifth Discipline: The Art & Practise of The Learning Organisation.
Century Business (1990)
295. Shaw, M., Clements, P.: The Golden Age of Software Architecture. IEEE Software 23(2),
31–39 (2006)
296. Shaw, M., DeLine, R., Klein, D., Ross, T., Young, D., Zelesnik, G.: Abstractions for software
architecture and tools to support them. IEEE Trans. Software Eng. 21(4), 314–335 (1995)
297. Shaw, M., Garlan, D.: Software Architecture: Perspectives on an Emerging Discipline.
Prentice-Hall, Upper Saddle River, NJ (1996)
298. Shipman III, F., McCall, R.: Integrating different perspectives on design rationale: Support-
ing the emergence of design rationale from design communication. Artif. Intell. Eng. Des.,
Anal. Manuf. 11(2), 141–154 (1997)
299. Siebes, R.M.: Semantic routing in peer-to-peer systems. Ph.D. thesis, VU University
Amsterdam (2006)
300. Soni, D., Nord, R., Hofmeister, C.: Software architecture in industrial applications. In: 17th
International Conference on Software Engineering (ICSE-17), pp. 196–207. ACM (1995)
301. Sowe, S., Stamelos, I., Angelis, L.: Identifying knowledge brokers that yield software engi-
neering knowledge in OSS projects. Inform. Software Technol. 48(11), 1025–1033 (2006)
274 References
302. Sowe, S.K., Karoulis, A., Stamelos, I.: A constructivist view on knowledge management
in open source virtual communities. In: A.D.D. Figueiredo, A.P. Afonso (eds.) Managing
Learning in Virtual Settings: The Role of Context, pp. 290–308. IGI Global (2005)
303. Sowe, S.K., Stamelos, I., Angelis, L.: Understanding knowledge sharing activities in
free/open source software projects: An empirical study. J. Syst. Software 81(3), 431–446
(2008)
304. Stachoviak, H.: Allgemeine Modelltheorie. Springer, Wien, New York (1973)
305. Standish Group: Chaos Report (1994)
306. Stapel, K., Knauss, E., Allmann, C.: Lightweight process documentation: just enough
structure in automotive pre-development. In: R. O’Connor, N. Baddoo, K. Smolander,
R. Messnarz (eds.) EuroSPI, Communictions in Computer and Information Science 16,
pp. 142–151. Springer, Dublin, Ireland (2008)
307. Stapel, K., Schneider, K., Lübke, D., Flohr, T.: Improving an industrial reference process
by information flow analysis: A Case Study. In: J. Münch, P. Abrhamsson (eds.) PROFES
2007, LNCS vol. 4589, pp. 147–159. Springer, (2007)
308. Stolze, M.: Visual critiquing in domain oriented design environments: Showing the right
thing at the right place. In: J.S. Gero, F. Sudweeks (eds.) Artificial Intelligence in Design’94,
pp. 467–482. Kluwer, Dordretch (1994)
309. Swan, J., Scarbrough, H., Preston, J.: Knowledge management – the next fad to forget
people? In: J. Pries-Heje, C. Ciborra, K. Kautz, J. Valor, E. Christiaanse, D. Avison, C. Heje
(eds.) 7th European Conference on Information Systems, vol. 2, pp. 668–678. Copenhagen,
Denmark (1999)
310. Tai, S.: Software Service Engineering. Presentation at Schloss Dagstuhl seminar.
http://www.dagstuhl.de/de/programm/kalender/semhp/?semnr=09021 (2009)
311. Taibi, T. (ed.): Design Pattern Formalization Techniques. IGI Publishing (2007)
312. Tanenbaum, A.S., van Steen, M.: Distributed systems: principles and paradigms, second
edn. Addison-Wesley, Reading MA (2007)
313. Tang, A., Avgeriou, P., Jansen, A., Capilla, R., Ali-Babar, M.: A comparative study of
architecture knowledge management tools. J. Syst. Software (in press)
314. Tang, A., Babar, A.M., Gorton, I., Han, J.: A Survey of the Use and Documentation of
Architecture Design Rationale. In: Proceedings 5th Working IEEE/IFIP Conference on
Software Architecture (WICSA5), pp. 89–98. IEEE Computer Society (2005)
315. Tang, A., Han, J.: Architecture Rationalization: A Methodology for Architecture Verifi-
ability, Traceability and Completeness. In: Proceedings 12th Annual IEEE International
Conference and Workshop on the Engineering of Computer Based Systems (ECBS ’05),
pp. 135–144. IEEE, USA (2005)
316. Tang, A., Jin, Y., Han, J.: A Rationale-Based Architecture Model for Design Traceability
and Reasoning. J. Syst. Software 80(6), 918–934 (2007)
317. Tang, A., Nicholson, A., Jin, Y., Han, J.: Using Bayesian belief networks for change impact
analysis in architecture design. J. Syst. Software 80(1), 127–148 (2007)
318. Tang, A., Tran, M.H., Han, J., van Vliet, H.: Design reasoning improves software design
quality. In: S. Becker, F. Plasil, R. Reussner (eds.) 4th International Conference on the Quality
of Software-Architectures (QoSA), LNCS, vol. 5281, pp. 28–42. Springer, Berlin (2008)
319. Telang, R., Mukhopadhyay, T.: Drivers of Web portal use. Electron. Commerce Res. Applic.
4, 49–65 (2005)
320. Terveen, L.G., Selfridge, P.G., Long, M.D.: Living design memory: framework,
implementation, lessons learned. Hum.-Comput. Interact. 10(1), 1–37 (1995)
321. Thomas, D.M., Bostrom, R.P., Gouge, M.: Making knowledge work in virtual teams.
Commun. ACM 50(11), 85–90 (2007)
322. Tiwana, A.: The Knowledge Management Toolkit: Orchestrating IT, Strategy, and
Knowledge Platforms. Prentice-Hall, Englewood Cliffs, NJ (2002)
323. Toulmin, S.: The Uses of Argument, 2 edn. Cambridge University Press (2003)
324. Traetteberg, H., Molina, P.J., Nunes, N.J.: Making model-based UI design practical: usable
and open methods and tools. In: N. Nunes, C. Rich (eds.) 9th International Conference on
Intelligent User Interface, pp. 376–377. ACM, Funchal, Madeira, Portugal (2004)
325. Tyree, J., Akerman, A.: Architecture Decisions: Demystifying Architecture. IEEE Software
22(2), 19–27 (2005)
References 275
326. van der Ven, J., Jansen, A., Avgeriou, P., Hammer, D.: Using architectural decisions. In:
Proceedings of the 2nd International Conference on the Quality of Software-Architectures
(QoSA), LNCS, vol. 4214, pp. 1–10. Springer, Berlin (2006)
327. Vincenti, W.: What Engineers Know and How They Know It. John Hopkins University Press
(1990)
328. van Vliet, H.: Software architecture knowledge management. In: Proceedings 19th Australian
Software Engineering Conference (ASEC 2008), pp. 24–31. IEEE Computer Society (2008)
329. W3C: Semantic Web (2009). URL www.w3.org/2001/sw
330. W3C: Web Ontology Language (OWL) (2009). URL www.w3.org/2004/OWL
331. Wahler, M.: Using Patterns to develop consistent design constraints. PhD thesis, Swiss
Federal Institute of Technology Zurich (2008)
332. Waldo, J., Wyant, G., Wollrath, A., Kendall, S.: A note on distributed computing. Tech. Rep.
SMLI TR-94-29, Sun Microsystems (1994)
333. Wang, X., Zhang, D., Gu, T., Pung, H.: Ontology based context modeling and reasoning
using OWL. In: Proceedings of the 2nd IEEE Annual Conference on Pervasive Computing
and Communications Workshops (PerCom), pp. 18–22. IEEE Computer Society (2004)
334. Weaver, B.N., Bishop, W.L.: The Corporate Memory : a profitable and practical approach to
information management and retention systems. John Wiley, New York (1974)
335. Wenger, E.: Communities of practice : learning, meaning and identity. Cambridge University
Press, Cambridge, UK (1998)
336. Wenger, E.C., McDermott, R., Snyder, W.M.: Cultivating Communities of Practice. Harvard
Business School Press, Boston (2002)
337. White, S.A.: Business Process Modeling Notation Specification. Tech. rep., Object
Management Group Standard (2006)
338. Williams, L.G., Smith, C.U.: PASA: An architectural approach to fixing software per-
formance problems. In: Proceedings of the International Conference of the Computer
Measurement Group. Reno, USA (2002)
339. Winkler, S.: Information flow between requirement artifacts. In: P. Sawyer, B. Paech, P. Hey-
mans (eds.) International Working Conference on Requirements Engineering: Foundation
for Software Quality (REFSQ 2007), LNCS, vol. 4542, pp. 232–246. Springer, Trondheim,
Norway (2007)
340. Yakovlev, I.V.: Web 2.0: Is it evolutionary or revolutionary? IT Profession. 9(6), 43–45
(2007)
341. Ye, Y., Fischer, G.: Context-Aware Browsing of Large Component Repositories. In: 16th
International Conference on Automated Software Engineering, pp. 99–106. Coronado
Island, CA, USA (2001)
342. Youngs, R., Redmond-Pyle, D., Spaas, P., Kahan, E.: A standard for architecture description.
IBM Syst. J. 38(1), 32–50 (1999)
343. Zhuge, H.: The Knowledge Grid. World Scientific, Singapore (2004)
344. Zimmermann, O.: An Architectural Decision Modeling Framework for Service-Oriented
Architecture Design. PhD Dissertation, Universität Stuttgart, Germany. Dissertation.de -
Verlag im Internet (2009)
345. Zimmermann, O., Doubrovski, V., Grundler, J., Hogg, K.: Service-Oriented Architecture
and Business Process Choreography in an Order Management Scenario. In: OOPSLA
Conference Companion. San Diego, CA, USA (2005)
346. Zimmermann, O., Gschwind, T., Kuester, J., Leymann, F., Schuster, N.: Reusable
Architectural Decision Models for Enterprise Application Development. In: S. Over-
hage, C. Szyperski (eds.) Proceedings 3rd International Conference on the Quality of
Software-Architectures (QoSA), LNCS, vol. 4880 pp. 15–32. Springer, Berlin (2007)
347. Zimmermann O., Koehler J., Leymann F., Polley R., Schuster N.: Managing Architectural
Decision Models with Dependency Relations, Integrity Constraints, and Production Rules.
J. Syst. Software (2009), doi:10.1016/j.jss.2009.01.039
348. Zimmermann, O., Milinski, M., Craes, M., Oellermann, F.: Second Generation Web
services-oriented architecture in production in the finance industry. In: OOPSLA Conference
Companion (2004)
Index
277
278 Index