Кризис программного обеспечения
«Кри́зис програ́ммного обеспе́чения» — термин, некогда использовавшийся в информатике для описания последствий быстрого роста вычислительной мощности компьютеров и сложности проблем, которые могут быть решены с их помощью. В сущности, это относится к сложности написания работоспособного, понятного программного обеспечения с использованием верифицированных алгоритмов.
Термин «кризис программного обеспечения» был введён Фридрихом Л. Бауэром на Конференции НАТО «Инженерия программного обеспечения» в 1968 в Гармиш-Партенкирхене (Германия)[1]. Термин использовался Эдсгером В. Дейкстрой в 1972 в его лекции при получении премии Тьюринга[2]:
Основная причина кризиса программного обеспечения — резкий рост мощностей вычислительных машин! Проще говоря: нет вычислительной техники — нет проблем с разработкой программного обеспечения для неё; когда же появилось несколько слабых компьютеров, появились первые проблемы, связанные с разработкой программного обеспечения, сейчас у нас есть гигантские компьютеры, и программирование стало столь же гигантской проблемой.
Оригинальный текст (англ.)[показатьскрыть]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.
Причины кризиса программного обеспечения были связаны с общей сложностью аппаратного обеспечения и сложностью разработки программного обеспечения. Кризис проявляет себя самым различным образом:
- Стоимость проектов превышает бюджет.
- В проектах превышаются сроки выполнения.
- Программное обеспечение было слишком неэффективным.
- Программное обеспечение имело слишком низкое качество.
- Программное обеспечение зачастую не отвечало необходимым требованиям.
- Проекты были неуправляемыми, и возникали трудности с поддержкой кода.
- Программное обеспечение было непригодным для распространения.
Многие проблемы, связанные с программным обеспечением, были вызваны усложнением аппаратного обеспечения. В своём эссе Эдсгер В. Дейкстра отметил, что новые компьютеры в своё время были «воплощеннием таких серьёзных недостатков, что, [он считает], информационно-технологический прогресс отстал, по крайней мере, на десять лет»[2]. Он также считал, что влияние аппаратного обеспечения на программное обеспечение слишком часто упускалось из виду.
Различные процессы и методологии были разработаны в течение последних нескольких десятилетий, чтобы «укротить» кризис программного обеспечения. Однако, широко распространено мнение, что «серебряной пули нет» — то есть не существует универсального метода предотвращения перерасходов и провалов проектов. В целом, проекты по разработке программного обеспечения — достаточно большие, сложные, плохо документированные и затрагивающие непривычные аспекты — по-прежнему могут подвергаться крупным непредвиденным проблемам.
См. также
Примечания
- Отчёт Конференции НАТО «Инженерия программного обеспечения» о кризисе программного обеспечения (Report about the NATO Software Engineering Conference dealing with the software crisis) (англ.)
- Архив Эдсгера В. Дейкстры (E. W. Dijkstra Archive),