Визуальное моделирование в среде IBM Rational Rose 2003

         

Добавление связи и редактирование ее свойств


Для добавления связи между предварительно размещенными на диаграмме объектами нужно с помощью левой кнопки мыши нажать кнопку с изображением связи на специальной панели инструментов, отпустить левую кнопку мыши, щелкнуть левой кнопкой мыши на изображении одного объекта на диаграмме и отпустить ее на изображении другого объекта. В результате этих действий на диаграмме появится изображение связи, например, соединяющей объект класса Клиент Банкомата (актера) с объектом класса Устройство чтения карточки (рис. 7.3). Поскольку кнопка с изображением актера отсутствует на специальной панели инструментов диаграммы кооперации, соответствующий объект следует предварительно поместить на диаграмму способом перетаскивания пиктограммы актера из браузера проекта.


Рис. 7.3.  Диаграмма кооперации после добавления связи между объектом класса Клиент Банкомата (актером) и объектом класса Устройство чтения карточки

По умолчанию каждая добавляемая связь считается анонимной. При необходимости можно задать имя связи с помощью диалогового окна спецификации свойств данной связи (рис. 7.4).


Рис. 7.4.  Диалоговое окно редактирования свойств связи

Кроме имени связи можно также задать: имя ассоциации, видимость соответствующей пары объектов и наличие общих ролей. Однако более важной представляется следующая вкладка Messages (сообщения), служащая для спецификации сообщений, передаваемых между соответствующей парой объектов.



Окончательное построение диаграммы кооперации для модели банкомата


Для завершения построения диаграммы кооперации рассматриваемого примера следует описанным выше способом добавить оставшиеся объекты, связи и сообщения. С этой целью следует выполнить следующие действия:

Добавить объекты классов с именами: Контроллер Банкомата, Транзакция Банкомата, Клавиатура Банкомата, Экран Банкомата, Принтер Банкомата, Устройство выдачи наличных и IИнтерфейс Банка.Добавить связи, соединяющие объекты классов с именами: Контроллер Банкомата с Устройством чтения карточки, Контроллер Банкомата с Транзакцией Банкомата, Контроллер Банкомата с Клавиатурой Банкомата, Контроллер Банкомата с Экраном Банкомата, Контроллер Банкомата с Принтером Банкомата, Контроллер Банкомата с Устройством выдачи наличных и Контроллер Банкомата с IИнтерфейсом Банка.Добавить сообщение: проверить идентификатор карточки (Integer) , направленное от объекта класса Контроллер Банкомата к объекту класса IИнтерфейс Банка.Добавить сообщение: ввести ПИН-код(), направленное от объекта класса-актера Клиент Банкомата к объекту класса Клавиатура Банкомата.Добавить сообщение: прочитать ПИН-код(), направленное от объекта класса Контроллер Банкомата к объекту класса Устройство чтения карточки.Добавить сообщение: создать новую транзакцию(), направленное от объекта класса Контроллер Банкомата к объекту класса Транзакция Банкомата.Добавить сообщение: проверить правильность ПИН-кода(), направленное от объекта класса Контроллер Банкомата к объекту класса Транзакция Банкомата.Добавить сообщение: показать меню опций(), направленное от объекта класса Контроллер Банкомата к объекту класса Экран Банкомата.Добавить сообщение: ввести тип транзакции(), направленное от объекта класса-актера Клиент Банкомата к объекту класса Клавиатура Банкомата.Добавить сообщение: показать меню снятия суммы(), направленное от объекта класса Контроллер Банкомата к объекту класса Экран Банкомата.Добавить сообщение: ввести сумму снятия наличных(), направленное от объекта класса-актера Клиент Банкомата к объекту класса Клавиатура Банкомата.Последовательно добавить 3 сообщения: открыть счет клиента (Integer) , проверить баланс клиента (Integer, Currency) и уменьшить счет клиента(Integer, Currency), направленные от объекта класса Контроллер Банкомата к объекту класса IИнтерфейс Банка.Добавить сообщение: распечатать чек(), направленное от объекта класса Контроллер Банкомата к объекту класса Принтер Банкомата.Добавить сообщение: вернуть кредитную карточку(), направленное от объекта класса Контроллер Банкомата к объекту класса Устройство чтения карточки.Добавить сообщение: выдать наличные(), направленное от объекта класса Контроллер Банкомата к объекту класса Устройство выдачи наличных.Добавить сообщение: завершить транзакцию(), направленное от объекта класса Контроллер Банкомата к объекту класса Транзакция Банкомата.


Диаграмма кооперации, описывающая реализацию типичного хода событий варианта использования Снятие наличных по кредитной карточке для проекта системы управления банкоматом, показана на рис. 7.8.


Рис. 7.8.  Окончательный вариант диаграммы кооперации, описывающий типичный ход событий варианта использования Снятие наличных по кредитной карточке

При необходимости можно изменить порядок следования сообщений и их спецификацию, а также установить дополнительную синхронизацию сообщений и связать с сообщениями примечания. Указанные действия, а также построение диаграмм кооперации, описывающих реализации исключений для варианта использования Снятие наличных по кредитной карточке и других вариантов использования, предлагается выполнить читателям самостоятельно в качестве упражнения.

В заключение этой лекции следует заметить, что среди свойств сообщений в среде IBM Rational Rose 2003 отсутствует сторожевое условие. Этот факт может несколько озадачить разработчиков, поскольку в общем случае приводит к увеличению количества диаграмм кооперации в модели проекта. В качестве выхода из данной ситуации можно рекомендовать указывать при необходимости сторожевое условие в качестве предусловия для соответствующей операции класса.


Диаграмма кооперации является разновидностью диаграммы


Диаграмма кооперации является разновидностью диаграммы взаимодействия, и в контексте языка UML описывает динамический аспект взаимодействия объектов при реализации отдельных вариантов использования. Общие рекомендации по построению диаграммы кооперации были рассмотрены в лекции 7 курса «Основы объектно-ориентированного моделирования в нотации UML». Активизировать рабочее окно диаграммы кооперации в программе IBM Rational Rose 2003 можно несколькими способами:

Щелкнуть на кнопке с изображением диаграммы взаимодействия на стандартной панели инструментов и выбрать для построения новую диаграмму кооперации.Выполнить операцию главного меню: Browse
Interaction Diagram
(Браузер
Диаграмма взаимодействия) и выбрать для построения новую диаграмму кооперации.Выполнить операцию контекстного меню: New
Collaboration Diagram
(Новая
Диаграмма кооперации) для логического представления или представления вариантов использования в браузере проекта.

При этом появляется новое окно с чистым рабочим листом диаграммы кооперации и специальная панель инструментов, содержащая кнопки с изображением графических примитивов, необходимых для разработки диаграммы кооперации (табл. 7.1). Назначение отдельных кнопок панели можно узнать из всплывающих подсказок.

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


Selection ToolПревращает изображение курсора в форму стрелки для последующего выделения элементов на диаграмме


Text BoxДобавляет на диаграмму текстовую область


NoteДобавляет на диаграмму примечание


Anchor Note to ItemДобавляет на диаграмму связь примечания с соответствующим графическим элементом диаграммы


ObjectДобавляет на диаграмму объект


Class InstanceДобавляет на диаграмму экземпляр класса


Object LinkДобавляет на диаграмму связь


Link To SelfДобавляет на диаграмму рефлексивную связь




Link MessageДобавляет на связь диаграммы прямое сообщение


Reverse Link MessageДобавляет на связь диаграммы обратное сообщение


Data TokenДобавляет на связь диаграммы элемент прямого потока данных


Reverse Data TokenДобавляет на связь диаграммы элемент обратного потока данных
<
На специальной панели инструментов по умолчанию присутствуют практически все кнопки с пиктограммами элементов, которые могут быть использованы для построения диаграммы. В данной лекции в качестве примера рассматривается процесс построения диаграммы кооперации, которая представляет собой реализацию варианта использования Снятие наличных по кредитной карточке применительно к разрабатываемому проекту системы управления банкоматом. В модели данная диаграмма кооперации соответствует этому варианту использования и может быть размещена в представлении вариантов использования (Use Case View). После активизации новой диаграммы кооперации одним из описанных выше способов следует в качестве имени данной диаграммы задать: Снятие наличных по кредитной карточке.

В общем случае работа с диаграммой кооперации состоит в добавлении объектов, связей и сообщений, а также редактировании их свойств. При этом изменения, вносимые в диаграмму кооперации, автоматически вносятся в диаграмму последовательности, что можно увидеть в любой момент, активизировав последнюю нажатием клавиши <F5>.


Добавление объекта на диаграмму последовательности и редактирование его свойств


Добавить объект на диаграмму последовательности можно как стандартным образом с помощью соответствующей кнопки на специальной панели инструментов, так и более удобным способом - с помощью перетаскивания изображения пиктограммы класса из браузера на свободное место рабочего листа диаграммы последовательности.

В результате этих действий на диаграмме последовательности появится изображение объекта с именем класса, маркерами изменения его геометрических размеров и вертикальной пунктирной линией, означающей линию жизни этого объекта (рис. 8.1).


Рис. 8.1.  Диаграмма последовательности после добавления анонимного объекта класса Устройство чтения карточки

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



Добавление сообщения на диаграмму последовательности и редактирование его свойств


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

В результате этих действий на диаграмме появится изображение сообщения, передаваемого, например, от экземпляра актера Клиент Банкомата объекту класса Устройство чтения карточки. Поскольку кнопка с изображением актера отсутствует на специальной панели инструментов диаграммы последовательности, соответствующий объект следует предварительно поместить на диаграмму способом перетаскивания пиктограммы актера из браузера проекта. При этом изображение линии жизни у соответствующей пары объектов изменится на изображение фокуса управления (рис. 8.2).


Рис. 8.2.  Диаграмма последовательности после добавления сообщения от экземпляра актера Клиент Банкомата к объекту класса Устройства чтения карточки

Для спецификации свойств добавленного сообщения предназначено специальное окно, которое можно открыть двойным щелчком на изображении сообщения на диаграмме последовательности. Имя сообщения можно выбрать на вкладке General (Общие) из выпадающего списка операций соответствующего класса-приемника (рис. 8.3).


Рис. 8.3.  Диалоговое окно спецификации свойств сообщения

