Page 4 of 10
The 1960s – Garmisch Conference: The Concept of Software Engineering:
The experience of OS/360 made the computer community aware that the software had not been catching up with hardware and because of that, the potential of rapidly advancing hardware technology was not being realized fully. Many of the software projects were becoming unmanageable and were going utterly wrong.The OS/360 project was illustrative of these problems this era faced in developing operating systems and other software. These systems were huge conglomerates of software written by people who really did not understand that software, as well as hardware had to be engineered to be reliable, understandable and maintainable. Endless hours and enormous amount of money were spent detecting and removing bugs that should never have been in the systems in the first place. Errors in the earliest phase of the projects were not located until long after the projects were delivered to customers where they were much more difficult and expensive to correct. People turnover often resulted in large numbers of software modules being scrapped and then rewritten by new people because the existing modules could not be understood (Brooks, 1975).
At that time, the US Department of Defense and NATO were developing defense systems which utilized state-of-the-art software. However, they were worried about the software quality since even a small bug in the software of military systems, would have disastrous consequences. One of the actions taken by NATO was to take initiative in sponsoring a world-wide working conference of academic and industrial software developers. The conference was held in Garmisch, Germany in October 1968 under the term “Software Engineering.” The term was deliberately chosen by the organizers in order to emphasize “the need for software manufacturers to be based on the types of the theoretical foundations and practical disciplines that are traditional in the established branches of engineering” (Naur and Randell, 1968, p. 13).
The Garmisch conference brought about a major cultural shift in the perception of programming at that time. Prior to that, software development as a discipline was fragmented with no theoretical foundations. The Garmisch conference was the catalyst in providing a framework for developing better software. Some of these ideas included structured design, formal methods and developmental models, all of which were designed to manage the inherent complexity of writing large programs. Structured design methodology took the view that the best way to manage complexity was to limit the software writer’s field of view and keep him/her in focus. Formal methods were expected to simplify and mathematize the design process by which programs were created. The development model viewed the software writing process not as a once-and-for-all construction project, like the way IBM approached OS/360 project, but as a more organic process, like the building of a city. Thus, software would be conceived, specified, developed and implemented – then it can be improved over from time to time, with added “bells and whistles” (Weizer, 1981).
These frameworks, especially the structured design methodology and development model; are still being used today. They helped build the future software including the operating systems much more efficiently. IBM’s other mainframe operating systems such as MVS and VM system have been much more effective than the OS/360 mainly because of the use of these methodologies. The emergence of the field of software engineering and the recognition of the importance of developing a disciplined and structured approach to the construction of reliable, understandable and maintainable software were truly fostered by the devastating experiences with many of the operating system development efforts of the 1960s.