From the 1960s IBM computers to modern-day hand-held devices, software engineering has come along way as Gerard O'Regan explainsComputing technology used today includes personal computers, laptops, mobile phones, tablets and the Internet/world wide web. The computer sector in the 1960s was totally different, and was dominated by several large mainframe computer manufacturers. These include IBM, Burroughs, UNIVAC, NCR, CDC, Honeywell, General Electric and RCA, and these are often referred to as Snow White (IBM) and the Seven Dwarfs (the others). Computers were large, expensive and difficult to use for a non-specialist.
The 1968 NATO conference on software engineering took place over fifty years ago in Garmisch, Germany in 1968, and a follow up conference was held in Rome in 1969. The conference discussed the serious problems with the development of software on time and on budget and with the right quality, and the term “software crisis” was coined to refer to these. The participants recognised that the existing approaches to software development were not fit for purpose, and that there was a need to apply engineering principles to software development. This led to the birth of software engineering as a discipline in its own right, and to the subsequent development of a plethora of techniques to elicit requirements, design, develop and test software to meet customer needs.
There was no independent software sector in the 1960s with software and training included as part of the computer hardware delivered to the customers. IBM's dominant position in the market led to antitrust inquiries by the US Justice Department, and this led IBM to "unbundle" its software and services from its hardware sales. It then began charging separately for software, training and hardware, and this led to the creation of a multi-billion-dollar software industry, and to a major growth of software suppliers.
Software engineering involves the multi-person construction of multi-version programs. The IEEE 610.12 definition of Software Engineering is: Software engineering is not just programming. It requires the engineer to state precisely the requirements that the software product is to satisfy, and then to produce designs that will meet these requirements. The project needs to be planned and delivered on time and budget.
Software engineering has come a long way since its birth in the late 1960s, and it has evolved into a series of sub-disciplines such as requirements engineering, software design, and software development, software testing. Concise Guide to Software Engineering helps students navigate this history. Its objectives are to provide a concise guide to the software engineering field, and to give the reader a grasp of the fundamentals of software engineering.