Ответы на экзамен (987689), страница 10
Текст из файла (страница 10)
Рис. 2.3.
Рис. 2.4.
Главное назначение диаграммы вариантов использования заключается в формализации функциональных требований к системе с помощью действующих лиц – потенциальных пользователей и вариантов использования – задач, с которыми они будут обращаться к разрабатываемому программному продукту. Рекомендуемые ограничения: действующих лиц не более 20, вариантов использования не более 50. В противном случае диаграмма теряет наглядность; в таком случае следует составить несколько диаграмм или использовать пакеты для структурирования модели. Важно сконцентрироваться исключительно на том, что должен делать создаваемый программный продукт, а не на том, как он это будет делать. Построение диаграммы вариантов использования специфицирует не только функциональные требования к проектируемой системе, но и выполняет исходную структуризацию предметной области.
Составление диаграммы вариантов использования позволяет:
1. Моделируя поведение с помощью вариантов использования, эксперты предметной области могут описать взгляд на систему извне с такой степенью детализации, что разработчики сумеют сконструировать ее внутреннее представление. Варианты использования дают возможность экспертам, конечным пользователям и разработчикам общаться на одном языке.
2. Варианты использования позволяют разработчикам понять назначение разрабатываемой системы.
3. Варианты использования являются основой тестирования элементов программного продукта на всем протяжении его жизненного цикла; они позволяют проверять корректность их реализации.
Составление диаграммы вариантов использования рекомендуют выполнять в следующей последовательности:
1. Выделить действующие лица. При этом надо четко ответить на вопрос: чем отличаются друг от друга отдельные действующие лица?
2. Для каждого действующего лица выделить варианты использования. После этого составить общий список вариантов использования.
3. Связать между собой действующие лица и варианты использования (установить отношение ассоциации).
4. Проанализировать в первом приближении наличие общих подзадач у разных вариантов использования, при их наличии выделить их и установить отношения расширения и включения.
Рассмотрим сказанное на небольшом учебном примере. Пусть требуется автоматизировать работу магазина. По телефону потенциальные покупатели могут получить справки о наличии товара, о ценах и характеристиках и при желании забронировать товар. Забронированный товар должен быть куплен в течение дня; забронированный, но не купленный товар после закрытия магазина считается свободным для продажи. Магазин торгует товарами малых размеров и массы, поэтому доставка товара покупателям не осуществляется. Покупатель, пришедший в магазин, может у продавцов также получать информацию о наличии товара, о ценах и характеристиках. Кроме того, продавец может выписывать счет на оплату товара, копия счета передается на склад, кладовщик доставит товар на выдачу и сотрудник на выдаче, убедившись, что товар оплачен, передает его покупателю. Товар между выписыванием счета и доставкой кладовщиком на выдачу считается забронированным. Продавец может выписывать счет и на забронированный товар, а также забронировать товар. Забронированный у продавца товар обрабатывается аналогично забронированному по телефону. Выписанный, но не оплаченный в течение трех часов товар возвращается на склад и считается свободным для продажи другому покупателю. Автоматизация расчетов с покупателями и ведения бухгалтерского учета на данном этапе не рассматриваются. Менеджер магазина отслеживает расход товаров и состояние склада и принимает на этой основе решения о заказе новых партий у поставщиков или о продаже залежавшегося товара.
Действующие лица:
1. менеджер,
2. консультант у справочного телефона магазина,
3. продавец,
4. кладовщик,
5. сотрудник на выдаче.
Примечание. В магазине несколько продавцов, кладовщиков и сотрудников на выдаче, но их задачи не отличаются друг от друга.
Варианты использования.
Консультант на телефоне:
1. получение справок о характеристиках продаваемых товаров,
2. получение справок о наличии товара на складе,
3. резервирование товара,
4. аннулирование резервирований по желанию покупателя или после закрытия магазина.
Продавец:
1. получение справок о характеристиках продаваемых товаров,
2. получение справок о наличии товара на складе,
3. резервирование товара,
4. выписывание счета,
5. передача копии счета на склад.
Кладовщик:
1. Изменение количества товара на складе после отпуска,
2. Изменение количества товара на складе после возврата с выдачи.
Менеджер:
1. получение справок о наличии товара на складе,
2. анализ хода продаж отдельных видов товаров,
3. анализ времени нахождения товара на складе.
Сотрудник на выдаче не осуществляет ввод данных и поэтому он не рассматривается в дальнейшем как действующее лицо. Составленные диаграммы вариантов использования представлены на рис. 2.5 и 2.6.
Рис. 2.5.
Рис. 2.6.
36. Диаграмма последовательности и кооперативная диаграмма, их назначение, компоненты.
1) Диаграмма последовательности.
Работа программы заключается в обмене сообщениями между объектами. Любой объект является представлением какого либо класса. В общем случае можно иметь один или более объектов одного класса. Сообщение (message) представляет собой законченный фрагмент информации, который отправляется одним объектом другому. С программистской точки зрения сообщение – это обращение из одного объекта к методу в составе другого объекта. Естественно, что решение задачи сводится к обмену сообщениями между объектами в определенной последовательности. Для представления этого процесса и используется диаграмма последовательностей.
Рис. 2.21.
В общем случае каждому варианту использования должна соответствовать диаграмма последовательностей, которая отражает последовательность обмена сообщениями именно для этого варианта. Исполнение многих вариантов использования может протекать по-разному в зависимости от обстоятельств. Например, резервирование товара в случае наличия или отсутствия требуемого количества.
Рассмотрим компоненты диаграммы последовательностей на рис. 2.22.
На диаграмме обозначены объекты, задействованные при исполнении данного варианта использования. Обозначение объектов
имя_объекта : имя_класса
Если принадлежность какого-то объекта к классу еще не установлена или нет требуемого класса, то можно указать только имя объекта. Имя класса будет установлено на последующих шагах анализа или проектирования. Если имеется только один объект какого-то класса, то можно ограничиться только именем класса. У верхнего края диаграммы, на горизонтальной линии находятся объекты, которые существуют с самого начала работы программы. Линия жизни объекта изображается пунктирной вертикальной линией. Эта линия служит для обозначения периода времени, в течение которого объект существует и может участвовать в обмене сообщениями.
Рис. 2.22.
Примечание: на диаграмме последовательности ось времени направлена сверху вниз.
Отдельные объекты могут быть уничтожены до завершения работы программы: в таком случае на их линии жизни ставится знак × (объект :Класс2). Часто уничтожение является результатом направления к такому объекту сообщения со стереотипом destroy(). Возможно и создание нового объекта в ходе работы программы. Такой объект показан не у верхнего края диаграммы, а ниже; к такому объекту направлено сообщение стереотипа create(). На рисунке Объект3 : Класс3.
В процессе функционирования объектно-ориентированных систем одни объекты могут находиться в активном состоянии, непосредственно выполняя определенные действия или в состоянии пассивного ожидания сообщений от других объектов. Для явного выделения состояния объекта, применяется фокус управления, который изображается в форме вытянутого узкого прямоугольника, верхняя сторона которого обозначает начало активности, а нижняя сторона ее конец. Естественно, фокус управления должен целиком находиться на линии жизни объекта. Периоды активности объекта могут чередоваться периодами ожидания. На рис. 2.22. Объект1 и Объект2 имеют постоянный фокус управления, у :Класс2 периоды активности чередуются; потом объект :Класс2 будет уничтожен. Даже если потом объект этого класса будет вновь создан – то это будут уже новый объект.
Сообщение показаны на диаграмме горизонтальными линиями. Имеются следующие стереотипы сообщений:
∙••••••• Call (вызвать) – сообщение, требующее вызова метода класса-адресата. Это сообщение может быть рефлексивным, тогда оно требует вызова метода в классе-отправителе.
∙••••••• Return (возвратить) – возвращает результат выполнения сообщения вызвать.
∙••••••• Create (создать) – сообщение, требующее создание другого объекта.
∙••••••• Destroy (уничтожить) – сообщение с требованием уничтожения объекта-адресата.
Рядом с сообщением может быть дано его имя. За именем в скобках могут быть параметры сообщения, при необходимости. В качестве имени сообщения можно использовать только имена методов класса – адресата. Если не создан класс для объекта – адресата или в этом классе нет методов, то дать имена сообщениям невозможно.
Упрощенная диаграмма последовательности процесса продажи товара показана на рис. 2.23. Процесс продажи состоит из следующих действий:
∙••••••• Уточнение и обсуждение с покупателем характеристик товара и выбор подходящего изделия.
∙••••••• Подтверждение наличия товара на складе.
∙••••••• Продажа товара.
2) Диаграмма кооперации.
Диаграмма последовательности служит в первую очередь для визуализации временных аспектов взаимодействия. Диаграмма кооперации служит для представления структурных аспектов. Эти две диаграммы вместе называют диаграммами взаимодействия. Простейшая диаграмма кооперации показана на рис. 2.24.
На этой диаграмме показаны три объекта, принадлежность к классу одного из них (Объект2) не установлена. Наличие сплошной линии между объектами показывает, что между ними могут передаваться сообщения. Сами сообщения показаны рядом с линиями. Цифры у сообщений показывают очередность их возникновения. Рядом с сообщениями может быть указан метод класса адресата. На основе диаграммы последовательности кооперативная диаграмма может быть создана автоматически. На рис. 2.25. приведена кооперативная диаграмма, соответствующая приведенной на рис. 2.23. диаграмме последовательностей.
Рис. 2.23.
Рис. 2.24.
Рис. 2.25.
37. Диаграмма классов, характеристики класса
Для начала уточним понятия объект и класс. Объект – конкретный материальный предмет с хорошо определенными границами и индивидуальностью, которая выражается состоянием и поведением. Класс – это множество объектов, имеющих одинаковые свойства, поведение, отношения и семантику. Объект – это экземпляр класса.
Диаграмма классов служит для представления статической структуры модели системы в терминологии объектно-ориентированного программирования. Диаграмма классов может отражать структуру отдельных классов и их взаимосвязи. Диаграмма классов состоит из классов и отношений между ними. При большой сложности и/или объеме на диаграмме классов можно использовать пакеты. Их внешний вид, назначение и отношения между ними совпадают с описанными в п. 2.2. Обозначение класса на языке UML показано на рис. 2.7.
Рис. 2.7.
Название класса должно быть уникальным в пределах модели. Названия классов образуют в будущем словарь предметной области и поэтому надо обращать особое внимание на выбор содержательных названий.
Атрибуты (или свойства) класса задают набор его характеристик. На первом этапе моделирования можно ограничиться лишь определением состава атрибутов, но кроме этого на языке UML имеются возможности кроме названий атрибутов определить видимость, тип данных, кратность, начальное значение. Приведенные перед именами атрибутов символы обозначают видимость. Мы вернемся к этому позже.
Операции класса задают услуги, которые могут быть запрошены у любого объекта данного класса. Операциями заданы задачи, которые могут быть решены на объектах данного класса. На UML для операции могут быть заданы видимость, состав аргументов, тип возвращаемого значения и некоторые другие характеристики.
Классы могут быть отнесены к определенному стереотипу. Стереотип позволяет задать назначение класса. Часть стереотипов определена на UML, но пользователь может расширить их состав. Примеры наиболее существенных стереотипов и их обозначения приведены на рис. 2.8.