Ничто не делается однократно.

Последовательный подход предполагает, что анализ завершен перед конструированием, завершение которого предшествует программирова­нию. Перекрытие этапов (см. описание модели Гантера в лекции 8) отча­сти отходит от этого положения, но принципиально ситуацию не меняет. В большинстве объектно-ориентированных проектов анализ никогда не завершается в течение всего развития проекта, а процесс конструирова­ния сопровождает разработку в ходе всего ее жизненного цикла.

Это обеспечивается тем, что всякий раз, когда начинается итерация, работа ведется не со всеми требованиями к системе, а только с той их ча­стью, которая ограничена отобранными для итерации сценариями. Таким образом, принудительно анализ распределяется по итерациям, а далее это распределение распространяется и на все последующие этапы (см. пре­дыдущий принцип).

6. Оперирование на размножающихсяфазах подобно.

Как в начале проектирования, на последующих итерациях анализ предшествует конструированию, за которым следует программирование, тестирование и другие виды работ традиционного жизненного цикла раз­работки и использования программного обеспечения.

При объектно-ориентированном проектировании в ходе итератив­ного наращивания обыкновенно выполняются традиционные этапы.

Определение требований,или планирование итерации,— фиксирует­ся, что должно быть выполнено на данной итерации в виде описа­ния области, для которой планируется разработать функциональ­ность на данной итерации, и что для этого нужно. Обычно этот
этап включает отбор сценариев, которые должны быть реализова­ны на данной итерации.

Анализ— исследуются условия выполнения планируемых требова­ний, проверяется полнота отобранных сценариев с точки зрения
реализации требуемой функциональности.

 

Моделирование пользовательского интерфейса— коль скоро итера­ция должна обеспечивать функционально законченную реализа­цию, требуется определить правила взаимодействий, необходимые
для активизации предоставляемых функций. Модель интерфейса
задает пользовательское представление поведения объектов дан­
ной итерации.

Конструирование— обычная декомпозиция проекта, проводимая в
объектно-ориентированном стиле. Конструирование включает по­
строение или наращивание иерархии системы классов, описание
событий и определение реакции на них и т.д. В ходе конструирования определяются объекты, реализуемые и/или доопределяемые на
данной итерации, и набор функций (методов объектов), которые
обеспечивают решение задачи данной итерации.

Реализация(программирование) — программное воплощение ре­шений, принятых для данной итерации. Необходимым компонен­том реализации здесь считается автономная проверка соответствия
составляемых модулей их спецификациям (в частности, должно
быть обеспечено требуемое поведение объектов).

Тестирование— этап комплексной проверки результатов, получен­ных на данной итерации. Как и в традиционных схемах, тестирова­ние в качестве этапа часто объединяют со следующим этапом жиз­ненного цикла.

Оценкарезультатов итерации — этап включает работу, связанную с
рассмотрением полученных результатов в контексте проекта в це­лом. В частности, должно быть выяснено, какие задачи проекта
можно решать с учетом результатов итерации, на какие ранее по­ставленные вопросы получены ответы, какие новые вопросы воз­никают в новых условиях.

Модификация модели фазы—функции

Традиционность этапов объектно-ориентированного развития про­екта в рамках одной итерации позволяет ставить задачу моделирования процесса итеративного наращивания как модификацию существующих моделей жизненного цикла. В настоящем разделе такая модификация осуществляется для модели фазы—функции Гантера.

В сравнении с моделью Гантера фазовое измерение жизненного ци­кла при объектно-ориентированном проектировании почти не изменяет­ся: появляется лишь один дополнительный этап, моделирование пользо­вательского интерфейса, который в старой схеме можно рассматривать как часть этапов анализа и/или конструирования. Однако это весьма су­щественное дополнение, характеризующее подход в целом. Главный мотив явного рассмотрения моделирования в жизненном цикле при объект­но-ориентированном развитии проектов связан со следующими двумя особенностями (продолжение перечня принципиальных моментов объ­ектной ориентированности из предыдущего раздела):