Имя сообщения можно выбрать также из контекстного меню сообщения, в котором перечислены все операции класса-приемника данного сообщения (рис. 8.4). При необходимости в контекстном меню можно задать новую операцию, в этом случае следует выбрать строку <new operation>. При этом откроется диалоговое окно спецификации свойств новой операции класса-приемника (см. рис. 5.4), особенности редактирования которых были рассмотрены ранее в лекции 5.


Рис. 8.4.  Контекстное меню сообщения на диаграмме последовательности


Для рассматриваемой модели банкомата в качестве имени первого сообщения следует выбрать операцию прочитать идентификатор карточки(). После выбора операции для данного сообщения следует нажать кнопку Apply или OK, в результате чего имя сообщения будет изображено на диаграмме последовательности рядом с линией сообщения (рис. 8.5).


Рис. 8.5.  Диаграмма последовательности после добавления сообщения от экземпляра актера Клиент Банкомата к объекту класса Устройство чтения карточки

Построение диаграммы последовательности сводится к добавлению и редактированию свойств отдельных объектов и сообщений. Доступ к окну спецификации свойств соответствующих элементов возможен также либо через контекстное меню, либо с помощью операции главного меню Browse
Specification (Обзор
Спецификация). При добавлении сообщений на диаграмму последовательности они получают по умолчанию свой номер в общей последовательности сообщений.

Следует заметить, что по умолчанию нумерация сообщений на диаграмме последовательности может быть отключена. При необходимости показать номера сообщений следует выполнить операцию главного меню: Tools
Options (Инструменты
Параметры), открыть вкладку Diagram (Диаграмма) и выставить отметку выбора строки Sequence numbering (Нумерация сообщений на диаграмме последовательности) в группе свойств Display (рис. 8.6).


Рис. 8.6.  Диалоговое окно спецификации свойств модели

Это же окно спецификации свойств модели можно открыть с помощью операции главного меню: View
Toolbars
Configure (Вид
Панели инструментов
Настроить),

Для детальной спецификации свойств сообщений на диаграмме последовательности можно использовать также группу свойств Synchronization (Синхронизация) и Frequency (Частота), доступные для выбора на вкладке Detail (Подробно) окна спецификации сообщения. При изменении способа синхронизации передаваемого сообщения изменяется графическое изображение стрелки соответствующего сообщения. Поскольку характеристика данных свойств сообщений и их графическое изображение соответствующих стрелок приводится в предыдущей лекции 7 (см.табл. 7.2), в данной лекции они не рассматриваются.


Окончательное построение диаграммы последовательности модели банкомата


Для завершения построения диаграммы последовательности рассматриваемого примера следует описанным выше способом добавить оставшиеся объекты и сообщения. С этой целью следует выполнить следующие действия:

Добавить объекты классов с именами: Контроллер Банкомата, Транзакция Банкомата, Клавиатура Банкомата, Экран Банкомата, Принтер Банкомата, Устройство выдачи наличных и IИнтерфейс Банка.Добавить сообщение: проверить идентификатор карточки (Integer), направленное от объекта класса Контроллер Банкомата к объекту класса IИнтерфейс Банка.Добавить сообщение: ввести ПИН-код(), направленное от объекта класса-актера Клиент Банкомата к объекту класса Клавиатура Банкомата.Добавить сообщение: прочитать ПИН-код(), направленное от объекта класса Контроллер Банкомата к объекту класса Устройство чтения карточки.Добавить сообщение: создать новую транзакцию(), направленное от объекта класса Контроллер Банкомата к изображению объекта класса Транзакция Банкомата. При этом изображение объекта класса Транзакция Банкомата следует переместить вниз на уровень этого сообщения, что будет визуально означать создание данного объекта в более поздний момент времени, чем начало функционирования моделируемой программной системы.Добавить сообщение: проверить правильность ПИН-кода(), направленное от объекта класса Контроллер Банкомата к объекту класса Транзакция Банкомата.Добавить сообщение: показать меню опций(), направленное от объекта класса Контроллер Банкомата к объекту класса Экран Банкомата.Добавить сообщение: ввести тип транзакции(), направленное от объекта класса-актера Клиент Банкомата к объекту класса Клавиатура Банкомата.Добавить сообщение: показать меню снятия суммы(), направленное от объекта класса Контроллер Банкомата к объекту класса Экран Банкомата.Добавить сообщение: ввести сумму снятия наличных(), направленное от объекта класса-актера Клиент Банкомата к объекту класса Клавиатура Банкомата.Последовательно добавить 3 сообщения: открыть счет клиента (Integer), проверить баланс клиента (Integer, Currency) и уменьшить счет клиента (Integer, Currency), направленные от объекта класса Контроллер Банкомата к объекту класса IИнтерфейс Банка.Добавить сообщение: распечатать чек(), направленное от объекта класса Контроллер Банкомата к объекту класса Принтер Банкомата.Добавить сообщение: вернуть кредитную карточку(), направленное от объекта класса Контроллер Банкомата к объекту класса Устройство чтения карточки.Добавить сообщение: выдать наличные(), направленное от объекта класса Контроллер Банкомата к объекту класса Устройство выдачи наличных.Добавить сообщение: завершить транзакцию(), направленное от объекта класса Контроллер Банкомата к объекту класса Транзакция Банкомата.После добавления сообщения завершить транзакцию() поместить на линию жизни объекта класса Транзакция Банкомата символ уничтожения этого объекта.


Фрагмент диаграммы последовательности, описывающая реализацию типичного хода событий варианта использования Снятие наличных по кредитной карточке для проекта системы управления банкоматом, показан на рис. 8.7.


Рис. 8.7.  Фрагмент окончательного вида диаграммы последовательности, описывающей типичный ход событий варианта использования Снятие наличных по кредитной карточке

Если необходимо изменить порядок следования сообщений, то из двух диаграмм взаимодействия данное действие удобнее выполнить на диаграмме последовательности, чем на диаграмме кооперации. В этом случае достаточно нажать левую кнопку мыши на стрелке соответствующего сообщения и, не отпуская ее, перетащить вертикально вверх или вниз данное сообщение. Дополнительно можно добавить потоки данных и определить устойчивость объектов на основе активизации соответствующих спецификаций. Указанные действия, а также построение диаграмм последовательности, описывающих реализации других вариантов использования, предлагается выполнить читателям самостоятельно в качестве упражнения.


Особенности разработки диаграммы последовательности в среде IBM Rational Rose


Диаграмма последовательности является другой формой визуализации взаимодействия в модели и, как и диаграмма кооперации, оперирует объектами и сообщениями. Общие рекомендации по построению диаграммы последовательности были рассмотрены в лекции 8 курса «Основы объектно-ориентированного моделирования в нотации UML». Особенность работы в среде IBM Rational Rose 2003 заключается в том, что этот вид канонической диаграммы может быть создан автоматически после построения диаграммы кооперации и нажатия клавиши <F5>. С помощью этой же клавиши осуществляется переключение между диаграммами последовательности и кооперации в модели.

Однако в отдельных случаях бывает удобно начать построение диаграмм взаимодействия с диаграммы последовательности. В этом случае активизировать рабочее окно диаграммы последовательности можно несколькими способами:

Щелкнуть на кнопке с изображением диаграммы взаимодействия на стандартной панели инструментов и выбрать для построения диаграмму последовательности.Выполнить операцию главного меню: Browse

Interaction Diagram (Браузер
Диаграмма взаимодействия) и выбрать для построения новую диаграмму последовательности.Выполнить операцию контекстного меню: New
Sequence Diagram
(Новая
Диаграмма последовательности) для логического представления или представления вариантов использования в браузере проекта.

При этом появляется новое окно с чистым рабочим листом диаграммы классов и специальная панель инструментов, содержащая кнопки с изображением графических примитивов, необходимых для разработки диаграммы последовательности (табл. 8.1). Назначение отдельных кнопок панели можно узнать из всплывающих подсказок.

Таблица 8.1. Назначение кнопок специальной панели инструментов диаграммы последовательности

Графическое изображениеВсплывающая подсказкаНазначение кнопки

Selection ToolПревращает изображение курсора в форму стрелки для последующего выделения элементов на диаграмме

Text BoxДобавляет на диаграмму текстовую область

NoteДобавляет на диаграмму примечание

Anchor Note to ItemДобавляет на диаграмму связь примечания с соответствующим графическим элементом диаграммы

ObjectДобавляет на диаграмму объект

Object MessageДобавляет на диаграмму простое сообщение

Message To SelfДобавляет на диаграмму рефлексивное сообщение

Return MessageДобавляет на диаграмму сообщение типа возврата из вызова процедуры

Destruction MarkerДобавляет на диаграмму символ уничтожения объекта

Procedure CallДобавляет на диаграмму сообщение типа вызова процедуры (по умолчанию отсутствует)

Asynchronous Message Добавляет на диаграмму асинхронное сообщение (по умолчанию отсутствует)

На специальной панели инструментов по умолчанию присутствует практически все пиктограммы элементов, которые могут быть использованы для построения диаграммы последовательности. Из дополнительных пиктограмм графических элементов на специальную панель инструментов можно добавить лишь сообщение типа вызова процедуры и асинхронное сообщение (последняя строка табл. 8.1). Относительно изображения асинхронного сообщения в форме полустрелки следует заметить, что хотя в версии языка UML 1.5 этот элемент отсутствует, в среде IBM Rational Rose 2003 возможно изобразить этот тип сообщений в форме специального графического стереотипа.



Добавление перехода и редактирование его свойств


Для добавления перехода между двумя состояниями нужно с помощью левой кнопки мыши нажать кнопку с изображением перехода на специальной панели инструментов, отпустить левую кнопку мыши, щелкнуть левой кнопкой мыши на изображении исходного состояния на диаграмме и отпустить ее на изображении целевого состояния. В результате этих действий на диаграмме появится изображение перехода, соединяющего два выбранных состояния. Продолжая разработку модели системы управления банкоматом, добавим на диаграмму состояний начальное состояние (Start State) и соединим его переходом с состоянием Ожидание карточки (рис. 9.5).


Рис. 9.5.  Диаграмма состояний после добавления на нее перехода из начального состояния в состояние Ожидание карточки

После добавления перехода на диаграмму состояний можно открыть диалоговое окно его свойств и специфицировать дополнительные свойства, доступные на соответствующих вкладках (рис. 9.6). Следует обратить внимание на две первые строки вкладки Detail (Подробно), которые представляются наиболее важными из свойств перехода. Первое поле ввода Guard Condition служит для задания сторожевого условия, которое определяет правило срабатывания соответствующего перехода. Во втором поле ввода Action можно специфицировать действие, которое происходит при срабатывании перехода до того, как моделируемая система попадет в целевое состояние.


