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
Complexity characterizes the behavior of a system or model whose components interact in multiple ways and follow local rules, leading to non-linearity, randomness, collective dynamics, hierarchy, and emergence.
The term is generally used to c ...
of the problems that could 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
The ACM A. M. Turing Award is an annual prize given by the Association for Computing Machinery (ACM) for contributions of lasting and major technical importance to computer science. It is generally recognized as the highest distinction in the fi ...
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
Procedural programming is a programming paradigm, classified as imperative programming, that involves implementing the behavior of a computer program as Function (computer programming), procedures (a.k.a. functions, subroutines) that call each o ...
and
object-oriented programming
Object-oriented programming (OOP) is a programming paradigm based on the concept of '' objects''. Objects can contain data (called fields, attributes or properties) and have actions they can perform (called procedures or methods and impl ...
. 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
Frederick Phillips Brooks Jr. (April 19, 1931 – November 17, 2022) was an American computer architect, software engineer, and computer scientist, best known for managing development of IBM's System/360 family of mainframe computers and the ...
*
System accident
*
Technological singularity
The technological singularity—or simply the singularity—is a hypothetical point in time at which technological growth becomes uncontrollable and irreversible, resulting in unforeseeable consequences for human civilization. According to the ...
References
External links
Edsger Dijkstra: The Humble Programmer(PDF file, 473kB)
*
Brian Randell
Brian Randell (born 1936) is a British computer scientist, and emeritus professor at the School of Computing, Newcastle University, United Kingdom. He specialises in research into software fault tolerance and dependability, and is a noted ...
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?"
{{DEFAULTSORT:Software Crisis
Software quality
History of software
1968 neologisms