Software crisis

from Wikipedia, the free encyclopedia

Software crisis describes the phenomenon that first appeared in the mid- 1960s when the cost of the software exceeded the cost of the hardware . As a result, there were the first major failed software projects.

Beginnings

It was recognized that the technologies previously used had not kept pace with the scope and complexity of the software. The problem was discussed at a NATO conference in Garmisch-Partenkirchen in 1968 and the term software engineering was coined as a reaction .

One of the first reliable mentions of the software crisis can be found in Edsger W. Dijkstra's acceptance speech for the Turing Award The Humble Programmer (German: "The humble programmer", EWD340), which he held in 1972 and which was published in Communications of the ACM magazine.

In it, he describes the cause of the software crisis as follows:

“[The major cause of the software crisis 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 has become an equally gigantic problem. "

“[The main cause of the software crisis lies in the fact that] the machines have become several orders of magnitude more powerful! To put it quite simply, as long as there were no machines, programming wasn't an existing problem; when we had a few weak computers, programming became a minor problem, and now that we have gigantic computers, programming is an equally gigantic problem. "

- Edsger Dijkstra : The Humble Programmer

As can already be seen from Dijkstra's remarks from 1972, the software crisis cannot be considered over today either: The complexity of the software systems continues to increase and with it the problems, even if there have been great advances in the modernization and structuring of the software development process .

The software crisis stems from the problem that even simple programs can have such a complex structure that they are very difficult to describe mathematically and difficult to test due to the large number of permutations (i.e. the large number of software states).

features

The cost of developing and testing software can increase exponentially with development time. This makes it difficult to meet deadlines in software development ; the time pressure increases and program errors occur more frequently. Unsatisfied users, poor maintenance due to a lack of resources and the inability to meet requirements can all be the consequences.

causes

In addition to the principal causes of the software crisis, quality assurance problems also contribute to the failure of software projects. In particular, the different levels of experience and perspectives of management and developers often lead to problems in project management . Inadequate quality assurance, poor or exaggerated project organization are just as responsible for project failures as insufficient involvement of the user or customer. Inadequate or oversized standardization can also make a significant contribution.

Possible solutions

Different concepts and paradigms from software development theory as well as different development processes promise to alleviate the effects of the increasing complexity. Increased use of tried and tested components and software libraries makes more efficient use of development work that has already been done. The use of code generators and model-driven software development (replace the error class of random errors with systematic errors that are easier to find) and the literate programming proposed by Donald Knuth are further possibilities.

There are also approaches for users to increase the quality of the software used. A stronger focus on open standards, for example, enables easier switching between providers and the combination of the best implementations for a given problem. In addition, each time you switch to a new software version, you should check what the benefits are. New versions often contain bugs that are not yet known and that can be avoided by simply waiting. This applies, among other things, to standard software such as Office applications, the functionality of which has been tried and tested and the requirements of which no longer change.

Furthermore, a lack of communication between programmers and users is a non-negligible source of inadequate products. Good communication can reduce the risk of undesirable developments and minimizes the effects of poorly recorded requirements at the start of a project.

However, despite the most varied of approaches, the software crisis is still generally regarded as an unsolved problem in information technology.

Web links

Wiktionary: Software crisis  - explanations of meanings, word origins, synonyms, translations

Individual evidence

  1. Peter Naur & Brian Randell (Eds.): Software Engineering: Report of a conference sponsored by the NATO Science Committee, Garmisch, Germany, 7-11 Oct. 1968. NATO Scientific Affairs Division, Brussels 1969 ( PDF; 2.3 MB )
  2. ^ Edsger W. Dijkstra: The humble programmer . In: Communications of the ACM . tape 15 , no. 10 , 1972, p. 859-866 , doi : 10.1145 / 355604.361591 .
  3. Edsger Dijkstra: The Humble Programmer (PDF; 473 kB)