Introduction

К оглавлению
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 
102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 
119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 
136 137 138 139 140 141 142 143 144 145 146 

This chapter can be positioned within the research on Knowledge Management in

software development (see the special issue IEEE Software, 2002). Typical knowledge

management tasks such as knowledge storing, elicitation, codification and re-use have

always been relevant issues in the management of projects of new software products.

However recent literature explicitly emphasizes the necessity of a systematic approach

to knowledge management in software development and engineering through sound

methodologies and support tools aimed at facilitating knowledge acquisition, generation,

diffusion, exploitation and maintenance, according to the principles of the knowledge

value chain (Figure 1).

Managing knowledge within knowledge-intensive organizations such as software firms

requires companies to have suitable methodologies and tools for each phase of the

knowledge value chain.

Traditionally, knowledge management practices in software development and engineering

have been focused mainly on knowledge sharing and maintenance whereas less

attention has been devoted to the elicitation issues. Actually, the acquisition step is one

of the most critical steps in the knowledge value chain. In particular, this chapter focuses

on knowledge acquisition from internal sources such as technicians and managers

involved in the development of a new software product. Often being situated, tacit, and

idiosyncratic, individual knowledge is not easily captured and transformed into organizational

knowledge, which is largely shared and easily accessible to other organizational

members (Argyris & Scöhn, 1978; Choo, 1998; Choo & Bontis, 2002; Nonaka & Takeuchi,

1995).

Instead of a software engineering approach to knowledge management, that is rather

focused on the management of explicit knowledge, in this chapter we propose the

adoption of a knowledge engineering approach, which is usually employed in the design

Acquisition Generation Knowledge Diffusion Exploitation Maintenance Knowledge

Figure 1. The knowledge value chain

Adapted/elaborated from Schreiber et al. (2000)

of expert systems for which suitable methodologies are needed to capture and codify

highly contextual knowledge possessed by human experts for the execution of specific

tasks. In particular the aim of this chapter is to present a methodology based on causal

mapping for the investigation and management of knowledge created and elaborated by

software development teams in the production of new software applications. The chapter

focuses on the early stages of the process when development teams have to make a

choice regarding the software life cycle model that best fits, given constraints concerning

ambiguity of the requirements, risks, costs evaluation and scheduling.

A causal map is a representation of causal beliefs through a network of causal relations

embedded in a collection of individual explicit statements. It can be considered as an

explicit representation of the deep-rooted cognitive maps of individuals. (Huff, 1990;

Nelson, Nadkarni, Narayanan & Ghods, 2000). Causal mapping allows researchers and

practitioners to investigate how people involved in the development process select and

attribute meanings to variables influencing the choice of a life cycle model. On the

organizational side, information and individual knowledge represented through causal

maps can be analyzed and discussed with the developers to increase their level of

awareness and participation in the choice process. Once elicited and structured through

formal models such as causal maps, individual knowledge can be transformed into

organizational knowledge according to the framework of the learning and knowing

organization (Argyris & Schön, 1978; Choo, 1998).

By eliciting and mapping individual knowledge, this chapter shows how it is possible to:

a) Identify critical factors that impact the success of new projects as perceived by

team members;

b) Compare different individual interpretations represented through causal maps

concerning the meaning and the importance of choice variables, to verify the

existence of overlapping perceptions and shared beliefs and conflicting interpretations;

c) Analyze individual knowledge and use the results of such analysis for the design

of more effective decision support tools for software life cycle selection.

The chapter is structured as follows: Section 2 presents an overview of the critical issues

in formal methodology adoption for software development and, in particular of current

approaches in software life-cycle selection. Section 3 provides the theoretical background

for a cognitive approach to the problem of life-cycle model selection. Section 4

presents the methodology. Section 5 presents the results obtained through the application

of the proposed methodology to a case study in a software company. In Section 6

results and implications for decisions support systems deriving from the analysis are

illustrated through the description of a support tool designed during the research. Finally

implications for practice and lessons learned are discussed in Sections 7 and 8.