Software Engineering (SE) is a knowledge intensive activity. It is also a social process where individuals interact with each other in an organisational setting to achieve desired outcomes. The objective of this research is to explore the nature of the knowledge needed to conduct software development and the influence knowledge has on software development performance. A survey of literature identifies that published works have attempted to examine the questions of knowledge and skill requirements to perform various roles in SE. However, this literature review reveals that while the need for some knowledge types is understood very well, other types have not been given adequate consideration. Further, it is important to understand knowledge and performance requirements based on solid foundational theories developed in fields such as cognitive psychology. Cognitive theories on knowledge and action model how knowledge is stored, accessed and used in the human mind. On the other hand, the social origin theories of knowledge and expertise emphasise the importance of contextual or circumstantial knowledge to action. This research applies a reconciled model between these schools of thought to SE. Based on this model, both predominantly contextual and non-contextual cognitive knowledge are required to perform various roles in SE. A theoretical framework is developed that identifies nine types of knowledge required for an individual to perform SE roles. These knowledge types are 1) configuration knowledge (functional and technical knowledge about application systems),2) social network knowledge,3) process and procedural knowledge,4) systems knowledge,5) business domain area knowledge,6) soft skills,7) technique skills,8) cultural and 9) heuristics knowledge. Using this framework, the research explores more broadly the knowledge required to perform various SE roles and examines the contribution that additional knowledge makes to perceived SE team performance improvement. The theoretical framework has been tested using two research studies - first, using a case study of individuals in a software project setting and, secondly, using a survey of SE professionals to collect and analyse the knowledge requirements to perform their job. The analysis of survey data revealed a new classification schema of knowledge types for performing various SE roles. These are: Factor 1: Knowledge of organisational culture and relationships Knowledge, Skills and Abilities (KSA) (Including organisational culture and organisational relationships) Factor 2: Project software development KSA (Including technical skills, knowledge of application software items in the organisation and processes used in the SE team) Factor 3: Management skills (Including negotiation, management and organisational skills) Factor 4: Heuristic knowledge (including standards, guidelines, shortcuts and rules of thumb) Factor 5: Communication and team work skills Factor 6: Business functional KSA (Including business domain area knowledge, user interfaces, business analysis and testing) Factor 7: Problem solving abilities (Working with others in the team, the ability to investigate, analyse, propose and solve problems and issues) The results empirically demonstrate the nature of both contextual and non-contextual cognitive knowledge types that are required to perform various SE roles. The research identified the knowledge types that are significantly required in various phases of Software Development Life Cycle. It is found that technique skills and configuration knowledge contribute most to improvements in performance after an individual joins a SE team. This research formulated, tested and found empirical support to theory of knowledge and performance that is based on both contextual and non-contextual knowledge types. By arriving at the knowledge classification and relationships this research has contributed to the theoretical knowledge base. The results of this study are significant to SE practice as they assist organisations in formulating knowledge management (KM) strategies. By implementing these KM strategies success rates can be improved, failures reduced and productivity enhanced. Further, the identified knowledge types are important to academia for better curriculum design on SE.
|Date of Award||2010|
|Supervisor||Craig Mcdonald (Supervisor) & John Campbell (Supervisor)|
Software engineering : knowledge and performance
Srinivasaraghavan, N. (Author). 2010
Student thesis: Doctoral Thesis