Рис. 9.6.  Диалоговое окно спецификации свойств перехода, открытое на вкладке Detail (Подробно)

При необходимости можно определить сообщение о событии, происходящем при срабатывании перехода, а также визуализировать вложенность состояний и подключить историю отдельных состояний.



Добавление состояния на диаграмму состояний и редактирование его свойств


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

Для диаграммы состояний модели банкомата в качестве имени первого добавленного состояния изменим предложенное программой по умолчанию имя NewState на Ожидание карточки (рис. 9.1). Задать имя состояния можно либо непосредственно при добавлении нового состояния на диаграмму состояний, либо открыв окно спецификации свойств нового состояния.


Рис. 9.1.  Диаграмма состояний после добавления на нее состояния Ожидание карточки

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


Рис. 9.2.  Диалоговое окно спецификации свойств состояния

При необходимости в диалоговом окне спецификации свойств выбранного состояния можно задать вложенное историческое состояние. Для этого следует выставить отметку у свойства State/activity history (Историческое состояние/деятельность) и нажать кнопку Apply. В результате внутри исходного состояния появится вложенное историческое состояние (рис. 9.3, а).


Рис. 9.3.  Добавление вложенного исторического состояния (а) и состояния глубокой истории (б) для состояния Ожидание карточки

Чтобы обычное историческое состояние превратить в состояние глубокой истории, следует дополнительно выставить отметку у свойства Sub state/activity history (Историческое под-состояние/деятельность), которое становится доступным для редактирования после выбора первого свойства, и нажать кнопку Apply.
В результате внутри исходного состояния появится вложенное состояние глубокой истории (рис. 9.3, б).

Чтобы обычное состояние превратить в композит, следует при добавлении нового состояния поместить его внутри границы того состояния, которое необходимо сделать композитным. В результате внутри исходного состояния появится новое вложенное состояние с именем NewState, которое при перемещении композита в области диаграммы состояний всегда будет находиться внутри своего композита (рис. 9.4).


Рис. 9.4.  Превращение состояния Ожидание карточки в композитное состояние

Рассмотренные выше действия приведены только с целью иллюстрации особенностей спецификации исторических и вложенных подсостояний и не относятся к разрабатываемой модели банкомата.

Дополнительно можно определить следующие свойства состояний: задать текстовый стереотип состояния, определить внутренние действия на входе и выходе, а также внутреннюю деятельность. Эти свойства доступны для редактирования на вкладке General (Общие) и Actions (Действия). На вкладке Transitions (Переходы) можно определять и редактировать переходы, которые входят и выходят из рассматриваемого состояния. Последняя вкладка Swimlanes (Дорожки) служит для спецификации дорожек, которые, в контексте языка UML, определяются для диаграммы деятельности.


Окончательное построение диаграммы состояний модели банкомата


Для завершения построения диаграммы состояний рассматриваемого примера следует описанным выше способом добавить оставшиеся состояния и переходы. С этой целью следует выполнить следующие действия:

Добавить состояния с именами: Ожидание ввода ПИН-кода, Проверка ПИН-кода, Ожидание выбора клиента, Обработка запроса на снятие наличных, Обработка запроса на получение справки, Выдача наличных, Печать, Возврат карточки, Завершение транзакции и финальное состояние.Добавить переход: карточка вставлена, направленный от состояния Ожидание карточки к состоянию Ожидание ввода ПИН-кода.Добавить переход: ПИН-код введен, направленный от состояния Ожидание ввода ПИН-кода к состоянию Проверка ПИН-кода.Добавить переход: отмена транзакции, направленный от состояния Ожидание ввода ПИН-кода к состоянию Возврат карточки.Добавить переход со сторожевым условием: [ПИН-код верный], направленный от состояния Проверка ПИН-кода к состоянию Ожидание выбора клиента.Добавить переход со сторожевым условием: [ПИН-код неверный], направленный от состояния Проверка ПИН-кода к состоянию Ожидание ввода ПИН-кода.Добавить переход: три неудачи с действием на переходе конфискация карточки, направленный от состояния Проверка ПИН-кода к состоянию Завершение транзакции. Для задания действия на данном переходе следует ввести текст конфискация карточки в поле ввода Action (Действие) на вкладке Detail (Подробно) окна спецификации свойств данного перехода (рис. 9.7).


Рис. 9.7.  Диалоговое окно спецификации свойств перехода три неудачи при задании действия на переходе

Для продолжения построения диаграммы состояний следует выполнить следующие действия:

Добавить переход: выбор суммы со сторожевым условием: [сумма введена], направленный от состояния Ожидание выбора клиента к состоянию Обработка запроса на снятие наличных.Добавить переход: выбор справки, направленный от состояния Ожидание выбора клиента к состоянию Обработка запроса на получение справки.Добавить переход: отмена транзакции, направленный от состояния Ожидание выбора клиента к состоянию Возврат карточки.Добавить переход со сторожевым условием: [кредит не превышен], направленный от состояния Обработка запроса на снятие наличных к состоянию Выдача наличных.Добавить переход со сторожевым условием: [кредит превышен] с действием на переходе сообщение, направленный от состояния Обработка запроса на снятие наличных к состоянию Возврат карточки.Добавить переход: наличные выданы со сторожевым условием: [выбрана печать чека], направленный от состояния Выдача наличных к состоянию Печать.Добавить переход: наличные выданы со сторожевым условием: [печать чека не выбрана], направленный от состояния Выдача наличных к состоянию Возврат карточки.Добавить переход: справка сформирована, направленный от состояния Обработка запроса на получение справки к состоянию Печать.Добавить переход: печать закончена, направленный от состояния Печать к состоянию Возврат карточки.Добавить переход: карточка возвращена, направленный от состояния Возврат карточки к состоянию Завершение транзакции.Добавить переход: транзакция завершена, направленный от состояния Завершение транзакции к состоянию Ожидание карточки.Добавить переход, направленный от состояния Ожидание карточки к финальному состоянию.


Диаграмма состояний для рассматриваемой модели банкомата будет иметь следующий вид (рис. 9.8).


Рис. 9.8.  Окончательный вид диаграммы состояний для моделирования поведения банкомата

Следует заметить, что в разрабатываемой модели диаграмма состояний является единственной и описывает поведение системы управления банкоматом в целом. Главное достоинство данной диаграммы состояний - возможность моделировать условный характер реализации всех вариантов использования в форме изменения отдельных состояний разрабатываемой системы. В то же время в среде IBM Rational Rose 2003 данная диаграмма не является необходимой для генерации программного кода. Поэтому в случае дублирования информации, представленной на диаграммах кооперации и последовательности, разработку диаграммы состояний, особенно в условиях дефицита времени, отпущенного на выполнение проекта, иногда опускают.


к рассмотрению диаграммы состояний, следует


Переходя к рассмотрению диаграммы состояний, следует отметить, что в среде IBM Rational Rose 2003 этот тип диаграмм может относиться к отдельному классу, операции класса, варианту использования, пакету или представлению. Общие рекомендации по построению диаграммы состояний были рассмотрены в лекциях 9 и 10 курса «Основы объектно-ориентированного моделирования в нотации UML». Для того чтобы построить диаграмму состояний, ее вначале необходимо создать и активизировать.

Начать построение диаграммы состояний для выбранного элемента модели или моделируемой системы в целом можно одним из следующих способов:

Щелкнуть на кнопке с изображением диаграммы состояний на стандартной панели инструментов, после чего следует выбрать представление и тип разрабатываемой диаграммы - новая диаграмма состояний.Выделить логическое представление (Logical View) или представление вариантов использования (Use Case View) в браузере проекта и выполнить операцию контекстного меню: New
Statechart Diagram
(Новая
Диаграмма состояний).Раскрыть логическое представление (Logical View) в браузере проекта и выделить рассматриваемый класс, операцию класса, пакет, или раскрыть представление вариантов использования (Use Case View) и выбрать вариант использования, после чего выполнить операцию контекстного меню: New
Statechart Diagram
(Новая
Диаграмма состояний).Выполнить операцию главного меню: Browse
State Machine Diagram
(Обзор
Диаграмма состояний), после чего следует выбрать представление и тип разрабатываемой диаграммы.

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

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


Selection ToolПревращает изображение курсора в форму стрелки для последующего выделения элементов на диаграмме


Text BoxДобавляет на диаграмму текстовую область


NoteДобавляет на диаграмму примечание


Anchor Note to ItemДобавляет на диаграмму связь примечания с соответствующим графическим элементом диаграммы


StateДобавляет на диаграмму состояние


Start StateДобавляет на диаграмму начальное состояние


End StateДобавляет на диаграмму конечное состояние


State TransitionДобавляет на диаграмму переход


Transition to SelfДобавляет на диаграмму рефлексивный переход


Horizontal SynchronizationДобавляет на диаграмму горизонтально расположенный символ синхронизации (по умолчанию отсутствует)


Vertical Synchronization Добавляет на диаграмму вертикально расположенный символ синхронизации (по умолчанию отсутствует)


DecisionДобавляет на диаграмму символ принятия решения для альтернативных переходов (по умолчанию отсутствует)
По умолчанию на специальной панели инструментов могут отсутствовать кнопки с тремя последними графическими элементами из таблицы 9.1. При необходимости их можно добавить на специальную панель диаграммы состояний аналогично способу, рассмотренному ранее в лекции 3 (рис. 3.1). Продолжая разработку проекта по моделированию системы управления банкоматом, можно приступить к разработке новой диаграммы состояний. С этой целью для диаграммы состояний модели банкомата зададим имя Диаграмма состояний ATM, а в секцию ее документации введем текст «Диаграмма состояний описывает конечный автомат банкомата».


Добавление деятельности на диаграмму деятельности и редактирование ее свойств


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

Create
Activity
или с помощью операции контекстного меню: New
Activity
, предварительно выделив диаграмму деятельности в браузере проекта.

В результате этих действий на диаграмме появится изображение деятельности с именем NewActivity, предложенное программой по умолчанию. Начиная построение диаграммы деятельности модели банкомата, для первой добавленной деятельности зададим имя Вставить карточку (рис. 10.1).


Рис. 10.1.  Диаграмма деятельности после добавления на нее деятельности Вставить карточку

