- •Лекция 9. Моделирование объектно-ориентированного жизненного цикла программных проектов
- •1. Итеративность развития.
- •2. Изменение функциональности.
- •3. Формирование системы понятий проекта.
- •4. Наращивание функциональности в соответствии со сценариями.
- •7. Распределение реализуемых требований по итерациям.
- •8. Особый стиль наращивания возможностей системы и ее развития.
- •3. Требования к очередной итерации утверждены.
- •4. Спецификации реализуемых сценариев составлены.
- •5. Спецификации утверждены.
- •6. Автономная проверка завершена и комплексное тестирование началось.
- •8. Требования к новой итерации приняты.
- •9. Начато использование изделия.
- •10. Изделие или его версия переданы на распространение.
- •11. Извещение о прекращении поддержки изделия (версии) выпущено.
- •12. Изделие (версия) снято с производства.
4. Наращивание функциональности в соответствии со сценариями.
Задание ситуаций использования (use cases) для определения того, как контактирует пользователь с системой, — первый уровень моделей, предполагаемый объектно-ориентированным проектированием. Эти модели фиксируют ситуации, которые возникают при взаимодействии пользователя с системой. Содержательные действия системы с пользователями выводятся из них б виде сценариев. Ситуации использования и сценарии — основа формулирования требований в том виде, в котором их можно предъявлять для разработки архитектуры.
Наращивание функциональности проектируемого изделия представляется как развитие сценариев, которые соответствуют описаниям (диаграммам) взаимодействия объектов и отражают отдельные стороны функционирования. Эти описания предписывают развитие на этапе программирования операционной базы проекта: она вырабатывается исходя из сценариев уровня проектирования. Полная функциональность состоит из функциональностей всех сценариев. Таким образом, данная стратегия довольно близка к классическому методу пошаговой детализации, при использовании которого функциональность наращивается путем уточнения (доопределения) модулей нижнего уровня. Однако в отличие от этого метода итеративное наращивание требует, чтобы в результате каждой итерации изделие получало полностью готовую функциональность, планируемую реализуемыми сценариями. Последующие итерации добавляют уже другую функциональность, которая планируется другими сценариями.
5. Ничто не делается однократно.
Последовательный подход предполагает, что анализ завершен перед конструированием, завершение которого предшествует программированию. Перекрытие этапов (см. описание модели Гантера в лекции 8) отчасти отходит от этого положения, но принципиально ситуацию не меняет. В большинстве объектно-ориентированных проектов анализ никогда не завершается в течение всего развития проекта, а процесс конструирования сопровождает разработку в ходе всего ее жизненного цикла.
Это обеспечивается тем, что всякий раз, когда начинается итерация, работа ведется не со всеми требованиями к системе, а только с той их частью, которая ограничена отобранными для итерации сценариями. Таким образом, принудительно анализ распределяется по итерациям, а далее это распределение распространяется и на все последующие этапы (см. предыдущий принцип).
6. Оперирование на размножающихся фазах подобно.
Как в начале проектирования, на последующих итерациях анализ предшествует конструированию, за которым следует программирование, тестирование и другие виды работ традиционного жизненного цикла разработки и использования программного обеспечения.
При объектно-ориентированном проектировании в ходе итеративного наращивания обыкновенно выполняются традиционные этапы.
Определение требований, или планирование итерации, — фиксируется, что должно быть выполнено на данной итерации в виде описания области, для которой планируется разработать функциональность на данной итерации, и что для этого нужно. Обычно этот этап включает отбор сценариев, которые должны быть реализованы на данной итерации.
Анализ — исследуются условия выполнения планируемых требований, проверяется полнота отобранных сценариев с точки зрения реализации требуемой функциональности.
Моделирование пользовательского интерфейса — коль скоро итерация должна обеспечивать функционально законченную реализацию, требуется определить правила взаимодействий, необходимые для активизации предоставляемых функций. Модель интерфейса задает пользовательское представление поведения объектов дан ной итерации.
Конструирование — обычная декомпозиция проекта, проводимая в объектно-ориентированном стиле. Конструирование включает по строение или наращивание иерархии системы классов, описание событий и определение реакции на них и т.д. В ходе конструирования определяются объекты, реализуемые и/или доопределяемые на данной итерации, и набор функций (методов объектов), которые обеспечивают решение задачи данной итерации.
Реализация (программирование) — программное воплощение решений, принятых для данной итерации. Необходимым компонентом реализации здесь считается автономная проверка соответствия составляемых модулей их спецификациям (в частности, должно быть обеспечено требуемое поведение объектов).
Тестирование — этап комплексной проверки результатов, полученных на данной итерации. Как и в традиционных схемах, тестирование в качестве этапа часто объединяют со следующим этапом жизненного цикла.
Оценка результатов итерации — этап включает работу, связанную с рассмотрением полученных результатов в контексте проекта в целом. В частности, должно быть выяснено, какие задачи проекта можно решать с учетом результатов итерации, на какие ранее поставленные вопросы получены ответы, какие новые вопросы возникают в новых условиях.
Модификация модели фазы—функции
Традиционность этапов объектно-ориентированного развития проекта в рамках одной итерации позволяет ставить задачу моделирования процесса итеративного наращивания как модификацию существующих моделей жизненного цикла. В настоящем разделе такая модификация осуществляется для модели фазы—функции Гантера.
В сравнении с моделью Гантера фазовое измерение жизненного цикла при объектно-ориентированном проектировании почти не изменяется: появляется лишь один дополнительный этап, моделирование пользовательского интерфейса, который в старой схеме можно рассматривать как часть этапов анализа и/или конструирования. Однако это весьма существенное дополнение, характеризующее подход в целом. Главный мотив явного рассмотрения моделирования в жизненном цикле при объектно-ориентированном развитии проектов связан со следующими двумя особенностями (продолжение перечня принципиальных моментов объектной ориентированности из предыдущего раздела):