Understanding the Role of Knowledge Management in Software Development: A Case Study in Very Small Companies

Understanding the Role of Knowledge Management in Software Development: A Case Study in Very Small Companies

Rory V. O'Connor (School of Computing, Dublin City University, Dublin, Ireland) and Shuib Basri (Lero - The Irish Software Engineering Research Centre, University of Limerick, Limerick, Ireland & Department of Computer and Information Science, Universiti Teknologi Petronas, Malaysia)
DOI: 10.4018/ijssoe.2014010103
OnDemand PDF Download:
$30.00
List Price: $37.50

Abstract

Software and systems engineering is distinct from other forms of engineering as it deals with an intangible product, where the progress in construction is not explicitly visible and team members often rely on the documentation of others to follow and review progress. Furthermore unlike traditional engineering disciplines, there is no single standardized unified process. The role of knowledge management in the software engineering literature is becoming more evident, as the software development activity is essentially a human knowledge intensive activity and is seen by many as a key factor. This paper discusses the role of software development knowledge management within software development process and specifically how software development knowledge is managed in software development in order to support software process improvement and the role of knowledge management in this. The authors present the results of a study of knowledge management process practices in very small software companies and discusses these under the major identified issues of: Communication; Learning and sharing; Documentation and Knowledge management process and commitment. The findings in this study give an insight towards knowledge management practices as they relate to software development process practices in very small companies and the important factors that must be considered to preserve knowledge and quality software.
Article Preview

1. Introduction

The majority of small and very small software companies find implementing controls and structures to properly manage their software development activity to be a major challenge. The administration of the software development activity is usually achieved through the execution of a software development process, which describes the way an organization develops its software products and supporting services, such as documentation. Such software processes define what steps the development organizations should take at each stage of production and also provide assistance in making estimates, developing plans and measuring quality. The process and associated activities are often documented as sets of procedures to be followed during development, however, the documentation is not the process but should clearly represent the process as it is implemented within an organization.

At the core of all software development activity are the human beings that implement the software development process in order to produce the actual software systems. In this context human beings gain expertise through perception, intuition and experience, rather than by following a predefined process (Dreyfus et al., 1986). In support of this it has been argued argues that software engineering is knowledge study and hence knowledge management is of high importance in software engineering that (Edwards, 2003), which clearly has implications for the management of knowledge in software development. Therefore we are interested in understanding the role of software development knowledge management within software development companies. Specifically out focus is on how software knowledge is managed; identify critical factors in software development teams and software development knowledge management; understand how should software teams are organized in order to support software process improvement and the role of knowledge management in this.

1.1. The Software Development Process

There are multiple approaches to organizing the software development process and multiple factors influencing the software development process (Clarke & O’Connor, 2012), with two major ones being the traditional (or plan based), which rely primarily on managing explicit knowledge, and agile methods, which primarily rely on managing tacit knowledge and recognises the importance of human interaction in the software process over written knowledge in formal documentation. Therefore understanding the role and nature of knowledge in software development is key challenge (Ryan & O’Connor, 2013).

Essentially a software process is all the stages, tasks and activities that are followed by an organization to develop a software product (Zahran, 1998). The software process has four distinct roles; (i) to present a guidance as the guideline of the activities to be undertaken; (ii) to specify the artefact that should be developed and when; (iii) to direct the task of the development team; and (iv) to offer ways of monitoring and measuring a project progress and output (Kruchten, 2000). It is commonly agreed that the software process must be evolved (maintained and improved over time) in order to meet current evolving business needs, thus the area of Software Process Improvement (SPI) has gained increased importance in software engineering area. The aim of SPI is to understand the software process as it is used within an organization and thus drive the implementation of changes to that process to achieve specific goals such as increasing development speed, achieving higher product quality or reducing costs. There is a widely held belief that a better software process results in a better software product, with authors such as Humphrey (1989) claiming that to improve your product, you must improve your process quality. Although there is evidence that many organizations do not sill do not subscribe to the process improvement philosophy despite the widely agreed benefits (O’Connor & Coleman, 2009).

The software development activity is essentially a human knowledge intensive activity, involving software developers executing a software development process utilizing expert knowledge, within a team. Accordingly we are interested in understanding the role of software development knowledge management within software development companies. Specifically: How software knowledge is managed; identify critical factors in software development teams and software development knowledge management; understand how should software teams are organized in order to support software process improvement and the role of knowledge management in this.

Complete Article List

Search this Journal:
Reset
Open Access Articles: Forthcoming
Volume 7: 4 Issues (2017): 3 Released, 1 Forthcoming
Volume 6: 4 Issues (2016)
Volume 5: 4 Issues (2015)
Volume 4: 4 Issues (2014)
Volume 3: 4 Issues (2012)
Volume 2: 4 Issues (2011)
Volume 1: 4 Issues (2010)
View Complete Journal Contents Listing