После добавления деятельности на диаграмму деятельности можно открыть диалоговое окно спецификации ее свойств и определить дополнительные свойства деятельности, доступные на соответствующих вкладках (рис. 10.2).


Рис. 10.2.  Диалоговое окно спецификации свойств деятельности

При этом для деятельности становятся доступными для выбора два стереотипа: Business Activity (Бизнес-деятельность) и Business Transaction (Бизнес-транзакция), которые имеют собственное графическое изображение (см. табл. 10.1). На вкладке Transitions (Переходы) окна спецификации свойств деятельности можно определять и редактировать переходы, которые входят и выходят из рассматриваемой деятельности. Последняя вкладка Swimlanes (Дорожки) служит для спецификации дорожки, на которую помещается рассматриваемая деятельность.

Хотя программа IBM Rational Rose 2003 позволяет определить свойства деятельности, доступные на вкладке Actions (Действия), следует помнить, что внутренние действия являются свойствами общего понятия состояния, а внутренняя деятельность служит именем собственно деятельности, помещаемой на диаграмму деятельности. Поэтому для деятельности во избежание недоразумений лучше оставить эту вкладку пустой.


Добавление перехода на диаграмму деятельности полностью аналогично диаграмме состояний. А именно, для добавления перехода между двумя деятельностями нужно с помощью левой кнопки мыши нажать кнопку с изображением перехода на специальной панели инструментов, отпустить левую кнопку мыши, щелкнуть левой кнопкой мыши на изображении исходной деятельности на диаграмме и отпустить ее на изображении целевой деятельности. В результате этих действий на диаграмме появится изображение перехода, соединяющего две выбранных деятельности. Если в качестве одной из деятельностей является символ вет вления или соединения, то порядок добавления перехода сохраняется прежним.

Следует заметить, что при наличии в проекте законченной диаграммы состояний попытка добавить начальное состояние на диаграмму деятельности с помощью кнопки специальной панели инструментов окажется безуспешной. В этом случае программа IBM Rational Rose 2003 фиксирует наличие в модели начального состояния и не позволит добавить его с помощью соответствующей кнопки на разрабатываемые диаграммы состояний или деятельности. Решить данную проблему можно посредством перетаскивания с помощью мыши начального состояния из браузера проекта на любую из вновь разрабатываемых диаграмм.

После добавления перехода на диаграмму деятельности становятся доступными для редактирования его свойства в специальном диалоговом окне (рис. 10.3), которое можно открыть по двойному щелчку левой кнопкой мыши на изображении перехода.


Рис. 10.3.  Диалоговое окно спецификации свойств перехода

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



Окончательное построение диаграммы деятельности модели банкомата


Для завершения построения диаграммы деятельности рассматриваемого примера следует описанным выше способом добавить оставшиеся деятельности и переходы. С этой целью следует выполнить следующие действия:

Добавить деятельности с именами: Ввести ПИН-код, Выбрать тип транзакции, Ввести сумму, Получить справку о состоянии счета, Получить наличные, Получить чек, Получить карточку и финальное состояние.Добавить символы ветвления (решения), расположив их между деятельностями с именами: Ввести ПИН-код и Выбрать тип транзакции, Выбрать тип транзакции и Ввести сумму, Ввести сумму и Получить справку о состоянии счета, Получить наличные и Получить чек, Получить чек и Получить карточку. При этом последний символ решения будет использоваться в качестве символа соединения.Добавить переход, направленный от деятельности Ввести ПИН-код к символу решения.Добавить переход со сторожевым условием: [ПИН-код верный], направленный от символа решения к деятельности Выбрать тип транзакции. Для задания сторожевого условия данного перехода следует ввести текст ПИН-код верный в поле ввода Guard Condition (Сторожевое условие) на вкладке Detail (Подробно) окна спецификации свойств данного перехода (рис. 10.4). При этом текст сторожевого условия следует вводить без скобок.


Рис. 10.4.  Диалоговое окно спецификации свойств перехода при задании сторожевого условия

Для продолжения построения диаграммы деятельности следует выполнить следующие действия:

Добавить переход со сторожевым условием: [ПИН-код неверный], направленный от символа решения к символу соединения.Добавить переход, направленный от деятельности Выбрать тип транзакции к символу решения.Добавить переход со сторожевым условием: [выбор снятия суммы] , направленный от символа решения к деятельности Ввести сумму.Добавить переход со сторожевым условием: [выбор получения справки], направленный от символа решения к деятельности Получить справку о состоянии счета.Добавить переход, направленный от деятельности Ввести сумму к символу решения.Добавить переход со сторожевым условием: [сумма не превышает кредит], направленный от символа решения к деятельности Получить наличные.Добавить переход со сторожевым условием: [сумма превышает кредит], направленный от символа решения к символу соединения.Добавить переход, направленный от деятельности Получить наличные к символу решения.Добавить переход со сторожевым условием: [выбрана печать чека], направленный от символа решения к деятельности Получить чек.Добавить переход со сторожевым условием: [печать чека не выбрана], направленный от символа решения к символу соединения.Добавить переход, направленный от деятельности Получить чек к символу соединения.Добавить переход, направленный от деятельности Получить справку о состоянии счета к символу соединения.Добавить переход, направленный от символа соединения к деятельности Получить карточку.Добавить переход, направленный от деятельности Получить карточку к финальному состоянию.


Построенная таким образом диаграмма деятельности будет иметь следующий вид (рис. 10.5).


Рис. 10.5.  Окончательный вид диаграммы деятельности для модели банкомата

Следует заметить, что в разрабатываемой модели диаграмма деятельности не описывает ситуацию блокирования карточки при трижды неверно введенном ПИН-коде. Дополнить данную диаграмму деятельности, которая учитывает данное условие в форме проверки отдельного условия, предлагается читателям самостоятельно в качестве упражнения.

Следует помнить, что в среде IBM Rational Rose 2003 диаграмма деятельности не является необходимой для генерации программного кода. Поэтому разработку диаграмм этого типа, особенно в условиях дефицита времени, отпущенного на выполнение проекта, иногда опускают. В то же время следует отметить, что в проектах реинжиниринга и документирования бизнес-процессов диаграмма деятельности является основным средством визуализации бизнес-процессов в контексте языка UML. Особенности разработки проектов по моделированию бизнес-процессов в среде IBM Rational Rose 2003 рассматриваются далее в лекции 11.


в среде IBM Rational Rose


Диаграмма деятельности в среде IBM Rational Rose 2003, так же как и диаграмма состояний, может относиться к отдельному классу, операции класса, варианту использования, пакету или представлению. Общие рекомендации по построению диаграммы деятельности были рассмотрены в лекции 11 курса «Основы объектно-ориентированного моделирования в нотации UML». Для того чтобы построить диаграмму деятельности, ее вначале необходимо создать и активизировать.

Начать построение диаграммы деятельности для выбранного элемента модели или моделируемой системы в целом можно одним из следующих способов:

Щелкнуть на кнопке с изображением диаграммы состояний на стандартной панели инструментов, после чего следует выбрать представление и тип разрабатываемой диаграммы - диаграмма деятельности.Выделить логическое представление (Logical View) или представление вариантов использования (Use Case View) в браузере проекта и выполнить операцию контекстного меню: New
Activity Diagram
(Новая
Диаграмма деятельности).Раскрыть логическое представление (Logical View) в браузере проекта и выделить рассматриваемый класс, операцию класса, пакет, или раскрыть представление вариантов использования (Use Case View) и выбрать вариант использования, после чего выполнить операцию контекстного меню: New
Activity Diagram
(Новая
Диаграмма деятельности).Выполнить операцию главного меню: Browse
State Machine Diagram
(Обзор
Диаграмма состояний), после следует чего выбрать представление и тип разрабатываемой диаграммы - диаграмма деятельности.

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

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


Selection ToolПревращает изображение курсора в форму стрелки для последующего выделения элементов на диаграмме


Text BoxДобавляет на диаграмму текстовую область


NoteДобавляет на диаграмму примечание


Anchor Note to ItemДобавляет на диаграмму связь примечания с соответствующим графическим элементом диаграммы


StateДобавляет на диаграмму состояние


ActivityДобавляет на диаграмму деятельность


Start StateДобавляет на диаграмму начальное состояние


End StateДобавляет на диаграмму конечное состояние


State TransitionДобавляет на диаграмму переход


Transition to SelfДобавляет на диаграмму рефлексивный переход


Horizontal SynchronizationДобавляет на диаграмму горизонтально расположенный символ синхронизации


Vertical SynchronizationДобавляет на диаграмму вертикально расположенный символ синхронизации


DecisionДобавляет на диаграмму символ принятия решения для альтернативных переходов


SwimlaneДобавляет на диаграмму дорожку


ObjectДобавляет на диаграмму объект (по умолчанию отсутствует)


Object FlowДобавляет на диаграмму стрелку потока объектов (по умолчанию отсутствует)


Business ActivityДобавляет на диаграмму бизнес-деятельность (по умолчанию отсутствует)


Business TransactionДобавляет на диаграмму бизнес-транзакцию (по умолчанию отсутствует)
<
Как видно из этой таблицы, по умолчанию на панели инструментов отсутствуют некоторые графические элементы, а именно - кнопки с пиктограммами объекта и потока объектов. При необходимости их можно добавить на специальную панель диаграммы деятельности стандартным способом, который был описан ранее.

Для разрабатываемого проекта системы управления банкоматом диаграмма деятельности описывает последовательность действий клиента при использовании банкомата. Для удобства можно включить эту диаграмму в логическое представление, для чего необходимо в браузере проекта выделить логическое представление (Logical View) и выполнить операцию контекстного меню: New
Activity Diagram
(Новая
Диаграмма деятельности). Продолжая разработку проекта по моделированию системы управления банкоматом, можно приступить к разработке новой диаграммы деятельности. С этой целью для диаграммы деятельности модели банкомата зададим имя Диаграмма деятельности ATM, а в секцию ее документации введем текст «Диаграмма деятельности описывает последовательность действий клиента при использовании банкомата».


Добавление дорожек на диаграмму деятельности


Для представления модели бизнес-процесса в форме диаграммы деятельности первоначально необходимо добавить на нее дорожки. Для добавления дорожки на диаграмму деятельности нужно с помощью левой кнопки мыши нажать кнопку с изображением пиктограммы дорожки на специальной панели инструментов, отпустить левую кнопку мыши и щелкнуть левой кнопкой мыши на свободном месте рабочего листа диаграммы. Добавить дорожку на диаграмму можно также с помощью операции главного меню: Tools

