Knowledge Management in Software Engineering: Background

By June 20, 2015

1 Knowledge management
Knowledge management is a large interdisciplinary field. There is, as a consequence, an ongoing debate as to what constitutes knowledge management. However, it is beyond the scope of this article to engage in that debate. For our purposes, it is sufficient to cite some definitions that are in common use. Davenport has defined knowledge management as ”a method that simplifies the process of sharing, distributing, creating, capturing and understanding of a company’s knowledge” [23]. A related term is organisational learning. What does it mean to say that an organisation as a whole learns? According to Stata, this differs from individual learning in two respects [99]: first, it occurs through shared insight, knowledge and shared models; second, it is based not only on the memory of the participants in the organisation, but also on “institutional mechanisms” such as policies, strategies, explicit models and defined processes (we can call this the “culture” of the organisation). These mechanisms may change over time, what we can say is a form of learning.

Knowledge management has received much attention in various fields, which is shown through two “handbooks” [28, 39], one encyclopaedia [94], and numerous books [21, 23, 97].

Hanssen et al. [49] refer to two main 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 [38] has further classified work in knowledge management into schools (see Table 1). 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 knowledge directories; and 3) the engineering school, which focuses on processes and knowledge flows in organizations.

The economic school focuses on how knowledge assets relates to income in organizations.

The behavioural school consists of three subschools: 1) the organizational school, which focuses on networks for sharing knowledge; 2) the spatial school, which focuses on how office space can be designed 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.

Table 1: Earl’s schools of knowledge management.
Technocratic Economic Behavioural
Systems Cartographic Engineering Commercial Organizational Spatial Strategic
Focus Technology Maps Processes Income Networks Space Mindset
Aim Knowledge bases Knowledge directories Knowledge flows Knowledge assets Knowledge pooling Knowledge exchange Knowledge capabilities
Unit Domain Enterprise Activity Know-how Communities Place Business
There are a number of overview articles of the knowledge management field in the literature. Alavi et al. [3] give an overview of the knowledge management literature in different fields. They identify research issues in knowledge management related to knowledge creation, storage and retrieval of knowledge, knowledge transfer, and knowledge application.

Liao gives an overview of technology and applications for knowledge management in a review of the literature from 1995 to 2002 [66].

Argote et al. [7] conclude a special issue of Management Science with an article that provides a framework for organizing the literature on knowledge management, identifies emerging themes, and suggests directions for further research.

In Section 2.2, we give an overview of theories often referred to in the knowledge management literature. In Section 2.3, we give an overview of existing work on knowledge management in software engineering.
2 Theories of learning
In cognitive and organization science, we find many models on how knowledge is transferred or learned at an individual and organizational level. We present four theories that are referred to widely: Kolb’s model of experiential learning, the double-loop learning theory of Argyris and Schön, Wenger’s theory of communities of practice, and Nonaka and Takeuchi´s theory of knowledge creation.

Kolb describes learning from experience (“experiential learning”, see [62]) as four different learning modes that we can place in two dimensions. One dimension is how people take hold of experience, with two modes, either relying on symbolic representation – which he calls comprehension, or through “tangible, felt qualities of immediate experience”, which he calls apprehension. The other dimension is how people transform experience, with two modes, either through internal reflection, which he refers to as intention, or through “active external manipulation of the external world”, which he calls extension.

Kolb argues that people need to take advantage of all four modes of learning to be effective, they “must be able to involve themselves fully, openly, and without bias in new experiences; reflect on and observe these experiences from many perspectives; create concepts that integrate their observations into logically sound theories; and use these theories to make decisions and solve problems” [63].

Argyris and Schön distinguish between what they call single and double-loop learning [9] in organisations. In single-loop learning, one receives feedback in the form of observed effects and then acts on the basis solely of these observations to change and improve the process or causal chain of events that generated them. In double-loop learning, one not only observes the effects of a process or causal chain of events, but also understands the factors that influence the effects [8].

