188
ГЛАВА 4. ЖИЗНЕННЫЙ ЦИКЛ
ный непреодолимый аспект программных разработок: стремление заранее
предвидеть все ситуации использования системы и невозможность в пода-
вляющем большинстве случаев достичь этого
2
. Все традиционные техноло-
гии программирования направлены лишь на то, чтобы минимизировать воз-
враты. Но суть от этого не меняется: при возврате всегда приходится повто-
рять построение того, что уже считалось готовым.
Объектно-ориентированные технологии пытаются преодолеть данное пре-
пятствие путем отказа от завершенности фаз и этапов. Вместо этого предла-
гается распределять наращивание функциональности и интерфейсных воз-
можностей по итерациям, что позволяет уменьшить переделки старого при
возвратах.По существу классическая схема остается верной, но только в рам-
ках одной итерации и с одной важной поправкой: все полезное, что было сде-
лано ранее, сохраняется (в принципе). Понятно, что для программной систе-
мы в целом новый подход требует и новых моделей жизненного цикла, отра-
жающих его особенности, отмеченные ранее. Об этом будет идти речь после
изучения основных вариантов традиционных моделей жизненного цикла.
4.2.3. Каскадная модель
Более строгой разновидностью классической модели является так назы-
ваемая каскадная модель, которую можно рассматривать в качестве показа-
тельного примера того, какими методами можно минимизировать возвраты.
Характерные черты каскадной модели:
• завершение каждого этапа (они почти те же, что и в классической моде-
ли) проверкой полученных результатов с целью устранить как можно
2
Данное противоречие является типичным примером т. н. проблемного противоречия,
противоречия между желаемым и действительным. Решение проблемных противоречий
является стимулом творческой деятельности человека. Более того, задачу, которая требует
творческого подхода, лучше всего формулировать в виде проблемных противоречий, макси-
мально обостряя их. Именно тогда можно надеяться на то, что будет найдено действитель-
но хорошее и адекватное решение. Методология использования проблемных противоречий
в творческих рассуждениях была развита Г. С. Альтшуллером и советской школой теории
решения изобертательских задач (ТРИЗ). Программистам и особенно преподавателям про-
граммирования настоятельно рекомендуется прочитать книгу Г. С. Альтшуллера [4]. Хотя
методы ТРИЗ в большинстве своем прямо не могут быть применены при решении програм-
мистских задач, поскольку они в основном направлены на поиск элементарных решений,
преодолевающих «сопротивление материала», методология подхода исключительно полез-
на для любого творческого человека, занимающегося созданием реальных систем (именно
этим программисты, ученые и инженеры отличаются от гуманитариев).