Create
Swimlane
или с помощью операции контекстного меню: New
Swimlane
, предварительно выделив диаграмму деятельности в браузере проекта.

В результате этих действий на диаграмме в области диаграммы появится изображение дорожки с вертикальной линией и именем дорожки NewSwimlane в верхней части, предложенное программой по умолчанию. Для задания имени дорожки следует открыть диалоговое окно спецификации ее свойств и ввести ее имя в поле ввода Name (рис. 11.1).


Рис. 11.1.  Диалоговое окно спецификации свойств дорожки

Начиная практическую разработку модели бизнес-процесса оптовой продажи товаров со склада компании, последовательно добавим на диаграмму деятельности дорожки с именами отдельных подразделений компании: Отдел приема заказов, Бухгалтерия, Склад и Отдел доставки (рис. 11.2).


Рис. 11.2.  Диаграмма деятельности после добавления на нее дорожек

После добавления дорожек на диаграмму состояний можно перейти к добавлению деятельностей и переходов. В качестве первой деятельности добавим деятельность с именем Принять заказ по факсу, которую разместим в первой дорожке с именем Отдел приема заказов. Этот факт будет означать, что деятельность Принять заказ по факсу выполняется в Отделе приема заказов или, другими словами, сотрудники этого отдела несут ответственность за выполнение данной деятельности.

Деятельности Принять заказ по факсу должно предшествовать начальное состояние, которое также следует добавить в эту же дорожку и соединить переходом с этой деятельностью. После добавления начального состояния и перехода диаграмма деятельности будет иметь следующий вид (рис. 11.3).


Рис. 11.3.  Диаграмма деятельности после добавления на нее перехода из изначального состояния в деятельность Принять заказ по факсу



Продолжая рассмотрение особенностей разработки диаграмм


Продолжая рассмотрение особенностей разработки диаграмм деятельности, следует отметить, что программа IBM Rational Rose 2003 может быть успешно использована для выполнения проектов по моделированию бизнес-процессов. Наиболее подходящим типом диаграмм для визуального представления схем выполнения бизнес-процессов являются диаграммы деятельности, на которых дополнительно размещаются так называемые дорожки (Swimlane). Назначение дорожек состоит в том, чтобы указать зоны ответственности за выполнения отдельных деятельностей в рамках моделируемого бизнес-процесса. В качестве имен дорожек используются либо названия подразделений (департаментов) рассматриваемой компании, либо названия отдельных должностей сотрудников тех или иных подразделений.

Проекты по моделированию бизнес-процессов могут выполняться либо с целью реорганизации или реинжиниринга компании, либо с целью собственно документирования бизнес-процессов. Особенности данных проектов заключаются в том, что в обоих случаях необходимо построить модели бизнес-процессов некоторой существующей компании. Чтобы акцентировать внимание на подобных проектах, их часто называют проектами типа «As is» («Как есть»). Соответственно проекты по разработке новых продуктов или моделей новых систем называют проектами типа «To be» («Как должно быть»).

В данном контексте рассматриваемый ранее проект по разработке системы управления банкоматом следует отнести к проектам типа «Как есть», поскольку при построении диаграмм предполагалась известной существующая технология использования банкоматов для обслуживания клиентов. С другой стороны, если бы стояла цель разработки новой модели банкомата с некоторой дополнительной функциональностью или, например, разработки нового Интернет-магазина, то подобные проекты можно было бы отнести к проектам типа «Как должно быть». Именно этот тип проектов служит базовым для принятой в курсе лекций последовательности разработки канонических диаграмм в нотации UML, начиная от представления диаграмм вариантов использования и заканчивая диаграммами физического представления.



Выполнение проектов типа «Как есть» по моделированию бизнес-процессов в большинстве случаев начинают с построения диаграмм деятельности, которые служат для графического представления схем выполнения бизнес-процессов и документооборота рассматриваемой компании. После этого, исходя из требований проекта, разрабатывается модель диаграммы вариантов использования и выполняется реорганизация бизнес-процессов. Наконец, в случае необходимости разработки или внедрения корпоративной информационной системы, строятся диаграмма классов, диаграммы взаимодействия и компонентов, которые служат основой для программной реализации соответствующего проекта.

Таким образом, первый этап выполнения проектов типа «Как есть» связан с построением моделей существующих бизнес-процессов компании в форме диаграмм деятельности. В качестве примера проекта этого типа в данной лекции рассматривается модель бизнес-процесса по оптовой продаже товаров со склада торговой компании. Хотя данный пример имеет упрощенный характер, он позволяет наглядно представить основные особенности моделирования бизнес-процессов в нотации языка UML с использованием средства IBM Rational Rose 2003.

Для вновь разрабатываемого проекта по моделированию бизнес-процессов торговой компании в среде IBM Rational Rose 2003 создадим новый проект с именем: МодельБП. В качестве первой диаграммы проекта будет служить диаграмма деятельности, которая описывает отдельный бизнес-процесс в виде последовательности выполнения действий подразделениями компании при оптовой продаже товаров клиентам. Для удобства можно включить эту диаграмму в логическое представление, для чего необходимо в браузере проекта выделить логическое представление (Logical View) и выполнить операцию контекстного меню: New
Activity Diagram
(Новая
Диаграмма деятельности).


Построение диаграммы деятельности с дорожками для модели бизнес-процесса


Для построения диаграммы деятельности с дорожками для рассматриваемой модели бизнес-процесса следует добавить оставшиеся деятельности и переходы. С этой целью следует выполнить следующие действия:

Добавить деятельность с именем: Заказать товар на складе в дорожку Отдел приема заказов.Добавить деятельности с именами: Выставить счет к оплате и Получить оплату за товар в дорожку Бухгалтерия.Добавить деятельности с именами: Подобрать товар и Подготовить товар к отправке в дорожку Склад.Добавить деятельность с именем: Отправить товар клиенту в дорожку Отдел доставки.Добавить символ горизонтальной синхронизации в дорожки Отдел приема заказов и Склад. Следует заметить, что первый символ будет использован для разделения параллельных потоков деятельностей, а второй - для слияния этих потоков.Добавить переход, направленный от деятельности Принять заказ по факсу к деятельности Заказать товар на складе.Добавить переход, направленный от деятельности Заказать товар на складе к символу горизонтальной синхронизации.Добавить переход, направленный от символа горизонтальной синхронизации к деятельности Выставить счет к оплате.Добавить переход, направленный от символа горизонтальной синхронизации к деятельности Подобрать товар.Добавить переход, направленный от деятельности Выставить счет к оплате к деятельности Получить оплату за товар.Добавить переход, направленный от деятельности Подобрать товар к деятельности Подготовить товар к отправке.Добавить переход, направленный от деятельности Получить оплату за товар к символу горизонтальной синхронизации.Добавить переход, направленный от деятельности Подготовить товар к отправке к символу горизонтальной синхронизации.Добавить переход, направленный от символа горизонтальной синхронизации к деятельности Отправить товар клиенту.Добавить переход, направленный от деятельности Отправить товар клиенту к финальному состоянию.

Построенная таким образом диаграмма деятельности с дорожками будет иметь следующий вид (рис. 11.4).


Рис. 11.4.  Диаграмма деятельности с дорожками для модели бизнес-процесса

Следует заметить, что в разрабатываемой модели диаграмма деятельности не описывает ситуацию, когда заказанного клиентом товара не окажется на складе. Дополнить данную диаграмму, которая учитывает данное условие в форме проверки отдельного условия, предлагается читателям самостоятельно в качестве упражнения.



Построение диаграммы деятельности с дорожками и потоком объектов


Для построения диаграммы деятельности с дорожками и потоком объектов для рассматриваемой модели бизнес-процесса следует добавить на диаграмму объекты и стрелки потоков объектов. Объекты на диаграмме деятельности могут обозначать отдельные документы, которые необходимы для выполнения моделируемого бизнес-процесса. Соответственно поток объектов служит моделью документооборота рассматриваемой компании. Для добавления на диаграмму объекта следует воспользоваться соответствующей кнопкой на специальной панели инструментов. При этом данную кнопку предварительно следует на нее добавить, поскольку по умолчанию на панели она отсутствует.

В качестве первого объекта добавим на диаграмму деятельности объект с именем заказ, для которого зададим состояние: получен. Для задания состояния добавленного объекта следует открыть диалоговое окно свойств данного объекта, во вложенном списке State (Состояние) выбрать нужное состояние или задать новое (рис. 11.5). При этом будет открыто дополнительное окно свойств состояния, в которое можно занести всю информацию по данному состоянию.


Рис. 11.5.  Диалоговое окно спецификации свойств объекта

Для завершения построения диаграммы деятельности рассматриваемого примера следует описанным выше способом добавить оставшиеся объекты и стрелки потоков объектов. С этой целью следует выполнить следующие действия:

Добавить стрелку потока объектов, направленную от деятельности Принять заказ по факсу к объекту заказ в состоянии получен.Добавить стрелку потока объектов, направленную от объекта заказ в состоянии получен к деятельности Заказать товар на складе.Добавим объект с именем заказ, для которого зададим состояние: оформлен. Следует заметить, что для добавления на диаграмму деятельности уже существующего в модели объекта его следует просто перетащить из браузера проекта на диаграмму и задать ему новое состояние.Добавить стрелку потока объектов, направленную от деятельности Заказать товар на складе к объекту заказ в состоянии оформлен. Добавить стрелку потока объектов, направленную от объекта заказ в состоянии оформлен к деятельности Выставить счет к оплате.Добавим объект с именем счет, для которого зададим состояние: выставлен. Добавить стрелку потока объектов, направленную от деятельности Выставить счет к оплате к объекту счет в состоянии выставлен. Добавить стрелку потока объектов, направленную от объекта счет в состоянии выставлен к деятельности Получить оплату за товар.Добавим объект с именем счет, для которого зададим состояние: оплачен.Добавить стрелку потока объектов, направленную от деятельности Получить оплату за товар к объекту счет в состоянии оплачен. Добавить стрелку потока объектов, направленную от объекта счет в состоянии оплачен к деятельности Отправить товар клиенту.Добавим объект с именем накладная, для которого зададим состояние: выписана.Добавить стрелку потока объектов, направленную от деятельности Заказать товар на складе к объекту накладная в состоянии выписана.Добавить стрелку потока объектов, направленную от объекта накладная в состоянии выписана к деятельности Подобрать товар.Добавим объект с именем накладная, для которого зададим состояние: оформлена.Добавить стрелку потока объектов, направленную от деятельности Подготовить товар к отправке к объекту накладная в состоянии оформлена.Добавить стрелку потока объектов, направленную от объекта накладная в состоянии оформлена к деятельности Отправить товар клиенту.


