Software crisis is a term used in the early days of computing science for the difficulty of writing useful and efficient computer programs in the required time. The software crisis was due to the rapid increases in computer power and the complexity of the problems that could not be tackled. With the increase in the complexity of the software, many software problems arose because existing methods were inadequate. History The term "software crisis" was coined by some attendees at the first NATO Software Engineering Conference in 1968 at Garmisch, Germany. Edsger Dijkstra's 1972 Turing Award Lecture makes reference to this same problem: Causes The causes of the software crisis were linked to the overall complexity of hardware and the software development process. The crisis manifested itself in several ways: Projects running over-budget Projects running over-time Software was very inefficient Software was of low quality Software often did not meet requirements Projects were unmanageable and code difficult to maintain Software was never delivered The main cause is that improvements in computing power had outpaced the ability of programmers to effectively use those capabilities. Various processes and methodologies have been developed over the last few decades to improve software quality management such as procedural programming and object-oriented programming. However, software projects that are large, complicated, poorly specified, or involve unfamiliar aspects, are still vulnerable to large, unanticipated problems. See also AI winter List of failed and overbudget custom software projects Fred Brooks System accident Technological singularity References External links Edsger Dijkstra: The Humble Programmer (PDF file, 473kB) Brian Randell: The NATO Software Engineering Conferences Markus Bautsch: Cycles of Software Crises in: ENISA Quarterly on Secure Software (PDF file; 1,86MB) Hoare 1996, "How Did Software Get So Reliable Without Proof?" Software quality History of software