The Software Crisis

The Software Crisis

A period in the 1960s and 1970s, when many large-scale software development projects failed.

Introduction

Software Crisis was a term that came to be used in the early days of computing science referring to the difficulty of writing useful and efficient computer programs (Software) by software Engineers and Developers within the required time due to the rapid increase in computer power and the failure to tackle the complexity of the problems arising.

The Software Crisis (1960)

Software Crisis,was the name given to the difficulties encountered in developing large, complex systems in the 1960s (through the 1970s -80s). During this period, the increasing complexity of the software, and inadequacy of the existing methods, lead to many software problems arising which caused many large-scale software development projects to fail.

This ended up costing more money and taking more time to develop Software than was estimated, with the final product often being inefficient and low quality, if, and when, finished at all.

As computers became larger and more powerful, the task of creating equally large and powerful software (computer programs) also became gigantic, and the field struggled to keep up leading to the situation referred to today as “The Software Crisis”

In his 1972 Turing Award lecture, Edsger Dijkstra made a reference to this same problem.

“But I called this a minor cause; the major cause is... that the machines have become several orders of magnitude more powerful! To put it quite bluntly: as long as there were no machines, programming was no problem at all; when we had a few weak computers, programming became a mild problem, and now we have gigantic computers, programming had become an equally gigantic problem.” –-Edsger Dijkstra, The Humble Programmers (1972)

The term "Software Crisis" was coined together by attendees at the first NATO Software Engineering Conference in 1968 at Garmisch, Germany.

The Beginning of Software Engineering

In the wake of the Software crisis, Software Engineering emerged as a new engineering discipline concerned with all aspects pertaining to software production that encompassed the theories, concepts, principles, techniques, standards, and tools that could be used for developing high-quality and reliable professional software.

At the time, Software Engineers & Software Developers couldn’t keep up with complexity of the projects they were being asked to work on, therefore the software crisis, originally defined in terms of productivity, was used in reference to the inability to find and hire qualified programmers but has over time evolved to emphasize quality which is how we now use terms like Software Quality and Software Quality Assurance.

By identifying the many problems of software development It was thus, proposed that the adoption of an engineering approach to developing software which is how Software Engineering was conceptualized.

The term ‘Software Engineering’ first was used in the late 1950s and early 1960s, where the concept of software engineering was first suggested at the 1968 NATO Science Committee in (Garmisch) Germany, while discussing the 'Software Crisis'. It is generally believed these conferences marked the official start of the profession as the term 'Software Engineering'. The NATO Science Committee sponsored two conferences ( The NATO Software Engineering Conferences ) on Software Engineering in 1968 and 1969, which gave the field its initial boost.

Software Engineering emphasizes a systematic, disciplined approach to the development of software that typically applies to the construction of large software systems (or products) involving numerous Software Development and engineering teams. High-quality software was and is evolvingly characterized with being highly dependable, safe, secure, reliability, efficient, usable, accessible, and maintainable. It is not feasible to achieve all these in any one software product but many them is expected to be achievable.

Resources

Tags

Software, Software Crisis, The Humble Programmer, Software Development, Computer Science, Software Engineering, Software Quality, Software Quality Assurance