Построенная таким образом диаграмма деятельности с дорожками и потоком объектов будет иметь следующий вид (рис. 11.6).


Рис. 11.6.  Окончательный вид диаграммы деятельности для модели бизнес-процесса

Для большей наглядности представления данной модели можно задать для всех деятельностей стереотип Business Activity (Бизнес-деятельность), который будет означать в данном контексте деятельность, выполняемую в рамках некоторого бизнес-процесса. Напомним, что изменить стереотип деятельности можно с помощью выбора нужного варианта стереотипа в окне спецификации свойств деятельности. Соответствующий вариант изображения диаграммы деятельности представлен на рис. 11.7.


Рис. 11.7.  Окончательный вид диаграммы деятельности для модели бизнес-процесса со стереотипами деятельностей

Следует заметить, что в разрабатываемой модели диаграмма деятельности не описывает ситуацию, когда клиент отказался от оплаты товара после выставления ему счета. Дополнить данную диаграмму деятельности, которая учитывает данное условие, предлагается читателям самостоятельно в качестве упражнения.

Хотя в среде IBM Rational Rose 2003 диаграмма деятельности не является необходимой для генерации программного кода, диаграммы данного типа имеют большое значение для документирования бизнес-процессов и их последующей сертификации по международному стандарту ISO 9000. Поэтому разработка диаграмм этого типа занимает центральное место при выполнении проектов по реинжинирингу и оптимизации бизнес-процессов с использованием нотации UML.


Добавление компонента на диаграмму компонентов и редактирование его свойств


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

Create
Component
или с помощью операции контекстного меню: New
Component
, предварительно выделив представление компонентов в браузере проекта.

В результате этих действий на диаграмме появится изображение компонента с маркерами изменения его геометрических размеров и предложенным средой именем по умолчанию, которое разработчику следует изменить. Продолжая разработку модели системы управления банкоматом, построим для нее диаграмму компонентов. С этой целью изменим имя диаграммы, предложенное по умолчанию Main, на Диаграмма компонентов АТМ, а для первого добавленного компонента зададим имя MainATM.exe (рис. 12.1).


Рис. 12.1.  Диаграмма компонентов после добавления компонента MainATM.exe

Для каждого компонента можно определить различные свойства, такие как стереотип, язык программирования, декларации, реализуемые классы. Редактирование этих свойств для произвольного компонента осуществляется с помощью диалогового окна спецификации свойств (рис. 12.2).


Рис. 12.2.  Диалоговое окно спецификации свойств компонента MainATM.exe

В частности, для компонента MainATM.exe можно выбрать стереотип <<EXE>> из предлагаемого вложенного списка, поскольку применительно к разрабатываемой модели предполагается реализация этого компонента в форме исполнимого файла. При этом на вкладке Realizes (Реализует) содержатся все классы, включая и актеров, которые на данный момент присутствуют в модели (рис. 12.3). Следует заметить, что классы будут показаны в этом окне только при выбранном свойстве Show all classes (Показать все классы).


Рис. 12.3.  Диалоговое окно спецификации свойств компонента MainATM.exe, открытое на вкладке Realizes (Реализует)

По умолчанию в среде IBM Rational Rose 2003 для всех добавляемых на диаграмму компонентов в качестве языка реализации используется язык анализа, который в последствии следует изменить на тот язык программирования, который предполагается использовать для написания программного кода. В дальнейшем при генерации программного кода необходимо будет дополнительно выбрать те классы, которые реализует тот или иной компонент модели. Программа IBM Rational Rose 2003 поддерживает возможность использования различных языков программирования для реализации различных компонентов модели. Особенности языковой реализации модели рассматриваются далее в лекции 14.



Добавление отношения зависимости и редактирование его свойств


Добавление отношения зависимости на диаграмму компонентов аналогично добавлению соответствующего отношения на диаграмму вариантов использования. Продолжая разработку модели банкомата, на диаграмму компонентов предварительно следует добавить второй компонент с именем MainBank, для которого выбрать стереотип Main Program. Для добавления зависимости между двумя компонентами нужно с помощью левой кнопки мыши нажать кнопку с изображением зависимости на специальной панели инструментов, отпустить левую кнопку мыши, щелкнуть левой кнопкой мыши на изображении исходного компонента на диаграмме и отпустить ее на изображении целевого компонента. В результате этих действий на диаграмме появится изображение отношения зависимости в форме пунктирной линии со стрелкой, соединяющей два выбранных компонента.

Применительно к диаграмме компонентов модели банкомата рассмотренным способом следует добавить отношение зависимости от компонента с именем MainATM.exe к компоненту с именем MainBank. В дополнение к этому для наглядности можно указать в форме примечаний те классы модели, которые предполагается реализовать в данных компонентах (рис. 12.4).


Рис. 12.4.  Диаграмма компонентов после добавления отношения зависимости между компонентами MainATM.exe и MainBank

Следует заметить, что отношение зависимости в среде IBM Rational Rose 2003 не имеет собственного окна спецификации свойств. Именно по этой причине специфицировать свойства данного отношения, такие как имя и стереотип, можно только с помощью текстовой области, что нельзя признать удобным с практической точки зрения.



Окончательное построение диаграммы компонентов модели банкомата


Для завершения построения диаграммы компонентов рассматриваемого примера следует описанным выше способом добавить оставшиеся компоненты и зависимости. С этой целью следует выполнить следующие действия:

Добавить компонент с именем: Устройства Банкомата, для которого задать стереотип Task Specification.Добавить компоненты с именами: Устройство чтения карточки, Клавиатура Банкомата, Принтер Банкомата, Экран Банкомата, Устройство выдачи наличных, для которых задать стереотип Task Body.Добавить зависимость от компонента с именем MainATM.exe к компоненту с именем Устройства Банкомата.Добавить зависимость от компонента с именем Устройство чтения карточки к компоненту с именем Устройства Банкомата.Добавить зависимость от компонента с именем Клавиатура Банкомата к компоненту с именем Устройства Банкомата. Добавить зависимость от компонента с именем Принтер Банкомата к компоненту с именем Устройства Банкомата. Добавить зависимость от компонента с именем Экран Банкомата к компоненту с именем Устройства Банкомата. Добавить зависимость от компонента с именем Устройство выдачи наличных к компоненту с именем Устройства Банкомата.

Построенная таким образом диаграмма компонентов будет иметь следующий вид (рис. 12.5).


Рис. 12.5.  Окончательный вид диаграммы компонентов разрабатываемой модели управления

Следует заметить, что различные графические стереотипы компонентов не оказывают влияния на особенности генерации программного кода. Поэтому при разработке диаграммы компонентов присутствует некоторая неоднозначность выбора соответствующих стереотипов, связанная с особенностями предполагаемой реализации программного приложения. При работе с диаграммой компонентов можно также создавать пакеты и размещать в них компоненты, изменять их спецификацию и отношения зависимости между различными элементами диаграммы. Выполнить эти действия предлагается читателям самостоятельно в качестве упражнения.


Диаграмма компонентов служит частью физического


Диаграмма компонентов служит частью физического представления модели, играет важную роль в процессе ООАП и является необходимой для генерации программного кода. Общие рекомендации по построению диаграммы компонентов были рассмотрены в лекции 12 курса «Основы объектно-ориентированного моделирования в нотации UML». Для разработки диаграмм компонентов в браузере проекта предназначено отдельное представление компонентов (Component View), в котором уже содержится диаграмма компонентов с пустым содержанием и именем по умолчанию Main (Главная).

Активизация диаграммы компонентов может быть выполнена одним из следующих способов:

Щелкнуть на кнопке с изображением диаграммы компонентов на стандартной панели инструментов. Раскрыть представление компонентов в браузере (Component View) и дважды щелкнуть на пиктограмме Main (Главная). Через пункт меню Browse
Component Diagram
(Браузер
Диаграмма компонентов).

В результате выполнения этих действий появляется новое окно с чистым рабочим листом диаграммы компонентов и специальная панель инструментов, содержащая кнопки с изображением графических примитивов, необходимых для разработки диаграммы компонентов (табл. 12.1).

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


Selection ToolПревращает изображение курсора в форму стрелки для последующего выделения элементов на диаграмме


Text BoxДобавляет на диаграмму текстовую область


NoteДобавляет на диаграмму примечание


Anchor Note to ItemДобавляет на диаграмму связь примечания с соответствующим графическим элементом диаграммы


ComponentДобавляет на диаграмму компонент


PackageДобавляет на диаграмму пакет


DependencyДобавляет на диаграмму отношение зависимости


Subprogram SpecificationДобавляет на диаграмму спецификацию подпрограммы


Subprogram BodyДобавляет на диаграмму тело подпрограммы


Main ProgramДобавляет на диаграмму главную программу


Package SpecificationДобавляет на диаграмму спецификацию пакета


Package BodyДобавляет на диаграмму тело пакета


Task SpecificationДобавляет на диаграмму спецификацию задачи


Task BodyДобавляет на диаграмму тело задачи


Generic SubprogramДобавляет на диаграмму типовую подпрограммы(по умолчанию отсутствует)


Generic Package Добавляет на диаграмму типовой пакет (по умолчанию отсутствует)


DatabaseДобавляет на диаграмму базу данных (по умолчанию отсутствует)
<
Как видно из этой таблицы, по умолчанию на панели инструментов отсутствуют только три графических элемента из рассмотренных ранее элементов диаграммы компонентов, а именно - кнопки с пиктограммами типовой подпрограммы, типового пакета и базы данных. При необходимости их можно добавить на специальную панель диаграммы компонента стандартным способом.

Программа IBM Rational Rose 2003 не поддерживает графические стереотипы, рассмотренные в лекции 12 курса «Основы объектно-ориентированного моделирования в нотации UML», и предлагает целый ряд собственных стереотипов. Графическое изображение этих стереотипов и их краткая характеристика приводятся в следующей таблице (табл. 12.2). При этом каждому из компонентов, как правило, соответствует отдельный файл исходной сборки программного приложения.

