A belief system model for software development : a framework by analogy
This work examines the belief system underlying computer-based systems development, by reference to an analogy with a model of scientific research due to Kuhn. Kuhn's model describes 'scientific communities', each united by an underlying many-faceted belief system, the 'disciplinary matrix', which forms a constellation of commitments shared by the members of these communities. A scientific community is compared here with the community of computer-based systems developers and its sub-groups. The division of the developers of computer-based systems development methods and tools into schools based on paradigmatic differences is paralleled with Kuhn's view of a scientific discipline at the early, pre-science, stage. The use of a computer-based systems development method in practice, and informal computer-based systems development activities, are paralleled with Kuhnian normal science, working within the paradigm of the discipline and of the techniques employed. This parallel provides a framework for structuring the explicit and implicit assumptions and models which form the craft knowledge underlying computer-based systems development theory and practice. Following a search for elements of the disciplinary matrix in the theory of computer-based systems development, as described in textbooks, and in its practice through interviews with developers, the results of action research and reports of systems development failures, it is concluded that the analogy with Kuhn's view of scientific activity is justifiable, and that articulation and examination of the implications of the analogy can reveal useful information to assist in describing and improving computer-based systems development. The results of this search are presented in terms of the specific beliefs and models identified. It is suggested that, as future research, the Kuhn-based model of computer-based systems development should be extended into a detailed investigation into the effects of individual elements of the disciplinary matrix, either individually or in combination, on the mind set of the computer-based systems developer.