Parnas’ information hiding approach to software modularization (Parnas 1972) is one of many indications that knowledge in software engineering cannot be adequately understood merely as “technical knowledge.” Rather, insight into process issues such as coordination among module developers is also a constituent of such knowledge. With the aim of contributing to a broader interpretation of software engineering and its underlying epistemology, three views of technology are surveyed. The first is Shaw’s theory of the immaturity of computer science as a supporting discipline of software practice, as sketched initially in “Prospects for an Engineering Discipline of Software” (Shaw 1990). The second is Vincenti’s theory of vicarious models and technological evolution, based on his study of aeronautics in What Engineers Know and How They Know it (Vincenti 1990). The third is Simon’s interdisciplinary account of design in The Sciences of the Artificial (Simon 1996). The result of the survey is, on the one hand, that none of the three contributions account convincingly for a significant role in engineering for insights of a qualitative, process-oriented nature. On the other hand, the three studies of the relationship between scientific and engineering knowledge contain significant pointers for future research of the interplay between technical and process-oriented aspects of the construction of software artifacts. This includes the significance of codification of standard solutions to routine problems, of vicarious modeling to predict the behavior of proposed designs, and of satisficing (find a design that works) as opposed to optimizing (find the best design).
Joergensen, Niels, "The Engineering of Software: Views from Technology Theory" (2005). ICIS 2005 Proceedings. 28.