Таблица 12.2. Графическое изображение стереотипов компонентов и их характеристикаГрафическое изображение и имя по умолчаниюНазвание стереотипаХарактеристика стереотипа компонента


Subprogram SpecificationСпецификация подпрограммы. Содержит описание переменных, процедур и функций и не содержит определений классов


Subprogram BodyТело подпрограммы. Содержит реализацию процедур и функций, не относящихся к каким-то классам, при этом не содержит определений классов или реализаций операций других классов


Main ProgramГлавная программа. Реализует базовую логику работы программного приложения и содержит ссылки на другие компоненты модели


Package SpecificationСпецификация пакета. Содержит определение класса, его атрибутов и операций. В языке программирования С++ спецификации пакета соответствует отдельный файл с расширением «h»


Package BodyТело пакета. Содержит код реализации операций класса. В языке программирования С++ спецификации пакета соответствует отдельный файл с расширением «cpp»


Task SpecificationСпецификация задачи. Может содержать определение класса, его атрибутов и операций, которые предполагается использовать в независимом потоке управления


Task BodyТело задачи. Может содержать реализацию операций класса, которые имеют независимый поток управления.


Generic SubprogramТиповая подпрограмма. Содержит описание переменных, процедур и функций, которые могут быть использованы в нескольких программных приложениях. При этом типовая подпрограмма не содержит определений классов


Generic PackageТиповой пакет. Содержит определение класса, его атрибутов и операций, которое может быть использовано в нескольких программных приложениях


DatabaseБаза данных. Содержит определение одного или нескольких классов, их атрибутов и, возможно, операций. При этом соответствующие классы могут быть реализованы в форме одной или нескольких таблиц базы данных
Использование рассмотренных стереотипов существенно увеличивают наглядность графического представления диаграммы компонентов и позволяют архитектору уточнить характер реализации модели программистом на выбранном языке программирования.


Добавление соединения и редактирование его свойств


Для добавления соединения между двумя узлами нужно с помощью левой кнопки мыши нажать кнопку с изображением соединения на специальной панели инструментов, отпустить левую кнопку мыши, щелкнуть левой кнопкой мыши на изображении одного из узлов на диаграмме и отпустить ее на изображении другого узла. Добавить соединения на диаграмму развертывания можно также с помощью операции главного меню: Tools

Create
Connection
.

В результате этих действий на диаграмме появится изображение соединения в форме линии без стрелок, соединяющей два выбранных узла. Применительно к диаграмме развертывания модели банкомата одним из рассмотренных способов следует добавить соединение для узлов с именами Банкомат №1 и Сеть (рис. 13.5).


Рис. 13.5.  Диаграмма развертывания после добавления соединения между узлами Банкомат № 1 и Сеть

Для соединения набор редактируемых свойств аналогичен набору свойств устройства, поэтому для него с помощью соответствующего окна спецификации свойств можно определить только имя, стереотип, документацию и характеристику (рис. 13.4).



Добавление узла на диаграмму развертывания и редактирование его свойств


Для добавления узла на диаграмму развертывания нужно с помощью левой кнопки мыши нажать кнопку с изображением пиктограммы требуемого узла (процессора или устройства) на специальной панели инструментов, отпустить левую кнопку мыши и щелкнуть левой кнопкой мыши на свободном месте рабочего листа диаграммы. Добавить процессор на диаграмму развертывания можно также с помощью операции главного меню: Tools

Create
Processor
или с помощью операции контекстного меню: New
Processor
, предварительно выделив представление развертывания в браузере проекта. Аналогично добавить устройство на диаграмму можно также с помощью операции главного меню: Tools
Create
Device
или с помощью операции контекстного меню: New
Device
, предварительно выделив представление развертывания в браузере проекта.

В результате этих действий на диаграмме развертывания появится изображение узла требуемого типа с маркерами изменения его геометрических размеров и предложенным средой именем по умолчанию, которое разработчику следует изменить. При этом следует иметь в виду, что в среде IBM Rational Rose 2003 под процессором понимается ресурсоемкий узел, а под устройством - нересурсоемкий узел.

Продолжая разработку модели системы управления банкоматом, построим для нее диаграмму развертывания. С этой целью в качестве первого узла выберем тип процессор и зададим ему имя Банкомат №1, для которого в форме примечания укажем помеченное значение: {адрес = ул. Садовая, д.5}. Это значение служит для спецификации конкретного адреса одного из банкоматов системы (рис. 13.1).


Рис. 13.1.  Диаграмма развертывания после добавления узла Банкомат № 1

Для каждого процессора можно специфицировать различные свойства, такие как стереотип, характеристику, процессы и их приоритет. Спецификация этих свойств осуществляется с помощью диалогового окна спецификации свойств процессора (рис. 13.2).


Рис. 13.2.  Диалоговое окно спецификации свойств узла Банкомат № 1

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


Рис. 13.3.  Диалоговое окно спецификации свойств узла Банкомат № 1, открытое на вкладке Detail (Подробно)

Характеристики процессора, такие как его быстродействие и объем оперативной памяти, могут быть записаны в форме текста в многостраничное поле с именем Characteristics. В поле Processes (Процессы) можно задать некоторый процесс, который предполагается реализовать на данном процессоре. С этой целью необходимо выполнить операцию контекстного меню Insert (Вставить) и ввести текст имени процесса. Далее можно задать приоритет процесса, введя некоторое число в соответствующее поле ввода.

При наличии у процессора нескольких процессов может быть дополнительно определена процедура планирования их выполнения. Для спецификации процедуры планирования процессора могут быть использованы следующие варианты выбора в группе Scheduling:

Preemptive (С приоритетом) - определяет процедуру планирования, при которой процесс с большим приоритетом будет иметь преимущество при использовании ресурсов процессора по сравнению с менее приоритетными процессами.Non preemptive (Без приоритета) - определяет процедуру планирования, при которой все приоритеты процессов игнорируются. При этом текущий процесс выполняется до своего завершения, после чего может быть начато выполнение следующего процесса.Cyclic (Циклический) - определяет процедуру планирования, при которой приоритеты процессов также игнорируются. Все процессы выполняются циклически по кругу, при этом каждому из них выделяется фиксированное время на выполнение, по прошествии которого управление передается следующему процессу.Executive (Исполнительный) - определяет процедуру планирования, для которой существует некоторый алгоритм, предназначенный для управления отдельными процессами.Manual (Вручную) - определяет процедуру планирования, при которой планирование выполнения процессов осуществляется пользователем.


Окончательное построение диаграммы развертывания модели банкомата


Для завершения построения диаграммы развертывания рассматриваемого примера следует описанным выше способом добавить оставшиеся узлы и соединения. С этой целью следует выполнить следующие действия:

Добавить процессор с именем: Банкомат №2, для которого задать помеченное значение в форме примечания: {адрес = ул. Парковая, д.7}, а на вкладке свойств Detail определить новый процесс и выбрать для него имя MainATM из вложенного списка.Добавить процессор с именем: Банкомат №3, для которого задать помеченное значение в форме примечания: {адрес = ул. Лесная, д.9}, а на вкладке свойств Detail определить новый процесс и выбрать для него имя MainATM из вложенного списка.Добавить процессор с именем: Сервер Банка, для которого на вкладке свойств Detail определить новый процесс с именем MainBank.Добавить соединение для узлов с именами Банкомат №2 и Сеть.Добавить соединение для узлов с именами Банкомат №3 и Сеть.Добавить соединение для узлов с именами Сервер Банка и Сеть.

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


Рис. 13.6.  Окончательный вид диаграммы развертывания разрабатываемой модели управления банкоматом

Следует отметить, что программа IBM Rational Rose 2003 не поддерживает возможности графического размещения внутри узлов развертываемых на них компонентов. Указать размещение компонентов модели в узлах диаграммы развертывания можно с помощью документации соответствующих узлов. Выполнить эти действия предлагается читателям самостоятельно в качестве упражнения. После построения диаграммы развертывания разработка визуальной модели системы управления банкоматом в нотации UML может считаться завершенной.

Дальнейшая работа с моделью зависит от целей выполнения проекта.
Если проект не предполагает программную реализацию, то можно ограничиться формированием проектной документации. С этой целью следует выполнить операцию главного меню: Report

SoDA Report_ (Отчет
Отчет с помощью SoDA), в результате чего будет открыто диалоговое окно свойств для выбора шаблонов генерации отчета. После выбора шаблонов будет автоматически сгенерирован отчет о разрабатываемой модели в формате MS Word с использованием специального средства IBM Rational SoDA, если оно доступно в системе после инсталляции IBM Rational Rose 2003.

Если проект предполагает программную реализацию, то целесообразно воспользоваться возможностями генерации программного кода в среде IBM Rational Rose 2003, которые рассматриваются в следующей лекции данного курса.


Диаграмма развертывания является второй составной


Диаграмма развертывания является второй составной частью физического представления модели и разрабатывается, как правило, для территориально распределенных систем. Общие рекомендации по построению диаграммы развертывания были рассмотрены в лекции 13 курса «Основы объектно-ориентированного моделирования в нотации UML». Для разработки диаграмм компонентов в браузере проекта предназначено отдельное представление развертывания (Deployment View), в котором уже содержится диаграмма развертывания с пустым содержанием и без собственного имени.

Активизация диаграммы развертывания может быть выполнена одним из следующих способов:

Щелкнуть на кнопке с изображением диаграммы развертывания на стандартной панели инструментов.Дважды щелкнуть на пиктограмме представления развертывания (Deployment View) в браузере проекта.Выполнить операцию главного меню: Browse
Deployment Diagram
(Обзор
Диаграмма развертывания).

В результате выполнения этих действий появляется новое окно с чистым рабочим листом диаграммы развертывания и специальная панель инструментов, содержащая кнопки с изображением графических примитивов, необходимых для разработки диаграммы развертывания (табл. 13.1).

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


Selection ToolПревращает изображение курсора в форму стрелки для последующего выделения элементов на диаграмме


Text BoxДобавляет на диаграмму текстовую область


NoteДобавляет на диаграмму примечание


Anchor Note to ItemДобавляет на диаграмму связь примечания с соответствующим графическим элементом диаграммы


ProcessorДобавляет на диаграмму процессор


ConnectionДобавляет на диаграмму отношение соединения


