Автор работы: Пользователь скрыл имя, 24 Ноября 2011 в 12:23, контрольная работа
Элемент Use Case описывает, что должна делать система, но не определяет, как она должна это делать. При моделировании это позволяет отделять внешнее представление системы от ее внутреннего представления.
Поведение элемента Use Case описывается потоком событий. Начальное описание выполняется в текстовой форме, прозрачной для пользователя системы. В потоке событий выделяют:
Работа с элементами Use Case 3
Спецификация элементов Use Case 3
Главный поток 3
Подпотоки 4
Альтернативные потоки 4
Пример диаграммы Use Case 5
Построение модели требований 7
Определение элементов Use Case 8
Расширение функциональных возможностей 10
Уточнение модели требований 11
Выводы 12
Кооперации и паттерны 12
Обычно расширения используют:
Главное, что следует помнить: решение о выборе, подключении варианта на основе расширения принимается вне базового элемента Use Case. Если же вы вводите в базовый элемент Use Case условную конструкцию, конструкцию выбора, то придется применять отношение включения. Это случай, когда «штурвал управления» находится в руках базового элемента Use Case.
Уточнение модели сводится к выявлению одинаковых частей в элементах Use Case и извлечению этих частей. Любые изменения в такой части, выделенной в отдельный элемент Use Case, будут автоматически влиять на все элементы Use Case, которые используют ее совместно.
Извлеченные
элементы Use Case называют абстрактными.
Они не могут быть конкретизированы
сами по себе, применяются для описания
одинаковых частей в других, конкретных
элементах Use Case. Таким образом, описания
абстрактных элементов Use Case используются
в описаниях конкретных элементов
Use Case. Говорят, что конкретный элемент
Use Case находится в отношении «
Вернемся к нашему примеру. В этом примере два конкретных элемента Use Case Возврат элемента и Создание дневного отчета имеют общую часть — действия, обеспечивающие печать квитанции. Поэтому, как показано на рис. 6, можно выделить абстрактный элемент Use Case Печать. Этот элемент Use Case будет специализироваться на выполнении распечаток.
Рис. 6. Применение отношения включения
В свою очередь, абстрактные элементы Use Case могут использоваться другими абстрактными элементами Use Case. Так образуется иерархия. При построении иерархии абстрактных элементов Use Case руководствуются правилом: выделение элементов Use Case прекращается при достижении уровня отдельных операций над объектами.
Выделение
абстрактных элементов Use Case можно
упростить с помощью
Абстрактный
актер — это общий фрагмент
роли в нескольких конкретных актерах.
Абстрактный актер выражает подобия
в элементах Use Case. Конкретные актеры
находятся в отношении
Рис. 7. Выделение абстрактного актера
Абстрактные элементы Use Case находят извлечением общих последовательностей из различных элементов Use Case.
Отношение «включает» применяется, если несколько элементов Use Case имеют общее поведение. Цель: устранить повторения, ликвидировать избыточность.
Кроме
того, это отношение часто используют
для ограничения сложности
Отношение «расширяет» применяется, когда описывается вариация, дополняющая нормальное поведение.
Кооперации
(сотрудничества) являются средством
представления комплексных
В терминологии фирмы Rational (вдохновителя и организатора побед языка UML) кооперации называют реализациями элементов Use Case, да и обозначения их весьма схожи (рис. 8).
Рис. 8. Элемент Use Case и его реализация
Обратите внимание на то, что и связаны эти элементы отношением реализации: кооперация реализует конкретный элемент Use Case.
Кооперации содержат две составляющие — статическую (структурную) и динамическую (поведенческую).
Статическая составляющая кооперации задает структуру совместно работающих классов и других элементов (интерфейсов, компонентов, узлов). Чаще всего для этого используют одну или несколько диаграмм классов. Динамическая составляющая кооперации определяет поведение совместно работающих элементов. Обычно для определения применяют одну или несколько диаграмм последовательности.
Таким образом, если заглянуть под «обложку» кооперации, мы увидим набор разнообразных диаграмм. Например, требования к информационной системе авиакассы задаются множеством элементов Use Case, каждый из которых реализуется отдельной кооперацией. Все эти кооперации применяют одни и те же классы, но все же имеют разную функциональную организацию. В частности, поведение кооперации для заказа авиабилета может описываться диаграммой последовательности, показанной на рис. 9.
Соответственно, структура кооперации для заказа авиабилета может иметь вид, представленный на рис. 10.
Важно
понимать, что кооперации отражают
понятийный аспект архитектуры системы.
Один и тот же элемент может
участвовать в различных
Рис. 9. Динамическая составляющая кооперации Заказ авиабилета
Рис. 10. Статическая составляющая кооперации Заказ авиабилета
Рис. 11. Обозначение паттерна
Параметризованные, то есть настраиваемые кооперации называют паттернами (образцами). Паттерн является решением типичной проблемы в определенном контексте. Обозначение паттерна имеет вид, представленный на рис. 11.
На
место параметров настройки паттерна
подставляются различные
Паттерны рассматриваются как крупные строительные блоки. Их использование приводит к существенному сокращению затрат на анализ и проектирование ПО. повышению качества и правильности разработки на логическом уровне, ведь паттерны создаются опытными профессионалами и отражают проверенные и оптимизированные решения.
Итак, паттерны — это наборы готовых решений, рецепты, предлагающие к повторному использованию самое ценное для разработчика — сплав мирового опыта по созданию ПО.
Наиболее распространенные паттерны формализуют и сводят в единые каталоги. Самым известным каталогом проектных паттернов, обеспечивающих этап проектирования ПО, считают каталог «Команды четырех» (Э. Гамма и др.). Он включает в себя 23 паттерна, разделенные на три категории. Как показано в табл. 1, по мнению «Команды четырех», описание паттерна должно состоять из четырех основных частей.
Таблица 1. Описание паттерна
Раздел | Описание |
Имя Проблема Решение Результаты |
Выразительное
имя паттерна дает возможность указать
проблему проектирования, ее решение
и последствия ее решения. Использование
имен паттернов повышает уровень
абстракции проектирования
Формулируется
проблема проектирования (и ее контекст),
на которую ориентировано Описываются элементы решения, их отношения, обязанности, сотрудничество. Решение представляется в обобщенной форме, которая должна конкретизироваться при применении. Фактически приводится шаблон решения — его можно использовать в самых разных ситуациях Перечисляются
следствия применения паттерна и
вытекающие из них компромиссы. Такая
информация позволяет оценить |
Обсудим применение нескольких паттернов из каталога «Команды четырех».
Паттерн Наблюдатель
Паттерн
Наблюдатель (Observer) задает между объектами
такую зависимость «один-ко-
Проблема.
При разбиении системы на набор
совместно работающих объектов появляется
необходимость поддерживать их согласованное
состояние. При этом желательно минимизировать
сцепление, так как высокое сцепление
уменьшает возможности
Решение. Принцип решения иллюстрирует рис. 12. Ключевыми элементами решения являются субъект и наблюдатель. У субъекта может быть любое количество зависимых от него наблюдателей. Когда происходят изменения в состоянии субъекта, наблюдатели автоматически об этом уведомляются. Получив уведомление, наблюдатель опрашивает субъекта, синхронизуя с ним свое отображение состояния.
Рис. 12. Различные графические отображения состояния субъекта
Такое взаимодействие между элементами соответствует схеме издатель-подписчик. Издатель рассылает сообщения об изменении своего состояния, не имея никакой информации о том, какие объекты являются подписчиками. На получение таких уведомлений может подписаться любое количество наблюдателей.
Структурная составляющая паттерна Наблюдатель представлена на рис. 13. В ней определены два абстрактных класса, Субъект и Наблюдатель. Кроме того, здесь показаны два конкретных класса, КонкрСубъект и КонкрНаблюдатель, которые наследуют свойства и операции абстрактных классов. Они подключаются к паттерну в процессе его настройки. Состояние формируется Конкретным субъектом, который унаследовал от Субъекта операции, позволяющие ему добавлять и удалять Конкретных наблюдателей, а также уведомлять их об изменении своего состояния. Конкретный наблюдатель автоматически отображает состояние и реализует абстрактную операцию Обновить() Наблюдателя, обеспечивающую обновление отображаемого состояния.
Динамическая составляющая паттерна Наблюдатель показана на рис. 14. На рисунке представлено поведение паттерна при взаимодействии субъекта с двумя наблюдателями.
Рис. 13. Структурная составляющая паттерна Наблюдатель
Рис. 14. Динамическая составляющая паттерна Наблюдатель
Результаты.
Субъекту известно только об абстрактном
наблюдателе, он ничего не знает о
конкретных наблюдателях. В результате
между этими объектами