Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
9 лекция.doc
Скачиваний:
8
Добавлен:
10.06.2015
Размер:
267.26 Кб
Скачать

4. Наращивание функциональности в соответствии со сценариями.

Задание ситуаций использования (use cases) для определения того, как контактирует пользователь с системой, — первый уровень моделей, предполагаемый объектно-ориентированным проектированием. Эти мо­дели фиксируют ситуации, которые возникают при взаимодействии пользователя с системой. Содержательные действия системы с пользова­телями выводятся из них б виде сценариев. Ситуации использования и сценарии — основа формулирования требований в том виде, в котором их можно предъявлять для разработки архитектуры.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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