DeviceДобавляет на диаграмму устройство
Как видно из этой таблицы, по умолчанию на панели инструментов присутствуют все графические элементы из рассмотренных ранее элементов диаграммы развертывания, поэтому изменять специальную панель нет необходимости. Работа с диаграммой развертывания состоит в создании процессоров и устройств, их спецификации, установлении связей между ними, а также добавлении и спецификации процессов.


Подготовка модели для генерации программного кода


Одним из наиболее важных свойств программы IBM Rational Rose 2003 является возможность генерации программного кода на нескольких языках программирования, которая может быть использована разработчиком после построения модели. Для этой цели в среде IBM Rational Rose 2003 присутствует достаточно большой выбор языков программирования и схем баз данных. Однако возможность генерации текста программы на том или ином языке программирования зависит от установленной версии IBM Rational Rose 2003.

Общая последовательность действий, которые необходимо выполнить для генерации программного кода в среде IBM Rational Rose 2003, состоит из следующих этапов:

Проверка модели на отсутствие ошибок. Создание компонентов для реализации классов. Отображение классов на компоненты. Выбор языка программирования для генерации текста программного кода. Установка свойств генерации программного кода. Выбор класса, компонента или пакета. Генерация программного кода.

Особенности выполнения каждого из этапов могут изменяться в зависимости от выбора языка программирования или схемы базы данных.

В среде IBM Rational Rose 2003 предусмотрено задание достаточно большого числа свойств, характеризующих как отдельные классы, так и проект в целом. Для определенности в качестве языка реализации проекта целесообразно выбрать язык программирования ANSI C++, который не требует инсталляции дополнительных программ и поставляется практически во всех конфигурациях IBM Rational Rose 2003. Рассмотрим особенности выполнения каждого из указанных выше этапов для языка реализации модели ANSI C++.

Поскольку язык ANSI С++ не допускает использование символов кириллицы в качестве имен классов, атрибутов и операций, необходимо соответствующим образом модифицировать диаграмму классов. После изменения имен классов, атрибутов и операций диаграмма классов модели банкомата будет иметь следующий вид (рис. 14.1).


Рис. 14.1.  Диаграмма классов модели банкомата после преобразования имен классов, их атрибутов и операций



Проверка модели независимо от выбора языка генерации кода


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

Для проверки модели следует выполнить операцию главного меню: Tools

Check Model (Инструменты
Проверить модель). Результаты проверки разработанной модели на наличие ошибок отображаются в окне журнала. Прежде чем приступить к генерации текста программного кода разработчику следует добиться устранения всех ошибок и предупреждений, о чем должно свидетельствовать чистое окно журнала (рис. 14.2).


Рис. 14.2.  Вид журнала при отсутствии ошибок по результатам проверки модели



Создание компонентов для реализации классов и отображение классов на компоненты


По существу данные этапы выполняются в ходе разработки диаграммы компонентов. Хотя программа IBM Rational Rose 2003 позволяет генерировать программный код на языке ANSI C++ для каждого класса модели без предварительного построения диаграммы компонентов, имеет смысл воспользоваться разработанной ранее диаграммой компонентов. Применительно к разрабатываемому проекту желательно переименовать компоненты, задав им англоязычные имена. В этом случае соответствующая диаграмма компонентов модели банкомата будет иметь вид, представленный на рис. 14.3.


Рис. 14.3.  Диаграмма компонентов модели банкомата после преобразования имен компонентов

Для отображения классов на компоненты можно воспользоваться окном спецификации свойств компонента, открытого на вкладке Realizes (Реализует). Для включения реализации класса в данный компонент следует выделить требуемый класс на этой вкладке и выполнить для него операцию контекстного меню Assign (Назначить). В результате перед именем класса на этой вкладке появится специальная отметка.

Применительно к модели банкомата для компонента MainATM.exe выберем для генерации программного кода классы ATMTransaction и ATMController (рис. 14.4).


Рис. 14.4.  Диалоговое окно настройки свойств реализации классов в компоненте MainATM.exe

Подобная операция должна быть выполнена для всех классов модели, которые предполагается реализовывать на выбранном языке программирования. Имеется и другой способ установления реализации классов на компоненте. А именно, можно просто выделить класс в браузере проекта и перетащить его на нужный компонент диаграммы компонентов.



Выбор языка программирования и редактирование свойств генерации программного кода


Для выбора языка ANSI C++ в качестве языка реализации модели следует выполнить операцию главного меню: Tools

Options (Инструменты
Параметры), в результате чего будет вызвано диалоговое окно настройки параметров модели. Далее на вкладке Notation (Нотация) в строке Default Language (Язык по умолчанию) из вложенного списка следует выбрать язык - ANSI C++.

Если по какой-то причине языка ANSI C++ не оказалось во вложенном списке, то следует убедиться в том, что этот язык программирования установлен в качестве расширения IBM Rational Rose 2003. Для этого следует открыть окно установленных расширений, выполнив операцию главного меню: Add-Ins

Add-In Manager (Расширения
Менеджер расширений), и убедиться в том, что выставлена отметка в строке с именем языка ANSI C++. Если ее нет, то ее следует добавить, после чего появится группа доступных операций ANSI C++ в главном меню Tools.

После выбора языка программирования по умолчанию следует изменить язык реализации каждого из компонентов модели. С этой целью следует изменить язык в строке Language (Язык) на вкладке General (Общие) окна спецификации свойств компонента, для чего из вложенного списка следует выбрать язык - ANSI C++ (рис. 14.5).


Рис. 14.5.  Окно спецификации свойств компонента MainATM.exe при выборе языка его реализации

Следует заметить, что после выбора языка программирования следует привести в соответствие типы атрибутов, типы аргументов и возвращаемых значений операций. С этой целью нужно просмотреть все классы диаграммы классов и изменить те типы данных, которые не являются синтаксически допустимыми в выбранном языке программирования. Применительно к языку ANSI C++ следует заменить тип Integer на int, Boolean на bool, Currency на float. В противном случае соответствующие исправления придется выполнять вручную после генерации программного кода.

Редактирование общих свойств генерации программного кода возможно в специальном диалоговом окне, которое может быть открыто в результате выполнения операции главного меню: Tools

ANSI C++
Open ANSI C++ Specification (Инструменты
Язык ANSI C++
Открыть спецификацию языка ANSI C++). Дополнительные свойства генерации программного кода отдельного класса можно специфицировать в диалоговом окне, которое может быть открыто в результате выполнения операции контекстного меню: ANSI C++
Class Customization (Язык ANSI C++
Настройка свойств класса). При этом соответствующий класс должен быть выделен в браузере проекта.

При генерации программного кода на языке ANSI C++ для модели банкомата значения свойств, предлагаемых средой IBM Rational Rose 2003 по умолчанию, первоначально можно оставить без изменения.



Выбор класса или компонента и генерация для него программного кода


Выбор класса или компонента для генерации программного кода означает выделение соответствующего элемента модели в браузере проекта. Применительно к рассматриваемой модели системы управления банкоматом для генерации программного кода на языке ANSI C++ выберем компонент с именем MainATM.exe.

Генерация программного кода в среде IBM Rational Rose 2003 возможна для отдельного класса или компонента. Для этого нужный элемент модели предварительно следует выделить в браузере проекта и выполнить операцию контекстного меню: ANSI C++

Generate Code_ (Язык ANSI C++
Генерировать код). В результате этого будет открыто диалоговое окно с предложением выбора классов для генерации программного кода на выбранном языке программирования (рис. 14.6). После выбора соответствующих классов и нажатия кнопки OK программа IBM Rational Rose 2003 выполняет кодогенерацию.


Рис. 14.6.  Окно выбора классов для генерации программного кода

Для просмотра и редактирования созданных файлов с текстом программного кода на языке ANSI C++ предназначен встроенный текстовый редактор, который можно открыть с помощью операции контекстного меню: ANSI C++

Browse Header_ (Язык ANSI C++
Просмотреть заголовочный файл) или ANSI C++
Browse Body_
(Язык ANSI C++
Просмотреть файл реализации) для выбранного класса в браузере проекта.

После генерации программного кода для компонента MainATM.exe каждому классу, реализованному в данном компоненте, будет соответствовать 2 файла с текстом кода на языке ANSI C++. Так, например, для класса ATMTransaction будет сгенерирован заголовочный файл с расширением «h» (рис. 14.7) и файл реализации с расширением «cpp» (рис. 14.8).


Рис. 14.7.  Вид встроенного текстового редактора с загруженным в него заголовочным файлом ATMTransaction.h


Рис. 14.8.  Вид встроенного текстового редактора с загруженным в него заголовочным файлом ATMTransaction.cpp

Как видно из рассмотрения полученного заголовочного файла, в нем содержится объявление в соответствии с правилами синтаксиса языка ANSI C++ всех операций и атрибутов класса ATMTransaction.
При этом информация о документировании операций и атрибутов помещается в комментарии перед соответствующими элементами программы.

В файле реализации содержится заготовка для реализации всех операций класса ATMTransaction в соответствии с правилами синтаксиса языка ANSI C++. При этом каждая из операций имеет пустое тело реализации, которое следует написать дополнительно, исходя из функциональных требований модели и синтаксиса языка программирования ANSI C++. Данную работу удобнее выполнять в выбранной интегрированной среде программирования, например, MS Visual C++ или Borland C++. При использовании интегрированной среды кроме компиляции, отладки и тестирования исходных модулей программы разработчик получает возможность дополнить приложение графическим интерфейсом, необходимым для взаимодействия с пользователем.

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

Сгенерированные программой IBM Rational Rose 2003 файлы с текстом программного кода содержат минимум информации. Для включения дополнительных элементов в программный код следует изменить свойства генерации программного кода, установленные по умолчанию. Сгенерировать файлы с текстом программного кода при различных значениях свойств выбранного языка программирования предлагается читателям самостоятельно в качестве упражнения.

В заключение следует отметить, что эффект от использования средства IBM Rational Rose 2003 проявляется при разработке масштабных проектов в составе команды или проектной группы. Действительно, при рассмотрении модели системы управления банкоматом может сложиться впечатление того, что написать и отладить соответствующую программу гораздо проще непосредственно в той или иной интегрированной среде программирования.

Однако ситуация покажется не столь тривиальной, когда станет необходимо выполнить проект с несколькими десятками вариантов использования и сотней классов. Именно для подобных проектов явно выявляется преимущество использования средства IBM Rational Rose 2003 и нотации языка UML для документирования и реализации соответствующих моделей.