Article Preview
Top1. 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.