Ничто не делается однократно.
Последовательный подход предполагает, что анализ завершен перед конструированием, завершение которого предшествует программированию. Перекрытие этапов (см. описание модели Гантера в лекции 8) отчасти отходит от этого положения, но принципиально ситуацию не меняет. В большинстве объектно-ориентированных проектов анализ никогда не завершается в течение всего развития проекта, а процесс конструирования сопровождает разработку в ходе всего ее жизненного цикла.
Это обеспечивается тем, что всякий раз, когда начинается итерация, работа ведется не со всеми требованиями к системе, а только с той их частью, которая ограничена отобранными для итерации сценариями. Таким образом, принудительно анализ распределяется по итерациям, а далее это распределение распространяется и на все последующие этапы (см. предыдущий принцип).
6. Оперирование на размножающихсяфазах подобно.
Как в начале проектирования, на последующих итерациях анализ предшествует конструированию, за которым следует программирование, тестирование и другие виды работ традиционного жизненного цикла разработки и использования программного обеспечения.
При объектно-ориентированном проектировании в ходе итеративного наращивания обыкновенно выполняются традиционные этапы.
• Определение требований,или планирование итерации,— фиксируется, что должно быть выполнено на данной итерации в виде описания области, для которой планируется разработать функциональность на данной итерации, и что для этого нужно. Обычно этот
этап включает отбор сценариев, которые должны быть реализованы на данной итерации.
• Анализ— исследуются условия выполнения планируемых требований, проверяется полнота отобранных сценариев с точки зрения
реализации требуемой функциональности.
• Моделирование пользовательского интерфейса— коль скоро итерация должна обеспечивать функционально законченную реализацию, требуется определить правила взаимодействий, необходимые
для активизации предоставляемых функций. Модель интерфейса
задает пользовательское представление поведения объектов дан
ной итерации.
• Конструирование— обычная декомпозиция проекта, проводимая в
объектно-ориентированном стиле. Конструирование включает по
строение или наращивание иерархии системы классов, описание
событий и определение реакции на них и т.д. В ходе конструирования определяются объекты, реализуемые и/или доопределяемые на
данной итерации, и набор функций (методов объектов), которые
обеспечивают решение задачи данной итерации.
• Реализация(программирование) — программное воплощение решений, принятых для данной итерации. Необходимым компонентом реализации здесь считается автономная проверка соответствия
составляемых модулей их спецификациям (в частности, должно
быть обеспечено требуемое поведение объектов).
• Тестирование— этап комплексной проверки результатов, полученных на данной итерации. Как и в традиционных схемах, тестирование в качестве этапа часто объединяют со следующим этапом жизненного цикла.
• Оценкарезультатов итерации — этап включает работу, связанную с
рассмотрением полученных результатов в контексте проекта в целом. В частности, должно быть выяснено, какие задачи проекта
можно решать с учетом результатов итерации, на какие ранее поставленные вопросы получены ответы, какие новые вопросы возникают в новых условиях.
Модификация модели фазы—функции
Традиционность этапов объектно-ориентированного развития проекта в рамках одной итерации позволяет ставить задачу моделирования процесса итеративного наращивания как модификацию существующих моделей жизненного цикла. В настоящем разделе такая модификация осуществляется для модели фазы—функции Гантера.
В сравнении с моделью Гантера фазовое измерение жизненного цикла при объектно-ориентированном проектировании почти не изменяется: появляется лишь один дополнительный этап, моделирование пользовательского интерфейса, который в старой схеме можно рассматривать как часть этапов анализа и/или конструирования. Однако это весьма существенное дополнение, характеризующее подход в целом. Главный мотив явного рассмотрения моделирования в жизненном цикле при объектно-ориентированном развитии проектов связан со следующими двумя особенностями (продолжение перечня принципиальных моментов объектной ориентированности из предыдущего раздела):