The role of process models in software engineering
Software Engineering, both as a discipline and as a profession, is at a critical point in its development. The consensus in the software community is that the discipline is new relative to the more traditional engineering fields and thus, software engineering simply is not yet fully mature. Achieving consensus within the software community on a "body of knowledge" for Software Engineering is an important step, crucial to the evolution of the profession toward professional status. Fundamental to this question is "what constitutes a body of knowledge for a discipline such as Software Engineering?" Is software design with all of it' s components (Computer Science, Programming, Engineering, etc.) an engineering discipline? If not, what is lacking? To answer the question, one must first define an engineering discipline based on the characteristics of existing engineering disciplines, then determine the correlation of Software Engineering to that definition. A profession today is characterized by an organized and formalized body of knowledge, training programs, accredited educational programs, codes of ethics and usually licensure. Furthermore, an engineering discipline is based on well-developed theories and foundations using proven methods and technology. The various engineering disciplines have certain commonalities and certain areas of distinction. They share certain sciences in their respective bodies of knowledge. How Can Process Models (such as CMM, ISO 9001, Bootstrap, Spice and SEPRM) provide completion to the body of knowledge for software engineering? This research is centered around the concept proposed by Wang and King (2001) and others that the modem domain of software engineering includes three important aspects: development methodology, organization and management. Software engineering process models provide a fundamental infrastructure for organizing and implementing software engineering. Formal process models not only improve software engineering projects by formalizing process methodology, but also provide the rigor to Software Engineering associated with measurement that is characteristic of all engineering disciplines.