Software architecture knowledge management approaches and their support for knowledge management activities: A systematic literature review
Introduction
Software architecture has been a major research topic over the last two decades. Early definitions of software architecture appeared in the early 1990s (e.g., [1] and [2]). Within the past decade, the view of software architecture has been considerably extended. While early views of software architecture emphasized the structure or structures of a software system and their externally visible properties [3], newer views have started to include the design decisions leading to these solution structures and their rationale [4]. This growing importance of a decision-oriented view of software architecture as opposed to a solution-oriented view also led to Software Architecture Knowledge Management (SAKM) [5] as a still very active sub-discipline of software architecture research.
SAKM deals with identifying and leveraging architectural knowledge within software developoment (see Section 2). Architectural knowledge, in this case, encompasses not only project-specific knowledge such as requirements, design decisions, and their rationale but also project-generic knowledge such as experience, expertise, patterns, and architectural tactics. If not explicitly managed, critical knowledge remains tacit knowledge, which erodes over time [5]. Many different approaches have been developed and documented to manage software architecture knowledge (see [6] for some examples). An SAKM approach in this context is any concept, method, tool, and technique (or any combination thereof) that has been specifically developed to support SAKM within software development.
Although SAKM has been a topic of research for more than a decade, formal approaches for SAKM, especially such for capturing decisions and their rationale, have not yet been established in practice. A recent study we performed with 25 software architects from 22 different companies in 10 different countries [7] showed that none of the survey participants use or used a formalized approach to documenting architectural knowledge (AK) even though all participants agreed on the usefulness of capturing AK. Time and cost have been mentioned as the main limiting factors in this case. Another study with open source communities [8] found out that rationale is rarely part of architecture documentation, a potential reason being limited incentives for developers to document AK. A study by Capilla et al. [9] identified lack of motivation and understanding, lack of adequate tools, too much effort in capturing AK, not knowing what to capture, and disruption of the design flow as barriers that hinder widespread adoption of SAKM in practice.
This raises the questions of whether and how existing SAKM approaches have contributed to improvements in this area, along with why these approaches have not yet seen broad application in practice despite more than 10 years of research. To answer these questions, we performed a comprehensive, systematic literature review (SLR) to identify and analyze existing SAKM approaches. We wanted to know how current approaches support SAKM and, in particular, which knowledge-management activities (i.e., capturing, using, maintaining, sharing, and reuse) are well supported and where support is currently lacking.
The contribution of this paper is a comprehensive overview of existing approaches on SAKM developed over the last decade and their focus in terms of the different SAKM activities. Three main aspects distinguish our work from previous, similar work is this area. First, we identify approaches for SAKM based on published studies by aggregating related studies that considered the same approach or variations thereof. Second, for each approach, we determine the exact knowledge-management activity or set of activities supported by that approach, and we also determine the focus of the research performed. Finally, we identify the provided evidence in terms of empirical studies related to a specific activity and not related to an approach in general. This allows us to consider the state of evidence for a particular knowledge-management activity as opposed to the evidence for the approach as a whole.
The main results are a comprehensive picture of the current state of SAKM research in terms of the developed approaches, their main concepts and ideas, the supported knowledge-management activities, and the evidence provided for these activities. Our study shows that core problems SAKM aims to solve, like efficiently capturing rationale and maintaining knowledge over the long term, still remain unsolved. Support and evidence for other activities besides using AK is often weak. Our study also shows that, as researchers in the field, we need to improve our reporting of empirical evidence, the number of empirical studies performed to validate an approach, and the number of studies that replicate earlier results.
The remainder of this paper is structured as follows. In Section 2, we provide an overview of the basic concepts of SAKM and the different SAKM activities. Section 3 presents the main goal and the research questions we answer based on the results of our SLR. In Section 4, we describe the research method we followed during the SLR, and we provide details for each of the steps performed. In Section 5, we present a quality assessment of the studies included in our review and answer the research questions based on the data extracted from the selected studies. We discuss the results and their implications in Section 6. In Section 7, we discuss threats to the validity of this SLR. Section 8 presents related work. The paper is concluded in Section 9.
Section snippets
Software architecture knowledge management
The concept of knowledge management was first studied from an organizational perspective [10], [11], from which knowledge management refers to identifying and leveraging the collective knowledge in an organization [12].
The two main strategies for knowledge management are codification and personalization [13]. Codification focuses on systematizing and storing information, making this information available for reuse, while personalization focuses on providing information about the sources of
Goal and research questions
The overall goal of this literature review is to identify existing SAKM approaches and to determine their support for architecture knowledge management activities, along with the evidence provided for this support. Accordingly, we formulate the following three research questions (RQs):
- •
RQ1: Which approaches to SAKM have been developed by the research community within the last decade?
- •
RQ2: Which SAKM activities are supported by these approaches, and what has been the focus of research in terms of
Research method and search process
This study was undertaken as a systematic literature review, following the guidelines of Kitchenham [18], in order to identify the current state of research in SAKM by analyzing relevant papers published within the last 12 years. The study was planned in detail and documented in a review protocol in order to reduce researchers bias.1 This protocol describes the research goals and questions, as well
Study results
This section presents the results of search and selection. First, the studies are classified by publication year and venue. Second, the results of the assessment of the quality of the studies are presented. Finally, the three research questions (see Section 3) are answered based on these results.
Discussion of results
Active area of research. The demographic data presented in Section 5.1 reveal that approaches on SAKM are still very actively investigated. Since 2004, research has been published in many different venues, especially in the Journal of Systems and Software (JSS), software architecture conferences (ECSA, WICSA, QoSA), and the workshop on sharing and reusing architectural knowledge (SHARK).
Broad spectrum of approaches. In considering the approaches to SAKM that have been developed by the research
Study validity and assessment of review
In the following section, we first discuss threats to validity and then evaluate our review against a set of four quality questions proposed by Kitchenham et al. [28] for evaluating systematic literature reviews.
Related work
While working on the SLR presented here, we had already published preliminary results related to SAKM models and variability management. In [30], we compared SAKM approaches with respect to their aims and underlying models for SAKM representation. In [31], we specifically analyzed how existing SAKM approaches support variability management. Below, we comment on work by other authors assessing the state of the art in SAKM and related areas.
Li et al. [24] conducted a systematic mapping study to
Conclusion
We performed a systematic literature review to obtain a detailed picture of the state of research on approaches for SAKM. Important aspects distinguishing our study are the identification of approaches based on related primary studies, the separation of focus and support, the separation of general and advanced activities, and the assessment of evidence related to specific SAKM activities.
We identified 115 studies, which we aggregated to 56 SAKM approaches. We then analyzed these approaches in
Acknowledgements
The authors would like to thank Cornelia Neumüller, Georg Buchgeher, and Jürgen Krammer for their help during the search process.
References (33)
- et al.
An expert survey on kinds, influence factors and documentation of design decisions in practice
Future Gen. Comput. Syst.
(2015) - et al.
10 Years of software architecture knowledge management: practice and future
J. Syst. Softw.
(2016) - et al.
Application of knowledge-based approaches in software architecture: a systematic mapping study
Inf. Softw. Technol.
(2013) - et al.
Knowledge-based approaches in software documentation: a systematic literature review
Inf. Softw. Technol.
(2014) - et al.
Past and future of software architectural decisions - a systematic mapping study
Inf. Softw. Technol.
(2014) - et al.
Systematic literature reviews in software engineering - a systematic literature review
Inf. Softw. Technol.
(2009) - et al.
A comparative study of architecture knowledge management tools
J. Syst. Softw.
(2010) - et al.
Foundations for the study of software architecture
SIGSOFT Softw. Eng. Notes
(1992) - et al.
Software Architecture: Perspectives on an Emerging Discipline
(1996) - et al.
Software Architecture in Practice
(2003)