Создать кооперации и осуществить трассировку реализаций
1. В каждом из пакетов реализации создайте соответствующие кооперации (каждая кооперация представляет собой новый вариант использования с тем же именем, но со стереотипом «use-case realization», который задаётся в спецификации варианта использования и обозначается пунктирным овалом). Кооперации должны появиться в браузере.
2. Щелкните правой кнопкой мыши по пакету Модель анализа и в появившемся меню выберите пункт New > Use Case Diagram, чтобы создать диаграмму трассировки реализаций. Назовите её «Трассировка реализаций» (рисунок 17). Создаётся она, как обычно, «перетаскиванием» левой кнопкой мыши объектов с браузера на поле диаграммы (drag-and-drop). Обратите внимание, что ассоциации между вариантами использования и кооперациями должны иметь стереотип «realize» и направлены от кооперации к варианту использования. Расположите объекты так, чтобы число пересечений линий было минимально.
Создать диаграммы классов анализа для реализации вариантов использования
Дальнейшее изложение ведётся на примере создания диаграммы классов для реализации варианта использования «Аннулировать заказ». Остальные диаграммы классов анализа строятся аналогично. Следует учесть, что повторно одни и те же классы создавать не нужно – их следует брать из ранее разработанных диаграмм (в случае необходимости их можно дополнять новыми атрибутами или операциями).
1. В каждом из пакетов реализации создайте диаграмму классов анализа. Для этого щёлкните правой кнопкой мыши по пакету реализации и в появившемся меню выберите пункт New > Class Diagram. Назовите её (например, «Диаграмма классов аннулирования заказа»). Пиктограмма и имя диаграммы должны появиться в браузере.
2. В каждой диаграмме в соответствии со сценариями создайте классы анализа.
3. С помощью кнопки Class щелчком по свободному полю диаграммы создайте изображение класса.
4. Щёлкните правой кнопкой мыши по изображению класса (при этом класс выделится точками) и в появившемся меню выберите пункт Open Specification (открыть спецификацию).
5. В появившемся диалоговом окне спецификации введите имя класса и выберите его стереотип (Stereotype) – boundary (граничный), entity (сущностный), control (управления) из предлагаемого списка. Например, имя класса – «Форма аннулирования заказа», стереотип boundary .
6. Если стереотип класса - boundary (обычно это экранная форма для человека или программный интерфейс для устройства ввода/вывода), то для него в первую очередь определяются основные операции, связанные с управляющими элементами формы или функциями управления устройством ввода/вывода. Для этого в окне спецификации выберите вкладку Operations (Операции) и щёлкните правой кнопкой мыши по свободному пространству вкладки. В появившемся меню нужно выбрать пункт Insert (Вставить) и далее в появившейся строке ввести имя операции.
Например, для класса «Форма аннулирования заказа» в соответствии с вариантом использования вводятся операции «Аннулировать» и «Отменить операцию», которые немедленно отображаются на диаграмме классов в разделе операций класса.
Примечание. Для удаления ошибочно введённых или ненужных строк во вкладке Operations следует щёлкнуть правой кнопкой по строке и в появившемся меню выбрать пункт Delete (Удалить).
7. Если стереотип класса – entity (обычно это – класс, экземпляры которого длительно хранятся в базе данных системы), то для него в первую очередь определяются атрибуты. Для этого в окне спецификации выберите вкладку Attributes (Атрибуты) и щёлкните правой кнопкой мыши по свободному пространству вкладки. В появившемся меню нужно выбрать пункт Insert (Вставить) и далее в появившейся строке ввести имя атрибута.
Например, для класса «Заказ» в соответствии с вариантом использования вводятся атрибуты «Номер заказа», «Дата-время заказа» и т.д., которые немедленно отображаются на диаграмме классов в разделе атрибутов класса.
Примечания. 1. Для удаления ошибочно введённых или ненужных строк во вкладке Attributes следует щёлкнуть правой кнопкой по строке и в появившемся меню выбрать пункт Delete (Удалить).
2. Новый атрибут можно ввести и другим способом: щёлкнуть правой кнопкой мыши по изображению класса и в появившемся меню выбрать пункт New Attribute. В разделе атрибутов появляется строка редактирования, в которой необходимо указать имя нового атрибута.
3. По умолчанию свойство видимости атрибута – private (закрытый), что фиксируется пиктограммой атрибута. Большинство атрибутов в рассматриваемом проекте – public (общедоступные). Изменить видимость атрибута можно двумя способами:
а) открыть спецификацию класса и далее двойным щелчком по строке атрибута во вкладке Attributes открыть окно спецификации атрибута; в зоне Export Control (Управление экспортом) установить значение альтернативы Public;
б) щёлкнуть по изображению класса для его выделения и далее щёлкнуть по значку видимости атрибута; в появившемся перечне значков выбрать (public).
8. Если планируется использовать СУБД, то следует создать соответствующий класс со стереотипом control и с именем «Менеджер СУБД», атрибуты и операции которого определятся на этапе проектирования.
9. Создайте связи типа зависимостей между классами boundary-control, boundary-boundary, control-entity, boundary-entity (например, от класса «Форма аннулирования заказа» к классу «Менеджер СУБД»: первый класс пользуется операциями второго для получения доступа к нужной информации). Для этого нужно щёлкнуть по кнопке Dependency or instantiates (Зависимость или создание экземпляров) и провести мышью линию зависимости от зависимого класса к независимому.
Примечание. При определении зависимости помните о том, что зависимый класс «знает» об используемых им операциях и параметрах независимого класса и может создавать экземпляры независимых классов, пользуясь конструкторами последних. В то же время независимые классы, как правило, ничего не «знают» о зависимых от них классах.
10. Создайте связи типа ассоциаций между классами entity-entity (они могут быть также агрегациями и обобщениями). Например, экземпляры класса «Заказ» являются композицией экземпляров класса «Позиция заказа» (самостоятельно позиции без заказа существовать не могут). Для создания отношения композиции нужно щёлкнуть по кнопке Unidirectional Association (Однонаправленная ассоциация) и провести мышью линию ассоциации от класса верхнего уровня к классу, являющегося его частью. Далее щелчком правой кнопки мыши по линии связи открываем выпадающее меню и устанавливаем флажок Aggregate (Агрегация). У класса верхнего уровня на связи возникает значок агрегации в виде незакрашенного ромбика. Чтобы сделать его композицией, необходимо в этом же меню или в спецификации связи установить флажок Containment of Заказ > By Value (Содержание заказа – непосредственно значения (а не ссылки на самостоятельные объекты)). Таким образом, подчёркивается, что каждому экземпляру заказа выделяется область памяти, в которой будут храниться значения позиций заказа, а не ссылки, и с удалением конкретного заказа будут автоматически удалены все его позиции. При этом ромбик агрегации становится закрашенным.
11. Введите имя связи и её множественность. Щелчком правой кнопкой по линии связи и дальнейшим выбором пункта Open Specification откройте окно спецификации связи, например, для композиции «Заказ»-«Позиция заказа». Введите имя «Содержит». Как видно из спецификации, элементом А в связи является «Позиция заказа», элементом В – «Заказ».
Так как в заказе может содержаться много позиций, а каждая позиция относится только к одному заказу, то тип множественности данной связи – многие к одному, обязательный с обеих сторон.
Для указания типа множественности у полюса А необходимо в окне спецификации перейти на вкладку Role A Detail (Роль А детально) и в редактируемом поле Multiplicity (Множественность) ввести из списка значение 1..n. Соответственно на вкладке Role В Detail нужно ввести значение 1.
Примечания. 1. После ввода имени и множественности отредактируйте расположение надписей и объектов на экране: мышью разместите их в свободные места и подберите шрифт, чтобы избежать наложений и пересечений.
2. При вводе дублирующих имён система Rational Rose может выдать предупреждающее сообщение. По усмотрению разработчика это сообщение может быть проигнорировано.
Далее приведён перечень классов анализа и отношений между ними для реализации каждого варианта использования. Примеры соответствующих диаграмм классов представлены на рисунках .
· Аннулирование заказа
Объект (object) – экземпляр класса, его частный пример, создаётся на этапе выполнения программной реализации. Каждый объект обладает индивидуальностью, т.е. имеет свое собственное имя, не совпадающее с именем класса, свои индивидуальные значения атрибутов (свойств) (рис. ) и своё время жизни. Таким образом, диаграмма объектов является частным случаем (примером) диаграммы классов, графически объект изображается так же, как класс. Для объекта указываются конкретные значения атрибутов, как его собственных, так и наследуемых от всех классов-предков. Чтобы отличить объект от класса, имя объекта пишется с малой буквы и подчёркивается. Используются различные варианты обозначения имен объектов. Самый полный после имени объекта через двоеточие указывает имя класса. В UML-диаграммах часто встречается любой объект класса, называемый анонимным, в этом случае имя объекта состоит только из имени класса, предваренного двоеточием.
Если атрибут изменяемый (changeable), обычно по умолчанию, то во время выполнения программы его значение может измениться, если неизменяемый (frozen) – то нет. Значения атрибута должны удовлетворять всем явным и неявным ограничениям в модели. У атрибутов не может быть дубликатов. Для объекта может быть вызвана любая операция его класса и всех классов-предков. Значением типа атрибута может быть класс, тогда в качестве значения может использоваться как этот класс, так и любой из его потомков. В объекте разделов всего 2: имя и атрибуты, операции не изображаются – они общие для всех объектов.
Стереотипы классов на объекте ставится в угловых скобках или изображаются пиктограммой в верхнем правом углу. Все связи – сплошными линиями. При множественном наследовании классы могут быть перечислены через запятую. Например: APerson: Professor, Teacher; Сотрудник: Профессор, преподаватель. В атрибутах типы можно не указывать.
При изменении значений атрибутов объект надо изображать вновь, связывая с предыдущим символом превращения. Более подробно – в диаграмме кооперации.
Диаграмма объектов обычно создаётся для отдельных объектов со сложным поведением и взаимодействием.