В среде профессиональных программистов существует понятие перманентного «кризис а программирования», который проявляется в следующем:
1. Большие проекты выполняются с отставанием от графика.
2. Большие проекты выполняются с превышением сметы расходов.
3. Разработанный программный продукт не обладает требуемыми функциональными возможностями.
4. Производительность разработанного продукта низка.
5. Качество разработанного продукта не удовлетворяет пользователя.
Основными причинами существования кризиса программирования являются:
Сложность. Одна из проблем определяется природой человеческого интеллекта и состоит в неспособности им обрабатывать сложность. Само понятие «сложность» следует рассматривать в виде двух аспектов:
1. Сложность программ. Данная составляющая является существенным, а не второстепенным свойством. Поэтому при описании программных объектов зачастую применяются приём абстрагирования от их сложности, а то и, вообще, от их сущности.
2. Сложность администрирования. Трудность осуществления надзора за исполнителями влечёт ослабление концептуальной целостности.
|
|
Согласованность. Значительная часть сложности относится к решению проблемы согласования различных интерфейсов.
Изменяемость. Программное обеспечение очень легко изменить. При этом появление добавленного кода («заплат») может привести к разрушению идей, заложенных в код изначально.
Незримость. Реальность программного обеспечения (ПО) не встраивается естественным образом в пространство. У ПО сверхсложное геометрическое представление – как правило, большое количество неориентированных графов, наложенных один на другой.
Разрыв между теорией и практикой во многих областях программирования оказывает существенное влияние на кризис программирования.
Незначительные результаты исследовательской работы в области разработки ПО. Исследования, проводимые в последнее время в университетах и большинстве коммерческих компаний, являются фрагментарными и односторонними. Многие крупные компании славятся не столько генерированием новых идей, сколько доводкой заимствованных или купленных.
Невозможность проанализировать и обобщить действия великих программистов за работой. Давно возникло понимание того, что некоторые программисты на порядок, а то и на несколько порядков, более полезны, чем остальные.
Невозможность менеджера правильно сформировать проектную команду.
Экстремальные условия, в которых выполняются многие проекты. Установлено, что продуктивность работы тех, кто находиться в хорошем офисе, и может, закрыв дверь, не отвлекаться на телефонные звонки и посторонние дела, почти в 2,6 раза выше, чем у находящихся в коллективных комнатах.