Software Engineering, What And Why
Prof. David Parnas
Ph.D., P.Eng.(Ontario); Dr.h.c.: ETH Zürich, Louvain, Lugano ,TU Wien Fellow: RSC, ACM, CAE, GI, IEEE; MRIA
One of the Pioneers in the History of Computing
Abstract
In the 1960s, some scientists and mathematicians who were interested in computers observed that software development was a profession that had more in common with Engineering than it did with the fields in which they had been trained. They had mastered a body of knowledge and been taught how to extend that knowledge. They had not been taught how to build software products that would be used by strangers.
It was proposed that, in addition to “Computer Science”, there should be a new engineering discipline called “Software Engineering”. Critics said that a new field wasn’t needed but today the importance of the field is indisputable; we depend on software in the same way that previous generations depended on roads and engines. The world needs software development professionals who have learned to work with the discipline expected of professional engineers.
The early pioneers did not identify the capabilities required of practitioners in the new field. Although there have been several efforts to identify a “body of knowledge” for Software Engineering, none have captured the essence of the field. This talk addresses the question, “What should a Software Engineer be able to do?” Starting with two historical characterizations of the field by leading pioneers, it describes and explains a set of capabilities that are essential for today’s “Software Engineers”.
The talk is addressed to educators, managers, licensing authorities, and, of course, developers.