One traditional view of learning is that it best takes place in a setting where you isolate and abstract knowledge and then “teach” it to “students” in rooms free of context. Wenger describes this as a view of learning as an individual process where, for example, collaboration is considered a kind of cheating [106]. In his book about communities of practice, he describes a completely different view: learning as a social phenomenon. A community of practice develops its own “practices, routines, rituals, artefacts, symbols, conventions, stories and histories”. This is often different from what you find in work instructions, manuals and the like. Wenger defines learning in communities of practice as follows:

For individuals: learning takes place in the course of engaging in, and contributing to, a community.
For communities: learning is to refine the practice.
For organisations: learning is to sustain interconnected communities of practice.

Nonaka and Takeuchi [79] claim that knowledge is constantly converted from tacit to explicit and back again as it passes through an organisation. By tacit knowledge [83] we mean knowledge that a human is not able to express explicitly, but is guiding the behaviour of the human. Explicit knowledge is knowledge that we can represent in textual or symbolic form. They say that knowledge can be converted from tacit to tacit, from tacit to explicit, or from explicit to either tacit or explicit knowledge. These modes of conversion are described as follows:

Socialization means to transfer tacit knowledge to another person through observation, imitation and practice, what has been referred to as “on the job” training. Externalisation means to go from tacit knowledge to explicit. Explicit knowledge can “take the shapes of metaphors, analogies, concepts, hypotheses or models”. Internalisation means to take externalised knowledge and make it into individual tacit knowledge in the form of mental models or technical know-how.
Combination means to go from explicit to explicit knowledge, by taking knowledge from different sources such as documents, meetings, telephone conferences, or bulletin boards and aggregating and systematizing it.

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.
3 Knowledge management in software engineering
In software engineering, there has been much discussion about how to manage knowledge, or foster “learning software organisations”. In this context, Feldmann and Althoff have defined a “learning software organisation” as an organisation that has to “create a culture that promotes continuous learning and fosters the exchange of experience” [44]. Dybå places more emphasis on action in his definition: “A software organisation that promotes improved actions through better knowledge and understanding” [35].

In software engineering, reusing life cycle experience, processes and products for software development is often referred to as having an “Experience Factory” [13]. In this framework, experience is collected from software development projects, and are packaged and stored in an experience base. By packing, we mean generalising, tailoring, and formalising experience so that it is easy to reuse.

In 1999, the first workshop on “learning software organizations” was organized in conjunction with the SEKE conference. This workshop has been one of the main arenas for empirical studies as well as technological development related to knowledge management in software engineering.

The May 2002 issue of IEEE Software [69] was devoted to knowledge management in software engineering, giving several examples of knowledge management applications in software companies. In 2003, the book “Managing Software Engineering Knowledge” [40] was published, focusing on a range of topics, from identifying why knowledge management is important in software engineering [70], to supporting structures for knowledge management applications in software engineering, to offering practical guidelines for managing knowledge.

However, Edwards notes in an overview chapter in the book on Managing Software Engineering Knowledge [41] that knowledge management in software engineering is somewhat distanced from mainstream knowledge management.

Several PhD thesis have also been published on aspects of knowledge management that are related to software engineering [15, 31, 103].

In addition, a number of overviews of work on knowledge management in software engineering have previously been published. Rus et al. [89] present an overview of knowledge management in software engineering. The review focuses on motivations for knowledge management, approaches to knowledge management, and factors that are important when implementing knowledge management strategies in software companies. Lindvall et al. [72] describe types of software tools that are relevant for knowledge management, including tools for managing documents and content, tools for managing competence, and tools for collaboration. Dingsøyr and Conradi [32] surveyed the literature for studies of knowledge management initiatives in software engineering. They found eight reports on lessons learned, which are formulated with respect to what actions companies took, what the effects of the actions were, what benefits are reported, and what kinds of strategy for managing knowledge were used.

Despite of the previously published overviews of the field, there is still a lack of broad overviews of knowledge management in software engineering. Our motivation for this study was thus, to give a more thorough and broader overview in the form of a systematic review. This study also covers recent work, and assesses the quality of the research in the field.