/
Автор: Боггс Уэнди Боггс Майкл.
Теги: программирование языки программирования вычислительная техника
ISBN: 5-85582-214-1
Год: 2004
Текст
Содержание
1 Введение в UML 1
Введение в объектно-ориентированную парадигму.........................2
Инкапсуляция..........., ...........................................2
Наследование ....................................................... 4
Полиморфизм.........................................................5
Визуальное моделирование. , . ................................... 6
Метод Буча, ОМТ и UML............................................... 6
Диаграммы UML......................................................... 9
Кооперативные диаграммы............................................ 9
Диаграммы Вариантов Использования........ . .......................10
Диаграммы Последовательности . .....................................10
Кооперативные диаграммы.................................'..........12
Диаграммы Классов..................................................12
Диаграммы Состояний.............................................. 13
Диаграммы Компонентов............................................. 14
Диаграммы Размещения...............................................15
Визуальное моделирование и процесс разработки программного обеспечения . 17
Начальная фаза.....................................................18
Уточнение....................................................... . 19
Конструирование...................................................19
Ввод в действие................................................... 20
2 Введение в Rose 21
Что такое Rose?.......................................................22
Установка Rose 98.................................................... 24
Установка Rose 98i....................................................29
Знакомство с Rose.....................................................38
Элементы экрана............................ . ...................38
Браузер............................................................ 39
Окно документации................. . ...............................41
Панели инструментов................................................ 42
Окно диаграммы......................................................44
Журнал............................................................ 44
Четыре представления модели Rose......................................45
Представление Вариантов Использования.............................. 45
Логическое представление............................................46
Представление Компонентов......................................... 48
Представление Размещения........................................... 49
Работа в среде Rose...................................................49
Создание моделей....................................................50
Сохранение моделей..................................................50
Экспорт и импорт моделей............................................50
Публикация модели на Web-странице (98i).............................51
Работа с управляемыми элементами..................... ..............53
Работа с меню...................................................... 54
Установка глобальных параметров................................... . . 63
Работа со шрифтами....................... ....................... 63
Работа с цветом.....................................................63
Содержание
3 Варианты использования и действующие лица 65
Представление Вариантов Использования.................................66
Диаграммы Вариантов Использования.................................. 66
Создание диаграмм Вариантов Использования..........................67
Удаление диаграмм Вариантов Использования ..................69
Связывание файлов и ссылок с диаграммой Вариантов Использования. ... 69
Панель инструментов диаграмм Вариантов Использования...............70
Работа с вариантами использования.....................................71
Документирование потока событий................................... 72
Описание........................................................73
Предусловия................................................ .73
Основной и альтернативный потоки событий........................73
Постусловия.....................................................74
Добавление вариантов использования.................................74
Удаление вариантов использования.............................. 76
Спецификации вариантов использования.......................... 77
Присвоение имен вариантам использования..................... 77
Просмотр участников варианта использования...................... 78
Назначение стереотипа для варианта использования ..................78
Назначение приоритета варианту использования.......................79
Создание абстрактных вариантов использования ......................79
Просмотр диаграмм, содержащих варианты использования............ 79
Просмотр связей варианта использования.................... 81
Связывание файлов и ссылок с вариантом использования .......... 82
Работа с действующими лицами....................... ........... 83
Добавление действующих лиц............................. 84
Удаление действующих лиц. .........................................85
Спецификации действующего лица.....................................85
Именование действующих лиц................................. ..... 86
Назначение стереотипа для действующего лица................... 87
Задание множественности действующего лица . . . . . . . ... . . . . 87
Создание абстрактного действующего лица............................ 88
Просмотр связей действующего лица.................................. 88
Связывание файлов и ссылок с действующим лицом 89
Просмотр экземпляров действующего лица............................. 91
Работа со связями. ....................................................91
Связи коммуникации........................................... 92
Связь использования................................................92
Связь расширения................................... 95
Связь обобщения действующего лица........................... 96
Работа с примечаниями.................................................98
Добавление примечаний на диаграмму................................. 98
Удаление примечаний................................................ 98
Работа с пакетами..................................................... 99
Создание пакетов................................................. 99
Удаление пакетов................................................... 99
Упражнение........................................................... 100
4Взаимодействие объектов 103
Диаграммы Взаимодействия............................................. 104
Что такое объект?.............................................. 105
Что такое класс?................................................. . 105
Поиск объектов.................................................... 105
Использование диаграмм Взаимодействия............................. 106
Диаграммы Последовательности.......................................... 106
Создание диаграммы Последовательности ............ . 107
Удаление диаграммы Последовательности............................. 108
Содержание
xi
Связывание файлов и ссылок с диаграммой Последовательности........109
Панель инструментов диаграммы Последовательности...................109
Кооперативные диаграммы...............................................110
Создание Кооперативной диаграммы...................................111
Удаление Кооперативной диаграммы.................................. 111
Связывание файлов и ссылок с Кооперативной диаграммой..............111
Панель инструментов Кооперативной диаграммы....... . .............112
Работа с действующими лицами на диаграмме Взаимодействия..............113
Работа с объектами....................................................113
Добавление объектов к диаграмме Взаимодействия................ . 114
Удаление объектов с диаграмм Взаимодействия.......................114
Спецификации объекта..............................................114
Именование объекта..................., . .........................115
Соотнесение объекта с классом.....................................116
Определение устойчивости объекта.................................. 117
Работа с сообщениями............................. . . ............ . 118
Добавление сообщений на диаграммы Взаимодействия . ........... . 118
Добавление сообщений на диаграмму Последовательности. . ..........118
Удаление сообщений с диаграммы Последовательности.............. 119
Изменение порядка сообщений на диаграмме Последовательности.......120
Нумерация сообщений на диаграмме Последовательности...............120
Просмотр активизации на диаграммах Последовательности.............121
Добавление сообщений на Кооперативную диаграмму . ................122
Удаление сообщений с Кооперативной диаграммы...................... 123
Нумерация сообщений на Кооперативной диаграмме.....................123
Добавление потоков данных к Кооперативной диаграмме................123
Спецификации сообщений............................................ 124
Именование сообщений.............................................. 124
Соотнесение сообщения с операцией ................................ 126
Установка синхронизации сообщений................................. 127
Установка частоты сообщения........................................ 128
Работа с примечаниями................................................ 129
Добавление примечаний на диаграммы Взаимодействия..................129
Работа со скриптами.................................................. 130
Переключение между диаграммами Последовательности
и Кооперативными диаграммами.........................................131
Двухэтапный подход к разработке диаграмм Взаимодействия...............132
Упражнение .......................................................... 134
5 Клоссы и пакеты 145
Логическое представление модели Rose.................................146
Диаграммы Классов , . .............................................146
Что такое класс? .................................................146
Выявление классов.................................................147
Создание диаграмм Классов.........................................148
Удаление диаграмм Классов....................................... 149
Организация элементов на диаграмме классов....................... . 149
Связывание файлов и ссылок с диаграммой Классов...................150
Панель инструментов диаграммы Классов.............................151
Работа с классами..................... - -..........................152
Добавление классов................................................152
Удаление классов..................................................154
Спецификации класса.............................................. 155
Добавление параметризованного класса..............................156
Задание аргументов параметризованного класса . . .................157
Создание класса-наполнителя....... . . . .......................158
Добавление утилиты класса....................................... 158
Добавление утилиты параметризованного класса......................159
XII
Содержание
Создание утилиты класса-наполнителя.......................159
Добавление метакласса.....................................150
Именование классов........................................160
Назначение стереотипа для класса..........................161
Пограничные классы......................................161
Кл ассы -сущности.......................................162
Управляющие классы......................................162
Задание видимости класса..................................168
Задание множественности класса............................168
Задание требований к хранению класса......................169
Задание устойчивости класса............................. 169
Задание параллелизма класса...............................169
Создание абстрактного класса..............................170
Просмотр атрибутов класса.................................170
Просмотр операций класса..................................170
Просмотр связей класса....................................170
Использование вложенных классов...........................171
Связывание файлов и ссылок с классом......................171
Просмотр диаграмм Взаимодействия, содержащих классы.......173
Работа с примечаниями.......................................173
Добавление примечаний.....................................173
Удаление примечаний.......................................174
Работа с пакетами...................................,.......174
Добавление пакетов....................................... 174
Удаление пакетов..........................................175
Упражнение..................................................175
6 Атрибуты и операции. 161
Работа с атрибутами................................................. 182
Выявление атрибутов............................................. 182
Добавление атрибутов..............................................183
Удаление атрибутов............................................... 184
Спецификации атрибута........................................... 185
Задание типа данных атрибута......................................185
Назначение стереотипа для атрибута.............................. 186
Задание начальных значений атрибута............................ 186
Задание видимости атрибута........................................187
Задание метода локализации атрибута...............................190
Определение статичного атрибута...................................190
Определение производного атрибута.................................191
Работа с операциями..................................................192
Выявление операций................................................192
Операции реализации............................................ 192
Операции доступа................................................192
Вспомогательные операции........................................193
Добавление операций...............................................193
Удаление операций................................................ 194
Спецификации операции.............................................195
Задание возвращаемого класса операции.............................196
Назначение стереотипа для операции.................... ,..........196
Задание видимости операций........................................197
Добавление аргументов к операции..................................199
Определение протокола операции ...................................200
Определение уточнений операции....................................201
Задание исключительных ситуаций операции..........................201
Определение размера операции......................................201
Задание времени выполнения операции........................... 202
Задание параллелизма операции.....................................202
Содержание
XIII
Задание предусловий операции . . ................................202
Определение постусловий операции................................ 203
Определение семантики операции............................... 203
Связывание файлов и ссылок с операцией ........................ 204
Изображение атрибутов и операций на диаграммах Классов. . .........205
Изображение атрибутов......................................... 206
Изображение операций............................................ 207
Изображение видимости............................................209
Изображение стереотипов......... . . . . .......... ... . . 210
Соотнесение операций с сообщениями . ... ... ... .... . . . . . . . . 211
Соотнесение операций с сообщениями на диаграммах Взаимодействия .212
Упражнение ....................................................... 213
7 Связи 249
Связи....................................................... 220
Типы связей................................................ 220
Выявление связей............................ . . ...... . 221
Ассоциации................................................ 222
Создание ассоциаций . . . . . . . . . . . . .' . . . . . . . . . . . . . . . 224
Удаление ассоциаций........................................ 225
Зависимости. . ............................ . .............. 226
Создание зависимостей.....................7..........‘ '... . . 227
Удаление зависимостей..................................... 228
Зависимости между пакетами................................... 228
Создание зависимостей между пакетами........... . . 229
Удаление зависимостей между пакетами. ................. 229
Агрегации....................................... . ... ....... 230
Создание агрегаций • .................. . . ; . . ...... .231
Удаление агрегаций............................... ..... . . . 231
7 Обобщения..................................... ......... . . 232
Создание обобщений........................................ 233
Удаление обобщений....................................... . . 233
Работа со связями . . ............................... ....... . 234
Задание множественности................... . < . , . . . . . . . . 234
Использование имен связей......... . .. . . 235
Использование стереотипов........ . . . . .... . . . . . . .. ... . . 236
Использование ролей............. ... . . . ..... . ... / . > 4.. - 236
Задание управления экспортом ...................... 238
Использование статичных связей . . . . . . . .... . . . . . Л . . 238
Использование дружественных связей . . . . . ........... . ... . . 239
Задание метода включения................................. 239
Работа с квалификаторами.......... ........... . . . . . . ... . 240
Работа с элементами связи................. ... . . . 241
Использование ограничений................... . .... 242
Упражнение............................. . ... . . . . ... . . . 243
и
8 Поведение объекта 245
Диаграммы Состояний.............................................. 246
Создание диаграмм Состояний ................................... 247
Добавление состояний..........7.7............................... 247
Добавление деталей к описанию состояния........................ 248
Деятельность.............................................. 248
Входное действие............................................. 248
Выходное действие........................................... 248
Добавление переходов . . ... . . ... . .7 .......................250
Детальное описание перехода......................................251
Событие................................................ . 251
xiv Содержание
Ограждающее условие . ......................................251
Действие....................................................252
Задание специальных состояний.............................. . 253
Начальное состояние........................................ 253
Конечное состояние..........................................253
Использование вложенных состояний............... . . .........253
Упражнение.......................................................255
9 Представление Компонентов 259
Что такое компонент?............................................ 260
Типы компонентов.................................................260
Диаграммы Компонентов............................................. 261
Создание диаграмм Компонентов.................................. 262
Добавление компонентов...........................................262
Определение деталей компонента................................. 264
Связывание файлов и ссылок с компонентом..................... 267
Добавление зависимостей между компонентами.......................268
Упражнение.........................................................269
10 Представление Размещения 275
Диаграммы Размещения...........................................276
Открытие диаграммы Размещения.............................. 276
Создание процессоров........................................276
Добавление деталей к описанию процессора.................• . 278
Добавление устройств............................ . . . . . 279
Добавление деталей к описанию устройства................... 281
Добавление связей...........................................282
Добавление деталей к описанию связей............,...........282
Добавление процессов .......................... ............ 283
Упражнение.....................................................285
11 Знакомство с процессом генерации программного кода
с помощью Rational Rose .287
Подготовка к генерации программного кода. . ...................... 288
Этап первый: проверка модели.................................... 288
Нарушения правил доступа.......................................289
Проверка, специфичная для языка............................... 290
Этап второй: создание компонентов................................ 290
Этап третий: отображение классов на компоненты.................. 290
Этап четвертый: установка свойств генерации программного кода.....291
Клонирование наборов свойств................................. 293
Удаление наборов свойств.......................................293
Этап пятый: выбор класса, компонента или пакета...................294
Этап шестой: генерация программного кода..........................294
Результаты генерации.............................................. 295
12 Генерация программного кода C++ и Visual C++297
Свойства генерации программного кода C++...............................299
Свойства проекта................................................... 299
Свойства классов....................................................302
Свойства атрибутов ............................................. 304
Свойства операций...................................................305
Свойства спецификаций модулей (файлов заголовков)...................306
Свойства тел модулей (файлов реализации) ...........................307
Свойства ассоциаций.................................................308
Свойства ролей..................................................... 309
Содержание
XV
Свойства агрегаций (связей Has)...................................312
Свойства зависимостей........................................... 313
Свойства подсистем................................................314
Свойства категорий классов........................................315
Свойства обобщений................................................315
Генерируемый программный код....................................... 315
Классы............................................................315
Генерируемый файл заголовка....................................317
Генерируемый файл реализации...................................322
Атрибуты..........................................................326
Операции..........................................................329
Двунаправленные ассоциации.....................................331
Однонаправленные ассоциации.......................................336
Ассоциации с множественностью "один ко многим"....................337
Ассоциации с множественностью "многие ко многим"..................340
Ассоциации с ограниченной множественностью........................343
Рефлексивные ассоциации.......................................... 347
Агрегации по значению (связи композиции)..........................349
Агрегации по ссылке...............................................350
Связи зависимости.................................................352
Связи обобщения ..................................................353
Параметризованные классы..........................................355
Пример генерируемого программного кода C++........................357
Упражнение..........................................................358
13 Генерация программного кода Javo 361
Свойства генерации программного кода Java . ........................362
Свойства проекта .................................................363
Свойства классов................................................ 364
Свойства атрибутов................................................364
Свойства операций.................................................364
Свойства модулей................................................ 365
Свойства ролей ...................................................365
Генерируемый программный код........................................366
Классы...........................................................366
Раздел сведений об авторских правах............................367
Атрибуты..........................................................368
Операции......................................................... 369
Двунаправленные ассоциации....................................... 371
Однонаправленные ассоциации.......................................372
Ассоциации с множественностью "один ко многим"....................373
Ассоциации с множественностью "многие ко многим"..................374
Рефлексивные ассоциации...........................................374
Агрегации......................................................- . 375
Связи зависимости................................................ 376
Связи обобщения...................................................377
Пример генерируемого программного кода Java.......................377
Упражнение.......................‘..................................378
14 Генерация программного кода Visual Basic 381
Свойства генерации программного
кода Visual Basic......................................................382
Свойства классов.................................................. 383
Свойства атрибутов .................................................384
Свойства операций . . . . ....................................... 384
Свойства спецификаций модулей................................... 385
Свойства ролей .................................................... 386
XVI __________ Содержание
Свойства обобщений...............................................367
Использование Мастера генерации кода
(Code Generation Wizard) в Rose 98 ............................. 388
Использование Code Update Tool в Rose 98i..........................393
Генерируемый программный код.................................... 398
Классы....................................................... 399
Атрибуты ..................................................... 401
Операции....................................................... 403
Двунаправленные ассоциации . . . ................-. .............405
Однонаправленные ассоциации .................................. 407
Ассоциации с множественностью "один ко многим"............ . . . 408
Ассоциации с множественностью "многие ко многим” ...... . ... . 409
Рефлексивные ассоциации. ............................. ... . . . 411
Агрегации по значению (связи композиции) ......... . . .• . *. . . . 412
Агрегации по ссылке................................. . . . . . . . 414
Связи зависимости................................. . . . . . . . 415
Связи обобщения.............................................. 416
Параметризованные классы.........................................417
Пример генерируемого программного кода Visual Basic............ 417
Упражнение.........................................................418
15 Генерация программного кода PowerBuilder 421
Свойства генерации программного кода PowerBuilder..................424
Свойства атрибутов............................................. 425
Свойства спецификаций модулей ................................. 425
Свойства тел модулей................( ......................... 426
Генерируемый программный код..........* . . . ....................426
Классы ........................................................ 426
Создание невизуальных объектов................... . . ... . . 427
Создание окон............................................... 428
Создание объектов приложений.......................... ... . , 429
Атрибуты...................................................... 430
Операции.......................;................................ 430
Двунаправленные ассоциации.......................................432
Однонаправленные ассоциации..................................... 433
Ассоциации с множественностью "один ко многим". ................433
Ассоциации с множественностью "многие ко многим"................434
Рефлексивные ассоциации..........................................436
Агрегации.................................................. 436
Связи зависимости................................................437
Связи обобщения................................................. 437
Пример генерируемого программного кода PowerBuilder........... . 438
Упражнение.........................................................439
16 Генерация программного кода CORBA/IDL 441
Свойства генерации программного кода CORBA/IDL...................... 442
Свойства проекта................................................. 442
Свойства классов................................................ 443
Свойства атрибутов............................................... 445
Свойства операций ............................................... 445
Свойства спецификаций модулей..................................... 446
Свойства тел модулей........................................... 447
Свойства ассоциаций (ролей)..................................... . 448
Свойства агрегаций (Has-связей) (98)............. . . .......... 449
Свойства зависимостей.......................................... 450
Свойства подсистем (98).......................................... 450
Генерируемый программный код........................................ 451
Содержание
xvii
Классы............................................................451
Программный код, генерируемый для различных типов CORBA/IDL. . . . 453
Атрибуты..........................................................456
Атрибуты, генерируемые для интерфейса..........................457
Атрибуты, генерируемые для Ту ре Def. 457
Атрибуты, генерируемые для перечисления........................457
Атрибуты, генерируемые для константы...........................457
Атрибуты, генерируемые для исключения..........................457
Атрибуты, генерируемые для структуры . 458
Атрибуты, генерируемые для объединения.........................458
Операции..........................................................459
Операции, генерируемые для интерфейса..........................459
Операции, генерируемые для других типов CORBA..................459
Двунаправленные ассоциации........................................460
Двунаправленные ассоциации, генерируемые для TypeDef...........461
Двунаправленные ассоциации, генерируемые для перечисления......461
Двунаправленные ассоциации, генерируемые для константы.........461
Двунаправленные ассоциации, генерируемые для исключения........461
Двунаправленные ассоциации, генерируемые для структуры.........462
Двунаправленные ассоциации, генерируемые для объединения.......462
Однонаправленные ассоциации.......................................462
Ассоциации с множественностью "один ко многим”. ..................463
Ассоциации "один ко многим”, генерируемые для TypeDef..........465
Ассоциации "один ко многим", генерируемые для перечисления.....465
Ассоциации "один ко многим”, генерируемые для константы........465
Ассоциации "один ко многим", генерируемые для исключения.......465
Ассоциации "один ко многим", генерируемые для структуры........466
Ассоциации "один ко многим", генерируемые для объединения......466
Ассоциации с множественностью "многие ко многим”...............467
Ассоциации с множественностью "многие ко многим", генерируемые
для других типов CORBA........................................ 468
Ассоциации с ограниченной множественностью........................468
Ограниченные ассоциации, генерируемые для исключения...........469
Ограниченные ассоциации, генерируемые для структуры............469
Ограниченные ассоциации, генерируемые для объединения..........469
Ограниченные ассоциации, генерируемые для других типов CORBA . . . 469
Рефлексивные ассоциации...........................................469
Рефлексивные ассоциации, генерируемые для исключения...........470
Рефлексивные ассоциации, генерируемые для структуры............470
Рефлексивные ассоциации, генерируемые для объединения ....... 471
Рефлексивные ассоциации, генерируемые для других типов CORBA . . . 471
Агрегации........................................................471
Связи зависимости.................................................471
Связи обобщения...................................................472
Обобщения, генерируемые для TypeDef............................472
Обобщения, генерируемые для перечисления ......................473
Обобщения, генерируемые для константы..........................473
Обобщения, генерируемые для исключения....................... 473
Обобщения, генерируемые для структуры..........................474
Обобщения, генерируемые для объединения........................474
Пример генерируемого программного кода CORBA/IDL..................474
Упражнение . . . 474
17 Генерация кода DDL 477
Свойства генерации кода DDL ..........................................478
Свойства проекта...................................................479
Свойства атрибутов ............................................... 480
Генерируемый код.........;........................................... 481
XVlii Содержание
Классы и атрибуты..............................’.................481
Изменение имени таблицы........................................ 482
Установка первичного ключа.....................................482
Изменение типа данных или длины поля...........................483
Контроль за использованием неопределенных (NULL) значений в поле . . 484
Двунаправленные ассоциации........................................484
Изменение имен внешних ключей................................ . 484
Создание индексов.............................................. 485
Множественность ассоциаций.....................................486
Однонаправленные ассоциации.......................................486
Множественность ассоциаций.....................................486
Рефлексивные ассоциации...........................................486
Агрегации.........................................................487
Связи зависимости................................................. 488
Связь обобщения...................................................488
Пример генерируемого кода DDL.....................................489
Упражнение..........................................................490
18 Генерация схем Огас!е8 491
Свойства генерации кода Otacle8........ . .........................492
Свойства проекта..................................................493
’ Свойства классов.....................................................494
Свойства атрибутов................................................495
Свойства операций.................................................495
Свойства спецификаций модулей.....................................496
Свойства ролей....................................................497
Создание объектов Огас)е8...........................................497
Объектные типы....................................................497
Реляционная таблица...............................................501
Реляционное представление.........................................506
Объектное представление...........................................509
Изменяемые массивы (VARAAYs)..................................... 512
Вложенные таблицы.................................................514
Объектная таблица.................................................516
Генерируемый код..................................................518
19 Знакомство с процессом обратного проектирования
с помощью Rational Rose 519
Элементы модели, генерируемые во время обратного проектирования...520
Итеративная разработка............................................523
20 Обратное проектирование программного кода C++ 525
Этапы обратного проектирования
программного кода C++..................................................526
Этап первый: запуск приложения C++ Analyzer.........................526
Этап второй: создание нового проекта................................527
Этап третий: установка заголовка проекта............................527
Этап четвертый: установка списка каталогов......................... 528
Этап пятый: установка списка расширений............................ 529
Этап шестой: выбор базового проекта.................................530
Этап седьмой: выбор файлов для обратного проектирования........... 530.
Этап восьмой: анализ файлов.........................................531
Этап девятый: установка параметров экспорта....................... 532
Этап десятый: экспорт a Rose........................................538
Этапы обратного проектирования программного кода Visual C++............538
Этап первый: запуск мастера обратного проектирования................538
Содержание
XIX
Й;':;Ьа.Ж
Этап второй: выбор проекта (проектов) для обратного проектирования . . . 539
Этап третий: анализ и завершение................................540
Элементы модели, генерируемые из программного кода C++ . . .......540
Классы....................................................... 540
Элементы данных............................................... . 540
Функции-члены...................................................541
Дружественные объявления (friend declarations) классов..........542
Шаблоны классов................................................ 543
Связи наследования..............................................543
21 Обратное проектирование программного кода Java 545
Этапы обратного проектирования................................... 546
Элементы модели, генерируемые из программного кода Java ..........547
Классы............................................ . ..........548
Атрибуты.................................... , . ............549
Методы...................................................... 551
Интерфейсы.................................................... 551
Связь наследования............................................ 553
22 Обратное проектирование программного кода Visual Basic 555
Этапы обратного проектирования ................................... 556
Элементы модели, генерируемые из программного кода Visual Basic....558
Формы и управляющие элементы................................. . . 558
Модули классов.................... . .........................560
Модули........................................................ 561
Операторы Implements.............................................562
23 Обратное проектирование программного кода PowerBuilder 563
Этапы обратного проектирования......................................565
Элементы модели, генерируемые из программного кода PowerBuilder.....566
Объект приложения.................................................567
Невизуальные пользовательские объекты.............................567
Окна..............................................................568
Атрибуты......................................................... 570
Операции......................................................... 570
Окна данных. . . ...... ....... . ................................570
Структуры. .......................................................571
Меню........................................................... 572
Связи наследования. ..............................................573
Связи ассоциации............................................... 573
24 Обратное проектирование схем Огас1е8 575
Этапы обратного проектирования схемы Oracle8....................... 576
Элементы модели, генерируемые из схемы Oracled ......................577
Введение
В быстроразвивающейся сфере разработки объектно-ориентированных приложений становится все
труднее и труднее создавать и поддерживать приложения, обладающие высоким качеством, укладыва-
ясь при этом в разумные временные рамки. Унифицированный язык моделирования (Unified Modeling
Language, UML) появился как ответ на потребность в универсальном языке объектного моделирова-
ния, который могла бы использовать любая компания, UML — своего рода вариант чертежа, принятый
в индустрии информационных технологий. Это метод детального описания архитектуры системы.
С помощью такого чертежа легче создавать и сопровождать систему, вносить в нее требуемые измене-
ния и убеждаться в том, что она выдержит это.
Существует множество прекрасных книг, в которых рассматриваются процессы быстрой разра-
ботки приложений, объектно-ориентированного анализа и проектирования, объектного моделиро-
вания и UML. В данной книге описывается проектирование систем на языке UML с помощью
программных продуктов Rational Rose 98 и 98i. Rose представляет собой один из немногих инстру-
ментов, обеспечивающих быструю разработку приложений с использованием языка UML. Этот ин-
струмент поддерживает диаграммы Вариантов Использования (Use Case), Последовательности
(Sequence), Кооперативные диаграммы (Collaboration), диаграммы Состояний (Statechart), Компо-
нентов (Component) и Размещения (Deployment). С помощью свойств прямого и обратного проекти-
рования (reverse engineering) он позволяет осуществлять генерацию кода и обратное
проектирование для C++, Java, Visual Basic и Огас1е8, Доступны расширения (add-ins) для PowerBuil-
der, Forte и других объектно-ориентированных языков программирования, что увеличивает функци-
ональные возможности Rose.
Для кого предназначено эта книга
Книга предназначена для начинающих программистов и для тех, кто уже имеет некоторый опыт рабо-
ты с языком UML в среде Rational Rose. Мы постарались ответить на следующие вопросы: что пред-
ставляет собой каждая диаграмма и конструкция языка UML, для чего используется каждый тип
диаграмм и их моделирование при помощи Rose.
В книге рассматриваются основные возможности Rose:
• Создание действующих лиц (actors), вариантов использования и диаграмм Вариантов
Использования
• Создание диаграмм Последовательности и Кооперативных диаграмм
• Создание классов, атрибутов, операций, связей и диаграмм Классов
• Создание диаграмм Состояний
• Создание компонентов и диаграмм Компонентов
• Создание диаграмм Размещения
• Применение языка UML и Rose для разработки полного детализированного проекта
вашей системы
• Использование предоставляемых Rose 98i новых возможностей, включая утилиту
Web Publisher и интеграцию с Visual C++
• Генерация кода на языках C++, Java, Visual Basic и PowerBuilder с помощью среды
разработки Rose
• Генерация схемы базы данных Огас1е8 с помощью Rose
• Генерация IDL и DDL с помощью Rose
• Обратное проектирование кода для языков C++, Java, Visual Basic и PowerBuilder
• Обратное проектирование схемы Огас1е8 с помощью Rose
xxii
Введение
Ф !л!:7 !: -
Вовсе не обязательно читать книгу последовательно. Она построена так, что каждая глава дает де-
тальное представление о каком-либо одном фрагменте модели Rational Rose. В конце большинства
глав приводятся упражнения, позволяющие приобрести некоторый опыт в практике использования
Rose и UML.
Если вы впервые работаете с Rose и UML, рекомендуем последовательно прочитать главы с 1 по
10 и выполнить упражнения, которые проведут вас через все этапы процесса моделирования систе-
мы ввода заказов для небольшой компании. Если вы уже знакомы с Rose и UML, то можете использо-
вать книгу как справочник по конкретным вопросам, касающимся Rose или UML.
Как организована книга
Книга состоит из следующих четырех разделов:
Введение в UML
В главах 1 и 2 дан обзор языка UML, процесса объектного моделирования и инструмента Rational
Rose. В главе 1 рассматриваются основы UML и Rational Rose. Обсуждаются различные типы диа-
грамм UML и их создание. Во второй главе содержится экскурс в среду разработки Rational Rose: опи-
сываются элементы ее пользовательского интерфейса и предоставляемые возможности.
Основы Rose
В главах с 3 по 10 представлено описание среды Rose. Рассматриваются создание и обновление диа-
грамм, добавление классов и их деталей, а также генерация отчетов.
Генерация кода
В главах с 11 по 18 описываются возможности Rose по генерации кода на языках C++, Java, Visual Basic,
PowerBuilder и Oracle8. Рассматривается, каким образом в этих языках программирования отобража-
ется каждая конструкция UML. Представлено большое количество примеров кода, сгенерированных
с помощью Rose. Показано, как генерировать код IDL и DDL непосредственно из вашей модели с по-
мощью Rose.
Обратное проектирование
В главах с 19 по 24 описываются поддерживаемые Rose возможности обратного проектирования.
В Rose предусмотрены средства обратного проектирования для большого количества различных язы-
ков программирования. В данных главах показано, что представляет собой этот процесс для языков
C++, Java, Visual Basic, PowerBuilder и Oracle8.
Дополнительное программное обеспечение
По мере изучения возможностей Rose мы будем создавать модели системы ATM и системы обработки
заказов. На Web-сайте издательства ’’Лори" (www. lory-press, ги) содержатся примеры моделей UML для
этих двух систем, а также примеры кода, генерируемого с помощью Rational Rose. Вы найдете также
несколько примеров сценариев Rose, которые представляют собой макросы, написанные на поставля-
емом вместе с Rose языке программирования, и примеры страниц HTML, генерируемых с помощью
новой утилиты Rose — Web Publisher. Включена также ссылка на Web-сайт компании Rational, где со-
держится вся информация о партнерах и продуктах этой компании, а также об объектном моделиро-
вании и UML. Наконец, если в качестве языка разработки приложений вы используете PowerBuilder,
то для генерации кода и обратного проектирования приложений можно применять расширение Po-
werBuilder add-in фирмы МЕТЕХ Systems.
Введение
xxiii
Как связаться с авторами
Несмотря на все усилия авторов, в любой книге возможно наличие ошибок. Если вы найдете какую-ли-
бо ошибку или несоответствие, а также что-либо, требующее разъяснений, мы оценим ваше участие.
Большим плюсом Rose, и UML является то, что они постоянно совершенствуются. Тем не менее,
как и в случае любой другой продукции индустрии информационных технологий, трудно отслежи-
вать и описывать все изменения. Если у вас возникнут какие-либо вопросы по поводу UML или Ratio-
nal Rose, пожалуйста, не стесняйтесь обращаться к нам. Вы можете связаться с Уэнди (wboggsdjps.net)
или с Майком (mboggsdjps.net). Посетите также Web-сайт компании Sybex по адресу www.sybex.com.
Предисловие научного редактора
русского издания
Книга Уэнди Боггс и Майкла Боггса "UML и Rational Rose" представляет собой первое в перевод-
ной литературе подробнейшее практическое руководство по применению Rational Rose — мирового
лидера в области инструментальных средств объектно-ориентированного анализа и проектирования.
Она очень удачно дополняет выпущенный недавно издательством "Мир" перевод книги Мартина Фау-
лера "UML в кратком изложении. Применение стандартного языка объектного моделирования", ко-
торая считается самым популярным введением в UML. Терминология данного перевода полностью
совпадает с терминологией книги Фаулера, перевод которой был первой попыткой систематическо-
го введения русскоязычной терминологии UML.
Унифицированный язык моделирования UML (Unified Modeling Language) — это преемник того
поколения методов объектно-ориентированного анализа и проектирования, которые появились в
конце 80-х и начале 90-х годов. Создание UML фактически началось в конце 1994 г., когда Гради Буч и
Джеймс Рамбо начали работу по объединению их методов Booch и ОМТ под эгидой компании Ratio-
nal Software. К концу 1995 г. они создали первую спецификацию объединенного метода, названного
ими Unified Method, версия 0.8. Тогда же в 1995 г. к ним присоединился создатель метода OOSE Ивар
Якобсон.
В 1996 г. OMG (Object Management Group) обратилась к объектно-ориентированному сообществу
с предложением создать стандартную нотацию для объектно-ориентированного анализа и соответст-
вующую семантическую метамодель. Первая версия UML (UML 1.0) появилась в январе 1997 г. как от-
вет на данное предложение. После ее обсуждения в сентябре 1997 г. на голосование в OMG была
представлена версия UML 1.1. В ноябре 1997 г. она была успешно утверждена и принята на вооруже-
ние практически всеми крупнейшими компаниями — производителями программного обеспечения
(Microsoft, IBM, Hewlett-Packard, Oracle, Sybase и др.). Кроме того, практически все мировые произво-
дители CASE-средств, помимо Rational Software, заявили о реализации поддержки UML в своих про-
дуктах (Paradigm Plus, System Architect, Microsoft Visual Modeler, Delphi, PowerBuilder и др.).
Создатели UML представляют его как язык для определения, представления, проектирования и
документирования программных систем, бизнес-систем и других систем различной природы. UML
определяет нотацию и метамодель. Нотация представляет собой совокупность графических объек-
тов, которые используются в моделях; она является синтаксисом языка моделирования.
По мнению Пола Хармона, одного из ведущих зарубежных аналитиков, 1999 год был годом UML.
Текущая версия UML — UML 1.3 — представлена в OMG в июне 1999 г. В 2000 году ожидается вы-
пуск модификации UML 1.4, а в 2001 году — версии UML 2.0, основное усовершенствование которой
идет по пути интеграции с другими технологиями, входящими в сферу деятельности OMG — CORBA,
XML и др.
В настоящее время идет процесс представления UML в качестве стандарта ISO. Преимущества
утверждения UML в качестве стандарта ISO очевидны: широкое признание языка, расширение рын-
ка для поддерживающих его продуктов. С другой стороны, существуют опасения, что длительный
процесс утверждения стандарта может привести к выхолащиванию языка из-за необходимости техни-
ческих и политических компромиссов.
А. Вендров
кандидат технических наук, доцент,
заведующий кафедрой информатики
Всероссийской государственной налоговой академии
глава
Введение в UML
Объектно-ориентированная парадигма
и визуальное моделирование
Типы графической нотации
Знакомство с диаграммами UML
Разработка программного обеспечения
с помощью визуального моделирования
2 Глава 1
Эта глава является введением в UML (Unified Modeling Language — Унифицированный Язык Модели-
рования), одну из наиболее распространенных нотаций моделирования, применяемых при разработке
объектно-ориентированных систем. Мы начнем с рассмотрения визуального моделирования и того,
как использовать его для структурирования приложений. Затем поговорим о возникновении языка
UML и об областях его применения. Наконец, будет описан сам процесс разработки и то, как моделиро-
вание вписывается в него.
U ML состоит из нескольких различных типов диаграмм. В этой главе дается их краткое описание.
Более подробно каждый их типов рассматривается в разделе "Основы Rose" главы 3.
Введение в объектно-ориентированную
парадигму
Термин "объектно-ориентированный" является сравнительно новым в компьютерной индустрии.
Компании активно работают, адаптируя эту технологию и интегрируя ее в существующие приложе-
ния. Большинство создаваемых сегодня приложений фактически уже являются объектно-ориентиро-
ванными. Но что это такое?
Объектно-ориентированная парадигма представляет другой способ описания приложений. С по-
мощью объектно-ориентированного подхода приложение делится на множество маленьких кусочков,
или объектов, относительно независимых друг от друга. Готовое приложение можно затем создать,
сложив эти объекты вместе. Вспомните, как строится дом из блоков. Первым этапом является созда-
ние или покупка нескольких базовых объектов — блоков различных типов. Полученные блоки можно
сложить вместе и построить целый дом. После того как вы разработали или приобрели базовые про-
граммные объекты, их можно сложить вместе, создав таким способом новое приложение.
Одним из главных преимуществ объектно-ориентированной парадигмы является то, что можно
разработать компоненты только один раз и затем использовать их снова и снова. Точно так же, как
одни и те же строительные блоки многократно используются при строительстве замка, дома или кос-
мического корабля, основные элементы объектно-ориентированного проекта и кода можно много-
кратно применять для создания инвентарной системы, бухгалтерской системы или системы
обработки заказов.
Итак, чем же объектно-ориентированная парадигма отличается от традиционного подхода к раз-
работке приложений? В соответствии с традиционным подходом основное внимание должно уделя-
ться информации, с которой работает система. Мы спрашиваем пользователей, какая информация
им нужна, проектируем базы данных для хранения этой информации, создаем экраны для ее вывода и
встраиваем возможность распечатывать отчеты. Иначе говоря, прежде всего мы "фокусируемся" на
самой информации, а тому, что с ней делать, т.е. поведению системы, уделяем меньше внимания. Та-
кой подход называется ориентированным на данные (data-centric), он применялся при разработке ты-
сяч различных систем в течение многих лет.
Ориентированный на данные подход неоценим при проектировании баз данных и систем сбора
информации, но при разработке бизнес-приложений возникают проблемы. Одной из главных являет-
ся то, что требования к системе могут со временем меняться. Система, ориентированная на данные,
легко приспосабливается к изменениям базы данных, однако изменить деловые правила или поведе-
ние такой системы значительно труднее.
Для решения этой проблемы и была создана объектно-ориентированная парадигма. При этом под-
ходе внимание уделяется как информации, так и поведению, что позволяет создавать гибкие систе-
мы, допускающие изменение их поведения и/или содержащейся в них информации.
Указанные преимущества могут быть реализованы только при правильном проектировании сис-
тем. Это требует знания нескольких принципов объектно-ориентированного подхода: инкапсуляции,
наследования и полиморфизма.
Инкапсуляция
В объектно-ориентированных системах данные комбинируются с конкретным поведением, т.е. с дей-
ствиями, осуществляемыми над ними. Все это объединяется в объект. Данный процесс называется ин
катуляцией. По-другому ее можно описать, сказав, что мы разделяем приложение на небольшие
фрагменты связанной функциональности. Допустим, что у нас имеется информация, касающаяся бан-
ковского счета: номер счета, баланс, имя и адрес владельца, тип счета, начисляемые на него проценты
и дата открытия. Со счетом также связаны определенные действия: открыть, закрыть счет, положить
Введение в UML
или сиять некоторую сумму денег, изменить тип, владельца или адрес. Вся эта информация и действия
(поведение) совместно инкапсулируются в объект account (счет). В результате все изменения банков-
ской системы, связанные со счетами, могут быть реализованы в одном только объекте account. Это на-
поминает покупку всех необходимых товаров в одном магазине (оле-s юр shopping).
Еще одним преимуществом инкапсуляции является то. что она ограничивает последствия измене-
ний, вносимых в систему. Представьте себе, что система — это водоем, а изменения в требованиях к
ней - большой камень. Вы бросаете камень в воду, и огромные волны немедленно начинают распро-
страняться но всех направлениях. Они проходят по всему озеру, разбиваются о его берега, отражаются
от ник и сталкиваются с другими волнами. Часть воды может даже выйти на берег. Иначе говоря, паде-
ние камня в воду вызывает рябь. Теперь мы инкапсулируем озеро, разделив его на небольшие '’фрагмен-
ты”, разделенные барьерами. Опять изменения в требованиях ударяют по системе, Бах!!! Во все
стороны начинают расходиться волны, Но теперь они не могуг пройти за барьеры и останавливаются
там. Таким образом, инкапсулировав озеро, мы ограничили эффект ряби от падения камня (см<
рис. 1.1 у
Рис. 1.1
Инкопсуляция:
модель озеро
Теперь применим идею инкапсуляции к банковской системе. Допустим, управленце банка поста -
ловило, что если клиент имеет кредитный счет, этот кредит может быть использован как овердрафт
на его счете ’до востребования". В не инкапсулированной системе мы начинаем с узкой апранленного
атгхчша изменений, которые необходимо внести в систему. Как правило, мы не знаем, где в системе
находятся все обращения к функции снятия со счета, поэтому приходится искать их везде. После
тога как они найдены, мы должны внести в них некоторые изменения, чтобы реализовать новые тре-
бования. Если мы работаем тщательно, то, вероятно, сможем обнаружить около 80% случаев исполь-
зования данной функции. В инкапсулированной системе не требуется проводить такой детальный
анализ. Мы смотрим на модель системы и выявляем, где инкапсулировано соответствующее поведе-
ние (действие снятия со счета). После его локализации остается внести требуемые поправки одни
раз только в этом объекте ( и наша задача выполнена! Как видно на рис. 1.2, в модификации нуждается
только класс Account (Счет).
Рис. 12.
Инкопсуляция:
бонкояскоя
модель
Глава 1
Инкапсуляция подобна понятию сокрытия информации (information hiding). Это возможность
скрывать многочисленные детали объекта от внешнего мира. Внешним миром объекта является все
то, что находится вне объекта, включая остальную часть системы. Сокрытие информации предостав-
ляет то же преимущество, что и инкапсуляция — гибкость. Эта концепция рассматривается подробнее
в главе 6.
Наследование
Наследование — вторая из фундаментальных объектно-ориентированных концепций. Нет, она никак не
связана с теми миллионами долларов, которые вы оставляете маленькому Джонни, или с формой носа,
доставшейся вам от вашего отца. В объектно-ориентированных системах наследование представляет со-
бой механизм, позволяющий создавать новые объекты, основываясь на уже существующих. Порождае-
мый (child) объектгьпотомок наследует свойства порождающего, родительского (parent) объекта.
Примеры наследования можно обнаружить в природе. Существуют сотни различных типов млеко-
питающих: кошки, собаки, люди, киты и т.д. У каждого из них имеются уникальные особенности, но
есть и общие характеристики для всей группы, такие, как наличие волос, принадлежность к тепло-
кровным и воспитание потомства. В объектно-ориентированных терминах объект "млекопитающие"
имеет общие характеристики. Он порождает объекты-потомки: "кошка", "собака", "человек", "кит" и
другие. Объект "собака" наследует характеристики объекта "млекопитающие", но в то же время имеет
и свои собственные, например бегание по кругу и пускание слюней. Объектно-ориентированная па-
радигма переняла идею наследования у природы (см. рис. 1.3), так что мы можем применять эту кон-
цепцию к нашим системам.
Рис. 1.3.
Наследование:
модель природы
Кит
Одним из основных преимуществ механизма наследования является простота его поддержки. Ког-
да происходит событие, влияющее на всех млекопитающих, изменение надо внести только в родите-
льский объект, а все потомки автоматически его наследуют. Если млекопитающие, например,
внезапно станут холоднокровными, достаточно будет изменить объект "млекопитающие". Кошка, со-
бака, человек, кит и все другие объекты-потомки автоматически наследуют новую характеристику.
В качестве примера наследования в объектно-ориентированных системах можно привести окна.
Допустим, имеется большая система, содержащая 125 окон. Однажды потребовалось вывести во всех
окнах сообщение. В системе без наследования придется внести изменение в каждое из этих
125 окон — довольно трудоемкая задача. В объектно-ориентированной системе окна являются потом-
ками какого-то общего предка. Все, что требуется сделать в таком случае, — внести изменение в роди-
теле. Остальные окна автоматически наследуют его (см. рис. 1.4).
В банковской системе наследование можно применять для работы с различными типами счетов.
Наш гипотетический банк обслуживает четыре типа счетов: до востребования (checking), сберегате-
льный (savings), кредитный (credit) и депозитный сертификат. Эти различные типы счетов имеют
сходные черты, к которым относятся номер счета, ставка процента и владелец. Итак, можно создать
родительский объект account (счет) с общими характеристиками всех счетов. Объекты-потомки будут
иметь наследуемые и свои собственные уникальные характеристики. Например, кредитный счет бу-
дет солеожать лимит кредита и размер минимального взноса, а депозитный сертификат — срок
Введение в UML
платежа. Изменения в родительском объекте повлияют на всех потомков, но потомки могут адапти-
роваться и самостоятельно, не влияя друг на друга и на своего предка.
Рис. 1.4.
Наследование:
модель окон
Корневое окно
Полиморфизм
Третий принцип объектной ориентации — это полиморфизм. В словаре данный термин определен как
проявление различных форм, стадий или типов. Полиморфизм означает наличие множества форм
или реализаций конкретной функциональности. Как и в случае наследования, полиморфизм можно
наблюдать в природе. Получив команду или реализуя функцию ’’Говорить’', человек может ответить
"Как дела?", собака скажет "Гав", кошка — "Мяу" или скорее всего просто проигнорирует вас.
В терминах объектно-ориентированных систем это означает, что конкретные функциональные
возможности могут иметь множество реализаций. Допустим, что мы разрабатываем систему рисова-
ния графиков. Когда пользователь хочет что-то начертить — будь то линия или прямоугольник, систе-
ма должна выполнить команду Draw (нарисовать). Наша система включает множество типов
различных форм, каждая из которых содержит поведение, позволяющее ей нарисовать себя. Итак,
когда пользователь хочет начертить круг, запускается команда draw() объекта "круг". С помощью по-
лиморфизма система определяет, какую фигуру она должна нарисовать. Без полиморфизма код функ-
ции draw () выглядит приблизительно следующим образом:
Function Shape. drawMeO
{
CASE Shape.Type
Case "Circle"
Shape.d rawCi rcle();
Case "Rectangle"
Shape. drawRectangleO;
Case "Line"
Shape. drawLineO;
END CASE
I
}
При использовании полиморфизма код для рисования представляет собой обращение к функции
drawMeO вычерчиваемого объекта, например:
Function draw()
Shape. drawMeO;
}
При этом каждая форма (круг, линия, прямоугольник и т.д.) должна содержать собственную функ-
цию drawMeO для ее рисования.
Одним из преимуществ полиморфизма, как и других принципов объектной ориентации, явля-
ется простота поддержки. Что случится, например, если потребуется нарисовать треугольник?
Если полиморфизм не используется, придется добавить к объекту Shape новую функцию drawTri-
angle(). Кроме того, необходимо будет модифицировать функцию drawMeO этого объекта, чтобы
привести в соответствие с новым типом формы. При применении полиморфизма достаточно со-
здать новый объект "треугольник" с функцией drawMeO для рисования. Функцию Dr aw О, иницииоую-
щую операцию рисования, изменять не требуется.
6 Глава 1
Визуальное моделирование
Собираясь сделать пристройку к дому, вы, вероятно, не начнете с того, что купите кучу досок и будете
сколачивать их вместе различными способами, пока не получите что-то приблизительно подходящее.
Для работы вам понадобятся проекты и схемы, так что вы скорее всего начнете с планирования и
структурирования пристройки. Обратите внимание, что ваш результат будет тогда долговечнее. Вы
же не хотите, чтобы работа разрушилась от небольшого дождика.
В мире программного обеспечения то же самое делают для нас модели. Они представляют собой
проекты систем. Проект дома позволяет планировать его до начала непосредственной работы, мо-
дель дает возможность спланировать систему до того, как вы приступите к ее созданию. Это гаранти-
рует, что проект удастся, требования будут учтены и система сможет выдержать ураган последующих
изменений.
Изучая требования к системе, вы берете за основу запросы пользователей и преобразуете их в та-
кую форму, которую ваша команда сможет понять и реализовать. На основе этих требований вы гене-
рируете код. Формально преобразуя требования в код, вы гарантируете их соответствие друг другу, а
также возможность в любой момент вернуться от кода к породившим его требованиям. Этот процесс
называется моделированием. Моделирование позволяет проследить путь от запросов пользователей
к требованиям модели и затем к коду и обратно, не теряя при этом своих наработок.
Визуальным моделированием называется процесс графического представления модели с помощью не-
которого стандартного набора графических элементов. Наличие стандарта жизненно необходимо
для реализации одного из преимуществ визуального моделирования — коммуникации. Общение меж-
ду пользователями, разработчиками, аналитиками, тестировщиками, менеджерами и всеми остальны-
ми участниками проекта является основной целью визуального моделирования. Общение можно
обеспечить и с помощью невизуальной (текстовой) информации, но люди — это зрительно-ориенти-
рованные существа. Мы легче понимаем сложную информацию, если она представлена нам визуаль-
но, нежели описана в тексте. Создавая визуальную модель системы, мы можем показать ее работу на
различных уровнях — мы можем моделировать взаимодействие между пользователями и системой,
взаимодействие объектов внутри системы и даже взаимодействие между различными системами,
если хотим этого.
Созданные модели представляются всем заинтересованным сторонам, которые могут извлечь из
них ценную информацию. Например, глядя на модель, пользователи визуализируют свое взаимодей-
ствие с системой. Аналитики увидят взаимодействие между объектами модели. Разработчики поймут,
какие объекты нужно создать и что эти объекты должны делать. Тестировщики визуализируют взаи-
модействие между объектами, что позволит им построить тесты. Менеджеры увидят как всю систему
в целом, так и взаимодействие ее частей. Наконец, руководители информационной службы, глядя на
высокоуровневые модели, поймут, как взаимодействуют друг с другом системы в их организации. Та-
ким образом, визуальные модели предоставляют мощный инструмент, позволяющий показать разра-
батываемую систему всем заинтересованным сторонам.
Метод Буча, ОМТ и UML
Важный вопрос визуального моделирования — выбор графической нотации для описания различных
аспектов системы. Нотация должна быть понятна всем заинтересованным сторонам, иначе модель не
будет полезна. Множество разработчиков предлагали свои варианты решения этого вопроса. Из них
наибольшую поддержку получили метод Буча, технология объектного моделирования (ОМТ, Object
Modeling Technology) и унифицированный язык моделирования (UML, Unified Modeling Language).
Rational Rose 98i поддерживает все эти нотации. Однако большинством производителей и такими ко-
митетами по стандартам, как ANSI и Object Management Group (OMG), был принят стандарт UML.
Метод Буча назван по имени его изобретателя, Гради Буча (Grady Booch), работающего в корпора-
ции Rational Software руководителем по науке (Chief Scientist). Он написал несколько книг, в которых
обсуждаются необходимость и преимущества визуального моделирования, и разработал нотацию гра-
фических символов для описания различных аспектов модели. Так, объекты в этой модели представ-
ляются в виде облаков, иллюстрируя то, что они могут быть почти чем угодно. Нотация Буча
j предусматривает также различного вида стрелки для отображения разных типов отношений между
объектами (см. ниже раздел "Основы Rose" главы 3). На рис. 1.5 показаны примеры объектов и отно-
шений между ними в соответствии с нотацией Буча.
Введение в UML
Рис. 1.5.
*
Примеры символов
в нотации Буча
Снять деньги
со счета
ATM Screen
Card Reader
^>Card Number
♦ Accept Card()
♦Eject CardO
4 ♦Read CardO
Account
Account Number
Jfc>PIN
Balance
♦ OpenO
^Withdraw Funds()
Deduct Fund$()
^▼Verity Funds()
^Prompt ()
♦ Accept lnput()
Cash Dispenser
IB^Cash Balance
♦ Provide Cash()
♦ Provide ReceiptQ
Нотация ОМТ была разработана Джеймсом Рамбо (Dr. James Rumbaugh), написавшим несколько
книг о системном анализе и проектировании. В книге "System Analysis and Design" Рамбо рассматрива-
ет значимость моделирования систем с помощью компонентов реального мира, называемых объекта-
ми. Предложенная им нотация ОМТ получила широкое признание, ее поддерживают такие
стандартные промышленные инструменты моделирования программного обеспечения, как Rational
Rose и Select ОМТ. ОМТ использует более простую графику моделирования систем по сравнению с
методом Буча. Примеры объектов и связей в нотации ОМТ показаны на рис. 1.6.
Глава 1
Рис. 1.6.
Примеры символов
в нотации ОМТ
Снять деньги
со счета
ATM Screen
Card Reader
__ ____ _ _ _ __ __ _ _ . _ - - - и
^s/Gard Number
——»» I— _<
«
1
b Accept CardO |
b Eject Card ()
b Read CardO
^^*^^%АаМЛ>%ам¥1лрмММ<-НМ|'1 » r-zAd
Account
&/Account Number
ft? PIN
Balance
।x-iHilMiihlL a4* fci 1ч ча ейi t,bfct t'.^*»L-»rоб-.
Prompt() !
^►Acceptlnpirt() |
# Provide Cash() ,;
^►Provide ReceiptQ |
> Open()
jb Withdraw Funds()
®b Deduct Funded
ftb Verify Funded
M » P " IM*»*»*** И* ******—ей
Унифицированный язык моделирования (UML) является результатом совместных усилий Гради
Буча, Джеймса Рамбо, Ивара Якобсона (Ivar Jacobson), Ребекки Вирс-Брок (Rebecca Wirfs-Brock),
Питера Йордона (Peter Yourdon) и многих других. Якобсон первым описал процесс выявления и фик-
сации требований к системе в виде совокупностей транзакций, называемых вариантами использова-
ния (use case). Детально мы рассмотрим варианты использования в разделе "Основы Rose" в главе 3.
Якобсон также разработал метод проектирования систем под названием "Объектно-ориентирован-
ное проектирование программного обеспечения" (Object Oriented Software Engineering, OOSE), кон-
центрирующий внимание на анализе. Буч, Рамбо и Якобсон, о которых обычно говорят как о "трех
друзьях" (three amigos), работают в корпорации Rational Software. Их деятельность связана в основ-
ном со стандартизацией и усовершенствованием языка UML. Символы UML сильно напоминают но-
тации Буча и ОМТ, но содержат также элементы из других нотаций. На рис. 1.7 показан пример
нотации UML.
Введение в UML
Рис. 1.7.
Примеры символов
в нотации UML
Снять деньги
со счета
Card Reader
В/ Card Number
I > Accept Card() |
i 4 Eject Card() |
♦ Read Card() |
ATM Screen ।
{
*—————M—Wi 11 I I 11Ц
i
мтмжмжмкммотмпцтмнкмммкй
t
Prompt() i
^►AcceptlnputO |
i j
I Account 1
? 1
J
j — ....... i 11 чш
1 ^*4
i ft "Account Number J
I В?™ \
I Ж Balance ;
f i
I # OpenQ
I ♦ Withdraw Fundsf) !
। Deduct Funds()
I fiW Verify Funds()
I :
C^shDistmser
Hz Cash Balance
Provide Cash()
^k Provide Receipt)
(
I
I
1
Процесс консолидации методов, вошедших в состав UML, начался в 1993 г. Каждый из трех авто-
ров этого языка — Буч, Рамбо и Якобсон — начал внедрять в свои разработки идеи остальных двух ав-
торов. Такая унификация методологий продолжалась до 1995 г., когда появилась версия 0.8
Унифицированного Метода (Unified Method). В 1996 г. Унифицированный Метод был обновлен и
преобразован в UML. В 1997 г. UML 1.0 был ратифицирован и передан в группу Object Technology
Group, после чего его начали адаптировать у себя многие основные производители программного
обеспечения. Наконец, 14 ноября 1997 г. группа OMG объявила язык UML 1.1 промышленным стан-
дартом.
Диаграммы UML
UML позволяет создавать несколько типов визуальных диаграмм. Rational Rose поддерживает разра-
ботку большинства этих моделей, а именно:
• Диаграммы Вариантов Использования
♦ Диаграммы Последовательности
Кооперативные диаграммы
• Диаграммы Классов
• Диаграммы Состояний
• Диаграммы Компонентов
• Диаграммы Размещения
10
Глава 1
Диаграммы иллюстрируют различные аспекты системы. Например, Кооперативная диаграмма по-
казывает, как должны взаимодействовать объекты, чтобы реализовать некоторую функциональность
системы. У каждой диаграммы есть своя цель и своя аудитория.
Диаграммы Вариантов Использования
Диаграммы Вариантов Использования отображают взаимодействие между вариантами использова-
ния, представляющими функции системы, и действующими лицами, представляющими людей или си-
стемы, получающие или передающие информацию в данную систему. Пример диаграммы Вариантов
Использования для банковского автомата (Automated Teller Machine, ATM) показан на рис. 1.8.
Рис. 1.8.
Диаграмма
Вариантов
Использования
для ATM
Показать баланс
На диаграмме представлено взаимодействие между вариантами использования и действующими
лицами. Она отражает требования к системе с точки зрения пользователя. Таким образом, варианты
использования — это функции, выполняемые системой, а действующие лица — это заинтересованные
лица (stakeholders) по отношению к создаваемой системе. Диаграммы’показывают, какие действую-
щие лица инициируют варианты использования. Из них также видно, когда действующее лицо полу-
чает информацию от варианта использования. В сущности, диаграмма Вариантов Использования
может иллюстрировать требования к системе. В нашем примере клиент банка инициирует различ-
ные варианты использования: Снять деньги со счета, Перевести деньги, Положить деньги на счет,
Показать баланс, Изменить идентификационный номер, Произвести оплату. Банковский служащий
может инициировать вариант использования "Изменить идентификационный номер". От варианта
использования "Произвести оплату" идет стрелка к Кредитной системе. Действующими лицами могут
быть и внешние системы, в данном случае Кредитная система показана именно как действующее
лицо — она является внешней для системы ATM. Стрелку, направленная от варианта использования к
действующему лицу, показывает, что вариант использования предоставляет некоторую информацию
действующему лицу. В данном случае вариант использования "Произвести оплату" предоставляет Кре-
дитной системе информацию об оплате по кредитной карточке.
Из диаграмм Вариантов Использования можно получить довольно много информации о системе.
Этот тип диаграмм описывает общую функциональность системы. Пользователи, менеджеры проек-
тов, аналитики, разработчики, специалисты по контролю качества и все, кого интересует система в
целом, могут, изучая диаграммы Вариантов Использования, понять, что система должна делать.
Диаграммы Последовательности
Диаграммы Последовательности отражают поток событий, происходящих в рамках варианта исполь-
зования. Например, вариант использования "Снять'деньги" предусматривает несколько возможных
последовательностей: снятие денег, попытка снять деньги при отсутствии их достаточного количест-
ва на счету, попытка снять деньги по неправильному идентификационному номеру и некоторые дру-
гие. Нормальный сценарий снятия $20 со счета (при отсутствии таких проблем, как неправильный
идентификационный номер или недостаток денег на счету) показан на рис. 1.9.
Рис. 1.9.
Диаграмма
Последовательно-
сти для снятия
клиентом Джо $20
со счета
Джо: клиент
Устройство
чтения
карточки
Экран
ATM
Счет
Джо
Кассовый
аппарат
|1: Получение карточки)
.устройством чтения
2: Чтение номера карточки
13: Инициализация экрана
_______4: Открытие счета
5: Запрос регистрационного номера
6: Ввод регистрационного номера (1234)
7: Проверка ।
регистрационного номера
8: Запрос транзакции_______
9: Выбор транзакции (Снять деньг^
I
10: Запрос требуемой суммы денег
11: Ввод суммы денег ($20) >
12: Снятие денег совета ($20) |
113: Проверка суммы ($20)
*14: Вычет снятой суммы денег из счета ($20)
' 15: Выдача наличности ($20)
। 116: Выдача чека .
17: Выдача карточки клиенту| |
Эта диаграмма Последовательности отображает поток событий в рамках варианта использования
"Снять деньги". В верхней части диаграммы показаны все действующие лица и объекты, требуемые
системе для выполнения варианта использования "Снять деньги". Стрелки соответствуют сообщени-
ям, передаваемым между действующим лицом и объектом или между объектами для выполнения тре-
буемых функций. Следует отметить также, что на диаграмме Последовательности показаны именно
объекты, а не классы. Классы представляют собой типы объектов (см. главу 5). Объекты конкретны;
вместо класса Клиент на диаграмме Последовательности представлен конкретный клиент Джо.
Вариант использования начинается, когда клиент вставляет свою карточку в устройство для чте-
ния — этот объект показан в прямоугольнике в верхней части диаграммы. Он считывает номер кар-
точки, открывает объект "счет Джо" (account) и инициализирует экран ATM. Экран запрашивает у
Джо его регистрационный номер. Клиент вводит число 1234. Экран проверяет номер у объекта "счет
Джо" и обнаруживает, что он правильный. Затем экран предоставляет Джо меню для выбора, и тот
выбирает пункт "Снять деньги”. Экран запрашивает, сколько он хочет снять, и Джо указывает $20. Эк-
ран снимает деньги со счета. При этом он инициирует серию процессов, выполняемых объектом
"счет Джо". Во-первых, осуществляется проверка, что на этом счету лежат, по крайней мере, $20.
Во-вторых, из счета вычитается требуемая сумма. Затем кассовый аппарат получает инструкцию вы-
дать чек и $20 наличными. Наконец все тот же объект "счет Джо" дает устройству для чтения карто-
чек инструкцию вернуть карточку.
Итак, данная диаграмма Последовательности иллюстрирует последовательность действий, реали-
зующих вариант использования "Снять деньги со счета" на конкретном примере снятия клиентом
Джо $20. Глядя на эту диаграмму, пользователи знакомятся со спецификой своей работы. Аналитики
видят последовательность (поток) действий, разработчики — объекты, которые надо создать, и их
операции. Специалисты по контролю качества поймут детали процесса и смогут разработать тесты
для их проверки. Таким образом, диаграммы Последовательности полезны всем участникам проекта.
12
Глава 1
Кооперативные диаграммы
Кооперативные диаграммы отражают ту же самую информацию, что и диаграммы Последовательно-
сти. Однако делают они это по-другому и с другими целями. Показанная на рис. 1.9 диаграмма После-
довательности представлена на рис. 1.10 в виде Кооперативной диаграммы.
Как и раньше, объекты изображены в виде прямоугольников, а действующие лица в виде фигур.
Если диаграмма Последовательности показывает взаимодействие между действующими лицами и
объектами во времени, то на Кооперативной диаграмме связь со временем отсутствует. Так, можно
видеть, что устройство для чтения карточки выдает счету Джо инструкцию открыться, а счет Джо за-
ставляет это устройство вернуть карточку владельцу. Непосредственно взаимодействующие объекты
соединены линиями. Если, например, устройство для чтения карточки общается непосредственно с
экраном ATM, между ними следует провести линию. Отсутствие линии означает, что непосредствен-
ное сообщение между объектами отсутствует.
Рис. 1.10.
Кооперативная
диаграмма,
описывающая
процесс снятия
Джо со своего
счета $20
5: Запрос регистрационного номера
8: Запрос транзакции
10: Запрос требуемой суммы дене
Экран
ATM
Джо: клиент 6: Ввод регистрационного номера (1234)
9: Выбор транзакции (Снять деньги)
11: Ввод суммы денег ($20)
карточки
3: Инициализация экрана
Устройство
чтения
карточки
4: Открытие счета----
17: Выдача карточки клиенту
1: Получение карточки\ 2: Чтение номера
устройством чтения
Счет
Джо
7: Проверка регистрационного номера
12: Снятие денег со счета ($20)
13: Проверка суммы ($20)
14: Вычет снятой суммы денег из счета ($20)
15: Выдача наличности ($20)
16: Выдача чека
Кассовый
аппарат
Итак, на Кооперативной диаграмме отображается та же информация, что и на диаграмме После-
довательности, но нужна она для других целей. Специалисты по контролю качества и архитекторы
системы смогут понять распределение процессов между объектами. Допустим, что какая-то Коопера-
тивная диаграмма напоминает звезду, где несколько объектов связаны с одним центральным объек-
том. Архитектор системы может сделать вывод, что система слишком сильно зависит от
центрального объекта, и перепроектировать ее для более равномерного распределения процессов.
На диаграмме Последовательности такой тип взаимодействия было бы трудно увидеть.
Диаграммы Классов
Диаграммы Классов отражают взаимодействие между классами системы. Классы можно рассматри-
вать как типы объектов (см. главу 5). Например, счет Джо — это объект. Типом такого объекта можно
считать счет вообще, т.е. ’’Счет" (Account) — это класс. Классы содержат данные и поведение (дейст-
вия), влияющее на эти данные. Так, класс Account содержит идентификационный номер клиента и
проверяющие его действия. На диаграмме Классов класс создается для каждого типа объектов из диа-
грамм Последовательности или Кооперативных диаграмм. Диаграмма Классов для варианта исполь-
зования "Снять деньги" показана на рис. 1.11.
На диаграмме показаны связи между классами, реализующими вариант использования "Снять де-
ньги". В этом процессе задействованы четыре класса: Card Reader (устройство для чтения карточек),
Account (счет), ATM.Screen (экран ATM) и Cash Dispenser (кассовый аппарат). Каждый класс на диа-
грамме Классов изображается в виде прямоугольника, разделенного на три части. В первой части ука-
зывается имя класса, во второй — его атрибуты. Атрибут — это некоторая информация,
характеризующая класс. Например, класс Account (счет) имеет три атрибута: Account Number (номер
счета), PIN (идентификационный номер) и Balance (баланс). В последней части содержатся опера-
ции класса, отражающие его поведение (действия, выполняемые классом). Для класса Account
Введение в UML 13
ATM Screen
Рис. 1.11.
Диаграмма
Классов
для варианта
использования
"Снять деньги"
системы ATM
Card Reader
S^Card Number
♦ Accept Card()
Як Eject Card()
Як Read Card()
♦ Acceptlnput()
Account
Account Number
f£>PIN
Balance
Cash Dispenser
BtXash Balance
♦ Provide Cash()
Як Provide ReceiptQ i
^k Withdraw Funds()
Як Deduct Funds()
Як Verify FundsQ
определены четыре операции: Open (открыть), Withdraw Funds (снять деньги), Deduct Funds (вы-
честь сумму денег из счета) и Verify Funds (проверить наличие денег).
Связывающие классы линии показывают взаимодействие между классами. Так, класс Account
(счет) связан с классом ATM Screen (экран ATM), потому что они непосредственно взаимодействуют
друг с другом. Класс Card Reader (устройство для чтения карточек) не связан с классом Cash Dispenser
(кассовый аппарат), поскольку они не общаются друг с другом непосредственно. Обратите внимание,
что слева от некоторых атрибутов и операций имеются маленькие значки в виде висячего замка. Они
указывают, что атрибут или операция класса закрыта (private). Доступ к закрытым атрибутам или опе-
рациям возможен только из содержащего их класса. Account Number, PIN и Balance — закрытые атри-
буты класса Account. Кроме того, закрытыми являются операции Deduct Funds и Verify Funds.
Разработчики используют диаграммы Классов для реального создания классов. Такие инструмен-
ты, как Rose, генерируют основу кода классов, которую программисты заполняют деталями на вы-
бранном ими языке. С помощью этих диаграмм аналитики могут показать детали системы, а
архитекторы — понять ее проект. Если, например, какой-либо класс несет слишком большую функци-
ональную нагрузку, это будет видно на диаграмме классов, и архитектор сможет перераспределить ее
между другими классами. С помощью диаграммы можно также выявить случаи, когда между сообщаю-
щимися классами не определено никаких связей. Диаграммы Классов следует создавать, чтобы пока-
зать взаимодействующие классы в каждом варианте использования. Можно строить также более
общие диаграммы, охватывающие все системы или подсистемы.
Диаграммы Состояний
Диаграммы Состояний предназначены для моделирования различных состояний, в которых может
находиться объект. В то время как диаграмма Классов показывает статическую картину классов и их
связей, диаграммы Состояний применяются при описании динамики поведения системы.
Диаграммы Состояний отображают поведение объекта. Так, банковский счет может иметь неско-
лько различных состояний. Он может быть открыт, закрыт, или может быть превышен кредит по
нему. Поведение счета меняется в зависимости от состояния, в котором он находится. На диаграмме
Состояний показывают именно эту информацию.
На рис. 1.12 приведен пример диаграммы Состояний для банковского счета.
На данной диаграмме показаны возможные состояния счета, а также процесс перехода счета из
одного состояния в другое. Например, если клиент требует закрыть открытый счет, последний пере-
ходит в состояние "Закрыт". Требование клиента называется событием (event), именно события вызы-
вают переход из одного состояния в другое.
Когда клиент снимает деньги с открытого счета, счет может перейти в состояние "Превышение
кредита". Это происходит, только если баланс по счету меньше нуля, что отражено условием [отрица-
тельный баланс] на нашей диаграмме. Заключенное в квадратные скобки условие (guard condition)
определяет, когда может или не может произойти переход из одного состояния в другое.
Рис. 1.12.
Диаграмма
Состояний
для класса Account
Снятие денег [отрицательный баланс]
Открыт
Превышение кредита
Действие: послать
уведомление клиенту
Клиент требует
закрыть счет
Вклад денег
[отрицательный баланс
Проверка баланса
[отрицательный баланс
в течение срока более 30 дней]
Закрыт
На диаграмме имеются два специальных состояния — начальное (start) и конечное (stop). Начальное
состояние выделяется черной точкой, оно соответствует состоянию объекта в момент его создания.
Конечное состояние обозначается черной точкой в белом кружке, оно соответствует состоянию объ-
екта непосредственно перед его уничтожением. На диаграмме Состояний может быть одно и только
одно начальное состояние. В то же время может быть столько конечных состояний, сколько вам нуж-
но, или их может не быть вообще.
Когда объект находится в каком-то конкретном состоянии, могут выполняться те или иные про-
цессы. В нашем примере при превышении кредита клиенту посылается соответствующее сообщение.
Процессы, происходящие, когда объект находится в определенном состоянии, называются действия-
ми (actions).
Диаграммы Состояний не нужно создавать для каждого класса, они применяются только в очень
сложных случаях. Если объект класса может существовать в нескольких состояниях и в каждом из них
ведет себя по-разному, для него, вероятно, потребуется такая диаграмма. Однако во многих проектах
они вообще не используются. Если же диаграммы Состояний все-таки были построены, разработчики
могут применять их при создании классов.
Диаграммы Состояний необходимы в основном для документирования. При генерации в Rose
кода на основе вашей модели содержащаяся в них информация не преобразуется ни в какой код. Тем
не менее для работающих в режиме реального времени систем доступны различные расширения
Rose, которые позволяют генерировать исполняемый код, основываясь на диаграммах Состояний.
Диаграммы Компонентов
Диаграммы Компонентов показывают, как выглядит модель на физическом уровне. На ней изобража-
ются компоненты программного обеспечения вашей системы и связи между ними. При этом выделя-
ют два типа компонентов: исполняемые компоненты и библиотеки ко,
1
В среде Rose каждый класс модели преобразуется в компонент исходного кода. Созданные компо-
ненты сразу добавляются к диаграмме Компонентов. Затем указываются зависимости между отдель-
ными компонентами, соответствующие зависимостям на этапе компиляции или выполнения
программы.
На рис. 1.13 изображена одна из диаграмм Компонентов для системы ATM.
На этой диаграмме показаны компоненты клиента системы ATM. В данном случае команда разра-
ботчиков решила строить систему с помощью языка C++. У каждого класса имеется свой собственный
заголовочный файл и файл с расширением . СРР, так что каждый класс преобразуется в свои собствен-
ные компоненты на диаграмме. Например, класс ATM Screen преобразуется в два компонента ATM
Screen диаграммы. Вместе эти компоненты представляют тело и заголовок класса ATM Screen. Выде-
ленный темным компонент называется спецификацией пакета (package specification) и соответствует
файлу тела класса ATM Screen на языке C++ (файл с расширением .СРР). Невыделенный компонент
также называется спецификацией пакета, но соответствует заголовочному файлу класса язьйса C++
(файл с расширением . Н). Компонент АТМ.ехе является спецификацией задачи и представляет поток
Введение в UML
Рис. 1.13.
Диаграмма
Компонентов
для клиента ATM
АТМ.ехе
обработки информации (thread of processing). В данном случае поток обработки — это исполняемая
программа.
Компоненты соединены штриховой линией, отображающей зависимости между ними. Например,
класс Card Reader зависит от класса ATM Screen. Следовательно, для того чтобы класс Card Reader
мог быть скомпилирован, класс ATM Screen должен уже существовать. После компиляции всех клас-
сов может быть создан исполняемый файл ATMClient.exe.
Пример ATM содержит два потока обработки, и таким образом получаются два исполняемых фай-
ла. Один из них — это клиент ATM, он содержит компоненты Cash Dispenser, Card Reader и ATM
Screen. Второй файл — сервер ATM, включающий в себя компонент Account. Диаграмма Компонен-
тов для сервера ATM показана на рис. 1.14.
Рис. 1.14.
Диаграмма
Компонентов
для сервера ATM
Account
Account ATMServer.exe
Как видно из примера, у системы может быть несколько диаграмм Компонентов в зависимости от
числа подсистем или исполняемых файлов. Каждая подсистема является пакетом компонентов. В об-
щем случае, пакеты — это совокупности компонентов (см. раздел "Основы Rose" главы 3). В примере
ATM используются два пакета: клиент ATM и сервер ATM.
Диаграммы Компонентов применяются теми участниками проекта, кто отвечает за компиляцию
системы. Диаграмма Компонентов дает представление о том, в каком порядке надо компилировать
компоненты, а также какие исполняемые компоненты будут созданы системой. Диаграмма показыва-
ет соответствие классов реализованным компонентам. Итак, она нужна там, где начинается генера-
ция кода.
Диаграммы Размещения
Диаграммы Размещения показывают физическое расположение различных компонентов системы в
сети. В нашем примере система ATM состоит из большого количества подсистем, выполняемых на от-
дельных физических устройствах, или узлах (node). Диаграмма Размещения для системы ATM пред-
ставлена на рис. 1.15.
16
Глава
Рис. 1.15.
Диаграмма
Размещения
для системы ATM
Сервер Oracle
« локальная сеть»
ATMCIient.exe ATMCIient.exe
Из данной диаграммы можно узнать о физическом размещении системы. Клиентские программы
ATM будут работать в нескольких местах на различных сайтах. Через закрытые сети будет осуществ-
ляться сообщение клиентов с региональным сервером ATM. На нем будет работать программное
обеспечение сервера ATM. В свою очередь, посредством локальной сети региональный сервер будет
взаимодействовать с сервером банковской базы данных, работающим под управлением Oracle. Нако-
нец с региональным сервером ATM соединен принтер.
Итак, данная диаграмма показывает физическое расположение системы. Например, наша система
ATM соответствует трехуровневой архитектуре, когда на первом уровне размещается база данных, на
втором — региональный сервер, а на третьем — клиент.
Диаграмма Размещения используется менеджером проекта, пользователями, архитектором систе-
мы и эксплуатационным персоналом для выяснения физического размещения системы и расположе-
ния ее отдельных подсистем. Менеджер проекта объяснит пользователям, как будет выглядеть
готовый продукт. Эксплуатационный персонал сможет планировать работу по установке системы.
Приведенные диаграммы описывают систему с различных точек зрения. В разделе "Основы Rose"
главы 3 мы детальнее рассмотрим каждую из этих диаграмм и покажем, как создавать их в среде Ratio-
nal Rose. Вы сможете потренироваться в их построении и применении в этой среде. Однако прежде
чем углубиться в детали Rose, стоит обсудить еще один аспект разработки программного обеспече-
ния — сам процесс. Хотя эта книга и не является учебником по методологии или по организации про-
цесса, мы хотели бы познакомить вас с процессом разработки приложений, использующим
описанные выше диаграммы UML.
Введение в UML
17
Визуальное моделирование и процесс
разработки программного обеспечения
Программное обеспечение может быть создано разными способами. Существует несколько различ-
ных типов процесса разработки, которые могут быть использованы в проекте: от "водопада" (waterfall)
до объектно-ориентированного подхода. У каждого есть свои преимущества и недостатки. В данном
разделе мы не собираемся указывать вам, какой именно процесс применять в своей работе, а представ-
ляем лишь краткое описание процесса, связанного с визуальным моделированием. Еще раз подчерк-
нем, что это только общий обзор.
Долгое время программное обеспечение разрабатывали, следуя так называемой модели "водопа-
да". В соответствии с ней необходимо было сначала проанализировать требования к будущей систе-
ме, спроектировать, создать и протестировать систему, а затем установить ее у пользователей. Как
видно из названия, движение в обратную сторону по этой цепочке было невозможно — вода не поте-
чет вверх. Данный метод был официальной методологией, применявшейся в тысячах проектов, но
мы готовы утверждать, что в чистом виде, как его принято понимать, он не использовался ни разу.
Одним из главных недостатков модели "водопада" является невозможность возврата назад на прой-
денные этапы, В начале проекта, следующего такой модели, перед разработчиками стоит обескуражи-
вающая задача полностью определить все требования к системе. Для этого необходимо тщательно и
всесторонне обсудить с пользователями и исследовать бизнес-процессы. Пользователи должны согла-
ситься со всем тем, что выясняется в ходе такого обследования, хотя они могут и не ознакомиться до
конца с его результатами. При некотором везении таким способом на стадии анализа удается собрать
около 80% требований к системе.
Затем начинается этап проектирования. Необходимо сесть и определить архитектуру будущей си-
стемы. Мы выясняем, где будут установлены программы и какая аппаратура нужна для достижения
приемлемой производительности. На данном этапе могут обнаружиться новые проблемы, их необхо-
димо опять обсуждать с пользователями, что выразится в появлении новых требований к системе.
Итак, приходится возвращаться к анализу. После нескольких таких кругов наконец наступает этап на-
писания программного кода.
На этом этапе обнаруживается, что некоторые из принятых ранее решений невозможно осущест-
вить. Приходится возвращаться к проектированию и пересматривать эти решения. После заверше-
ния кодирования наступает этап тестирования. Здесь выясняется, что требования не были
достаточно детализированы и их реализация некорректна. Нужно возвращаться назад на этап анали-
за и пересматривать эти требования.
Наконец система готова и поставлена пользователям. Поскольку прошло уже много времени и
бизнес, вероятно, уже успел измениться, пользователи воспринимают ее без большого энтузиазма,
отвечая примерно так: "Да, это то, что я просил, но не то, что я хочу!" Это — магическая фраза, закли-
нание, которое разом состарит всю команду разработчиков как минимум на 10 лет!
Рассмотрев этот мрачный сценарий и задумавшись о правильности выбора профессии, давайте
поразмышляем, можно ли как-нибудь улучшить процесс. Состоит ли проблема в том, что правила биз-
неса изменяются слишком быстро? Может быть, пользователи не могут объяснить, чего они хотят?
Может быть, они не понимают команду разработчиков? Или сама команда не придерживается опре-
деленного процесса? Ответы на эти вопросы: да, да, да и нет. Бизнес меняется очень быстро, и как
профессионалы-программисты мы должны поспевать за этим. Пользователи не всегда могут сказать,
чего они хотят, поскольку их работа стала для них "второй натурой". Спрашивать об этом прослужив-
шего 30 лет банковского клерка — примерно то же самое, что спрашивать, как он дышит. Работа стала
для него настолько привычной, что ее уже трудно описать. Еще одна проблема заключается в том,
что пользователи не всегда понимают команду разработчиков. Команда показывает им графики, вы-
пускает тома текста, описывающего требования к системе, но пользователи не всегда понимают, что
именно им дают. Есть ли способ обойти эту проблему? Да, здесь поможет визуальное моделирование.
И наконец, команда разработчиков точно следует процессу — методу "водопада". К сожалению, плани-
рование и реализация метода — две разные вещи.
Итак, одна из проблем заключается в том, что разработчики использовали метод "водопада", за-
ключающийся в аккуратном и последовательном прохождении через все этапы проекта, но им прихо-
дилось возвращаться на пройденные этапы. Происходит ли это из-за плохого планирования?
Вероятно, нет. Разработка программного обеспечения — сложный процесс, и его поэтапное аккурат-
ное выполнение не всегда возможно. Если же игнорировать необходимость возврата, то система бу-
дет содержать дефекты проектирования и некоторые требования будут потеряны, возможны и более
серьезные последствия. Прошли годы, пока мы не научились заранее планировать возвраты на
18
Г лава 1
пройденные этапы. Таким образом, мы пришли к итеративной разработке. Это название означает
лишь, что мы собираемся повторять одни и те же этапы снова и снова. В объектно-ориентированном
процессе нужно по многу раз небольшими шагами проходить этапы анализа, проектирования, разра-
ботки, тестирования и установки системы.
Невозможно выявить все требования на ранних этапах проектирования. Мы учитываем появле-
ние новых требований в процессе разработки, планируя проект в несколько итераций. В рамках та-
кой концепции проект можно рассматривать как последовательность неболыцих "водопадиков".
Каждый из них достаточно велик, чтобы означать завершение какого-либо важного этапа проекта, но
мал, чтобы минимизировать необходимость возврата назад. Мы проходим четыре фазы проекта: на-
чальная фаза (inception), уточнение (elaboration), конструирование (construction) и ввод в действие
(transition). Начальная фаза — это начало проекта. Мы собираем информацию и разрабатываем базо-
вые концепции. В конце этой фазы принимается решение продолжать (или не продолжать) проект.
В фазе уточнения детализируются варианты использования и принимаются архитектурные решения.
Уточнение включает в себя некоторый анализ, проектирование, кодирование и планирование тес-
тов. В фазе конструирования разрабатывается основная часть кода. Ввод в действие — это завершаю-
щая компоновка системы и установка ее у пользователей. Далее мы рассмотрим, что означает каждая
из этих фаз в объектно-ориентированном проекте.
Начальная фаза
Начальная фаза — это начало работы над проектом, когда кто-нибудь говорит: "А хорошо бы, чтобы си-
стема делала..." Затем кто-то еще изучает идею, и менеджер спрашивает, сколько времени потребует
ее реализация, сколько это будет стоить и насколько она выполнима. Начальная фаза как раз и заклю-
чается в том, чтобы найти ответы на эти вопросы. Мы исследуем свойства системы на высоком уровне
и документируем их. Определяем действующих лиц и варианты использования, но не углубляемся в
детали вариантов использования, ограничиваясь одним или двумя предложениями. Мы также гото-
вим оценки для высшего руководства. Итак, применяя Rose для поддержки нашего проекта, мы созда-
ем действующих лиц и варианты использования и строим диаграммы Вариантов Использования.
Начальная фаза завершается, когда данное исследование закончено и для работы над проектом выде-
лены необходимые ресурсы.
Начальная фаза проекта в основном последовательна и не итеративна. В отличие от нее, другие
фазы повторяются несколько раз в процессе работы над проектом. Так как проект может быть начат
только один раз, начальная фаза также выполняется лишь однажды. По этой причине в начальной
фазе должна быть решена еще одна задача — разработка плана итераций. Это план, описывающий, ка-
кие варианты использования на каких итерациях должны быть реализованы. Если, например, в нача-
льной фазе было выявлено 10 вариантов использования, можно создать следующий план:
Итерация 1
Итерация 2
Итерация 3
Итерация 4
Варианты Использования 1, 5, 6.
Варианты Использования 7, 9
Варианты Использования 2, 4, 8
Варианты Использования 3, 10
План определяет, какие варианты использования надо реализовать в первую очередь. Построение
плана требует рассмотрения зависимостей между вариантами использования. Если для того, чтобы
мог работать Вариант Использования 5, необходима реализация Варианта Использования 3, то опи-
санный выше план неосуществим, поскольку Вариант Использования 3 реализуется на четвертой ите-
рации — значительно позже Варианта Использования 5 из первой итерации. Такой план нужно
пересмотреть, чтобы учесть все зависимости.
Использование Rose в начальной фазе
Некоторые задачи начальной фазы включают в себя определение вариантов использования и дей-
ствующих лиц. Rose можно применять для документирования этих вариантов использования и дей-
ствующих лиц, а также для создания диаграмм, показывающих связи между ними. Полученные
диаграммы Вариантов Использования можно показать пользователям, чтобы убедиться, что они
дают достаточно полное представление о свойствах системы.
Уточнение
В фазе уточнения проекта выполняются некоторое планирование, анализ и проектирование архитек-
туры. Следуя плану итерации, уточнение проводится для каждого варианта использования в текущей
итерации. Уточнение включает в себя такие аспекты проекта, как кодирование прототипов
(pro ofs-of-c once pc), разработка тестов и принятие решений по проекту.
Основная задача фазы уточнения — детализация вариантов использования. В разделе "Основы
Rose" главы 3 рассматривается, что может входить в детали вариантов использования. Предъявляе-
мые к вариантам использования требования низкого уровня предусматривают описание потока обра-
ботки данных внутри них, выявление действующих лиц, разработку диаграмм Взаимодействия для
графического отображения потока обработки данных, а также определение всех переходов состоя-
ний, которые могут иметь место в рамках варианта использования. Из требований, определенных в
форме детализированных вариантов использования, составляется документ под названием "Специ-
фикация требований к программному обеспечению" (Software Requirement Specification, SRS). SRS со-
держит детальное описание всех требований к системе.
В фазе уточнения выполняются и такие задачи, как уточнение предварительных оценок, изучение
SRS и модели вариантов использования с точки зрения качества проектируемой системы, анализ рис-
ков. С помощью Rational Rose можно уточнить модель Вариантов Использования, а также разрабо-
тать диаграммы Последовательности и Кооперативные диаграммы для графического представления
потока обработки данных. Кроме того, в этой фазе проектируются диаграммы Классов, описываю-
щие объекты, которые необходимо создать.
Фаза уточнения завершается, когда варианты использования полностью детализированы и одоб-
рены пользователями, прототипы завершены настолько, чтобы уменьшить риски, разработаны диа-
граммы Классов. Иными словами, эта фаза пройдена, когда система спроектирована, рассмотрена и
готова для передачи разработчикам.
Использование Rose в фазе уточнения
Фаза уточнения предоставляет несколько возможностей для применения Rational Rose. Так как
уточнение — это детализация требований к системе, модель Вариантов Использования может по-
требовать обновления. Диаграммы Последовательности и Кооперативные диаграммы помогают
проиллюстрировать поток обработки данных при его детализации. С их помощью можно также
спроектировать требуемые для системы объекты. Уточнение предполагает подготовку проекта си-
стемы для передачи разработчикам, которые начнут ее конструирование. В среде Rose это может
быть выполнено путем создания диаграмм Классов и диаграмм Состояний.
Конструирование
Конструирование — процесс разработки и тестирования программного обеспечения. Как и в случае
уточнения, эта фаза выполняется для каждого набора вариантов использования на каждой итерации.
Задачи конструирования включают в себя определение всех оставшихся требований, разработку и те-
стирование программного обеспечения (ПО). Так как ПО полностью проектируется в фазе уточне-
ния, конструирование не предполагает большого количества решений по проекту, что позволяет
команде работать параллельно. Это означает, что разные группы программистов могут одновременно
работать над различными объектами ПО, зная, что по завершении фазы система "сойдется". В фазе
уточнения мы проектируем объекты системы и их взаимодействие. Конструирование только запуска-
ет проект в действие, а новых решений по нему, способных изменить это взаимодействие, не прини-
мается.
Еще одним преимуществом такого подхода к моделированию системы является то, что среда Rati-
onal Rose способна генерировать "скелетный код" системы. Для использования этой возможности
следует разработать компоненты и диаграмму компонентов на раннем этапе конструирования. Гене-
„рацию кода можно начать сразу после создания компонентов и нанесения на диаграмму зависимостей
ними. В результате будет автоматически построен код, который можно создать, основываясь
.1 .г'фоекте системы. Это не означает, что с помощью Rose можно получить любой код, реализующий
•'фитч-логику приложений. Результат сильно зависит от используемого языка программирования, но
случае предполагает определение классов, атрибутов, областей действия (общих (public), за-
крытых (private) и защищенных (protected)), прототипов функций и операторов наследования. Это
позволяет сэкономить время, так как написание кода вручную — довольно кропотливая и утомитель-
ная работа. Получив код, программисты могут сконцентрироваться на специфических аспектах про-
екта, связанных с бизнес-логикой. Еще одна группа разработчиков должна выполнить экспертную
20
Глава 1
оценку кода, чтобы убедиться в его функциональности и соответствии стандартам и соглашениям по
проекту. Затем объекты должны быть подвергнуты оценке качества. Если в фазе конструирования
были добавлены новые атрибуты или функции или если были изменены взаимодействия между объ-
ектами, код следует преобразовать в модель Rose с помощью обратного проектирования (см. главы
с 19 по 24).
Конструирование можно считать завершенным, когда программное обеспечение готово и протес-
тировано. Важно убедиться в адекватности модели и программного обеспечения; модель будет чрез-
вычайно полезна в процессе сопровождения ПО.
Использование Rose в фазе конструирования
В фазе конструирования пишется большая часть кода проекта. Rose позволяет создать компонен-
ты в соответствии с проектированием объектов. Чтобы показать зависимости между компонента-
ми на этапе компиляции, создаются диаграммы Компонентов. После выбора языка
программирования можно осуществить генерацию скелетного кода для каждого компонента. По
завершении работы над кодом модель можно привести в соответствие с ним с помощью обратного
проектирования.
Ввод в действие
Фаза ввода в действие наступает, когда готовый программный продукт передают пользователям. Зада-
чи в этой фазе предполагают завершение работы над финальной версией продукта, завершение
приемочного тестирования, завершение составления документации и подготовку к обучению пользо-
вателей. Чтобы отразить последние внесенные изменения, следует обновить Спецификацию требова-
ний к программному обеспечению, диаграммы Вариантов Использования, Классов, Компонентов и
Размещения. Важно, чтобы ваши модели были синхронизированы с готовым продуктом, поскольку
они будут использоваться при его сопровождении. Кроме того, модели будут неоценимы при внесе-
нии усовершенствований в созданную систему через несколько месяцев после завершения проекта.
В фазе ввода в действие Rational Rose не настолько полезна, как в других фазах. В этот момент
приложение уже создано. Rose предназначена для оказания помощи при моделировании и разработ-
ке программного обеспечения и даже при планировании его размещения. Однако Rose не является
инструментом тестирования и не способна помочь в планировании тестов или процедур, связанных с
размещением ПО. Для этой цели созданы другие продукты. Итак, в фазе ввода в действие Rose приме-
няется прежде всего для обновления моделей после завершения работы над программным продук-
том.
глава
Введение в Rose
Установка Rose 98
Установка Rose 98i
Знакомство со средой Rose
Четыре представления модели Rose
Работа в среде Rose
Установка глобальных параметров
22
•ч
Глава 2
этой главе содержится краткий обзор продукта Rational Rose. Объясняется, что это такое, что вхо-
дит в модель Rational Rose и как установить Rose на вашем компьютере. Затем дается краткий обзор раз-
личных частей экрана и навигации между ними. Наконец рассматриваются четыре доступных в этой
среде представления (views) системы и способы работы с Rose.
На этом введение в язык UML и среду Rose можно будет считать законченным, вы получите доста-
точно информации, чтобы приступить к изучению основ проектирования систем с помощью Rose.
Что такое Rose?
Rational Rose — мощный инструмент анализа и проектирования объектно-ориентированных програм-
мных систем. Он позволяет моделировать системы до написания кода, так что вы можете с самого на-
чала быть уверены в адекватности их архитектуры. С помощью готовой модели недостатки проекта
легко обнаружить на стадии, когда их исправление не требует еще значительных затрат.
Среда Rational Rose позволяет проектировать варианты использования и их диаграммы для визуа-
лизации функциональных возможностей системы. Диаграммы Взаимодействия показывают, как объ-
екты работают совместно, обеспечивая требуемые функциональные возможности. Для отображения
объектов системы и их отношений используются диаграммы Классов. Диаграммы Компонентов ил-
люстрируют, как классы соотносятся с готовыми физическими компонентами системы. Наконец диа-
граммы Размещения применяют для визуализации проекта распределенных систем.
Модель Rose — это картина системы. Она содержит все диаграммы UML, действующих лиц, вари-
анты использования, объекты, классы, компоненты и узлы системы. Она детально описывает, что си-
стема содержит и как функционирует, поэтому разработчики могут использовать ее в качестве эскиза
или чертежа создаваемой системы.
Такой чертеж помогает решить старую проблему. Допустим, команда разработчиков обсудила с
пользователями и документировала требования к приложению. Программисты готовы писать код.
Один из них (назовем его Боб) берет часть требований, принимает определенные решения и пишет
некоторый фрагмент кода. Другой (Джейн) тоже берет часть требований, принимает свои, совер-
шенно отличающиеся от первого, решения по проекту и пишет другой код.
Естественно ожидать различие в стилях программирования; получив одинаковый набор требова-
ний, 20 разработчиков создадут 20 различных систем. Таким образом, без подробного обсуждения ра-
боты с каждым участником проекта будет трудно понять, какие решения по проекту приняты, из
каких элементов состоит система и что представляет собой ее общая структура. Не имея документи-
рованного проекта, трудно даже быть уверенным, что созданное приложение — это именно то, чего
хотели пользователи.
Традиционно процесс, которому мы следуем, выглядит следующим образом:
Боб
Хотя требования и были документированы, весь проект находится в голове Боба, и никто, кроме
Боба, не понимает достаточно хорошо архитектуру системы. Когда Боб оставляет команду, информа-
ция уходит вместе с ним. Если вы оказывались в подобной ситуации, то согласитесь, как трудно быва-
ет понять плохо документированную систему.
Модель Rose предлагает совершенно другой подход:
Требования
Модель
объекта
Код
В этом случае проект уже документирован. Разработчики могут собраться вместе и обсудить при-
нимаемые по проекту решения до фактического написания кода. Вам не нужно больше беспокоиться,
что каждый из них пойдет своим путем в проектировании частей одного и того же приложения.
Введение в Rose
23
Однако модели используют не только разработчики:
• С помощью диаграмм Вариантов Использования потребители и менеджеры проекта получат
общее представление о системе и смогут принять решение о сфере ее применения.
• С помощью диаграмм Вариантов Использования и документации менеджеры проекта смогут
разделить проект на отдельные управляемые задачи.
• Из документации по вариантам использования аналитики и потребители смогут понять, что
будет делать готовая система.
• Изучив ту же документацию, технические писатели смогут приступить к написанию руководст-
ва для пользователей и к подготовке планов по их обучению.
• Из диаграмм Последовательности и Кооперативных диаграмм аналитики и разработчики уяс-
нят, насколько логично работает система, поймут ее объекты и сообщения между ними.
• С помощью документации по вариантам использования, а также диаграмм Последовательно-
сти и Кооперативных диаграмм специалисты по контролю качества смогут получить информа-
цию, требуемую им для написания тестовых сценариев.
• С помощью диаграмм Классов и Состояний разработчики получат представление о фрагмен-
тах системы и их взаимодействии друг с другом.
• Из диаграмм Компонентов и Размещения эксплуатационный персонал сможет узнать, какие
.EXE и .DLL файлы и другие компоненты будут созданы, а также где в сети они должны быть
размещены.
• С помощью модели в целом команда участников проекта сможет отслеживать реализацию ис-
ходных требований до кода, а также из любого фрагмента кода выводить исходные требова-
ния, которые он реализует.
Итак, Rose — это средство, которое может быть использовано всеми участниками проекта. Это,
фактически, хранилище информации о контексте и проекте системы, из которого каждый участник
проекта извлекает то, что ему нужно.
Помимо всего вышесказанного, Rational Rose позволяет генерировать "скелетный код'1 на боль-
шом количестве различных языков, включая C++, Java, Visual Basic и PowerBuilder. Более того, можно
выполнять обратное проектирование кода и создавать таким образом модели уже существующих сис-
тем. Весьма выгодно иметь модели Rose для уже существующих приложений. Если сделано изменение
в модели, Rose позволяет модифицировать код для его реализации. Если же был изменен код, можно
автоматически обновить соответствующим образом и модель. Благодаря этому удается поддерживать
соответствие между моделью и кодом, уменьшая риск "устаревания" первой.
Среду Rose можно расширить с помощью RoseScript, языка программирования, поставляемого
вместе с ней. На RoseScript можно написать код для автоматического внесения изменений в модель,
для создания отчетов и выполнения других задач.
В настоящее время доступны три различных варианта Rose:
• Rose Modeler, позволяющий разрабатывать модели системы, но не поддерживающий возмож-
ности генерации кода и обратного проектирования.
• Rose Professional, позволяющий генерировать код на каком-либо одном языке.
• Rose Enterprise, позволяющий генерировать код на C++, Java, Visual Basic и схемы Огас1е8.
Более того, в последней версии Rose 98 i уделяется особое внимание ее интеграции с такими инст-
рументами, как Rational RequisitePro, TeamTest, Visual C++ и другими. Rose 98i Обеспечивает публика-
цию ваших моделей на Web-страницах. Как и предшествующая версия, она доступна в вариантах
Modeler, Professional и Enterprise. Все упражнения этой книги записаны для обеих версий: Rose 98 и
Rose 98i.
24
Глава 2
Установка Rose 98
Rational Rose устанавливается с компакт-диска на компьютер, работающий под управлением Win-
dows 95, Windows NT или Windows 98. Вставьте компакт-диск в дисковод. Установочная программа
приступит к работе автоматически. Однако если на вашем компьютере отключена поддержка автома-
тического запуска autostart-файлов компакт-диска, вам придется самостоятельно запустить файл se-
tup.exe, находящийся в корневом каталоге диска. В начале процесса установки вы увидите экран,
показанный на рис. 2.1.
Начало установки
Rose
Rational Rose 98 Modeler Edition
WARNING: The ptogram it mtectedtom
Welcome
It й strong^ recommended that you erit al Windows programs
CfckCanceHoquit Setup and^andowanyptogranwyou
have running proguvn.
*
Welcome to the Rational Row 38 Modeter Edition
) Setup program. This programwi hstai Rational
Rose 98 Modehi Edition on jw computer.
wibeprowcUedtothamawmjmmderipottiMBundethw.
Перед установкой рекомендуется завершить работу всех остальных приложений Windows. Сделав
это, нажмите на кнопку Next (Дальше) для продолжения.
Затем программа установки предложит вам удалить предыдущие версии Rational Rose, которые
могут иметься на вашем компьютере (см. рис. 2.2). Воспользуйтесь для этого утилитой Add/Remove
Programs (Установка и удаление программ) панели управления Windows. Если это уже сделано, на-
жмите на кнопку Next.
Рис. 2.2.
Удаление
предыдущих
версий Rose
Введение в Rose
25
Вашему вниманию будет представлено лицензионное соглашение фирмы Rational (см. рис. 2.3).
Прочитав его, нажмите на кнопку Yes (Да), чтобы принять указанные условия. Если вы не согласны с
ними, верните дистрибутив в магазин. (Надеюсь, вы сохранили чек!)
Рис. 2.3.
Лицензионное
соглашение
Software License Aareement
'fl*-ЖЬ-ЭТ-*' <’**•
,>7< ' -7 ? .Г 7 :---<• : :v< 771 777. 77 > 7 < 47^-77^ - -7 <-
г< -./.'>/ ;7Ч-Ч.
'МкмйДОяммцММмйм^^
'гг'- -•-• ; '. ,*•"/.<’• 'ч •!;!-/•'* '•?’' ’>.*?' •,«*?!'. •: .;
ШТНЕРЙ0(ШМ»«1ЖШ&
ENTER Nfi :WOi8WOMH
ЙОЭТАЦЖЖЕ (
№№
* f Л
er \
k '
ЛК *>* s
|НкпкНй№
taUNAHUTONE®!
THEPflCEtFrWR M
. . i. 74:' 7Г !7 r;; <• ,.t:: Ж>7?* н^;:Ж :
>•.; . 7 .> .< >! .•.,. •<••?•’ -• ’
Г'
:4J
.<?•
e<
. ’< 5^7
... . . . ...
В|ШвЛЙЙй. К
<
s=.
<<Х- ЛЧ.
г - *
‘.-.V •
$' Л :i>
ДО
fe w>
Л M '‘-Ж ' <>я*' v3TaS‘ 4^’’•-К к.
МммйнММИММММаМММ ЙММЙММмйшЛмЙ
Следующий экран установочной программы запрашивает ваше имя, название компании, где вы ра-
ботаете, а также индивидуальный серийный номер Rose (см. рис. 2.4). Серийный номер написан на
задней части коробки с компакт-диском. После ввода всех этих сведений вы должны подтвердить их.
Если все правильно, нажмите ОК. Процесс установки будет продолжен, если серийный номер указан
правильно.
Рис. 2.4.
Информация
о пользователе
User Information
*
У. ••«¥}
ЙЛ>
к*
S
ий . < ч"
•мм
м
ж
Ж
МЙММЙМММШВМ
H«n« /^Mike Boggs
ЙЫЙМЙ
X?
йм
айкйьмйв
Ш4*
5/' ?* л И*Т'
‘V?’" -••J
?л* -X<V
J
F
£
►1
хд
я
J
у
*
‘'Ч'-л
5
4 <
|Л- - - J 'V' - • ^
>>ijs
> 2 ’ 7Л1 ’ ’it-
i
«
X
к
*
<
Г'*ь
Проверив введенную информацию, программа установки предложит вам указать каталог, в кото-
рый будет установлена Rational Rose (см. рис. 2.5). По умолчанию используется каталог C:\Program
Files\Rational\Rational Rose 98 Enterprise Edition. Если вы согласны с таким вариантом, нажмите
кнопку Next. Если же вы хотите изменить каталог, щелкните мышью на кнопке Browse (Обзор), это
позволит вам выбрать другой каталог.
Затем нужно выбрать тип установки (см. рис. 2.6).
Доступные варианты — Typical (Типичная), Compact (Компактная) и Custom (Выборочная). При
указании Compact будут установлены только компонент Modeler и файлы справки. В соответствии с
вариантом Typical устанавливаются также обычно используемые расширения (add-ins):
• Microsoft Repository Add-In (Репозиторий Microsoft)
• SCC Add-In
• Visual Basic Add-In
26
Глава 2
Рис. 2.5.
Выбор каталога
для установки
Choose Destination Location
Setup win install Rational Rose98 Enterprise Edition in the
following folder. '
*
To install to this folder, dick N ext
To install to a different folder, click Browse and select another
folder. ’
You can choose not to install Rational Rose 98 Enterprise Edition <
by clicking Cancel to exit S etup. .
:' D estination Folder - "'t ?; - ~: . л
• •
4 • • b.
Cl.ARatiorial Rose 98 Enterprise Edition Bjowse
Next>
Canb
* > ИШМ II II
Рис. 2.6.
Выбор типа
установки
Click the type of Setup you prefer, then dick Next
C Compact
Custom
Program will be instated with minimum required
options. V
Rogram wrU be instated with themostcommon
Options. R ecommended for most users.
You may choose the options you want to instaft.
Recommen ded br advancedrsers. ;
* C++ Add-In
♦ Java Add-In
• Oracle8 Add-In
& Framework Add-In
* ERwin Add-In
• TypeLiblmporter Add-In
Пункт Custom предоставляет вам возможность самостоятельно выбрать устанавливаемые расши-
рения. Мы советуем использовать типичный вариант установки. Все упражнения данной книги со-
ставлены, исходя из предположения, что вы указали именно этот вариант.
Сделав свой выбор, щелкните на кнопке Next для продолжения. Появится короткое сообщение о
том, что у вас должна быть установлена среда Visual Studio, если вы собираетесь использовать расши-
рение Microsoft Repository.
Затем надо выбрать папку для пиктограмм этого приложения (см. рис. 2.7). По умолчанию предла-
гается Rational Rose Enterprise Edition, но вы можете указать другую папку. Сделав выбор, щелкните
на кнопке Next.
Следующее, что нужно выбрать, — это язык программирования, который будет принят по умолча-
нию (см. рис. 2.8).
Введение в Rose
27
Рис. 2.7.
Выбор папки
для пиктограмм
program Folders:
Select Program Folder
' :t- ’ ' > - / ' ’ ‘ x ; < < Ls?*-:
* . g • 4 . 4 . r ’ g . - ’ q - rSfc-*-b«r|4-J л 4
’ ’’ ‘ , .• - • ; ь •> .*•1
Setup wiR add program icons to the Program Folder fisted below.
You m^r type a new folder name, or select one from the existing
Folders fist. Click Next to continue.; /
1
4
X
EgistingFolders
/ .'4Yr 1 ’ .. . ’
i _ — I
имамшим • : $
Adobe Acrobat
AT&T WorldNet Software 2.0
Collage Complete 1.1
Complete Landscape Designer Deluxe Edition
Dragon NaturallyS peaking
Dreamworks
Internet Explorer
Mediamatics Software MPEG
Next»
<4
>
Рис. 2.8.
Выбор языка
программирования,
используемого
по умолчанию
Select a Default Language
«*
Java
Visual В asic
к!:-:'1;
I Cand МЙ
language. This language wilbe used for new models!
unless the default language в changed manuaiy from
within Rose.
X
: <r
•*'' I'?
*r4.
г
Rose будет сконфигурирована так, чтобы обеспечить доступ к объектным библиотекам выбранно-
го вами языка. Они дадут возможность генерировать код на этом языке и осуществлять обратное про-
ектирование. Предлагается следующий выбор:
• Analysis
• C++
• Java
• Visual Basic
Указание пункта Analysis приведет к такой конфигурации Rose, что у нее не будет языка по умолча-
нию. Другие пункты настроят Rose на соответствующий язык, подключив к модели необходимые объ-
ектные библиотеки. Например, если вы работаете на Visual Basic, выберите его как ваш язык по
умолчанию. К каждой создаваемой вами модели будут автоматически подключаться объекты, интер-
фейсы и компоненты Visual Basic. Сделав выбор, нажмите на кнопку Next.
Перед началом процесса копирования файлов и конфигурирования Rose вам будет дана возмож-
ность проверить введенные вами установки (см. рис. 2.9).
Вы увидите, сколько места требуется на диске, какие компоненты будут установлены, куда будут за-
писаны файлы, в какой программной группе окажутся пиктограммы и какой язык выбран по умолча-
нию. Если все сделано правильно, щелкните на кнопке Next.
Пока установочная программа копирует файлы и конфигурирует Rose, на экране отображается
ход этого процесса (см. рис. 2.10). Если вы захотите прекратить установку, нажмите на кнопку Cancel.
28
Рис. 2.9.
Проверка
установочной
информации
Check Setup Information
Total Size; 89519 КВ
- -<e
>,•'?* .<
Current Settings:
User Information::
’ Mik^Bog^
SybexCorpor
300-1016989
S^ypTyp^’ \ ____.
J TYPICAL’ Application wi be instated with the most cc
Seleded Components:
/>ДЯо^Йа4й^?^
Setup has enough information to begin the file-transfer
o^iition. If you want to review or change any of the
settings, dick Back lf you are satisfied with tfw :
settings, dick Nextto begincopyir^ ftes.
НН
-ji——— .........————a
11.._.JazS^.„ ...j|
. 4 14 4 -- - т—Л л Л Л Л Л-Ж-Л. _ - Д M. _а__Д__Ж__Ж__Д^И
***ед*^
. «• .•'. ? •' .•' •, .'h* "k • ’>: ’
1 111 Hl 11 iii i i
Illi I
Рис. 2.10.
Копирование
файлов
*
New in Rational Rose 9&
-X
Rational
Rose
.-.•.>•; ... 4
< Component Modeling
- Interface support
- Component Code Generation
- Re verse Engl neer COM co m p о n e nts
- Multi-language support: C++,
Java, Visual Basic, Orade8
ГАЛАЯМ
M
Рфмлф WuoiBasic Language Suppcntr rta t
СвпзЫ
*
По завершении установки программа выдаст экран, показанный на рис. 2.11, где предлагается
прочитать файл Readme или сразу запустить Rose. Если вы хотите выбрать какую-либо из этих воз-
можностей, пометьте соответствующий флажок, затем щелкните на кнопке Finish.
На этом процесс установки завершается, и вы можете приступить к моделированию ваших систем
в среде Rational Rose. Если вы приобрели продукт по временной лицензии (evaluation license), то име-
ете право использовать его в течение 30 дней, после чего он не будет вам более доступен. Имейте в
виду, что вы не сможете работать с продуктом, если попытаетесь переустановить его или изменить
системное время вашего компьютера. Для дальнейшего использования продукта вы должны будете
купить ее у авторизованного дилера Rational.
Рис. 2.11.
Заключительный
экран программы
установки
Setup Complete
View Release Notes.
Click Finish to complete Rational Rose 98 Enterprise Edition
Setup.
Satup has finished^staffing Rationd Rose 98 Enterprise Edition
on you computer.
4 "
, И ’
Choose the options you want below.
__ /• » » ***** *•****<•*•*444<4«4 4 444 *<*•«♦***•••••****•***•*•*•* * »V M * * «•
P ;Run Rational Rose 98 Enterprise Edition]
Finish
мшмкмммя
Установка Rose 981
Rational Rose 98i может быть установлена с компакт-диска Rational Software Products на компьютер, ра-
ботающий под управлением Windows 95, NT или Windows 98. Вставьте компакт-диск в дисковод. Уста-
новочная программа приступит к работе автоматически. Однако если на вашем компьютере
отключена поддержка автоматического запуска autostart-файлов компакт-диска, вам придется самосто-
ятельно запустить файл setup.exe, находящийся в корневом каталоге диска. В начале процесса уста-
новки вы увидите экран, показанный на рис. 2.12.
Рис. 2.12.
Мастер установки
программ
из набора
Rational Software
Rational Software Setup
I
1
Rational Software Setup
Thank you for selecting products from Rational Software. The Rational Software Setup wizard
allows you to install any Rational Windows product.
Please dose any running applications before
continuing. Setup cannot install or update files that
are in use.
Want more infprmation about
Rational products? Browse the
Rational Product Gallery on this
CD (requires a web browser).
Cancel
8[owse
Для продолжения установки рекомендуется завершить работу всех остальных приложений Win-
dows. Когда вы сделаете это, щелкните на кнопке Next.
Программа предложит вам выбрать, какой продукт нужно устанавливать (см. рис. 2.13). На ком-
пакт-диске содержатся почти все продукты фирмы Rational. Выберите Rational Rose 98i Enterprise,
Professional или Modeler.
Укажите также, в какой каталог следует установить Rational Rose. По умолчанию используется
C:\Program Files\Rational. Если вас устраивает этот каталог, щелкните на кнопке Next, в противном
случае нажмите на кнопку Browse для выбора другого каталога.
30
Глава 2
Рис. 2.13.
Выбор продукта
для установки
Hnlninrd SnlJwrtrH Setup - Htitiijritil Rnst* Enterprise rdilinn
Choose Product to Install
Рис. 2.14.
Лицензионное
соглашение
tn most cases, you must have a license key to run the product you choose Io install. Consult
your startup license key certificate and choose the matching product name tn the pulldown
listbox below.
To install a subset of your licensed product choose the name in tie listbox below that exactly
matches the name onyour startup license key certificate Thea later in this setup procedure,
use the Custom option to specify the desired subset
Rational Rose is an award-winning graphical component modefing and development tool
that enables organizations both to model software applications tiiat meet current busme&s
needs and to evolve them easily as new requirements emerge
Next>
Cancel
Cancel
Rational Software
etup - Rational Hose SUi Lnterprise Ldition
License Agreement
Please read the following agreement You must accept the agreement to continue installing
Rationed software.
Products License Agreement
IMPORTANT! READ THIS LICENSE AGREEMENT BEFORE BREAKING THE SEAL
ON THE PROGRAM MEDIA PACKAGE CLICKING ON THE "ACCEPT" BUTTON.
ENTERING "YES" IN RESPONSE TO THE ELECTRONIC LICENSE ACCEPTANCE
INQUIRY. INSTALLING. OR ELECTRONICALLY DOWNLOADING ANY OF THE
ABOVE ACTIONS INDICATE ACCEPTANCE OF. AND LEGALLY BINDS YOU AND/OR
YOUR COMPANY ("LICENSEE"). ANO RATIONAL SOFTWARE CORPORATION.
Including its subsidiaries ("rational") tq the terms and conditions
SET FORTH BELOW IF LICENSEE DESIRES TO NEGOTIATE NEW OR DIFFERENT
RMS. CONTACT RATIONAL’S CONTRACTS DEPARTMENT АТ H-408-196-3600
8 EFORE TAKING ANY OF THE ABOVE ACTIONS IN THE EVENT LICENSEE
CO NTACTS RATIONAL BUT WE ARE UNABLE TO NEGOTIATE AN ACCEPTABLE
SOLUTION. RATIONAL WILL REFUND THE PRICE OF LICENSEE'S UCENSE FEE
UPON THE RETURN OF THE UNOPENED MEDIA PACKAGE ANO ACCOMPANYING
& t£es, I accept the agreement
f N^ I don*t accept the agreement
Copy.
Next>
Далее выводится лицензионное соглашение с фирмой Rational (см. рис. 2.14). Прочитав его, на-
жмите на кнопку Yes, если вы принимаете условия. Если нет, верните дистрибутив в магазин. (Наде-
юсь, вы сохранили чек!)
Затем укажите тип установки (см. рис. 2.15).
Предлагаются следующие варианты: Typical (Типичная), Custom/Full (Выборочная/Полная),
Compact/Laptop (Компактная/Для компьютеров класса laptop) и Minimal (Минимальная). Выбор
пункта Compact приведет к установке только утилиты Modeler и файлов справки. В соответствии с ва-
риантом Typical устанавливаются также и все обычно используемые расширения (add-ins):
• Rational Synchronizer (синхронизатор Rational)
• Rose C++ Add-In
• Rose CORBA Add-In
УТ
Введение в Rose
Рис. 2.15.
Выбор типа
установки
* Hose Java Add-In --------
• Rose Oracle8 Add-In -------
• Rose Type Library Importer Add-In --------
• Rose Version Control Add-In (контроль версий Rose) --------
• Rose Visual Basic Add-In --------
• Rose Visual C++ Add-In -------
• Rose Web Publisher Add-In --------
Пункт Custom предоставляет вам возможность самостоятельно выбрать устанавливаемые расши-^
рения. Мы советуем указать типичный вариант установки. Все упражнения данной книги составлены, _
исходя из предположения, что вы устанавливаете версию Rational Rose Enterprise, используя вариант'
Typical.
Далее программа сообщает нам, что она собирается обновить некоторые компоненты и файлы ва—
шей системы (см. рис. 2.16), Если этого не сделзть, установка не будет успешной, так <гто щелкните на
кнопке Next.
Перед иачазом копирования файлов и конфигурирования Rose ны полгите возможность прове”
рить правильность настроек (см. рис. 2,17). Вы сможете просмотрен*, какие компоненты будут уста-
новлены, в какой каталог будут записаны файлы и в какой программной группе окажутся
пиктограммы. Если все в порядке, щелкните на кнопке Next.
32
Глава-2
Рис. 2.-14.
Обновление
совместно
используемых
компонентов
pfllnnftl Siffwflrrr Svlup - Rj-HiLibal nu\if HBi с rn ssp rdlLtifl
Updjfe Shared Components
.....1/^ЧИ«|
.'I-; .!.:<. h; - v J-. jr ,; ,* । л: к 1,1 k . и -.пар end iftitol fw fl0 ^juul.
.. ininin<liljl- 2h№60Fi|dC lek 10 4ficnih|¥t r,fi£<l i<id4Mj, QlQurill
!^K(1lbC ".jlГ.С-.1Л ч/1'С *eb 1Л C*]IЛpW£'iflyf|u fliUgl IV Л0Й1 10 UpPSlk Vl4h*
Ihti
£?aiij F.'df |£Kaj*a CoVi^a^e]
С’^Офй'п Hiei'.CjHffXjri HSj'ifcuyp-iwl’ ^Г|Л.-чд\СА1>\<14и]4ь Ul (J Vi. 'il*^ C |
1 bywn Fdai', CdiWKn Arii^p*4Hi\4da\fii и1«.л S dll d jC j2. 111
^$"fVyw.F^4iCi5iWuori ГЛ1>уг*ч\ЛСЦ*1|лр41Г||Л: ;1£ ’’Г? i'
й^РтЗДвя! РИМ\Ср1ч«мп Л*1\еуШ»тШ4у?|Ьв1.1 ! '-ч
.;гГч»и 2ik•."□•- • "--«еиу«гМлГмЖ№м4ы>4мС<
Г-''.Г” 1. r;k>• ' • -л ..'• • idOUZp
Z’/v.yf.'nГ-tfJ*’. -ur з> £2.0. ЬТИ.171
£ \А<1фде1 Fl £ CnlAMrt Fl П *^МГТ^*1|ъУС'|>4*СЛ№ dt <7 ЗОСП? 2 fip
i' F*]» арниап ГШ\*>*«пЙя*; htf«\flnee40r dl> tJ.rj.j'T]? 121
C 'sPFd-gi om Ffca.\C,P4«npn Гй»\9Ш№,*11 fj 0 1X102 12)
CtFlMl | , J
РиСг 2.17.
П од тве ржде ние
установок
Если пы обновляете Rational Rose 98 до Rational Rose 98i\ перед вами может появиться экран, пока-
занный на рис 2. t8. Он содержит список возникающих в процессе установки ошибок. Если копируй—
мый программой установки файл уже существует, выдается сообщение об ошибке. Пока в списке нет_
ничего серьезного, поэтому каждый раз вделкайте на кнопке Next,
По завершении процесса копирования файлов вам предложат перезагрузить Windows (см“
рис. 2J9), Выберите пункт Restart (Перезагрузка) и щелкните мышью на кнопке Finish
ВЕС де Hi-L < j'OaC
33
Рис. 2.18.
При обновлении
Roimot Rose 90
до Rofionol Pose 9Bi
появляется экран
co списком Ошибок
HckliarHit Sabalo E>viMp Пайопа! П«л 40* Edition
Error Summary
Ge.tfv
r-ii ‘ r "tsf^ciln CUT, **1хЛ И tWL4J iurtnlttfl ifld titoKtT*
fЧм:'1шмайарявв2*йг*в*у eie a 4«й m ifclhiy
"\ L.j’^F-C-2NjrG\9Y3TEH11, J J»* tao ъмсш m nd dvfipUtM. *ч * JbM гм/ nd
r^FiT* iMnOy. Em №* Адйш* hi*n frV-nxwi 4iftym^<wt
ГМ Ki* “^-rr.eli^n хй", wMli I* Ьй^ iiwiw ift du *□»> "CAPnjQiwi
А1^\р1#Е5|г.о1\мгтап". an *iii т^иин л tli^oorf
G'\WODaJ!rS\SYSTFM" p**wn шйм an *й «4l«fi4ja-vr.ol
aifffc*/. Si a №* Йм«|| №*44 Io# mai ч intoflndiiM.
Th4 i i iMHMd л to d'nc&r;
Fi№'iA4iu'i*iePLednmon'', ah aM r^«*t «yttwi m
' C-'» Y’l *r.M ' |l It.4 fcii 4MHld>rг|гт?-л ' ,411,4. it4£ i--ft4M ПЯуЖ*
tif Я0Ч- XleClly fl R#4Q1|rKl/a^ iC'/i.titc J'C vrXJ» .
Jcitf-
Je Сч1Г< ij’Clirf U 414CUU7
mi/nai,
I.; I."*''. . j ' . C-'.r 7 :’r- И Ie : 'I: ! I " ' “J'' 'l". I' J' Г -. ' •. | 'йППаМИ-
Tr.ii!;.u 'III ru ;j.i с ' h’ 't. *..•* h-'.I'.>-i:-.-.l!-
LCTl'ul .лГ,|_ПГП|'У ' '' -jll^llЛ/ Sli:’* 9.I* и Ли*
"C.yfj'iFi'ZiiO/r^'L^r'lTTI:^' I *,i in'] vflrriani шй пЛм*1рйв№ в*з зо*«01в rr.oy -си
jjj с‘414 carted/ St3*?iajC|lua4t r«Tfii 'С/ПОП
1>«Ы
Рис. 2Л9,
Перезагрузка
Windows
После перезагрузки Windows выводится экран, показанный на рис, 2.20. Процесс установки злк.ш--
чнвается. Однако вы не сможете запустить Rational Rose, пока не введете правильный липензиоппын
iLi«4 (license key). Установите флажок для запуска программы License Key Administrator (Администра-
гпр лицензионного ключа) н щелкните на кнопке Finish (Готово).
Запустится Администратор лицензионного ключа (см. рис, 2.21). Щелкните на кнопке Continue.
Продолжить) з tiny ска процесса лицензирования.
34
Рис, 2.20
Зопуск
Админист^оторо
лицензионного
ключа
Рис, 2.21.
Администратор
лицензионного
ключа
Откроется вкладка General (Общие), как показано на рис. 2.22. Для работы в среде Rose пеобходи'
мо указать правильный лицензионный ключ. Введите название компании и номер счета Rational Ваш
номер счета находится в сертификате запуска лицензионного ключа (startup license key certificaLeX—
При желании введите имя пользователя, затем выберите вкладку License Contact (Контакты, связан-
ные с лицензией).
Иа этой Ькладке вы должны ввести контактное ныя человека, отвечающего за вашу лицензию-(€Мг—
рис. 2.23). ___________
Выделенные красным цветом поля заполняются в обязательном порядке, выделенные черным —
нет. Как минимум следует указать: -------
• Имя
• Фамилию
• Страну
• Номер телефона
• Адрес электронной почты или номер факса
• Полный почтовый адрес
Введение в Rose
35
Рис. 2.22.
- General
Админист ро гора
лицензионного
•СЧЮЧО
HabJinA) LiezriEe Ksy Adiwmiv . /
<~fi***fl*f IAcj: лт NufF'Eig !*i
Явей* AtrebjflfJunee' ^V'.-
'LAM Ulnk h4lfii i I-J.u .1/ J .KIoMiii: tyUCV'f'Pig ЗиДОПИ
ЁМГ I Help
Рис. 2.23.
f lillluftAk I.н.п ।l11 г-.<'у Acjniirii .IriJlQF
Sкладка License
‘on loci
Администратора
-*I_ *л?иснн сто
-A; <1
I'lEfitw Lkb*m Св«а | x ReD&rtJ CamdiiJ uc*i4₽Kiy^ij | St*igi|
’ЛЛч dQT&j wertfc всм its (авл.в k«yi ' i
IN
-<7 -j NjJrrB'
Ajau **j Arc tf Cw utowtr j-
£Ш£Ммг
Fe*(C3i>r»fi ec^£. jWbb cud£ fihcridj'
— I— f---------------------
jnv/CU0<il4fl
Ja/РТйЧ- i'-rti'. '?flAwlQ;ir
----— '». >-----------
Введя згу информацию, выберите вкладку Renewal Coni act (Контакт для обновления) > представ-
ленную на рис, 2.24.
Когда понадобится возобновить лицензию, компания Rational свяжется с человеком, координаты
(;и<‘фого вы укажете на этой г.к,тике. Как минимум нужно ввести: -----------------
4 Имя -----------------
• Фамилию -----------------
• Страну -----------------
• Номер телефона -----------------
Заверил in ввод, выберите вкладку License Keys (Лицензионные ключи), показанную на рис г 2.25.-
Зяесь го держится информация об используемых нами в настоящее время лицензионных ключах.
L ।|нхт срок действия которых вскоре истекает, будут выделены другим цветом. Если вы впервые
цтанавливаете продукцию фирмы Rational на ваш компьютер, на вкладке не будет ничего. Щелкните
на кнопке Euler a License Key (Введите лицензионный ключ')., чтобы установить ключ для данного
продукта.
36
Глава 2
Рис. 2.24.
Вкладка
Renewal Confect
Администратора
лицензионного
ключа
Рис. 2.25.
Вкладка
License Keys
Администратора
лицензионного
ключа
flnfiII и мп (Ь* г. । у ЛгГфгйгпРгнРгрГ
| GjrMd * йпямо | Lc** te ia,^J | ? {
**U c.a уйи '«м С ПОГЛ rttdiiw nr.* 1Ы1 rxnJ i bjf 7
Lql, ] riblp
Eu^eirrf
Ьнре-Шсгли ( R«qunl P*rn^r»n!LWitt< . | Б»nd Р>п<^Яиумв<4 |
ил। л 11?>*।* ет* ,| ^url Pimdruj J
Будет запущен Мастер (см, рис. 2.26). Выберите тип вводимого лицензионного ключа. Вместе с
Rose поставляется начальный (startup) лицензионный ключ, который разрешает вам пользоваться
этой программой от 30 до 60 дней. Временный лицензионный ключ (term license agreement key) по
зволяет нам работать в течение определенного времени. Попаянный (pennaneiii) ключ даст возмож-
ность работать неограниченное время. Если вы загружаете Rose из сети или с ко ми аят диска,
выберите пункт S larrup License Key (Начальный лицензионный ключ). Затем нажмите па кнопку
Next.
Мастер попросит вас ввести тип лицензии (см. рис. 2.27), На одиночном компьютере это
node-locked license (лицензия для одного vaia). В сел и может иснользошч гл я floating Псеп^е-Сплаваку—
щая лицензия), Если вы не работаете с Rose по плавающей лицензии на ерзшгпом ею серверепп-выбе^__
рите тип riode'locked и щелкните мышью на Next.
ведение в Rose
37
Рис. 2.26.
сртификша
лицензий много
v-.bO4O
Mi 11 Tkri£|l I U'»»n::|- IJny Д»| »i i^i-^Vnlj л
1Юм » taaa | Rental CdrttH UCCK 4 Kfyfi 11 Setr.Qb |
CLiy Р/йлДг-д 4 <z» 1Е1Э/ЫС/1
I icer to >: >-v rrmbi.xt' w«i bi d
Aciom ifnlffn ke/iypi )<w м
л ;«».|l Li£1171* £»y
Л*ЬуЬО L4<H K«y ellcwi уЧч Id tie-'1 rwmli^^K
FldliiVHl (M10'j|3f**i4n«^B№M«ilLiL4fti< tai'
<“ TdlKAUMnfB Ag*4efl*ml(TLAJ tey
А ft Л ч1гя*1 №e л» n( оЛ*й*а1 ого'Ю i» 0
ЦИДО-d ptridd Gl drrt#
Г ^|Г№В4*М LiAf'iB My
A PsmeMiM LunM му «14-4 у«и кй Ui ytxJ ЙЛ*4
prf|4n0irti14fa|Mly
LflliJ дЬ’гллц My .
Ы Hefp
Рис. 2.27.
ЗфОН
/осте pa
сертификата
лицензионного
/люча
(tallol IJcfB и ... D
ij£fi£i'ai| jMfn«CxiMaf!i| Fmm^sI Gontod U«ru [ 5<eirji |
□y fin045 Typ* . : Eifliren^r S1<)4
I II :i iriVi! iCl'Y Gl'ItiH ulir W| z И111
I
taMptadkt fcnw к^удовуйи **
Г Дв Lpch*d
kni гкжуч м fMO.iBS-i, слс^с trd —H141
-ful эп «ri-у gil- *r nflf hi-1 № ft'/redLiiil £ лВ*лг
M iBMk j ~teU""~| GMrti I , tW.... I .
tni4r outifi'.rt C^y... f.i.L. ,|i-. r.<: 1‘i' ;n* l PrrtPwi4in(i TJ,t]nj>l(Bj .
Hap
Г Заключительный экран показан на рис, 2.28. Введите г знание продукта и лицензируемую вами
грсмю, дату окончания срока действия лицензии и лицензионный ключ из лицензионного сергифи-
гга, после чего щелкните на кнопке Finish,
f На этом процесс установки завершается, и вы можете приступить к хмодезирнсымию своизс-систем.
iif fMf ‘Jit । .н j Rational Rose. Если у пас начальная лит им i^mi. то использовать эту программуможнотоль-
:о hi р.п именное времв, по истечении которого oti.l in- иудет более досч vp на, Дтл продолжения рабо
следует купить пакет Rose у автор изо б ал лого реселлера фирмы Rational. -------
38
Глава 2
Г-'-'
Рис- 2.2a.
Третий экран
Мастера
сертификата
лицензионного
ключа
ЙЛЛяП Bl [ jcunflp Кву
‘-.ff-ij I (Ш | LX6 ifl CwAiri I Mi*r**< Согла bti*W 4 Kay{4) | Srtjpg* j
tty
1 t Ghl*
I ifjinae Key CetMu-nls Wuoid
Ejpjw^Oaw; ’
ЫяСяЧС^у
tQ&A |~ ;-.r-rfA~ | iA>jd | _______________ HcJp ] .1
, <i-, • ,-, '•- j' Pllrt ₽intfir^ ЦвйыМ^1)...
Знакомство c Rose
В нескольких по< и^сукнцих разделах этой главы описываются все элементы интерфейса Rose- Это
приложение управляется с помощью меню, однако существуют панели инструментов, облегчающие
работу с чаще нс его используемыми у г ил игами. Программа поддерживает работу с несколькими типа-
ми диаграмм UML: диаграммами Вариантов Использования, Последовательности; Кооперативными,
Классов, Состояний и Размещения- Для диаграмм к;окдого типа имеется соответствующая панель ин-
струментов. Ниже будет показано, как создавать укачанные типы диаграмм.
Помимо панелей инструментов и меню, Rost; предлагает контекстные всплывающие меню, выво-
димые при щелчке правой кнопкой мыши. Например, щелчок, правой кнопкой мыши на классе приве-
дет к появлению меню с параметрами для изменения его атрибутов и операций, дяя просмотра или
редактирования его спецификацийt для генерации, просмотра и редактирования соответствующего
кода.
Проще всего работать с Rose с помощью браузера. Это позволяет быстро и легко получать доступ к
диаграммам и другим элементам модели. Если во время работы с Rose у вас появятся вопросы, нажми-
те на кнопку F1 клавиатуры л л я вьшола расширенной справки.
Элементы экрана
Основными элементами интерфейса Rose являются браузер, окно документации, панели инструмен-
тов, окно диаграммы и журнал (log). Каково ик назначение?
Браузер (browser) Используется для быстрой навигации по модели
Окно документации (documentation window) Применяется для работы с документацией эле-
ментов модели
Панели инструментов (toolbars) Обеспечивают быстрый доступ к наиболее распространен-
ным командам
Окно диаграммы (diagram window) Используется для просмотрам редактирования одной или
нескольких диаграмм UML
Журнал (log) Примс-няегся для просмотра ошибок и отчетов о результатах выполнения различ-
ных команд
На рис. 2,29 показаны различные части интерфейса Rose,
Введение в Rose
39
Рис. 2.29.
Интерфейс Rose
Браузер
Браузер — это иерархическая структура, позволяющая легко осуществлять навигацию по вашей моде-
ли (см. рис. 2.30). Все, что добавляется к модели: актеры, сценарии, классы, компоненты — выводится
в окне браузера.
С помощью браузера вы можете:
• Добавлять к модели элементы (сценарии, действующих лиц, классы, компоненты,
диаграммы и т.д.)
♦ Просматривать существующие элементы модели
• Просматривать существующие отношения между элементами модели
• Перемещать элементы модели
• Переименовывать элементы модели
• Добавлять элементы модели к диаграмме
• Связывать элемент с файлом или адресом Интернета
Рис. 2.30.
Браузер Rose
В LJ Use Case View
Й О Logical View
•.X Main
|£]"O Component View
•~Д Deployment View
Глава 2
♦ Группировать элементы в пакеты
• Работать с детализированной спецификацией элемента
• Открывать диаграмму
Браузер поддерживает четыре представления (view): представление Вариантов Использования,
Компонентов, Размещения и Логическое представление. Эти представления и содержащиеся в них
элементы модели перечислены в таблице 2.1.
Таблица 2.1. Представления в среде Rational Rose
Представление Содержание
Представление Вариантов Действующие лица
Использования Варианты использования
Ассоциации (98i)
Документация по вариантам использования
Диаграммы Вариантов Использования
Диаграммы Последовательности
Кооперативные диаграммы
Пакеты
Логическое представление Классы
Диаграммы Классов
Ассоциации (98i)
Диаграммы Взаимодействия
Диаграммы Состояний
Пакеты
----------------- ---------------------------------------------------------------.------------————— --------
Представление Компонентов Компоненты
Диаграммы Компонентов
Пакеты
Представление Размещения Процессы
Процессоры
Устройства
,Диаграммы Размещения
С помощью браузера можно просматривать элементы модели в каждом из четырех представле-
ний, перемещать и редактировать элементы, а также добавлять новые. Щелкнув правой кнопкой
мыши на элементе в браузере, можно связать адрес URL с элементом, прочитать его спецификацию,
удалить или переименовать элемент.
Браузер организован в древовидном стиле. Каждый элемент модели может содержать другие эле-
менты, находящиеся ниже его в иерархии. Знакоколо элемента означает, что его ветвь полностью
раскрыта. Знак "+” — ветвь свернута.
По умолчанию браузер появляется в верхней левой части экрана. Затем его можно перетащить в
любое другое место, закрепить там или оставить плавать свободно либо скрыть.
Для перемещения браузера:
1. Щелкнув мышью на браузере, выделите границу его окна.
2. Перетащите браузер мышью в другое место экрана.
Для того чтобы зафиксировать браузер в пределах окна:
1. Щелкните правой кнопкой мыши на границе окна браузера.
2. Во всплывающем меню выберите пункт Allow Docking (Разрешить прикрепление). Рядом с этим
пунктом появится отметка о том, что он выделен. Теперь браузер можно передвигать в преде-
лах окна Rose, но он будет сразу прикрепляться к одной из границ этого окна.
Для отмены прикрепления:
1. Щелкните правой кнопкой мыши на границе окна браузера.
2. Отмените пункт Allow Docking. Теперь во всплывающем меню рядом с этим пунктом не должно
быть никаких отметок. Окно браузера моярю будет перемещать независимо от окна Rose.
Введение a Pg
t-слм нужно скрыть или показать браузер:
1. Щелкните правой кнопкой мыши на границе окна браузера.
2. В появившемся меню выделите пункт Hide (Скрыть).
ИЛИ
Выберите пункт меню View > Browser (Вид >> Браудер). Браузер будет показан или скрыт.
Окно документации
Это окно предназначено для документирования элементов модели Rose. Например, вы можете сде-
лать короткое описание каждого действующего лица (см. рис. 2,31).
При документировании класса все. что вы напишите в окне документации, появится затем как
комментарий в сгенерированном коде, что избавляет с/г необходимости впоследствии вносить ком-
ментарии вручную, Документация будет выводиться также в отчетах, создаваемых в среде Rose.
Если в браузере или па диаграмме выбирается другой элемент, окно документации автоматически
обновляется, показывая то, что соответствует этому элементу.
Каки браузер, окио документации можно закрепить или позволить ему перемещаться свободно.
По умолчанию оно появляется в нижнем левом углу окна Rose, но может быть передвинуто или
гкрыто.
Для перемещения окна документации:
1. Щелкнув мышью, выделите границу этого окна.
2. Перетащите окно на выбранное вами место экрана.
Для закрепления окна документации
1, Щелкните правой кнопкой мыши на границе окна документации.
2. Во всплывающем меню выберите пункт Allow Docking (Разрешить прикрепление). Рядом с этим
пунктом появится отметка о том, что он выделен. Теперь окно документации можно передви-
гать, но только в пределах окна Rose.
Если ]гужно сделать окно документации свободно перемещаемым:
Щелкните праной кнопкой мыши на границе окна документации.
2. Отмените пункт Allow Docking. Теперь во всплывающем меню рядом с этим пунктом не должно
быть никаких отметок. Окно документации не будет зависеть от окна Rose, и его можно будет
перетаскивать в любое чь ею внутри или вне этого окна.
Рис, 2.31.
Окно документации
О й* iK*i* еА* ^вк-1
42
Глава 2
»-----
Сделать окна документации видимым или невидимым можно следующим образом
1. Щелкните оравой кнопкой мыши на границе окна документации.
2. В появившемся меню выделите пункт Hide (Скрыть), Теперь Rose сделает это окнсошдимьы
или невидимым в зависимости от вашего выбора-
ИЛИ __________________
Укажите пункт меню View >- DocuriiencaiTon (Вид >-Документация). Окно документации будс ।
показано или скрыто.
ИЛИ ------------------
Нажмите либо отпустите кнопку View Documentation (Показать окно документации) панель_
инструментов. Гейер в Rose сделает это окно видимым или невидимым в зависимости от вашего
выбора.
Панели инструментов ------------------
Панели инструментов Rose обеспечивают быстрый доступ к наиболее распространенным-кемандамз—
Предлагаются два типа панелей инструментов: стандартная панель и панель диаграммы Стандартная
панель видна ис ct да, ее кнопки соответствуют командам, которые могут использоваться для работы с
любой диаграммой- Панель диаграммы своя для каждого типа диаграмм UML. Различные ПЗйТ^ли дигг
грамм подробно рассматриваю гея ниже. ------------------
Пункты стандартной панели показаны в таблице 2.2,
Таблица 2,2. Пиктограммы стандартной панели инструментов
Пиктограмма Кнопка H аан эчен не
□ Create New Model Создает новый файл модели Rose (. tndl)
& Open Existing Model Открывает существующий файл модели Rose (. mdl)
'о Save Model or Log Сохраняет файл модели Rose (.mdl) нпи журнал открытой модели
Зп
XI Cut Вырезает текст, перенося его а буфер обмена (clipboard)
Copy Копирует те хот а буфер
Pasta Вставляет текст из буфера
Print Diagrams Печатает одну или несколько диаграмм открытой модели
Context Sensitive Help Открывает файл справки
1 1 View Documentation Делает видимым окно документации
L&] Brovjse Class Diagram Находит и открывает диаграмму Классов
"ни Browse Interaction Diagram Находит и открывает диаграмму Последовательности или Кооперативную
Итт диаграмму
я Browse Component Diagram Находит и открывает диаграмму Компонентов
а Browse Deployment Diagram Находит и открывает диаграмму Размещения
Введение в Rose
Таблица 2.2. Пиктограммы стандартной панели инструментов (продолжение)
Пиктограмма Кнопка
Назначение
Browse Parent
Находит и открывает диаграмму, порождающую данную (родительскую диаграмму)
Browse Previous Diagram
Zoom In
Находит и открывает диаграмму, с которой вы работали перед данной диаграммой
Увеличивает масштаб
Zoom Out
Уменьшает масштаб
Fit in Window
Устанавливает такой масштаб, чтобы вся диаграмма поместилась в одном окне
Undo Fit in Window
Отменяет команду Fit in Window
Пользователь может изменить и настроить любую панель инструментов. Для этого следует выбрать пункт
меню Tools Options (Инструменты Параметры), затем вкладку Toolbars (Панели инструментов).
Показать или скрыть стандартную панель инструментов можно следующим образом:
1. Выберите пункт Tools Options (Инструменты Параметры).
2. Выберите вкладку Toolbars (Панели инструментов).
3. Установите или сбросьте флажок Show Standard Toolbar (Показать стандартную панель
инструментов).
Если нужно показать или скрыть панель инструментов диаграммы:
1. Выберите пункт Tools Options (Инструменты Параметры).
2. Выберите вкладку Toolbars (Панели инструментов).
3. Установите или сбросьте флажок Show Diagram Toolbar (Показать панель инструментов
диаграммы).
Для увеличения размера кнопок панели инструментов:
1. Щелкните правой кнопкой мыши на требуемой панели.
2. Во всплывающем меню выберите пункт Use Large Buttons (Использовать большие кнопки).
Для настройки панели инструментов:
1. Щелкните правой кнопкой мыши на требуемой панели.
2. Выберите пункт Customize (Настроить).
3. Чтобы добавить или удалить кнопки, выберите соответствующую кнопку и затем щелкните мы-
шью на кнопке Add (Добавить) или Remove (Удалить), как показано на рис. 2.32.
Рис. 2.32.
Настройка
стандартной
панели
инструментов
Customize Г oolbai
W4
Separator
Creates a parameterized cla?
Creates a generafization
Creates a class utility
Creates a parameterized
Creates a unidirectional
Creates an Actor
Creates a Use Case
44
Глава 2
Окно диаграммы ——-
В окне диаграммы (см. рис. 2.33) выводится одна или несколько диаграмм UML вашей модели._При_
внесении изменений в элементы диаграммы Rose автоматически обновит браузер. Аналогично, при
внесении изменений в элемент с помощью браузера Rose автоматически (б новит соответствующие
диаграммы. Это помогает поддерживать модель в непротиворечивом состоянии, --—
Рис. 2,33.
Окно диогроммы
Журнал
По мере работы над моделью определенная информация направляется в окно журнала. Например,
ryjp. помещаются сообщения об ошибках, возникающих при генерации кода (см, рис. 2-М). Неввамеж—
но закрыть журнал совсем, но его окно может быть минимизировано,
Рис. 2.34.
Окно журнОлО
QLog
21 :H(f:41|
21.00:41)
21 lHBz43|
21:00:43|
21 00-431
21:OO:44|
21:00:44)
21:00:44]
21:00:44)
21:00:5?)
21'.00:57|
211G0S71
21:00:5?) |Cusl откивЫе Menun)
2Г-0057) )Cus tomlzsble Menus)
21:00:5?| ”
21:00:57)
21:00'57]
2i:00:5?|
21 -.00-.57|
21 fl057|
2 I '.00-57|
(Updulc Model Properties) ”
UpdoVvtg nadet properties Jrsm llle C.\Pragiem FileetfUtioftalRAiiarjal Лоос 90
{Updite Model Properties)
Updating (nude I properties (ram file Cr\Pragrtm Flles^RetioABti/Ullanal Rase 90
|Update Model Properties)
Updating model properties tram tile СДРтодгот FllesVtaUonslIRBilonal Hase ЗЯ iT
[CuslomiJatUe Menus)
(CusiumiiBtile Menui]
[CusiumiiлЫе Menus)
(Custamiishie Menus)
ICustomizable Menus)
[Cuslomrznbfe Menus)
fCufiiDmizebie Menus)
fC us Io ii i io b I e Menus)
)Cufiionttf вЫе Menus)
Введение в Rose
Четыре представления модели Rose
Модель Rose поддерживает четыре представления (views): представление Вариантов Использования,
Логическое представление, представление Компонентов и представление Размещения. У каждого из
них свои цели и своя аудитория. В последующих разделах этой главы кратко рассматривается каждое
из указанных представлений, а в оставшейся части книги детально обсуждаются содержащиеся в них
элементы модели.
Представление Вариантов Использования
Это представление включает в себя всех действующих лиц, все варианты использования и их диаграм-
мы для конкретной системы. Оно может также содержать некоторые диаграммы Последовательности
и Кооперативные диаграммы. Представление Вариантов Использования — это взгляд на систему, не-
зависимый от ее реализации. Основное внимание здесь уделяется представлению высокого уровня,
отображающему, что система будет делать, а не как она будет делать это. На рис. 2.35 показано, как вы-
глядит представление Вариантов Использования в браузере Rose.
Рис. 2.35.
Представление
Вариантов
Использования
fr-..
ё .
h •
Представление Вариантов Использования содержит:
Действующих лиц, представляющих собой внешние сущности (entities), взаимодействую-
щие с создаваемой системой.
Варианты использования, являющиеся высокоуровневыми элементами функционально-
сти, которую обеспечивает система.
Документацию по вариантам использования, детализирующую происходящие в них про-
цессы (потоки событий), включая обработку ошибок. Эта пиктограмма соответствует
внешнему файлу, прикрепленному к модели Rose. Вид пиктограммы зависит от приложе-
ния, используемого для документирования потока событий. В данном случае применялся
Microsoft Word.
Диаграммы Вариантов Использования, отображающие действующих лиц, варианты ис-
пользования и взаимодействие между ними. Обычно у системы бывает несколько таких
диаграмм, каждая из которых показывает подмножество действующих лиц и/или вари-
антов использования.
46
Глава 2
Диаграммы Взаимодействия, отображающие объекты или классы, которые принимают
участие в одном потоке событий варианта использования. Для каждого варианта исполь-
зования можно создать множество диаграмм Взаимодействия. Это делается либо в пред-
ставлении Вариантов Использования, либо в Логическом представлении системы. Как
правило, не зависящие от языка программирования и реализации диаграммы Взаимо-
действия создают в представлении Вариантов Использования. Обычно такие диаграммы
показывают взаимодействие объектов, а не классов. Диаграммы Взаимодействия, завися-
щие от языка, обычно находятся в Логическом представлении системы. Они, как прави-
ло, отображают классы, а не объекты.
Пакеты, являющиеся группами вариантов использования и/или действующих лиц. Па-
кеты представляют собой механизм языка UML, позволяющий группировать вместе
сходные элементы. Как правило, в системе существует сравнительно мало вариантов ис-
пользования и действующих лиц, так что образовывать из них пакеты не требуется. Тем
не менее этот инструмент всегда может помочь в организации представления Вариантов
Использования.
В начале работы над проектом представление Вариантов Использования необходимо заказчикам,
аналитикам и менеджерам проекта. Работая с вариантами использования, их диаграммами и докумен-
тацией, они смогут прийти к соглашению о том, как должна выглядеть система на высоком уровне.
Еще раз подчеркнем, что это представление рассматривает только, что именно будет делать система.
Обсуждение деталей ее реализации следует оставить на будущее.
В процессе работы над проектом все члены команды могут ознакомиться с этим представлением,
чтобы достичь понимания системы на высоком уровне. Документация варианта использования опи-
сывает соответствующий поток событий. С помощью этой информации специалисты по контролю
качества смогут приступить к созданию тестовых программ для системы, а технические писатели —
документации для пользователей. Аналитики и заказчики будут уверены, что учтены все требования.
Разработчики поймут, какие высокоуровневые элементы системы предстоит создать и как будет рабо-
тать ее логика.
Согласовав варианты использования и действующих лиц, заказчики должны будут принять реше-
ние и по поводу области применения (scope) системы. После этого разработчики смогут перейти к ее
Логическому представлению, уделяющему больше внимания тому, как система будет реализовывать
поведение, определяемое вариантами использования.
Логическое представление
Логическое представление (см. рис. 2.36) концентрируется на том, как система будет реализовывать
поведение, описанное в вариантах использования. Оно дает подробную картину составных частей си-
стемы и описывает их взаимодействие. Логическое представление включает в себя, помимо прочего,
конкретные требуемые классы, диаграммы Классов и диаграммы Состояний. С их помощью разработ-
чики могут сконструировать детальный проект создаваемой системы.
Рис. 2.36.
Логическое
представление
системы
Use Case View
X Main
Ш Card Reader (Card Reader, Card Reader)
;•••• Card Number
L. 4 Accept Card
|.> Eject Card
> Read Card
Account (Account. Account)
• § Cash Dispenser (Cash Dispenser, Cash Dispe^
1! ATM Screen (ATM Screen, ATM Screen)
J Component View
Й • Д Deployment View
Введение в Rose
47
Логическое представление содержит:
Классы, являющиеся строительными блоками системы. Класс состоит из небольшого ко-
личества данных (атрибутов) и некоторого поведения (операций), сгруппированных
вместе. Например, класс Employee (работник) может в качестве данных содержать имя
работника, его адрес и номер социальной страховки, а в качестве поведения — прием на
работу и увольнение.
Диаграммы Классов, используемые для представления классов системы, их атрибутов,
• операций и связей друг с другом. Как правило, для описания системы применяется не-
сколько диаграмм Классов, каждая из которых отображает некоторое подмножество
всех классов системы.
Диаграммы Взаимодействия, применяемые для отображения классов, участвующих в од-
ном потоке событий варианта использования. Как упоминалось ранее, диаграммы Взаи-
модействия создаются в представлении Вариантов Использования или в Логическом
представлении. При этом, как правило, в первом случае на диаграммах изображают объ-
екты, а во втором — классы системы.
г
к
Диаграммы Состояний, описывающие динамику поведения объекта. Они включают в
себя все состояния, в которых данный объект может существовать. Они также показыва-
ют, как объект переходит из одного состояния в другое, в каком состоянии он находится
сразу после создания и в каком — непосредственно перед уничтожением.
л
Пакеты, являющиеся группами взаимосвязанных классов. Объединять классы в пакеты
не обязательно, но настоятельно рекомендуется. Типичная система может содержать
сотню или более классов, и объединение их в пакеты помогает уменьшить сложность мо-
дели. Для понимания общей картины системы достаточно взглянуть на ее пакеты. Чтобы
изучить систему на более детальном уровне, приходится углубляться в пакеты и исследо-
вать классы, находящиеся внутри.
Часто разработка Логического представления осуществляется в два этапа. Сначала определяются
; классы анализа (analysis classes). Они не зависят от языка программирования. Создавая их в первую
очередь, разработчики могут увидеть структуру системы, не углубляясь в специфические особенности
• конкретного языка. В языке UML для изображения классов анализа используют следующие пиктог-
раммы:
граничный
класс
(boundary)
сущность
(entity)
управляющий
класс
(control)
Классы анализа могут появляться также на диаграммах Взаимодействия в представлении Вариан-
[ тов Использования. После определения всех классов анализа каждый из них может быть преобразо-
ван в класс проекта (design class). Класс проекта уже содержит специфические для данного языка
детали. Например, можно представить себе класс анализа, отвечающий за обмен информацией с дру-
f гой системой. Нас пока не интересует, на каком языке он будет написан, мы уделяем внимание только
J его данным и поведению. Но преобразуя его в класс проекта, нам придется коснуться специфических
'для языка деталей. Допустим, что это будет класс Java. Тогда для реализации того, что мы заложили в
класс анализа, нам могут понадобиться два класса Java. Это значит, что отсутствует строгое соответст-
вие между классами того и другого типа. Классы проекта изображают на диаграммах Взаимодействия
[Логического представления системы.
В этом представлении основное внимание уделяется логической структуре системы. Мы изучаем
ные и поведение системы, определяем ее составные части и исследуем взаимодействие между
ги. Одной из ключевых особенностей здесь является возможность повторного использования (re-
vise). Тщательно соотнося данные и поведение классов, группируя классы вместе и исследуя взаимо-
действие между классами и пакетами, можно определить, какие из них допускают повторное
^использование. Завершая новые и новые проекты, вы будете постепенно увеличивать вашу библиоте-
|ку повторно используемых классов и пакетов. В результате выполнение будущих проектов будет все
48
Глава 2
более и более становиться процессом сборки целого из имеющихся у вас составных частей, а не раз-
работки "с чистого листа".
Почти все участники команды должны изучить Логическое представление системы, однако более
всего оно полезно для разработчиков и архитекторов. Взглянув на классы и их диаграммы, аналитики
смогут убедиться, что все бизнес-требования будут реализованы в коде. Изучая классы, пакеты и диа-
граммы Классов, специалисты по контролю качества поймут, из каких элементов состоит система и
какие нуждаются в тестировании, а с помощью диаграмм Состояний увидят, как должны вести себя
конкретные классы. Менеджер проекта из тех же элементов представления сможет уяснить, хорошо
ли структурирована система, а также получить оценку степени ее сложности.
Однако больше всего этим представлением пользуются разработчики и архитекторы. Первые вы-
ясняют, какие классы надо создавать, а также какие данные и поведение должен иметь каждый класс.
Для вторых важнее всего структура системы в целом. Их задача — добиться того, чтобы архитектура
системы была стабильна, но в то же время гибка настолько, чтобы адаптироваться к изменениям в
требованиях. Другая задача — рассмотреть возможность повторного использования.
Определив классы системы и нанеся их на диаграммы, можно приступить к работе с представле-
нием Компонентов, имеющим дело с физической структурой системы.
Представление Компонентов
Представление Компонентов содержит информацию о библиотеках кода, исполняемых файлах, дина-
мических библиотеках и других компонентах моделей. Компонент — это физический модуль кода.
В среде Rose компоненты и диаграммы Компонентов показывают в представлении Компонентов
(см. рис. 2.37). Представление Компонентов системы отображает связи между модулями кода.
Рис. 2.37.
Представление
Компонентов
Представление Компонентов содержит:
Компоненты, являющиеся физическими модулями кода.
Диаграммы Компонентов, отображающие компоненты и их связи. Связи между компо- (
нентами системы позволяют понять зависимости, возникающие при компиляции. Зная |
эти зависимости, можно установить порядок компиляции компонентов.
Пакеты, являющиеся группами связанных компонентов. Как и в случае классов, повтор- |
ное использование является одним из мотивов объединения компонентов в пакеты. I
Группу связанных компонентов системы можно использовать в других приложениях при [
условии, что связи между этой и другими группами тщательно отслеживаются (см. [
ниже).
Введен ие в Rose 49
Представление Компонентов более всего используется теми участниками проекта, кто отвечает за
управление кодированием, компиляцию и размещение приложения. Часть компонентов — это биб-
лиотеки кода. Остальные — динамические компоненты, такие как, исполняемые файлы и файлы ди-
намических библиотек (.DLL). С помощью этого представления разработчики могут понять, какие
библиотеки кода были созданы и какие классы содержатся в каждой из них.
Представление Размещения
Представление Размещения соответствует физическому размещению системы, которое может отли-
чаться от ее логической архитектуры.
Например, система может иметь трехуровневую логическую архитектуру: интерфейс логически
отделен от бизнес-логики, а она, в свою очередь, отделена от базы данных. Однако размещение систе-
мы может быть и двухуровневым: интерфейс находится на одном компьютере, а остальные две час-
ти — на другом.
Представление Размещения отражает и такие проблемы, как отказоустойчивость системы, шири-
на полосы пропускания сети, восстановление после сбоев и время отклика. Представление Размеще-
ния показано на рис. 2.38.
Рис. 2.38.
Представление
Размещения
Jr л А -
ф-□ 459 Elm St ATM
•—[Д ATMCbentexe
Е-Э-Д1 Regional ATM Server
i[Я ATMServer.exe
-цд ATMCbentexe
3' Д Banking Database Server
И Oracle Server
i-fi) Printer
В представление Размещения входят:
*
Процессы, которые являются потоками (threads), исполняемыми в отведенной для них
области памяти.
Процессоры, т.е. компьютеры, способные обрабатывать данные. Любой процесс выпол-
няется на одном или нескольких процессорах.
Устройства, т.е. аппаратура, не способная обрабатывать данные. К числу таких устройств
относятся, например, терминалы ввода-вывода и принтеры.
Диаграмма Размещения, на которой показаны процессоры и устройства сети, а также физические
соединения между ними. Кроме того, на диаграмме Размещения изображают процессы и обозначают,
какие процессы на каких компьютерах выполняются.
Из представления Размещения может извлечь пользу вся работающая над проектом команда, так
как оно позволяет понять физическое размещение системы. Основными ее пользователями, однако,
являются те участники проекта, которые отвечают за распределение приложения.
Работа в среде Rose
Все, что вы делаете в среде Rose, связано с моделями. В этом разделе показано, как использовать моде-
ли. Затем рассматривается организация коллективного проектирования с помощью управляемых эле-
ментов (controlled units). И, наконец, описываются все пункты меню Rose.
50
Создание моделей
Первым шагом в работе с Rose является создание моделей- Их можно строить либо "с нуля", либо взяв
за основу существующую каркасную модель. Готовую модель Rose со всеми диаграммами, объектами и
другими элементами можно сохранить в одном файле, имеющем расширение - Ml (model).—-
Для создания модели:
1. Выберите в меню пункт File > New (Файл > Создать)
2. Если у вас установлен Мастер каркаса (Framework Wizard), то на экране появится список доступ'
иых каркасов (см. рис- 2-39). Выберите каркас и щелкните на кнопке ОК. Если вы не планируете
работать с каркасами, щелкните на кнопке Cancel (Отмена).
Рис. 2.39.
Мастер каркаса
iGiCftJ МЛЙ New
OuLkjcik, Hdti Sq|04M SLtrtfld
Сохранение моделей
Как и в случае др)тих приложений, рекомендуется периодически сохранять файлы во время работы
с ними. Вся модель сохраняется в одном файле. Кроме того, в отдельном файле можно сохранить
журнал. -------
Для сохранения модели:
Выберите в меню пункт File Save (Файл > Сохранить),
ИЛИ
Щелкните мышью на кнопке Save (Сохранить) стандартной кипели инструментов.
Для сохранения журнала: ’
1. Выделите окно журнала.
2- Выберите в меню пункт File > Save log As (Файл > Сохранить как). "
3- Введите название журнала.
ИЛИ -------
1. Выделите окно журнала. ’
2. Щелкните мышью на кнопке Save (Сохранить) стандартной панели инструментов. ’
3, Введи те название журнала-
Экспорт и импорт моделей — ---
Одним на главных преимуществ объектно-ориентированной парадигмы является возможность по-
вторного использования, применимая не только к коду, но и к самой модели. Для максимально полной
ее реализации Rose поддерживает экспорт и импорт моделей и их элементов. Вы можете экспортиро-
вать модель или ее фрагменты и затем импортировать их it другие- модели- -
Введение в Rose
Дли экспорта модели:
1* Выберите в меню пункт bile Export Model (Файл Экспортировать модель).
2. Введите имя экспортируемого файла,
Для экспорта пакета классов:
На диаграмме классов выберите пакет, который нужно экспортировать.
2. Выберите в меню пункт File Export <Package> (Файл Экспортировать <пакет>),
3. Введите имя экспортируемого файла.
Для экспорта класса:
1. На диаграмме классов выберите класс( который н\гжно экспортировать,
2. Выберите в меню пункт File Export <Class> (Файл Экспортировать скласо). ------------
3. Введите имя экспортируемого файла. -------
Для импорта модели, пакета или класса: -------
1. Выберите в меню пункт File Import Model (Файл Импортировать модель). ---------------
2. Укажите файл, который требуется импортировать. Можно импортировать файлы моделей
(.MDL), petal (. PTL)r категорий (.CAT) и подсистем (.SUB).
Публикация модели на Web-странице <98i)
С помощью Rational Rose 98i можно публиковать модели на Web-страницах — в корпоративной сети
предприятия (интранет), в Интернете или на сайте файловой системы (die system site). Таким обра’
зам, все желающие смогу!' изучить ваши модели, даже не будучи пользователями Rose и не расп ечятьт-
вая большое количество соответствующей документации. Пример опубликованной в сети модели
показан на рис, 2.40.
Рис. 2.40.
Публикоция модели
ATM в сети
\Ыу L)iJCuiheriH\U4blrririq Haliunul Ниве 4U\HL UOUHCLXWeLWodelUrtwriei Mini Ын-ici stifi Inleratt I ipk»r?i
L*1 'j,.
_'.jp
Lwika £J>TC7 < =:!< ui i.n'<•< ,;i
: M. ' ir -,ч -i
- dGOjAIOftla'iill
j L.4 Сол
]«
и О Wm4* Mrwy
.• о CiapMd Fiwrii
r' о TfBMfArFiMdo
' I4J
। № • Д Валком»
Jtl
Для публикации модели в сети:
1. Выберите в меню пункт Tools Web Publisher (Инструменты Мастер публикации в сети)
2. В окне Мастера публикации (см. рис. 2.41) укажите представления модели и пакеты.
52
( лава 2
-------
Рис. 2.41
Окно Мастера
публикации
i;,ml Ртаделм
□ «гаупМ^г
rt-
NoUbw--------
г ftotrffi
с OUT
15 f.lML
rWu»*
ElAniad Тпи OUOl.ffl
hqjcjj pt aperies
3. Выберите требуемый уровень детализации. Уровень Documentation Only (Только документа-
ция) соответствует наиболее общей информации, при этом не будут показаны никакие свойства
элементов модели, При выборе уровня Intermediate (Промежуточный) будут показаны те свой-
ства элементов модели, которые описаны на вкладке General (Общие) их сиецификаций^-Уро=—
пень Full (Полный) означает публикацию всех свойств, включая те, что содержатся па вкладке
Detail спецификации элементов модели.
4. Выберите требуемую нотацию. По умолчанию будет использоваться та нотация, что принята =
умолчанию в среде Rose.
5. Укажите, хотите ли вы опубликовать наследуемые элементы (inherited items),
6. Укажите, надо ли публиковать свойства.
7. Введите название корневого файла HTML, в котором будет опубликована ваша моделы
8- Если вы хотите использовать для диаграмм трафические файлы, нажмите на кнопку Diagram^
(Диаграммы). Появится окно Diagram Options (Параметры диаграммы), как показано т?>—
рис. 2.42. __________
9. Укажите формат, в котором бу дуг опубликованы ваши диаграммы. Можно выбрать Window
Bitmaps (Растровые изображения в среде Windows), Portable Network Graphics (PNG) (Перено
ci।мая no сети графика) или JPEG либо отказаться от публикации диаграмм^ ----------
10. Закончив, щелкните на кнопке Finish (Готово). В результате будут созданы все \Уе1хтраницы-
требуемые для публикации модели.
11 Щелкнув мышью на кнопке Preview (Предварительный просмотр), посмотрите, что получи-_______
лось.
Введение в Rose
53
Рис. 2Л2.
Окно выбора
параметров
дна грамм
I - Hnlivnal |,ьь^ ‘ ЛГМ Hid ' (JjKqjtTTvLmjH.'U YMmV Mdu
Работа с управляемыми элементами ____________________
С помощью управляемых элементов (controlled units) среда Rose поддерживает миогопользователы
скую параллельную разработку моделей. Управляемым элемс i ггч.м может быть любой пакет, входящий
в Логическое представление, в представление Вариантов i Icin иплг1лапия или Компонентов системы_
На контроль могут быть поставлены также свойства модели (model р rope Hies) и компоненты на пред-
ставления Размещения, Управляемый элемент сохраняется в отдельном файле, а не в общем файле
модели. Этот файл можно контролировать с помощью таких соответствующих стандарту SCG инстру4—
ментов как Rational ClearCasc, Microsoft Sonic eSiir или даже н симой среде Rose in ограниченном объ-
еме), Можно загружать или выгружать управляемые hi^chiw из рассматриваемой модели,
подключать или отключать их проверку (при наличии i иегцельного инструмента контроля).
В Rose 98 работа с объектами осуществляется в окне, показанном на рис. 2.43. В Rose 981 это делается-€—
помощью всплывающих меню, открываемых а браузере при щелчке правой кнопкой мыши ид пакете.
Для создания управляемого элемента в Rose 98:
1Г Выберите в меню пункт Browse > Units (Просмотр Элементы).
2, В открывшемся окне выберите пакет, который следует контролировать,
3. Щелкните на кнопке Coni го! (Элемент управления),
Рис. 2,43.
Робота
с управляемыми
элементами
Ппйя
rtJlOip
(Г UiiCdtaV**
। С" '/«л
r« J
iг
Packet
AlKClart
ДГм-.z’ -
[ UniС oi Pirelli V'^w;
' Ji£j ДСПЙ
54
Глава 2
Для создания управляемого элемента в Rose 98i:
<
1. Щелкните правой кнопкой мыши на элементе, который следует контролировать.
2. В появившемся меню выберите пункт Units > Control <package> (Элементы > Контроль
<пакета>).
3. Введите название файла для управляемого элемента. Обратите внимание: на пиктограмме соот-
ветствующей папки в браузере выводится символ страницы, означающий, что пакет является
управляемым.
При параллельной разработке может потребоваться выгрузить пакет, чтобы с ним могли порабо-
тать другие. Для выгрузки управляемого элемента:
1. Щелкните правой кнопкой мыши на выгружаемом элементе.
2. В появившемся меню выберите пункт Units Unload <package> (Элементы Выгрузить <па-
кет>). Обратите внимание, что соответствующие элементы пакета теперь не показаны в браузе-
ре, так как они удалены из модели.
Для выгрузки всех управляемых пакетов представления:
1. Щелкните правой кнопкой мыши на представлении,
а
2. В появившемся меню выберите пункт Units Unload subunits of <View> (Элементы Выгру-
зить элементы из <Представления>).
Возможно, вам понадобится вновь загрузить пакет, над которым поработали другие члены коман-
ды. Для загрузки управляемого элемента:
1. Щелкните правой кнопкой мыши на загружаемом элементе.
2. В появившемся меню выберите пункт Units Load <package> (Элементы >• Загрузить <пакет>).
3. Щелкните на кнопке Load (Загрузить).
4. Выделите управляемый элемент.
Снять контроль с управляемого элемента можно следующим образом:
1. Убедитесь, что элемент загружен.
2. Щелкните правой кнопкой мыши на элементе, с которого снимается контроль.
3. В появившемся меню выберите пункт Units Uncontrol <package> (Элементы Снять конт-
роль с <пакета>).
Иногда требуется просмотреть определенные элементы, не модифицируя их. Для защиты элемен-
тов от изменения их надо пометить как защищенные от записи (write-protected).
Для защиты управляемого элемента от записи:
1. Щелкните правой кнопкой мыши на защищаемом элементе.
2. В открывшемся окне элемента выберите защищаемый от записи пакет. В момент выбора он
должен быть не защищен.
3. Щелкните на кнопке Write Protect.
Снять защиту от записи с управляемого элемента можно следующим образом:
*
1. Выберите в меню пункт Browse > Units (Обзор Элементы).
2. В появившемся окне элемента укажите пакет, с которого нужно снять защиту от записи.
В момент выбора он должен быть защищен.
3. Щелкните на кнопке Write Enable.
Работа с меню
Этот раздел содержит список и краткое описание всех команд меню Rose. Имейте в виду, что некото-
рые пункты меню могут быть доступны только при определенных условиях. Например, пункт Save Log
(Сохранить журнал) доступен, только если журнал активен. В среде Rose 98i некоторые пункты меню
изменили свое расположение по сравнению с предыдущей версией. В таблице 2.3 содержится список
пунктов меню Rose и их описания. Доступные только в среде Rose 98i пункты меню помечены как 98i.
Те пункты, которые имеются лишь в среде Rose 98, помечены как 98.
Введение в Rose
Таблица 2.3. Пункты меню Rose
Пункт меню____________________Описание__________________
File > New (Файл Создать)Создает новую модель Rose
File Open (Файл Открыть)Открывает существующую модель Rose
File >» Save (Файл >► Сохранить)Сохраняет открытую модель Rose
File >» Save As (Файл Сохранить как)Сохраняет текущую модель Rose под другим именем
File >» Units Load (Файл >• Элементы >► Загрузить)Загружает управляемый элемент (пакет)
File » Units >• Save (Файл Элементы >• Сохранить)Сохраняет управляемый элемент
File Units >> Save As (Файл Элементы >» Сохранить как)Сохраняет управляемый элемент под другим именем
file >» Units >- Unload (Файл >► Элементы >» Выгрузить)Выгружает управляемый элемент
File > Units Control (Файл >» Элементы > Контролировать)
File >» Units Uncontrol (Файл Элементы >► Отмена контроля)
File Units > Write Protection
File » Units » CM
(Файл Элементы Управление конфигурацией)
File > Import (Файл Импорт)_____________________________
File Export Model (Файл Экспорт модели)
File Update (Файл >► Обновить)__________________________
File > Print Diagrams (Файл >► Печать диаграмм)___________
File >- Print Specifications (Файл >» Параметры печати)___
File >► Print Setup (Файл »• Настройка принтера)__________
File >• Edit Path Map (Файл >» Редактирование путей) л
File >► <Recent File> (Файл <Предыдущий файл>)
File »> Exit (Файл Выход)_________________________________
Edit >• Undo (Правка Отмена команды)______________________
Edit Redo (Правка Повтор команды)
Edit Cut (Правка > Вырезать)
Edit Сору (Правка Копировать)
Edit Paste (Правка >> Вставить)
Делает пакет управляемым_________________________________
Отменяет управляемость пакета____________________________
Защищает от записи управляемый элемент___________________
Работа с конфигурацией управляемого элемента
(доступен при использовании инструмента конфигурации)
Импортирует модель, подсистему, пакет или класс
Экспортирует модель, подсистему, пакет или класс
Обновляет модель с помощью обратного проектирования кода
Печатает диаграммы модели
Определяет параметры печати диаграмм
Настраивает принтер (настройка принтера из среды Windows)
Редактирует различные пути, используемые приложением Rose
Открывает предыдущий файл модели_________________________
Завершает работу в среде Rose
Отменяет последнюю выполненную команду
Повторяет последнюю выполненную команду
Вырезает выделенные объекты из диаграммы (не удаляет их из
модели)
Копирует выделенные на диаграмме объекты_________________
Вставляет предварительно вырезанные или скопированные объ-
екты
Edit >» Delete (Правка Удалить)Удаляет выделенные объекты с диаграммы
Edit >» Select All (Правка >• Выделить все)Выделяет все объекты на текущей диаграмме
Edit Delete from Model (Правка Удалить из модели) Окончательно удаляет выделенные объекты из модели
______(не только с диаграммы)___________________
Edit Relocate (Правка Переместить)Перемещает класс из какого-либо пакета в текущий
Edit > Diagram Object Properties Font Size Изменяет размер шрифта для выделенных объектов
(Правка >» Свойства объекта диаграммы Размер шрифта)
Edit > Diagram Object Properties Font Изменяет шрифт для выделенных объектов
(Правка Свойства объекта диаграммы Шрифт)_____________________________________________
Edit > Diagram Object Properties Line Color Изменяет цвет линии выделенных объектов
(Правка Свойства объекта диаграммы Цветлинии)_
Edit Diagram Object Properties Fill Color Изменяет цвет заполнения выделенных объектов
(Правка Свойства объекта диаграммы >► Цвет заполнения)
Edit Diagram Object Properties >- Use Fill Color (Правка Свой- Включает использование цвета заполнения выделенных объектов
ства объекта диаграммы > Использовать цвет заполнения)
S
Edit > Diagram Object Properties Automatic Resize (Правка Автоматически изменяет размер выделенных объектов, чтобы
Свойства объекта диаграммы Автоматическое изменение раз- привести их в соответствие с текстом
56
Глава 2
Таблица 2.3. Пункты меню Rose (продолжение)_____________________________________________________________________
Пункт меню_______________________________________________Описание_____________________________________________
Edit Diagram Object Properties Stereotype Display (Правка Показывает стереотипы выделенных объектов
Свойства объекта диаграммы Показать стереотип) ______________________
Edit Diagram Object Properties Stereotype Label (Правка Включает показ меток стереотипов для выделенных связей
Свойства объекта диаграммы Метка стереотипа) _________________________________
Edit > Diagram Object Properties >- Show Visibility (Правка Включает показ пиктограмм, отражающих видимость:
Свойства объекта диаграммы Показать видимость)public/protected/private/package (implementation)
Edit Diagram Object Properties Show Compartment Включает показ стереотипов для текущего отделения
Stereotypes (Правка Свойства объекта диаграммы Показать
стереотипы отделения)_________________________________________________________________________________________
Edit >> Diagram Object Properties >- Show Operation Signature Включает вывод сигнатур операций
(Правка Свойства объекта диаграммы Показать сигнатуру
операции)
Edit Diagram Object Properties Show All Attributes (Правка Показывает отделение co всеми атрибутами
Свойства объекта диаграммы Показать все атрибуты)_________________________________________________________
Edit Diagram Object Properties Show All Operations (Правка Показывает отделение со всеми операциями
Свойства объекта диаграммы > Показать все операции)
Edit Diagram Object Properties Suppress Attributes He показывает атрибуты
(Правка >• Свойства объекта диаграммы >► Скрыть атрибуты)
Edit Diagram Object Properties Suppress Operations He показывает операции отделения
(Правка Свойства объекта диаграммы >» Скрыть операции)__________________
Edit Find (Правка Найти)Определяет, в каком пакете находится объект
Edit Reassign (Правка Переназначить)Превращает выделенный объект в другой объект
Edit Compartment (Правка Отделение) Выбирает, какие объекты надо показать в текущем отделении
(команды Show All Attributes/Operations и Suppress Attributes/Ope-
__________________________________________________rations отменяют результаты выполнения данного пункта)
Edit Change Into Class Преобразует выделенные объекты в классы
(Правка >- Преобразовать в Класс)’•
Edit > Change Into Parameterized Class Преобразует выделенные объекты в параметризованные классы
(Правка Преобразовать в >• Параметризованный класс)
Edit Change Into Instantiated Class Преобразует выделенные объекты в классы-наполнители
(Правка Преобразовать в Класс-наполнитель)____________
Edit Change Into Class Utility Преобразует выделенные объекты в утилиты классов
(Правка Преобразовать в Утилита класса)
Edit Change Into Parameterized Class Utility (Правка Преобразует выделенные объекты в утилиты параметризованных
Преобразовать в >- Утилита параметризованного класса)классов
Edit Change Into Instantiated Class Utility Преобразует выделенные объекты в утилиты классов-наполните-
(Правка Преобразовать в >» Утилита класса-наполнителя) лей____________________________________________________
Edit Change Into Uses Dependency Преобразует выделенные связи в зависимости
(Правка Преобразовать в > Зависимость использования) ________________________________________________________
Edit Change Into Inherits Преобразует выделенные связи в обобщения
(Правка Преобразовать в > Наследования)__________________
Edit Change Into Instantiates Преобразует выделенные связи в наполнения
(Правка Преобразовать в Наполнения)______________________
Edit >=* Change Into Association Преобразует выделенные связи в ассоциации
(Правка Преобразовать в > Ассоциация)
Edit Change Into > Realize Преобразует выделенные связи в реализации
(Правка >» Преобразовать в Реализация)';
Edit Change Line Style Rectilinear Преобразует стиль линий, соответствующих выделенным связям,
(Правка Изменить стиль линии Прямолинейный) в прямолинейный
V
Edit Change Line Style Oblique Преобразует стиль линий, соответствующих выделенным связям,
(Правка >• Изменить стиль линии Наклонный)_______________в наклонный__________________________________________
Введение в Rose
57
Таблица 2.3. Пункты меню Rose (продолжение)____________________________________________________
Пункт меню____________;____________________________Описание________________________________________
Edit > Change Line Style Toggle Переключает стиль линий, соответствующих выделенным связям,
(Правка Изменить стиль линии Переключение)между прямолинейным и наклонным
View Toolbars » Standard Включает показ стандартной панели инструментов
(Вид » Панели инструментов Стандартная)____________________________
View Toolbars Toolbox Включает показ инструментальной панели
(Вид >► Панели инструментов Инструментальная панель)
View »- Toolbars Configure
(Вид > Панели инструментов Конфигурирование)
Конфигурирует панели инструментов
View > Status Ваг (Вид Строка состояния)Включает показ строки состояния
View Documentation (Вид Документация)
Включает показ окна документации
View » Browser (Вид Браузер)Включает показ браузера
View » Zoom to Selection Изменяет масштаб, чтобы показать выделенные объекты
(Вид Изменить масштаб в соответствии с выделением)
View > Zoom In (Вид Увеличить масштаб)_Увеличивает масштаб изображения_______
View » Zoom Out (Вид Уменьшить масштаб)Уменьшает масштаб изображения
View > Fit in Window Изменяет масштаб текущей диаграммы так, что все ее элементы
(Вид >- Масштабировать в соответствии с окном)будут видны в одном окне
View » Undo Fit in Window
(Вид Отменить масштабирование в соответствии с окном)
View >» Page Breaks (Вид Разбиение на страницы)
View >• Refresh (Вид Обновить)
View > As Booch (Вид По Бучу)
Отменяет действие последней команды Fit in Window
Разбивает текущую диаграмму на страницы
Перерисовывает текущую диаграмму
^Показывает объекты на диаграмме в соответствии
с нотацией Буча
View > As ОМТ (Вид ОМТ)
Показывает объекты на диаграмме в соответствии
с нотацией ОМТ
View As Unified (Вид UML)
Browse >• Class Diagram (Обзор Диаграмма Классов)
Browse > Use Case Diagram
(Обзор Диаграмма Вариантов Использования)_____________
Browse >- Interaction Diagram
(Обзор Диаграмма Взаимодействия)______________________
Browse » Component Diagram
(Обзор >• Диаграмма Компонентов)______________________
Browse > State Diagram (Обзор Диаграмма Состояний)
Browse Deployment Diagram
(Обзор Диаграмма Размещения)________________________
Browse Expand (Обзор >• Расширить)
Показывает объекты на диаграмме в соответствии
с нотацией UML
Выделяет диаграммы Классов во всех пакетах
Выделяет диаграммы Вариантов Использования во всех пакетах
Выделяет диаграммы Взаимодействия во всех пакетах
Выделяет диаграммы Компонентов во всех пакетах
Выделяет диаграммы Состояний во всех пакетах
Выделяет диаграммы Размещения во всех пакетах
Показывает первую диаграмму, созданную для выделенного
пакета
Browse > Parent (Обзор Предок)_____________________
Browse Specification (Обзор Спецификация)
Browse Top Level (Обзор Верхний уровень)
Browse Referenced Item (Обзор >> Ссылка)
Показывает родителя выделенной диаграммы
Показывает окно спецификации выделенных объектов
Показывает диаграмму верхнего уровня для текущего
представления
Показывает главную диаграмму пакета, содержащего выделен-
ный объект
Browse Previous Diagram (Обзор Предыдущая диаграмма) Показывает предыдущую открытую диаграмму (вызывается также
__________________________________ одновременным нажатием клавиш CTRL+TAB)_____
Browse Create Message Trace Diagram Создает диаграмму Последовательности из Кооперативной
(Обзор Создать диаграмму трассировки сообщений)диаграммы и наоборот
Browse >> Units (98) (Обзор Элементы)Работает с управляемыми элементами
58
Г лава 2
Таблица 2.3. Пункты меню Rose (продолжение)
Report Show Usage (Отчет Показать использование) Создает отчет о каждой диаграмме Классов, в которой
_____ появляются выделенные объекты_______________________
Report Show Instances (Отчет Показать экземпляры) Создает отчет о каждой диаграмме Взаимодействия, в которой
_______________________________________________________появляются выделенные объекты_______________________
Report Show Access Violations Создает отчет обо всех случаях, в которых связи еще не были
(Отчет >• Показать нарушения доступа)установлены
Report Show Participants in UC Создает отчет обо всех классах и операциях, содержащихся
(Отчет > Показать участников вариантов использования) в диаграммах, которые принадлежат выделенному варианту
_______________ использования ____________________
Report >» Documentation Report (Отчет >» Документация)Генерирует отчет о документации по модели в формате Word
Query Add Classes (Запрос Добавить классы)Добавляет классы в модель на текущую диаграмму
Query >* Add Use Cases Добавляет варианты использования в модель на текущую
(Запрос > Добавить варианты использования)диаграмму
Query Expand Selected Items Добавляет на текущую диаграмму объекты, связанные с выделен-
(Запрос >► Расширить выбранные пункты)ным объектом
Query Hide Selected Items Удаляет с текущей диаграммы объекты, связанные с выделенным
(Запрос >► Скрыть выбранные пункты)___________________объектом____________________________________________
Query Filter Relationships (Запрос >• Фильтр связей)Показывает на всех диаграммах только выбранные типы связей
Tools Layout Diagram Располагает и компонует диаграмму так, чтобы минимизировать
(Инструменты >► Расположение диаграммы) количество пересечений и наложений линий, показывающих
связи
Tools Autosize АН Изменяет размеры всех объектов на текущей диаграмме
(Инструменты >» Автоматически изменить размер)
Tools > Create >» Text (Инструменты >► Создать >» Текст) Создает текстовый объект
Tools >» Create Note (Инструменты Создать >» Примечание) Создает объект-примечание
Tools Create Note Anchor Прикрепляет примечание к объекту
(Инструменты >• Создать >► Прикрепить примечание)______
Tools >• Create Class (Инструменты >» Создать Класс) Создает новый класс:
Tools Create Parameterized Class Создает новый параметризованный класс
(Инструменты >* Создать Параметризованный Класс)__________________________________________________________
Tools >* Create > Class Utility Создает новую утилиту класса
(Инструменты >» Создать Утилита класса)___________________________________________________________________
Tools Create Parameterized Class Utility (Инструменты Co- Создает новую утилиту параметризованного класса
здать >► Утилита параметризованного класса) _____________
Tools >• Create > Association Создает новую ассоциацию
(Инструменты Создать Ассоциация)________________________________________
Tools Create >=* Aggregate Association Создает новую агрегацию
(Инструменты Создать > Агрегация)______________________
Tools >• Create > Unidirectional Association Создает новую однонаправленную ассоциацию
(Инструменты >► Создать >» Однонаправленная ассоциация)
Tools >* Create Unidirectional Aggregate Association (98i) Создает новую однонаправленную агрегацию
(Инструменты >* Создать >► Однонаправленная агрегация)____________________________________________________
Tools Create Link Attribute Создает новый атрибут связи
(Инструменты >- Создать >» Атрибут связи)
Tools >• Create Generalization Создает новое обобщение
(Инструменты Создать Обобщение)________________________
Tools Create Dependency Создает новую зависимость
(Инструменты >» Создать >- Зависимость)________________
Tools >• Create Package (Инструменты >- Создать >► Пакет)Создает новый пакет
Tools Create Instantiated Class Создает новый класс-наполнитель
(Инструменты >» Создать >- Класс-наполнитель)______________________________________________________________
Введение в Rose
59
Таблица 2.3. Пункты меню Rose (продолжение)_________________________________________________________
Пункт меню__________________________________________________Описание_______________________________
Tools Create Instantiated Class Utility Создает новую утилиту класса-наполнителя
(Инструменты >» Создать Утилита класса-наполнителя)________________________________________________
Tools > Create >- Instantiates Создает новую связь наполнения
(Инструменты >• Создать > Наполнение)
Tools >• Create >• Actor Создает новое действующее лицо
(Инструменты >- Создать Действующее лицо)__________________________________________________________
Tools > Create > Use Case Создает новый вариант использования
(Инструменты » Создать >• Вариант использования)_______________
Tools > Create > Interface Создает новый интерфейс
(Инструменты >- Создать > Интерфейс)_______________________________________________________________
Tools Create Realize Создает новую реализацию
(Инструменты > Создать Реализация)_____________________________
Tools Check Model (Инструменты Проверить модель) Проверяет модель на наличие ошибок
Tools Model Properties Edit Правка спецификаций выделенного объекта
(Инструменты >► Свойства модели Правка)
Tools > Model Properties >- Replace Заменяет существующий набор свойств модели на новые
(Инструменты >• Свойства модели >- Заменить)свойства, сохраненные в файле
Tools Model Properties >• Export Экспортирует набор свойств модели в файл
(Инструменты >» Свойства модели » Экспорт)в
Tools » Model Properties Add * Добавляет свойства модели, сохраненные в файле,
(Инструменты >► Свойства модели > Добавить)к существующему набору свойств
Tools Model Properties Update (Инструменты >> Свойства Обновляет файл свойств модели свойствами открытой модели
модели >- Обновить)
Tools Options (Инструменты Параметры) Выводит на экран окно параметров, позволяющее изменять
_________________________________________________значения всех параметров Rose_________________
Tools Open Script (Инструменты >» Открыть сценарий)Открывает файл языка RoseScript
Tools » New Script (Инструменты >• Создать сценарий)Создает новый файл языка RoseScript
Tools Synchronize (98i) (Инструменты > Синхронизировать) Запускает синхронизатор Rational Suite Synchronizer
_____________________________________________ (если он установлен)_____________________________
Tools >- DDL Generate Code Генерирует код на языке определения данных
(Инструменты DDL >► Генерировать код)(Data Definition Language, DDL) для выделенных объектов
Tools >• DDL Browse DDL Позволяет просмотреть созданный файл DDL
(Инструменты DDL >» Просмотр DDL)________________
Tools IDL >> Generate IDL (98) Генерирует код на языке определения интерфейса
(Инструменты >► IDL >» Генерировать IDL)(Interface Definition Language, IDL) для выделенных объектов
Tools >* IDL > Convert Rose 4.0 IDL to Rose 98 IDL (98) Преобразует код IDL из среды Rose 4.0 в Rose 98
(Инструменты >• IDL > Конвертировать язык IDL
из среды Rose 4.0 в среду Rose 98) ,
Tools CORBA >- Project Specification (98i) Позволяет задать спецификации проекта (такие, как переменные
(Инструменты CORBA Спецификация проекта)окружения) для генерации объектов CQRBA
Tools > CORBA Syntax Check (98i) Проверяет модель на предмет правильности синтаксиса CORBA
(Инструменты CORBA >- Проверка синтаксиса)_____________
Tools >* CORBA > Browse CORBA Source (98i) Позволяет просмотреть сгенерированный файл CORBA
(Инструменты CORBA >► Просмотр исходного файла)___________________________________________________________
Tools CORBA > Reverse Engineer CORBA (98i) Осуществляет обратное проектирование компонентов CORBA
(Инструменты CORBA Обратное проектирование)____________в модель
Tools >• CORBA > Generate Code (98i) Генерирует код CORBA для'выбранных объектов
(Инструменты >» CORBA > Генерация кода)_________________
Tools > Java >* Project Specification (98i) Позволяет задать спецификации проекта (такие, как переменные
(Инструменты Java Спецификация проекта)окружения) для генерации кода на языке Java
Tools > Java >• Syntax Check Проверяет синтаксис объектов для генерации кода Java
(Инструменты >» Java Проверка синтаксиса)__________________________________________________________________
60
Глава 2
Таблица 2.3. Пункты меню Rose (продолжение)
Пункт меню Описание _________
Tools > Java Generate Java Генерирует код Java для выбранных объектов
(Инструменты Java Генерация кода Java)______________________
Tools Java > Browse Java Source Позволяет просмотреть сгенерированный файл с кодом Java
(Инструменты Java Просмотр исходного файла) _______________________
Tools Java Reverse Engineer Java Осуществляет обратное проектирование компонентов Java
(Инструменты Java Обратное проектирование)в модель
Tools Java Import JDK 1.1.X (98) Импортирует объекты из набора разработчика Java
(Инструменты Java >► Импорт JDK)(Java Developer's Kit) в открытую модель
Tools Oracle8 Data Type Creation Wizard Создает новый тип данных Огас!е8 с помощью интерфейса
(Инструменты Oracle8 >► Мастер генерации типа данных) Мастера________________________________________________
Tools з* Oracle8 Ordering Wizard (Инструменты Oracle8 Изменяет порядок следования атрибутов для выбранного объекта
Мастер установки порядка атрибутов) ___________________________
Tools Oracle8 Edit Foreign Keys Позволяет добавлять, удалять или редактировать внешние ключи
(Инструменты Oracle8 Редактирование внешнего ключа) реляционной таблицы________________________________________
Tools Oracle8 Analyze Schema Анализирует схему Oracle8 и импортирует ее в текущую открытую
(Инструменты Oracle8 Схема анализа)______________________модель________________________________________________
Tools Oracle8 Schema Generation Генерирует схему Oracle8 на основе существующей модели
(Инструменты >► Oracle8 » Генерация схемы)__________________
Tools Oracle8 Syntax Checker
(Инструменты Oracle8 Проверка синтаксиса)
Проверяет синтаксис объектов перед генерацией схемы
Tools Oracle8 Import Oracle8 Data Types
(Инструменты Oracle8 Импорт типов данных Огас!е8)
Импортирует типы данных Огас1е8 в открытую модель
Tools Publish to Repository (98)
(Инструменты » Опубликовать в репозитории)
Публикует открытую модель в Microsoft Repository
Tools Import from Repository (98)
(Инструменты Импорт из репозитория)_______________
Tools C++ Code Generation
_£Инструменты >» C++ Генерация кода)______________
Tools >• C++ Reverse Engineering
(Инструменты C++ Обратное проектирование)
Tools C++ Browse Header
(Инструменты >» C++ >► Просмотр заголовка)
Tools C++ Browse Body
(Инструменты C++ Просмотр тела)___________________
Импортирует модель из Microsoft Repository
Генерирует код на языке C++ для выбранных объектов
Осуществляет обратное проектирование кода на языке C++
в модель______________________________________________
Позволяет просмотреть сгенерированный заголовочный
файл C++______________________________________________
Позволяет просмотреть сгенерированный файл с кодом C++
Tools Web Publisher (98) (Инструменты Публикация в Web) Публикует модель в сети
Tools » Source Control Add to Source Control (98) Распространяет управление исходным кодом на выделенные объ-
(Инструменты Управление исходным кодом > Добавить екты
к управлению исходным кодом) __________________________________________________________________________________________
Tools Source Control Remove from Source Control (98) Отменяет управление исходным кодом для выделенных объектов
(Инструменты >- Управление исходным кодом > Удалить из
управления исходным кодом)_______________________
Tools Source Control >> Start Source Control Explorer (98) Исследует объекты, по отношению к которым осуществляется
(Инструменты » Управление исходным кодом Начать управление исходным кодом
управление исходным кодом)
Tools Source Control Check In (98) Вновь подключает управление исходным кодом выделенных
(Инструменты Управление исходным кодом >» Подключить) объектов ________________________________________________________
Tools Source Control Check Out (98) Отключает управление исходным кодом для выделенных объектов
(Инструменты Управление исходным кодом Отключить)_____________________
Tools » Source Control Undo Check Out (98) (Инструменты Отменяет отключение управления исходным кодом
Управление исходным кодом »> Отменить отключение)___________для выделенных объектов
Введение в Rose
Таблица 2.3, Пункты меню Rose (продолжение)_______________________________________________________________________
Пункт меню________________________________. ________ Описание____________________________________________________
Tools Source Control Get Latest (98) (Инструменты Получает последнюю версию выделенных объектов
Управление исходным кодом Последняя версия)из управления исходным кодом
Tools Source Control File Properties (98) (Инструменты > Позволяет узнать свойства файла управления исходным кодом
Управление исходным кодом Свойства файлов) ________________________
Tools Source Control File History (98) Позволяет узнать историю файла управления исходным кодом
(Инструменты >» Управление исходным кодом История)
Tools Source Control Source Control Options (98) Показывает параметры управления исходным кодом
(Инструменты Управление исходным кодом > Параметры
управления исходным кодом)_________
Tools >• Source Control About SCC Provider Integration (98)
(Инструменты >• Управление исходным кодом Об интеграции
провайдера SCC)
Позволяет просмотреть информацию о версии управления
исходным кодом
Tools > Version Control Add to Version Control (98)
(Инструменты Контроль версий Добавить к контролю
версий)
Распространяет контроль версий на выделенные объекты
Tools Version Control Remove from Version Control (98) (Инет- Отменяет контроль версий для выделенных объектов
рументы Контроль версий Удалить из контроля версий)
Tools Version Control > Start Version Control Explorer (98) Исследует объекты, по отношению к которым осуществляется
(Инструменты Контроль версий Начать контроль версий) контроль версий__________________________________________________
Tools Version Control >> Check In (98) Вновь подключает контроль версий для выделенных объектов
(Инструменты » Контроль версий >• Подключить)___________________
Tools > Version Control Check Out (98) Отключает контроль версий для выделенных объектов
(Инструменты > Контроль версий Отключить)________________________________________________________________________
Tools > Version Control Undo Check Out (98) Отменяет отключение контроля версий для выделенных объектов
(Инструменты >► Контроль версий Отменить отключение)___________________________
Tools >• Version Control Get Latest (98) Получает последнюю версию выделенных объектов из контроля
(Инструменты Контроль версий Последняя версия)версий
Tools Version Control File Properties (98) Позволяет узнать свойства файла контроля версий
(Инструменты Контроль версий > Свойства файлов)___________
Tools > Version Control File History (98)
(Инструменты »• Контроль версий История)
Позволяет узнать историю файла контроля версий
Tools > Version Control Version Control Options (98) (Инструмен- Показывает параметры контроля версий
ты > Контроль версий Параметры контроля версий) ________________________
Tools Version Control About Rational Rose Version Control Позволяет просмотреть информацию об интеграции средств кон-
Integration (98) (Инструменты Контроль версий троля версий
Об интеграции контроля версий Rational Rose)_________________________________________________________________________
Tools > Visual Basic >• Class Wizard
(Инструменты Visual Basic >» Мастер классов)______________
Tools > Visual Basic Assign to New Component (98)
(Инструменты >• Visual Basic Присвоить новому компоненту)
Создает новый класс Visual Basic с помощью Мастера
Создает новый исполняемый или DLL компонент и назначает ему
новые объекты
Tools Visual Basic Component Assignment Tool (98) Создает новый исполняемый или DLL компонент и назначает ему
(Инструменты Visual Basic Назначение компонентов)новые объекты
Tools > Visual Basic Generate Code (98) Генерирует код на языке Visual Basic для выбранного компонента
(Инструменты Visual Basic Генерация кода)________________________________________________________________________
Tools > Visual Basic Reverse Engineering Wizard (98) (Инстру- Осуществляет обратное проектирование кода на языке Visual
менты Visual Basic Мастер обратного проектирования) Basic в модель
Tools > Visual Basic Update Code (98) Синхронизирует код на языке Visual Basic и соответствующую ему
(Инструменты Visual Basic >» Обновить код)модель для выбранного компонента
Tools > Visual Basic Update Model from Code (98) Осуществляет обратное проектирование кода на языке Visual
(Инструменты Visual Basic Обновить модель) __________________Basic в модель
Tools Visual Basic Revert to Last Saved (98) (Инструменты Возвращает модель к состоянию, которое имело место
Visual Basic > Вернуться к последнему сохраненному варианту) при последней успешной генерации кода
62
Глава 2
1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111II111111II111111111111111111111111111111111111111......
Таблица 2.3. Пункты меню Rose (продолжение)____________________________________________________________
Пункт меню_________________________________________________Описание______________________________________
Tools > Visual Basic Browse Visual Basic Source (98) Позволяет просмотреть сгенерированный исходный код на языке
(Инструменты Visual Basic >• Просмотр исходного кода) Visual Basic
Tools >- Visual Basic Browse Source Code (98) Позволяет просмотреть сгенерированный исходный код на языке
(Инструменты Visual Basic Просмотр исходного кода) Visual Basic
Tools Visual C++ >• Model Assistant (98) Устанавливает свойства модели для выделенных объектов
(Инструменты Visual C++ Ассистент моделей)__________________________________
Tools > Visual C++ Component Assignment Tool (98) Создает новый компонент и назначает ему новые объекты
(Инструменты Visual C++ Назначение компонентов)__________
Tools Visual C++ Update Code (98) Синхронизирует код на языке Visual C++ и соответствующую ему
(Инструменты > Visual C++ Обновить код)________модель для выделенного компонента
Tools Visual C++ Update Model from Code (98) Осуществляет обратное проектирование кода на языке Visual C++
(Инструменты >• Visual C++ Обновить модель) в модель
Tools Visual C++ Class Wizard (98) Создает новый класс Visual C++ с помощью Мастера
(Инструменты Visual C++ Мастер классов)__________________
Tools Visual C++ > Restore C++ Source Files (98) (Инструменты Восстанавливает исходные файлы выделенных объектов
Visual C++ Восстановить исходные файлы C++)
Tools >• Visual C++ Quick Import MFC 6.0 (98) (Инструменты Импортирует в модель классы библиотеки MFC 6.0
Visual C++ >► Быстрый импорт библиотеки MFC 6.0)
Tools > Visual C++ » Options (98) Устанавливает параметры генерации кода на Visual C++
(Инструменты > Visual C++ > Параметры) _____________
Tools Class Wizard (Инструменты Мастер классов)Создает новый класс с помощью Мастера классов
Tools » Visual Differencing Находит различия между открытой текущей моделью
(Инструменты Визуальные различия)____________________и сохраненной моделью___________________________________
Tools >- ERWin Translation Wizard Translate Model (98) (Инстру- С помощью Мастера создает модель данных ERWin на основе
менты » Мастер трансляции ERWin Трансляция модели) модели Rose или наоборот___________________________________
Tools > ERWin Translation Wizard Select Target Server (98) Выбирает целевую систему управления базой данных для модели f
(Инструменты Мастер трансляции ERWin Выбрать целевой ERWin |
сервер) I
Tools ERWin Translation Wizard About ERWin Translation (98) Выводит на экран информацию о версии Мастера трансляции I
(Инструменты > Мастер трансляции ERWin О трансляции ERWin I
ERWin) |
Add-Ins Add-In Manager (Расширения Менеджер Подключает расширения к Rose или отключает их |
расширений) I
Window Cascade (Окно Каскад)Выстраивает "каскадом" открытые окна в среде Rose ]
Window Tile (Окно >► Мозаика)______________________________Выстраивает "мозаикой" открытые окна в среде Rose_ |
Window Arrange Icons (Окно Упорядочить пиктограммы) Упорядочивает расположение всех открытых пиктограмм |
в среде Rose |
Window <Window> (Окно <Окно>) Переходит к выбранному окну ]
Help Rational Rose Help Topics Показывает справочную систему Rational Rose I
(Справка Вызвать справочную систему Rational Rose) I
Help Search for Help On (Справка Найти конкретную тему) Поиск справки по конкретной теме I
Help Using Help (Справка Использование справки) Информация о том, как пользоваться справочной системой I
Help >> Extended Help (98) (Справка Расширенная справка) Получение справки с помощью Rational Unified Process I
____________________________________________________ (если он установлен) I
Help About (Справка >» О программе)Выводит информацию о версии Rose I
Help Rational on the Web Online Support (Справка Фирма Переходит к Интернет-странице фирмы Rational, на которой I
Rational в Web Поддержка в реальном времени) осуществляется поддержка в режиме online I
Help Rational on the Web Rose Home Page (Справка Переходит к домашней странице Rational Rose в Интернете I
Фирма Rational в Web Домашняя страница Rose) I
Введение в Rose
Установка глобальных параметров
Такие параметры, как шрифт и цвет, применяются для всех объектов модели: классов, вариантов ис-
пользования, интерфейсов, пакетов и т.д. Рассмотрим, как можно изменить шрифт и цвет объектов
модели. Значения по умолчанию для этих параметров устанавливаются в меню Tools Options (Инст-
рументы Параметры).
Работа со шрифтами
В среде Rose разрешается индивидуально изменять шрифты объектов на диаграмме, что позволяет по-
высить читаемость модели. Окно для установки шрифтов и изменения их размеров показано на
рис. 2.44.
Рис. 2.44.
Окно выбора
шрифта
Font stijle: Size:
Font
Ariel
Jf Arial Black
Altai N arrow
Book Antigua
4? Bookman Old Stjte
Bookshelf Symbol 1
4? Bookshelf Symbol 2
10
11
12
14
. 16
- Effects—------------ -
I
r-Sample"
~0K I
Cancel
fiBdd
1 Г Strikeout
I- Underline
Color:
[ ИИ Black”
I,
| Script:
| Western
Назначить объекту новый шрифт можно следующим образом:
1. Выделите нужный объект или объекты.
2. Выберите в меню пункт Edit Diagram Object Properties Font (Правка Свойства объекта
диаграммы Шрифт).
3. Выберите требуемый шрифт, а также его стиль и размер.
Если необходимо изменить размер шрифта объекта:
1. Выделите нужный объект или объекты.
2. Выберите в меню пункт Edit Diagram Object Properties Font Size (Правка Свойства объек-
та диаграммы Размер шрифта).
3. Выберите в меню требуемый размер шрифта.
Работа с цветом
Индивидуально можно изменять не только шрифт, но и цвет объекта. Окно изменения цвета показано
на рис. 2.45.
Для изменения цвета линии объекта:
1. Выделите нужный объект или объекты.
2. Выберите в меню пункт Edit Diagram Object Properties Line Color (Правка Свойства объ-
екта диаграммы Цвет линии).
3. Выберите требуемый цвет линии.
64
Глава >
Рис. 2.45.
Выбор цвета
Custom cokits.
Р efine Custom С okas >>
OK ] Cancel
Если необходимо изменить цвет заполнения объекта:
Выделите нужный объект или объекты,
I
2. Выберите в меню пункт Edit Diagram Object Properties Fill Color (Правка Свойства объ-
екта диаграммы > Цвет заполнения).
3. Выберите требуемый цвет заполнения.
глава
Варианты использования
и действующие лица
Работа с представлением и диаграммами
Вариантов Использования
Работа с вариантами использования,
действующими лицами и связями
Работа с примечаниями
Добавление и удаление пакетов вариантов
использования
66
Глава 3
JD данной главе рассматриваются варианты использования (use cases), действующие лица (actors) и
диаграммы Вариантов Использования. Варианты использования и действующие лица определяют сфе-
ру применения создаваемой системы. При этом варианты использования описывают все то, что проис-
ходит внутри системы, а действующие лица — то, что происходит снаружи. Начнем мы с создания
диаграммы Вариантов Использования. Затем добавим к диаграмме несколько вариантов использова-
ния и рассмотрим их параметры и детали. После этого поместим на диаграмму действующих лиц и
определим их параметры. Наконец, рассмотрим связи между вариантами использования, между дейст-
вующими лицами и между вариантами использования и действующими лицами.
В конце главы вашему вниманию будет предложен первый набор упражнений по использованию
модели Rose, где рассматривается модель системы обработки заказов. Мы опишем задачу и поэтапно
проведем вас через процесс построения модели вариантов использования.
Представление Вариантов Использования
В этой главе описываются некоторые элементы, создаваемые в представлении Вариантов Использо-
вания Rose. Представление Вариантов Использования может содержать:
• Варианты использования
• Действующих лиц
• Связи коммуникации между вариантами использования и действующими лицами
Связи использования и расширения между вариантами использования
• Связи обобщения действующих лиц
♦ Диаграммы Вариантов Использования
• Диаграммы Последовательности и Кооперативные диаграммы
В настоящей главе обсуждаются все перечисленные элементы, кроме диаграмм Последовательно-
сти и Кооперативных диаграмм, рассматриваемых в главе 4.
Представление Вариантов Использования, как правило, не зависит от реализации модели. Вари-
анты использования и действующие лица описывают сферу применения проекта (project scope), но
не вникают в такие детали его реализации, как, например, используемый язык программирования.
Диаграммы Вариантов Использования
Диаграмма Вариантов Использования содержит некоторые варианты использования системы, некото-
рых действующих лиц и связи между ними. Вариант использования (use case) — это описание функцио-
нальности системы на "высоком уровне". Действующее лицо (actor) — это все, что взаимодействует с
системой. На рис. 3.1 приведен пример диаграммы Вариантов Использования.
Рис. 3.1.
Пример диаграммы
Вариантов
Использования
Показать баланс
Варианты использования и действующие лица
67
На этой диаграмме показаны три действующих лица: клиент, банковский служащий и кредитная
система. Существуют также шесть основных действий, выполняемых моделируемой системой: пере-
вести деньги, положить деньги на счет, снять деньги со счета, показать баланс, изменить идентифи-
кационный номер и произвести оплату.
Одним из основных преимуществ применения диаграммы Вариантов Использования является то,
что она предоставляет важную информацию. Взглянув на варианты использования, ваши клиенты
поймут, какие функциональные возможности будут заложены в систему. Рассматривая действующих
лиц, они выяснят, кто конкретно будет с ней взаимодействовать. Изучая все множество вариантов ис-
пользования и действующих лиц, они определят сферу применения системы, что она должна будет
делать. Это поможет им узнать также, что она не будет делать, и внести коррективы. Например,
взглянув на диаграмму, пользователь может сказать: "Все это прекрасно, но я хочу иметь еще возмож-
ность получать отчет о десяти последних транзакциях для моего счета".
Часто для одной системы создается несколько диаграмм Вариантов Использования. На диаграмме
высокого уровня, называемой в среде Rational Rose Главной (Main), указываются только пакеты
(группы) вариантов использования. Другие диаграммы описывают совокупности вариантов исполь-
зования и действующих лиц. Может потребоваться также нанести на одну диаграмму все варианты ис-
пользования и всех действующих лиц системы. Количество и состав создаваемых диаграмм
Вариантов Использования полностью зависит от вас. Важно только, чтобы они содержали достаточ-
но информации, чтобы быть полезными, но не слишком много, чтобы не привести в замешательство.
Конкретная цель диаграмм Вариантов Использования — документирование вариантов использова-
ния (все входящее в сферу применения системы), действующих лиц (все вне этой сферы) и связей
между ними. Разрабатывая диаграммы Вариантов Использования, старайтесь придерживаться следу-
ющих правил:
• Не моделируйте связи между действующими лицами. По определению действующие лица нахо-
дятся вне сферы действия системы. Это означает, что связи между ними также не относятся к
ее компетенции. Для изучения коммуникации между действующими лицами применяется диа-
грамма потоков работ (workflow diagram).
♦ Не соединяйте стрелкой непосредственно два варианта использования (кроме случаев связей
использования и расширения, рассматриваемых ниже). Диаграммы данного типа описывают
только, какие варианты использования доступны системе, а не порядок их выполнения. Для
отображения порядка выполнения вариантов использования применяются диаграммы Деяте-
льностей.
• Каждый вариант использования должен быть инициирован действующим лицом. Это означа-
ет, что всегда должна быть стрелка, начинающаяся на действующем лице и заканчивающаяся
на варианте использования. Исключением являются рассматриваемые далее связи использова-
ния и расширения.
• Думайте о базе данных как о слое, находящемся под диаграммой. С помощью одного варианта
использования можно вводить данные в базу, а получать их — с помощью другого. Для изобра-
жения потока информации не нужно рисовать стрелки от одного варианта использования к
другому.
Создание диаграмм Вариантов Использования
В среде Rose диаграммы Вариантов Использования создаются в представлении Вариантов Использо-
вания. Главная диаграмма (Main) предлагается вам по умолчанию. Для моделирования системы можно
разработать столько дополнительных диаграмм, сколько нужно.
Для получения доступа к Главной диаграмме Вариантов Использования:
1. В браузере щелкните мышью на значке ”+” рядом с представлением Вариантов Использования.
Данное представление будет открыто.
2. Вы увидите Главную диаграмму Вариантов Использования. Обратите внимание, что в левой ча-
сти всех диаграмм Вариантов Использования в среде Rose находится следующая пиктограмма:
68
i лава x
3. Дважды щелкнув на Главной диаграмме, откройте ее. Строка заголовка изменится — появится—
фраза [Use Case Diagram: Use Case view/Main] (Диаграмма Вариантов Использования: Пред-
ставление Вариантов Использования/Главная). zz
Для создания новой диаграммы Вариантов Использования: zz
1. Щелкните правой кнопкой мыши на пакете представления Вариантов Использования в браузере, zz
2. Во всплывающем меню выберите пункт New Use Case Diagram (Создать Диаграмма Вариан-
тов Использования), как показано на рис. 3.2. Hz
Рис. 3.2.
Создание новой
диаграммы
Вариантов
Использования
V Rational Rush - (untitled)
i :r ii
"Ё (untiiled)
Jge Cm
Actor
гД Deploys
-fil Model -
ft Cl Logical Vie Open Specrfcation ,
pie yiew growse fieptJrt Query Tools AdcHni ytfndow Help
• • **'!**--- r "Я"»"' asm H *чг — 1 л rr гм •• •*«
oltfiai alHel л| хЩс|а] elcl pjp[gMi
4 *
Айппгце
Qasfi Diagram
ЦпИя * CoJIatjoreiion piogram
—— ‘ : - Sequence Diagram
Add To Version Confrpl ——— «--------------Un-
check In Erte
Cheek Out QRL
log
Difirpnm Г orpcn! view / Mom
&
3. Выделив новую диаграмму, введите ее имя.
4. Дважды щелкнув на названии этой диаграммы в браузере, откройте ее.
Открыть имеющуюся диаграмму Вариантов Использования можно следующим образом:
1. Найдите ее в представлении Вариантов Использования браузера.
2. Дважды щелкнув на имени диаграммы, откройте ее.
ИЛИ
1. В меню выберите команду Browse Use Case Diagram (Обзор Диаграмма Вариантов Исполь-
зования). Появится окно, изображенное на рис. 3.3. zz
2. В списке пакетов выделите тот, который содержит требуемую диаграмму. zz
3. В списке диаграмм Вариантов Использования выберите диаграмму, которую нужно открыть, zz
4. Нажмите ОК. —
С помощью кнопок панели инструментов можно добавить к диаграмме Вариантов Использования
новые элементы: варианты использования, действующих лиц и связи.
Существуют два способа удаления элемента с диаграммы Вариантов Использования. Первый уда-
ляет элемент с текущей диаграммы, но оставляет его в браузере и на остальных диаграммах системы^
Второй метод удаляет элемент из модели — со всех диаграмм и из браузера. =
Для удаления элемента с текущей диаграммы выделите его и нажмите клавишу Delete. =
Если нужно удалить объект из модели, выделите его в браузере и щелкните правой кнопкой мышиЕ
В появившемся контекстном меню выберите пункт Delete (Удалить). Или можно выделить элемент на
диаграмме и нажать комбинацию клавиш CTRL+D. И
Варианты использования и действующие лица
69
Рис. 3.3.
Открытие
существующей
диаграммы
Вариантов
Использования
V Rational Rose (unUUnd)
Ejle Edit yiew Qrawse depart Query i Joels Add-Ins Window fcHeJp
Check Model
Pf'„'pi'fUdd
Qptions..
&
CORfiA
DDL
Java
Oraclefi
Powerguilclei
Open genpu
tjew Scnpt
Instantiated Class
Class Utility
Parameterized Class Utility
Instantiated Class Utility
нег^л
InierVr
Web Publisher
Version Confraj
Creates a Use Case
Association
Unidirectional Association
Aggregate Aasacialion
Unidirectional Aggregate Association
Association Cass
Qe neral it air on
Qependency or Instantiates
gealize
[tackage
>= LJ Use Case View
£ О Logical View
ф О Component View
. --Д Deployment View
OS Model Properties
VsualDterenang
. Qflfls Wizard
Удаление диаграмм Вариантов Использования
Иногда требуется удалить созданные диаграммы Вариантов Использования. На начальном этапе раз-
работки проекта, при проведении "мозгового штурма" сферы применения системы, обычно создается
большое количество таких диаграмм. Некоторые из них описывают варианты использования, дру-
гие — действующих лиц, третьи — какие-либо подмножества вариантов использования и действующих
лиц. В дальнейшем следует удалить избыточные диаграммы. Это делается непосредственно в браузе-
ре. Будьте внимательны: удалив диаграмму, вы не сможете отменить это удаление.
Для удаления диаграммы Вариантов Использования:
1. Щелкните правой кнопкой мыши на диаграмме в браузере.
2. В появившемся меню выберите пункт Delete (Удалить).
QВНИМАНИЕ
В среде Rose невозможно отменить удаление диаграммы или удалить
Главную диаграмму.
Связывание файлов и ссылок с диаграммой
Вариантов Использования
В среде Rose вы можете прикрепить к диаграмме Вариантов Использования файл или адрес Интерне-
та (URL). Например, таким образом можно связать с диаграммой любой вспомогательный документ,
например спецификации требований высокого уровня, документы концептуального характера или
даже проектный план. Все связанные файлы и ссылки будут показаны в браузере под соответствующей
диаграммой Вариантов Использования. По двойному щелчку мыши на файле или ссылке в браузере
откроется соответствующее приложение и загрузится ваш документ, находящийся в файле или по ука-
занному адресу Интернета.
Для прикрепления файла к диаграмме Вариантов Использования:
1. Щелкните правой кнопкой мыши на соответствующей диаграмме в браузере.
2. В открывшемся меню выберите пункт New File (Создать Файл).
3. В диалоговом окне Open (Открыть) укажите, какой файл нужно прикрепить к диаграмме.
4. Выберите пункт Open (Открыть), чтобы выполнить прикрепление.
70
Глава 3
Для прикрепления ссылки к диаграмме Вариантов Использования:
1. Щелкните правой кнопкой мыши на соответствующей диаграмме в браузере.
2. В открывшемся меню выберите пункт New >> URL (Создать >- Ссылка).
3. Введите адрес.
Открыть прикрепленный файл можно следующим образом:
1. Найдите его в браузере.
2. Дважды щелкните на имени файла. Rose откроет соответствующее приложение и загрузит в
него этот файл.
ИЛИ
1. Щелкните правой кнопкой мыши на файле в браузере.
2. В появившемся меню выберите пункт Open (Открыть). Rose откроет соответствующее прило-
жение и загрузит в него этот файл.
Ехли нужно открыть прикрепленную ссылку:
1. Найдите ее в браузере.
2. Дважды щелкните мышью на ссылке. Rose запустит ваш Web-браузер и загрузит в него эту
ссылку.
ИЛИ
1. Щелкните правой кнопкой мыши на ссылке в браузере.
2. В появившемся меню выберите пункт Open (Открыть). Rose запустит ваш Web-браузер и загру-
зит в него эту ссылку.
Для удаления связанного файла или адреса:
1. Щелкните правой кнопкой мыши на файле или адресе в браузере.
2. В появившемся меню выберите пункт Delete (Удалить).
Панель инструментов диаграмм Вариантов
Использования
Когда открывается диаграмма Вариантов Использования, на панели инструментов диаграммы появля-
ются соответствующие пиктограммы. Описание некоторых кнопок панели приведено в таблице 3.1.
Далее в этой главе подробно рассматривается применение этих кнопок для создания вариантов испо-
льзования, действующих лиц и других элементов ваших диаграмм.
Таблица 3.1. Пиктограммы панели инструментов диаграмм Вариантов Использования
Пиктограмма Кнопка
Selects or deselects an item
(Выделение или отмена выделения объекта)
АВС
Text Box (Текст)
Назначение
Превращает курсор в стрелку указателя, так что вы
можете выделить объект
Г _и- - - _ -и-_ _М - I ~|--- -_ |_-*-
Добавляет к диаграмме текст
Note (Примечание)
Добавляет к диаграмме примечание
Anchor Note to Item
(Прикрепление примечания к объекту)
Package (Пакет)
Связывает примечание с вариантом использования или
объектом на диаграмме
Помещает на диаграмму новый пакет
Use Case (Вариант использования)
Помещает на диаграмму новый вариант использования
Actor (Действующее лицо)
Помещает на диаграмму новое действующее лицо
Варианты использования и действующие лица
71
Таблица 3,1. Пиктограммы панели инструментов диаграмм Вариантов Использования
(продолжение)
Пиктограмма Кнопка
Назначение
г
Unidirectional Association
(Однонаправленная ассоциация)
Рисует связь между действующим лицом и вариантом
использования
Dependency or Instantiates (Зависимость или наполнение) Рисует зависимость между элементами диаграммы
Generalization (Обобщение)
Рисует связь использования или расширения между ва-
риантами использования либо рисует связь наследова-
ния между действующими лицами
Работа с вариантами использования
Вариант использования — это описание на "высоком уровне" фрагмента функциональности, которую
обеспечивает система. Иначе говоря, вариант использования иллюстрирует, как можно использовать
систему. Например, автоматический банкомат (ATM) предоставляет клиенту некоторый базовый на-
бор функциональных возможностей. Он позволяет снимать деньги, делать вклад, переводить деньги с
одного счета на другой, просматривать свой баланс, изменять идентификационный номер или произ-
водить оплату по безналичному расчету' с кредитной карточки. Каждая из описанных транзакций яв-
ляется способом, которым клиент может использовать систему. Таким образом, каждый из них — это
самостоятельный вариант использования. На языке UML вариант использования изображают следую-
щим образом:
Вариант
использования
Преимущество вариантов использования заключается в том, что можно отделить реализацию сис-
темы от описания ее принципиальных основ. Они позволяют заострить внимание на наиболее важ-
ных вещах - удовлетворении потребностей и ожиданий заказчиков — без необходимости углубления
в детали реализации. Взглянув на варианты использования, пользователь сможет понять, что будет
делать система, и обсудить сферу ее применения в самом начале работы над проектом.
Варианты использования предлагают подход, отличающийся от традиционных методов. Разделе-
ние проекта на варианты использования является таким способом изучения системы, который ори-
ентирован на сам процесс, а не на его реализацию. Если при использовании функциональной
декомпозиции задача заключается в последовательном разбиении проблемы на небольшие фрагмен-
ты, с которыми будет работать готовая система, то подход вариантов использования сосредоточен
прежде всего на том, что ожидает от системы пользователь.
В начале работы над проектом возникает естественный вопрос: "Как обнаружить варианты испо-
льзования?" Лучше всего внимательно прочитать документацию заказчика. Часто помогает также рас-
смотрение области использования системы на высоком уровне и документов концептуального
характера. Учтите мнение каждого из заинтересованных лиц проекта. Подумайте, чего они ожидают
от готового продукта. Каждому заинтересованному лицу можно задать следующие вопросы:
• Что он хочет делать с системой?
• Будет ли он с ее помощью работать с информацией (вводить, получать, обновлять, удалять)?
« Нужно ли будет информировать систему о каких-либо внешних событиях?
• Должна ли система в свою очередь информировать пользователя о каких-либо изменениях или
событиях?
Как уже упоминалось ранее, варианты использования — это не зависящее от реализации высокоу-
ровневое представление того, что пользователь ожидает от системы. Рассмотрим каждый фрагмент
этого определения по отдельности.
Прежде всего варианты использования не зависят от реализации. Представьте себе, что вы пише-
те руководство по работе с системой. Необходимо, чтобы ваши варианты использования можно было
реализовать на языках Java, C++, Visual Basic или на бумаге. Варианты использования заостряют
4 Зак. 377
внимание на том, что должна делать система, а не на том, как она должна это делать. Проблемы реа-
лизации вариантов использования описываются ниже.
Варианты использования — это высокоуровневое представление системы. Если, например, в ва-
шей модели содержится 3000 вариантов использования, вы теряете преимущество простоты. Созда-
ваемый вами набор вариантов использования должен предоставить пользователям возможность
увидеть всю систему целиком на самом высоком уровне. Поэтому вариантов использования не дол-
жно быть слишком много, чтобы клиенту не пришлось долго блуждать по страницам документации с
целью выяснения того, что будет делать система. В то же время вариантов использования должно
быть достаточно для полного описания поведения системы. Модель типичной системы обычно со-
держит от 20 до 50 вариантов использования. Для разбиения вариантов использования на части при-
меняются связи различных типов, так называемые связи использования и расширения. Для лучшей
организации системы можно также формировать группы вариантов использования, объединяя их в
пакеты (см. ниже).
Наконец, варианты использования заостряют внимание на том, что пользователи хотят получить
от системы. Каждый вариант использования должен представлять собой завершенную транзакцию
между пользователем и системой. Названия вариантов использования должны быть деловыми, а не
техническими терминами. В рассматриваемом нами примере ATM нельзя назвать вариант использо-
вания "Интерфейс с банковской системой, осуществляющий перевод денег с кредитной карточки и
наоборот". Вместо этого лучше дать название "Оплатить по карточке" — так будет понятнее для заказ-
чика. Варианты использования обычно называют глаголами или глагольными фразами, описывая
при этом, что пользователь видит как конечный результат процесса. Его не интересует, сколько дру-
гих систем задействовано в варианте использования, какие конкретные шаги надо предпринять и
сколько строчек кода требуется написать, чтобы заплатить по счету карточкой Visa. Для него важно
только, чтобы оплата была произведена. Еще раз повторим, вы должны заострить внимание на резу-
льтате, который потребитель ожидает от системы, а не на действиях, которые нужно предпринять
для достижения этого результата.
Но как убедиться, что вы обнаружили все варианты использования? Для этого следует ответить на
вопросы:
• Присутствует ли каждое функциональное требование хотя бы в одном варианте использования?
Если требование не нашло отражение в варианте использования, оно не будет реализовано.
• Учтено ли, как с системой будет работать каждое заинтересованное лицо?
• Какую информацию будет передавать системе каждое заинтересованное лицо?
*
• Какую информацию будет получать от системы каждое заинтересованное лицо?
• Учтены ли проблемы, связанные с эксплуатацией? Кто-то должен будет запускать готовую сис-
тему и выключать ее.
• Учтены ли все внешние системы, с которыми будет взаимодействовать данная?
• Какой информацией каждая внешняя система будет обмениваться с данной?
Документирование потока событий
Варианты использования начинают описывать, что должна будет делать ваша система. Но чтобы фак-
тически разработать систему, потребуются более конкретные детали. Они определяются в документе,
называемом "потоком событий" (flow of events). Целью потока событий является документирование
процесса обработки данных, реализуемого в рамках варианта использования. Этот документ подроб-
но описывает, что будут делать пользователи системы и что — сама система.
Поток событий также не должен зависеть от реализации. Составляя этот документ, представьте
себе, что создается автоматизированная система. Однако на данном этапе вас еще не должно волно-
вать, будет ли она написана на языке C++, PowerBuilder или Java. Ваша цель — описать, что будет де-
лать система, а не как она будет это делать. Обычно поток событий содержит:
А
• Краткое описание
• Предусловия (pre-conditions)
• Основной поток событий
• Альтернативный поток событий
• Постусловия (post-conditions)
Варианты использования и действующие лица 73
Рассмотрим последовательно эти составные части.
Описание
Каждый вариант использования должен иметь связанное с ним короткое описание того, что он будет
делать. Например, вариант использования "Перевести деньги" системы ATM может содержать следу-
ющее описание:
Вариант использования "Перевести деньги" позволяет клиенту или служащему банка перево-
дить деньги с одного счета до востребования или сберегательного счета на другой.
Следует делать описание коротким и "к месту", при этом оно должно определять типы пользовате-
лей, выполняющих вариант использования, и ожидаемый ими конечный результат. Во время работы
над проектом (особенно, если проект длинный) эти описания будут напоминать членам команды, по-
чему тот или иной вариант использования был включен в проект и что он должен делать. Четко доку-
ментируя таким образом цели каждого варианта использования, можно уменьшить неразбериху,
возникающую среди разработчиков.
Предусловия
Предусловия варианта использования — это такие условия, которые должны быть выполнены, прежде
чем вариант использования начнет свою работу. Например, таким условием может быть выполнение
другого варианта использования или наличие у пользователя прав доступа, требуемых для запуска дан-
ного варианта использования. Не у всех вариантов использования бывают предварительные условия.
Ранее мы упоминали, что диаграммы Вариантов Использования не должны отражать порядок их
выполнения. Однако с помощью предусловий можно документировать и такую информацию. Напри-
мер, предусловием одного варианта использования может быть то, что в это время должен выполня-
ться другой.
Основной и альтернативный потоки событий
Конкретные детали вариантов использования отражаются в основном в альтернативном потоках со-
бытий. Поток событий поэтапно описывает, что должно происходить во время выполнения заложен-
ной в варианты использования функциональности. Поток событий уделяет внимание тому, что (а не
как) будет делать система, причем описывает это с точки зрения пользователя. Первичный и альтер-
нативный потоки событий содержат:
• Описание того, каким образом запускается вариант использования
4
♦ Различные пути выполнения варианта использования
• Нормальный, или основной, поток событий варианта использования
• Отклонения от основного потока событий (так называемые альтернативные потоки)
♦ Потоки ошибок
• Описание того, каким образом завершается вариант использования
Например, поток событий варианта использования "Снять деньги" может выглядеть следующим
образом:
Основной поток
1. Вариант использования начинается, когда клиент вставляет свою карточку в ATM.
2. ATM выдает приветствие и предлагает клиенту ввести свой персональный идентификацион-
ный номер.
3. Клиент вводит номер.
4. ATM подтверждает введенный номер. Если номер не подтверждается, выполняется альтерна-
тивный поток событий А1.
5. ATM выводит список доступных действий:
• Положить деньги на счет
• Снять деньги со счета
• Перевести деньги
6. Клиент выбирает пункт "Снять деньги".
7. ATM запрашивает, сколько
;енег нужно снять.
74
Глава 3
8. Клиент вводит требуемую сумму.
9. ATM определяет, достаточно ли на счету денег. Если денег недостаточно, выполняется альтер-
нативный поток А2. Если во время подтверждения суммы возникают ошибки, выполняется по-
ток ошибок Е1.
10. ATM вычитает требуемую сумму из счета клиента.
11. ATM выдает клиенту требуемую сумму наличными.
12. ATM возвращает клиенту его карточку.
13. Вариант использования завершается.
Альтернативный поток А1: ввод неправильного идентификационного номера
1. ATM информирует клиента, что идентификационный номер введен неправильно.
2. ATM возвращает клиенту его карточку.
3. Вариант использования завершается.
Альтернативный поток А2: недостаточно денег на счету
1. ATM информирует клиента, что денег на его счету недостаточно.
2. ATM возвращает клиенту его карточку.
3. Вариант использования завершается.
Поток ошибок Е1: ошибка в подтверждении запрашиваемой суммы
1. ATM сообщает пользователю, что при подтверждении запрашиваемой суммы произошла ошиб-
ка, и дает ему номер телефона службы поддержки клиентов банка.
2. ATM заносит сведения об ошибке в журнал ошибок. Каждая запись содержит дату и время
ошибки, имя клиента, номер его счета и код ошибки.
• -
3. ATM возвращает клиенту его карточку.
4. Вариант использования завершается.
Документируя поток событий, можно использовать нумерованные списки (как это сделано в дан- /
ном примере), ненумерованные списки, разбитый на параграфы текст и даже блок-схемы. Поток со- /
бытий должен быть согласован с определенными ранее требованиями. Описывая поток, помните о J
тех, кто будет читать ваш документ. При его изучении заказчики будут проверять, соответствует ли (
он их ожиданиям, а аналитики — соответствует ли он требованиям к системе. Менеджер проекта захо- i
чет лучше понять, что же будет создано, а также сделать или обновить оценки проекта.
Работая над потоком, избегайте детальных обсуждений того, как он будет реализован. Представь- |
те себе, что вы записываете кулинарный рецепт. При этом вы указываете: "Добавить два яйца". Вы ни- J
когда не напишете: "Откройте холодильник. Возьмите два яйца с полочки на дверце. Зажмите в руке /
первое яйцо. Стукните им по краю чашки..." Аналогично, составляя поток событий, вы можете напи- f
сать: "Проверить идентификационный номер пользователя", но вам не нужно указывать, что для это- f
го необходимо обратиться к какой-то специальной таблице в базе данных. Уделяйте внимание обмену i
информацией между пользователями и системой, но не подробному описанию ее реализации. f
Постусловия
Постусловиями называются такие условия, которые должны быть выполнены после завершения вари- J
анта использования. Например, в конце варианта использования можно установить флажок. Инфор- |
мация такого типа входит в состав постусловий. Как и в случае предусловий, с помощью постусловий |
можно вводить сведения о порядке выполнения вариантов использования системы. Если, скажем, по- |
еле одного из вариантов использования должен всегда выполняться другой, это можно описать как по- |
стусловие. Такие условия имеются не у каждого варианта использования. |
Добавление вариантов использования
Существуют два способа добавления варианта использования в модель: помещение его на активную
диаграмму Вариантов Использования или непосредственно в браузер. Из браузера его можно перета-
щить на требуемую диаграмму Вариантов Использования.
Варианты использования и действующие лица
75
Поместить новый вариант использования на диаграмму Вариантов Использования можно следую-
щим образом:
Нажмите кнопку Use Case (Вариант использования) панели инструментов.
ИЛИ
1. Выберите в меню пункт Tools Create Use Case (Инструменты Создать > Вариант исполь-
зования), как показано на рис. 3.4.
2. Щелкните мышью где-нибудь внутри диаграммы Вариантов Использования, чтобы поместить
туда новый вариант использования. Он будет назван NewUseCase.
3. Выделив этот вариант использования, введите его название.
4. Обратите внимание, что новый вариант использования был автоматически добавлен в браузер
и помещен ниже представления Вариантов Использования.
Рис. 3.4.
Добавление
нового варианта
использования
к диаграмме
Вариантов
Использования
V Rahuiiul Rust* (unli'ied)
ftoww fieport Query/ Tools Add4ne ’Window bdp
|3й (untitled)
-(2 CDUse Case View
CD Logical View
/'si.-Cl Component vj aw
О Deployment View
a Model Properties
Unidirectional Ae so даЬоп
Aggregate Association
raxi
a ts
Act
Uiea*e
Modei £rape rtj es
Note Anchoi
Class
Options
Open Sai pt
tiew Script
DDL
Jeve
PcwerflJder
We b Publisher
Version Control
VaaJSasc
Visual Merendng
Param aie rued Class
Interface
Unidirectional Aggregate A^sodoti r
Association Claes
Generalization
dependency or Instantiales
Realize
package
Instantiated Class
Class Lrtlrly
Param atari j>ed Class Utility
[nstoniaied Gass Utility
Gfric ЬМ 4 l
Use i.me
CCFBA
ClaseWzad
Поместить на диаграмму Вариантов Использования имеющийся вариант использования можно
следующим образом:
Перетащите вариант использования из браузера на открытую диаграмму.
ИЛИ
1. Выберите в меню пункт Query > Add Use Cases (Запрос Добавить варианты использования).
Появится показанное на рис. 3.5 окно диалога, с помощью которого можно выбирать и добав-
лять существующие варианты использования.
2. В раскрывающемся списке пакетов выберите тот из них, который содержит нужный вам вари-
ант использования (варианты использования).
3. Перетащите требуемые варианты использования из списка вариантов использования (Use
Cases) в список выделенных вариантов использования (Selected Use Cases).
4. Нажмите на ОК. Варианты использования будут добавлены к диаграмме.
76
Г лаве 3
Рис. 3.5.
Добавление
существующих
вариантов
использования
к диаграмме
Вариантов
Использования
<• Ration Ruse - (iintMeii)
£ (untiiled)
fAl Cl Use Case View
;£jiId:’' ;rtV-3 pd’ цuvr/ Jj;rJ& :, Дd;>
& О Logical View
C2 Component View
D epi oyment View
& Modal Properties
Если нужно поместить вариант использования в браузер;
1. Щелкните правой кнопкой мыши на пакете представления Вариантов Использования в браузере.
2. В открывшемся меню выберите пункт New >- Use Case (Создать >- Вариант использования).
3. Новый вариант использования под названием NewUseCase появится в браузере. Слева от него
будет выведена пиктограмма варианта использования UML.
4. Выделив новый вариант использования, введите его название,
5. Чтобы поместить вариант использования на диаграмму, перетащите его туда из браузера.
Удаление вариантов использования
Вариант использования можно удалить с одной диаграммы или со всех диаграмм модели. Как и в слу-
чае диаграмм Вариантов Использования, в начале работы над проектом часто создается много вариан-
тов использования, полезных при изучении области применения проекта. Но после утверждения
окончательного набора вариантов использования, избыточные следует удалить.
Для удаления варианта использования с диаграммы:
1. Выделите вариант использования на диаграмме,
2. Нажмите на клавишу Delete.
3. Обратите внимание, что, хотя вариант использования удален с диаграммы Вариантов Исполь-
зования, он остался в браузере и на других диаграммах системы.
Для удаления варианта использования из модели:
1. Выделите вариант использования на диаграмме.
2. Выберите в меню пункт Edit >- Delete from Model (Правка >> Удалить из модели) или нажмите
сочетание клавиш CTRL+D.
3. При этом вариант использования будет удален со всея диаграмм и из браузера.
ИЛИ
1. Щелкните правой кнопкой мыши на варианте использования в браузере.
2. В появившемся меню выберите пункт Delete (Удалить).
3. При этом вариант использования будет удален со всех диаграмм и из браузера.
Варианты использования и действующие лица
77
Спецификации вариантов использования
В Rose можно создать подробную спецификацию для каждого варианта использования. Специфика-
ции помогают документировать такие атрибуты вариантов использования, как имена, приоритеты и
стереотипы. На рис. 3.6 показано окно спецификации варианта использования, применяемое для ее
задания. В последующих разделах рассматриваются все спецификации, имеющиеся на вкладках этого
окна.
Рис. 3.6,
Окно спецификации
варианта
использования
Use Case Specification for Use Case 1
General | Diagrams ] Relations | F3e$ }
Hams:
Package: Use Case View
Stereotype, j
Rank: p
Documentation:
<------------—
Г Abstract
OK Cancel
firowse I Help
Открыть спецификацию варианта использования можно следующим образом:
1. Щелкните правой кнопкой мыши на варианте использования в браузере или на диаграмме
Вариантов Использования.
2. В появившемся меню выберите пункт Open Specification (Открыть спецификацию).
ИЛИ
1. Выделите вариант использования на диаграмме Вариантов Использования.
2. Выберите в меню пункт Browse Specification (Обзор Спецификация) или нажмите
сочетание клавиш CTRL+B.
Присвоение имен вариантам использования
У каждого варианта использования модели должно быть уникальное имя. Поскольку вариант исполь-
зования помогает определить область применения проекта, называть его следует так, чтобы было
удобно вашему заказчику. Кроме того, имя не должно быть связано со способом реализации системы.
Старайтесь избегать таких слов, как Интернет, поскольку оно невольно привязывает вариант исполь
зования к какой-то конкретной реализации. Обычно в качестве имен вариантов использования при-
меняются глаголы или короткие глагольные фразы.
Присвоить имя варианту использования можно непосредственно на диаграмме или с помощью
окна спецификации.
Для присвоения имени варианту использования:
1. Выделите его в браузере или на диаграмме Вариантов Использования.
2. Введите новое имя.
ИЛИ
1. Щелкните правой кнопкой мыши на варианте использования в браузере или на диаграмме.
2. В появившемся меню выберите пункт Open Specification (Открыть спецификацию).
3. В поле Name (Имя) введите имя варианта использования.
Глава 3
Для добавления к варианту использования текстового описания:
1. Выделите вариант использования в браузере.
2. В окне документации наберите описание варианта использования.
ИЛИ
1. Щелкните правой кнопкой мыши на варианте использования в браузере или на диаграмме.
2. В появившемся меню выберите пункт Open Specification (Открыть спецификацию).
3. В области Documentation (Документация) окна спецификации введите описание варианта испо-
льзования.
Просмотр участников варианта использования
Иногда требуется просмотреть список всех классов и операций, принимающих участие в конкретном
варианте использования. В процессе работы над проектом приходится добавлять или изменять требо-
вания, и полезно понимать, какие классы подвергаются при этом изменениям. В нашем примере ATM,
если мы хотим изменить требования, связанные со снятием со счета наличности, нужно узнать, какие
классы принимают участие в варианте использования "Снять деньги со счета".
Даже по завершении работы над системой может понадобиться выяснить, какие классы входят в
каждый вариант использования. При сопровождении системы вам придется контролировать масш-
таб вносимых усовершенствований и изменений. В среде Rose участников варианта использования
можно просмотреть с помощью меню Report (Отчет).
1. Выделите вариант использования на диаграмме Вариантов Использования.
2. Выберите в меню пункт Report Show Participants in UC (Отчет Показать участников вари-
анта использования).
3. Откроется окно участников варианта использования (см. рис. 3.7).
Рис. 3.7.
Окно участников
варианта
использования
Participants in Use Case 1
Actor 1 (Actor in Use Case View]
Component 1 (Component in Component View)
Class 1 (Class in Logical View)
Component 2 (Component in Component View)
Class 2 (Class in Logical View]
17 Components
17 glasses
Г Operations
17 Display Parent (7 Display Type
i Cancel j Repirt
............. •.........
.bn
Если установлен флажок Display Parent (Показать родителя), то будут показаны пакеты, в которых
содержатся классы, участвующие в варианте использования. Они выводятся в скобках после имени
класса или операции.
Флажок Display Туре (Показать тип) определяет вывод текста нотации для каждого пункта в спис-
ке, что дает возможность понять, является этот элемент классом или операцией. Тип элемента указы-
вается в скобках после имени класса или операции,
Флажки Components (Компоненты), Classes (Классы) и Operations (Операции) определяют, будут
ли компоненты, классы и операции показаны в списке. Кнопка Open it (Открыть пункт) позволяет
просмотреть спецификации выбранного в списке элемента. Кнопка Goto it (Перейти) — выбрать эле-
мент в браузере.
Назначение стереотипа для варианта использования
В языке UML стереотипы (stereotypes) используются для выделения категорий элементов модели. До-
пустим, что у вас имеются два основных типа вариантов использования — тип А и тип Б. Вы можете со-
здать два новых стереотипа вариантов использования — А и Б. Это редко делается для стереотипов, но
чаще — для других элементов языка, таких, как классы и связи. Тем не менее указанная возможность су-
ществует.
Варианты использования и действующие лица
79
Назначить стереотип для варианта использования можно следующим образом:
1. Щелкните правой кнопкой мыши на варианте использования в браузере или на диаграмме Ва-
риантов Использования.
2. В открывшемся меню выберите пункт Open Specification (Открыть спецификацию).
3. Введите стереотип в поле Stereotype (Стереотип).
Назначение приоритета варианту использования
При определении вариантов использования можно назначить каждому из них приоритет. Тогда в
ходе проекта вы будете знать порядок, в котором нужно работать над ними. При описании специфика-
ций варианта использования в Rose его приоритет можно ввести в поле Rank (Ранг).
Для назначения варианту использования приоритета:
1. Щелкните правой кнопкой мыши на варианте использования в браузере или на диаграмме Ва-
риантов Использования.
2. В открывшемся меню выберите пункт Open Specification (Открыть спецификацию).
3. На вкладке General (Общие) введите приоритет в поле Rank (Ранг).
Создание абстрактных вариантов использования
Абстрактный вариант использования не запускается непосредственно действующим лицом. Он обеспе-
чивает некоторую дополнительную функциональность, которая может применяться другими вариан-
тами использования. Таким образом, абстрактные варианты использования участвуют в связях
использования или расширения (см. ниже раздел "Связи между вариантами использования"). На
рис. 3.8 показан пример абстрактных вариантов использования.
Рис. 3.8. «extends»
Абстрактные
варианты
использования
Ускоренное
снятие денег
Снять деньги
со счета
Клиент
«uses»
Идентификация
клиента
Правила рисования стрелок между вариантами использования описываются ниже.
Для создания абстрактного варианта использования:
1. Создайте вариант использования в браузере или на диаграмме Вариантов Использования.
2. Щелкните на нем правой кнопкой мыши.
3. В открывшемся меню выберите пункт Open Specification (Открыть спецификацию).
4. Установите флажок Abstract (Абстрактный).
Просмотр диаграмм,
содержащих варианты использования
В окне спецификации варианта использования вы можете увидеть все диаграммы Последовательно
сти, Кооперативные диаграммы, диаграммы Классов, Вариантов Использования и Состояний, указан-
ные в браузере под этим вариантом использования. На рис. 3.9 представлена вкладка Diagrams
(Диаграммы) окна спецификации варианта использования. Здесь содержатся названия диаграмм и их
типы, отображаемые соответствующими пиктограммами. Двойной щелчок мыши на любой из диа-
грамм приведет к ее открытию в окне диаграмм.
80
Глава 3
Рис. 3.9.
Вкладка Diagrams
(Диаграммы)
спецификации
варианта
использования
Use Case Specilicalion foi Use Case 1
General Diagrams Relations | Files )
Title
Sequence 1
Collaboration 1
OK
Cancel
growse *
Help I
Для просмотра списка диаграмм, содержащих данный вариант использования:
1. Щелкните правой кнопкой мыши на варианте использования в браузере или на диаграмме Ва-
риантов Использования.
2. Выберите в открывшемся меню пункт Open Specification (Открыть спецификацию).
3. Диаграммы будут перечислены на вкладке Diagrams (Диаграммы) окна спецификации.
ИЛИ
Воспользуйтесь браузером, где под названием варианта использования перечисляются все его
диаграммы.
Открыть диаграмму, содержащую вариант использования, можно следующим образом:
Дважды щелкните на ее имени на вкладке Diagrams окна спецификации варианта использования.
ИЛИ
И. Щелкните правой кнопкой мыши на имени диаграммы на вкладке Diagrams окна спецификации
варианта использования.
2. В открывшемся меню выберите пункт Open Diagram (Открыть диаграмму).
ИЛИ
Дважды щелкните мышью на имени диаграммы в браузере.
Для добавления диаграммы к варианту использования:
1. Щелкните правой кнопкой мыши где-нибудь внутри вкладки Diagrams окна спецификации вари-
анта использования.
2. В открывшемся меню выберите тип добавляемой диаграммы (Вариантов Использования, По-
следовательности, Кооперативная, Состояний или Классов).
3. Введите имя новой диаграммы.
ИЛИ
1. Щелкните правой кнопкой мыши на варианте использования в браузере.
2. В открывшемся меню выберите пункт New (Collaboration Diagram, Sequence Diagram, Class
Diagram, Use Case Diagram) (Создать новую (Кооперативную Диаграмму, Диаграмму Последо-
вательности, Диаграмму Классов, Диаграмму Вариантов Использования)).
3. Введите имя новой диаграммы.
Варианты использования и действующие лица
81
Для удаления диаграммы из варианта использования:
1. Щелкните правой кнопкой мыши на имени диаграммы в браузере или на вкладке Diagrams окна
спецификации варианта использования.
2. В открывшемся меню выберите пункт Delete (Удалить).
Просмотр связей варианта использования
На вкладке Relations окна спецификации варианта использования приводится список всех связей,
которых данный вариант использования участвует, будь то связи между ним и другим вариантом исп<
льзования или между ним и действующим лицом (см. рис. 3.10). Список содержит название связи и и/,
звания объединяемых ею элементов. Название связи включает в себя ролевые имена или имег ।
добавляемых к ней связей.
Рис. ЗЛО.
Вкладка Relations
окна спецификации
варианта
использования
General Diagrams Relations | Ftes ]
Supplier
> He Qse 1 :
Name j Client
<no rolename> : AJor 1 n assoc £ /fetor 1
Browse *
Help
Для просмотра списка связей, в которых участвует вариант использования:
1. Щелкните правой кнопкой мыши на варианте использования в браузере или на диаграмме
Вариантов Использования.
2. В открывшемся меню выберите пункт Open Specification (Открыть спецификацию).
3. Связи будут перечислены на вкладке Relations.
ИЛИ
1. Выберите вариант использования на диаграмме Вариантов Использования.
2. Выберите в меню пункт Report >* Show Usage (Отчет Показать использование).
Для просмотра спецификаций связи:
1. Дважды щелкните на связи в списке.
2. Появится окно спецификаций связи. Их детальное описание приводится ниже.
ИЛИ
1. Щелкните правой кнопкой мыши на связи в списке.
2. В открывшемся меню выберите пункт Specifications (Спецификации).
3. Появится окно спецификаций связи. Их детальное описание приводится ниже.
Для удаления связи:
1. Щелкните правой кнопкой мыши на связи в списке.
2. В открывшемся меню выберите пункт Delete (Удалить).
82
Глава 3
Связывание файлов и ссылок с вариантом использования
Вкладка Files (Файлы) позволяет прикрепить файл к варианту использования (см. рис. 3.11). Файл мо-
жет содержать документ, описывающий поток событий данного варианта использования, документы
с описанием сценариев для варианта использования, спецификации требований или другие докумен-
ты с приблизительными прототипами варианта использования. Можно также прикрепить к варианту
использования ссылку на Web-страницу.
Рис. 3.11.
Вкладка Files
(Файлы) окна
спецификации
варианта
использования
Use Case Specification for Use Case 1
General | Diagrams. Relations Hies |
Filename______________________Path
V) Note on Use Case 1 DA
ЯГ] Flow of Events for Use Case 1 CA
www. rational. com http: /
! OK......: Cancel
Browse *
Связать файл с вариантом использования можно следующим образом:
1. Щелкните правой кнопкой мыши где-нибудь на свободном месте вкладки Files (Файлы).
2. В открывшемся меню выберите пункт Insert File (Вставить файл).
3. В диалоговом окне Open (Открыть) найдите и выделите требуемый файл.
4. Нажмите кнопку Open для прикрепления к варианту использования указанного файла.
ИЛИ
1. Щелкните правой кнопкой мыши на варианте использования в браузере.
2. Выберите в меню пункт New File (Создать >- Файл).
3. В диалоговом окне Open (Открыть) найдите и выделите требуемый файл.
4. Нажмите кнопку Open для прикрепления к варианту использования указанного файла.
Связать ссылку на Web-страницу с вариантом использования можно следующим образом:
1. Щелкните правой кнопкой мыши где-нибудь на свободном месте вкладки Files (Файлы).
2. В открывшемся меню выберите пункт Insert URL (Вставить ссылку).
3. Введите адрес URL.
или
1. Щелкните правой кнопкой мыши на варианте использования в браузере.
2. Выберите в меню пункт New URL (Создать Ссылку).
3. Введите адрес URL.
Если нужно открыть прикрепленный файл:
1. Откройте спецификацию варианта использования.
2. Дважды щелкните на имени файла во вкладке Files. Rose запустит соответствующее приложение
и откроет в нем этот файл.
ИЛИ
Варианты использования и действующие лица
•* fb- :sV^s' <• 7 •> - •/;' м-Л'г
1. Найдите файд в браузере. Файл находится под соответствующим вариантом использования.
2. Дважды щелкните на имени файла. Rose запустит соответствующее приложение и откроет в
нем этот файл.
ИЛИ
1. Откройте окно спецификации варианта использования.
2. Щелкните правой кнопкой мыши на файле во вкладке Files.
3. Выберите в открывшемся меню пункт Open File/URL (Открыть файл/ссылку). Rose запустит
соответствующее приложение и откроет в нем этот файл.
ИЛИ
1. Найдите файл в браузере. Файл находится под соответствующим вариантом использования.
2. Щелкните правой кнопкой мыши на имени файла в браузере.
3. Выберите в открывшемся меню пункт Open File/URL (Открыть файл/ссылку). Rose запустит
соответствующее приложение и откроет в нем этот файл.
Если нужно открыть ссылку на Web-страницу:
1. Откройте окно спецификации варианта использования.
2. Дважды щелкните мышью на ссылке во вкладке Files. Rose автоматически запустит ваш Web-бра-
узер и загрузит туда ссылку.
ИЛИ
Найдите нужную вам ссылку в браузере. Она находится под соответствующим вариантом испо-
льзования.
2. Дважды щелкните мышью на ссылке. Rose автоматически запустит ваш Web-браузер и загрузит
туда ссылку.
ИЛИ
1. Откройте окно спецификации варианта использования.
2. Щелкните правой кнопкой мыши на ссылке во вкладке Files.
3. В открывшемся меню выберите пункт Open File/URL. Rose автоматически запустит ваш
Web-раузср и загрузит туда ссылку.
ИЛИ
1. Найдите нужную ссылку в браузере. Она находится под соответствующим вариантом использо-
вания.
2. Щелкните правой кнопкой мыши на ссылке в браузере.
3. В открывшемся меню выберите пункт Open. Rose автоматически запустит ваш Web-браузер и за-
грузит ссылку.
Для удаления связанного с вариантом использования файла или ссылки:
1. Щелкните правой кнопкой мыши в браузере на файле или ссылке.
2. В открывшемся меню выберите пункт Delete (Удалить).
Робота с действующими лицами
Действующее лицо (actor) — это то, что взаимодействует с создаваемой системой. Если варианты исполь-
зования описывают все, что происходит внутри области действия системы, действующие лица опре-
деляют все, что находится вне ее. На языке UML действующие лица представляют в виде фигур:
Действующее
лицо 1
Действующие лица делятся на три основных типа: пользователи системы, другие системы, взаимо-
действующие с данной, и время. |
Первый тип действующих лиц — это физические личности. Они наиболее типичны и имеются |
практически в каждой системе. В системе ATM, например, к этому типу относятся клиенты и обслу- j
живающий персонал. Называя действующих лиц, используйте их ролевые имена, а не те, что соответ- |
ствуют их должности. Конкретный человек может играть множество ролей. Скажем, Джон Доу утром |
отвечает за поддержку системы ATM, т.е. относится к обслуживающему персоналу. Днем он может |
снять деньги со счета, чтобы пойти пообедать, при этом он уже является клиентом. Ролевые, а не дол- |
жностные, имена обеспечивают более стабильную картину действующих лиц. Должности могут меня- |
ться время от времени, при этом роли и ответственности могут перемещаться от одной должности к |
другой. Используя роли для названия действующих лиц, вам не придется обновлять модель каждый |
раз при появлении новой должности или при изменении распределения обязанностей между ними. |
Вторым типом действующих лиц является другая система. Допустим, что у банка имеется кредит- |
ная система, используемая для работы с информацией о кредитных счетах клиентов. Наша система |
ATM должна иметь возможность взаимодействовать с кредитной системой, в таком случае последняя |
становится действующим лицом. |
Имейте в виду, что, делая систему действующим лицом, мы предполагаем, что она не будет изме- |
няться вообще. Помните, что действующие лица находятся вне сферы действия того, что мы разраба- |
тываем, и, следовательно, не подлежат контролю с нашей стороны. Если мы собираемся изменять |
или разрабатывать и кредитную систему, то она поцадает в наш проект и, таким образом, не может |
быть показана как действующее лицо. |
Третий наиболее распространенный тип действующего лица — время. Время становится действу- |
ющим лицом, если от него зависит запуск каких-либо событий в системе. Например, система ATM мо- |
жет каждую полночь выполнять какие-либо служебные процедуры по настройке и согласованию |
своей работы. Так как время не подлежит нашему контролю, оно является действующим лицом. |
Добавление действующих лиц
Как и в случае вариантов использования, имеются два способа добавления действующих лиц: в откры-
тую диаграмму Вариантов Использования и непосредственно в браузер. Из браузера действующее
лицо можно перенести в одну или несколько диаграмм Вариантов Использования.
Поместить действующее лицо на диаграмму Вариантов Использования можно следующим об-
разом:
1. Нажмите кнопку Actor (Действующее лицо) панели инструментов.
ИЛИ
1. Выделите в меню пункт Tools Create Actor (Инструменты Создать Действующее
лицо), как показано на рис. 3.12.
2. Щелкните мышью где-нибудь на диаграмме Вариантов Использования, чтобы поместить туда
новое действующее лицо. Оно получит имя NewClass.
3. Выделив новое действующее лицо, введите его имя. Обратите внимание, что оно автоматиче-
ски добавляется в браузер, где размещается под представлением Вариантов Использования.
Для добавления действующего лица в браузер:
1. Щелкните правой кнопкой мыши на пакете представления Вариантов Использования в брау-
зере.
2. Выберите в открывшемся меню пункт New Actor (Создать Действующее лицо).
3. В браузере появится новое действующее лицо под названием NewClass. Слева от его имени вы
увидите пиктограмму действующего лица UML.
4. Выделив новое действующее лицо, введите его имя.
л
5. Чтобы поместить действующее лицо на диаграмму, перетащите его мышью из браузера на диа-
грамму Вариантов Использования.
Варианты использования и действующие лицо
85
Рис. 3.12.
Добавление
действующего лица
к диаграмме
Вариантов
Использования
fy Rational Rose - Sample
File Edit View Browse Report
It! L3 Use Case View
Щ CJ Logical View
E О Component View
О Deployment View
--—
ПиегмТооЬ Add-Ins Window Help
Check Model
McvdeLPropeities
Options...
DDL
ER win Translation Wizard >
IDL
Java
OradeS
S ourc£ ctad
SourceSafe
Visual Basic
Cl assw' izcffl
Create
Open Script...
New Scrpt
Layout Diagiam
Autosize All
Publish to Repository...
Import frornRepository.,.
Ngte
N aAn tar
Parameterized Class
Cla IsHTt i.iy
Parameterized Class Utility
„Association
Aggregate Association
_Un'd'ic itionaJ A sociation
Link Attribute
generalization
Import Relation
Package
Instantiated Class
Instantiates
Actor
Use Case
Interface
\6 ulDfferexmg
"'‘"TH
Удаление действующих лиц
Как и в случае вариантов использования, возможны два способа удаления действующего лица: с одной
только диаграммы или из модели в целом. Если вы удаляете действующее лицо из модели, оно будет
удалено из браузера и со всех диаграмм Вариантов Использования. При удалении с диаграммы дейст-
вующее лицо останется на других диаграммах Вариантов Использования и в браузере.
Для удаления действующего лица с диаграммы Вариантов Использования:
1. Выделите действующее лицо на диаграмме.
2. Нажмите клавишу Delete.
Для удаления действующего лица из модели:
1. Выделите действующее лицо на диаграмме.
2. Выберите в меню модели пункт Edit Delete from Model или нажмите сочетание клавиш
CTRL+D.
ИЛИ
1. Щелкните правой кнопкой мыши на действующем лице в браузере.
2. Выберите пункт Delete (Удалить) в открывшемся меню.
Rose удалит действующее лицо со всех диаграмм Вариантов Использования и из браузера.
Спецификации действующего лица
Как и варианты использования, каждое действующее лицо в Rose имеет подробные спецификации.
В окне спецификации действующего лица (см. рис. 3.13) вы можете определить его имя, стереотип,
количество экземпляров (множественность — cardinality) и другие детали. Ниже рассматриваются все
спецификации, которые можно задать для действующего лица.
Отметим, что окна спецификаций действующего лица и класса похожи (см. ниже). Это происхо-
дит потому, что в среде Rose действующее лицо рассматривается как особая форма класса. Окно спе-
цификации действующего лица содержит те же поля, что и окно класса, но для действующего лиги
некоторые из этих полей заблокированы (disabled).
86
Глава
Рис. 3.13.
Окно спецификации
действующего лица
Class Specification for Actor 1
Components j N esled ] F iles ] E R win ] ID L
General ] Detail ] Operations ] Attributes ] Relations
f^ame: ^ЁЯМП Parent Use Case View
Type I “1
Stereotype: (Actor
; £xport Control
documentation
OK Cancel
Открыть спецификацию действующего лица можно следующим образом:
1. Щелкните правой кнопкой мыши на действующем лице в диаграмме Вариантов Использования
или в браузере.
2. В открывшемся меню выберите пункт Open Specification (Открыть спецификацию). Появится
окно спецификации действующего лица.
ИЛИ
1. Выделите действующее лицо на диаграмме Вариантов Использования.
2. Выберите пункт меню Browse >• Specification (Обзор >• Спецификация) или нажмите сочетание
клавиш CTRL+B. Появится окно спецификации действующего лица.
Большинство вкладок этого окна применимо к классам, но заблокировано для действующих лиц.:
Для действующих лиц доступны вкладки General (Общие), Detail (Подробно), Relations (Отношения):
и Files (Файлы). Некоторые из параметров на этих вкладках также используются только для классов
Рассмотрим параметры действующих лиц.
Именование действующих лиц
Каждому действующему лицу должно быть дано уникальное имя. Это делается в окне спецификации
действующего лица. Можно также набрать имя непосредственно на диаграмме Вариантов Использо-
вания или в браузере.
Дать имя действующему лицу можно следующим образом:
1. Щелкните правой кнопкой мыши на действующем лице на диаграмме Вариантов Использова-
ния или в браузере.
2. В открывшемся меню выберите пункт Open Specification (Открыть спецификацию).
3. В поле Name (Имя) введите имя действующего лица.
ИЛИ
1. Выделите действующее лицо на диаграмме Вариантов Использования или в браузере.
2. Введите его имя.
Ели нужно ввести текстовое описание для действующего лица:
1. Выделите действующее лицо в браузере.
2. В окне документации введите описание.
ИЛИ
1. Щелкните правой кнопкой мыши на действующем лице в браузере или на диаграмме Вариантов
Использования.
2. В открывшемся меню выберите пункт Open Specification (Открыть спецификацию).
3. В области Documentation (Документация) окна спецификации введите описание действующего
лица.
Назначение стереотипа для действующего лица
Как и в случае вариантов использования, для действующего лица в окне его спецификации может
быть определен стереотип. Если вы измените существующий стереотип действующего лица, Rose ав-
томатически изменит и пиктограмму, представляющую действующее лицо на диаграмме Вариантов
Использования. Вместо символа действующего лица будет использован стандартный прямоугольник,
такой же, что и для класса.
Для действующего лица не поставляется никаких других стереотипов, кроме стереотипа Actor
(Действующее лицо). Однако вы всегда можете определить свои собственные стереотипы и исполь-
зовать их в ваших моделях.
Для назначения действующему лицу стереотипа;
Щелкните правой кнопкой мыши на действующем лице в браузере или на диаграмме Вариантов
Использования.
2. В открывшемся меню выберите пункт Open Specification (Открыть спецификацию).
3. В поле Stereotype (Стереотип) введите стереотип действующего лица.
ОСТОРОЖНО.
Если вы измените стереотип действующего лица, Rose не будет использовать
символ действующего лица для его изображения на диаграммах UML С дейст-
вующим лицом она будет работать так же, как с любым другим классом.
Задание множественности действующего лица
В среде Rose можно указать, сколько экземпляров конкретного действующего лица будет использова-
ться. Например, существует множество людей, играющих роль действующего лица-клиента, но только
один человек, играющий роль действующего лица-менеджера. Чтобы зафиксировать этот факт, мож-
но использовать поле Cardinality (Множественность) окна спецификации.
Rose предоставляет несколько возможных значений для этого параметра:
Множественность Значение____________________________
п (по умолчанию)много
0..0 нуль:
Q..1 нуль или один
О..п нуль или больше
1..1 ровно один
1..п один или больше
Вы также можете ввести значение множественности в соответствии со следующими форматами:
Формат Значение
I <число>ровно число
<число 1>./число 2>между числом 1 и числом 2
<число>..п_____________________число или больше
<число 1>, <число 2>число 1 или число 2
<число 1>, <число 2>./число 3>_ровно число 1 или между числом 2 и числом 3_
<число 1>./число 2>, <число 3>./число 4>между числом 1 и числом 2 или между числом 3 и числом 4
88
Глава 3
Множественность действующего лица задается следующим образом:
1. Щелкните правой кнопкой мыши на действующем лице в браузере или на диаграмме Вариантов
Использования.
2. В открывшемся меню выберите пункт Open Specification (Открыть спецификацию).
3. Перейдите на вкладку Detail (Подробно).
4. Выберите нужную вам множественность в раскрывающемся списке Cardinality (Множествен-
ность) или введите ее сами, используя один из указанных выше форматов.
Создание абстрактного действующего лица
Абстрактным называется действующее лицо, не имеющее экземпляров. Иными словами, его множест-
венность равна нулю. Например, у вас может быть несколько действующих лиц: служащий с почасо-
вой оплатой, служащий с окладом и служащий, нанятый на определенное время. Все они являются
разновидностями четвертого действующего лица — служащего. Однако никто в компании не является
просто служащим — каждый относится к одному из трех вышеназванных типов. Действующее лицо
"Служащий" существует только для того, чтобы показать общность между этими тремя типами. У него
нет экземпляров, так что это абстрактное действующее лицо. Пример абстрактного действующего
лица приведен на рис. 3.14.
Рис. 3.14.
Абстрактное
действующее лицо
Служащий
с окладом
Служащий
с почасовой
оплатой
Служащий,
нанятый
на определенное
время
Подробное описание того, как рисовать стрелки между действующими лицами, приводится ниже.
Для создания абстрактного действующего лица:
1. Создайте действующее лицо в браузере или на диаграмме Вариантов Использования.
2. Щелкните правой кнопкой мыши на действующем лице в браузере или на диаграмме.
3. В открывшемся меню выберите пункт Open Specification (Открыть спецификацию).
4. Выберите вкладку Detail.
5. Установите флажок Abstract (Абстрактный).
Просмотр связей действующего лица
Вкладка Relations окна спецификации действующего лица содержит список всех связей, в которых
участвует действующее лицо (см. рис. 3.15). Перечисляются связи данного действующего лица как с ва-
риантами использования, так и с другими действующими лицами. При этом указываются имя связи и
участвующие в ней действующие лица или варианты использования.
С помощью этой вкладки можно просматривать, добавлять и удалять связи.
Варианты использования и действующие лица
89
Рис. 3.15.
Вкладка Relations
окна спецификаций
Действующего лица
нClass Specification !ш Actor 1
Components | Nested | Files ER win I IDL
General | Detail | Operations | Attributes Relations
₽* Show inherited
^4
Name________ . - ___________ Gass_____________ End Class
Role 1 : Use Case 1 in association Actor 1 Use Case 1
OK Cancel
Browse ▼
Help J
Для просмотра связей, в которых участвует действующее лицо:
1. Щелкните правой кнопкой мыши на действующем лице в браузере или на диаграмме Вариантов
Использования.
2. В открывшемся меню выберите*пункт Open Specification (Открыть спецификацию). Связи дей-
ствующего лица перечислены на вкладке Relations.
Для просмотра спецификаций связи:
1. Дважды щелкните мышью на связи в списке.
2. Появится окно спецификаций связи. Их подробное описание приводится ниже.
ИЛИ
1. Щелкните правой кнопкой мыши на связи в списке.
2. В открывшемся меню выберите пункт Specification (Спецификация).
3. Появится окно спецификаций связи. Их подробное описание приводится ниже.
Для удаления связи:
1. Щелкните правой кнопкой мыши на связи в списке.
2. В открывшемся меню выберите пункт Delete (Удалить).
Связывание файлов и ссылок с действующим лицом
Как и в случае вариантов использования, с действующим лицом можно связать файл или Web-адрес
Это делается на вкладке Files (Файлы) окна спецификации действующего лица (см. рис. 3.16). Связыва-
емые с действующим лицом файлы и Web-страницы должны содержать документы, касающиеся толь-
ко этого действующего лица, например диаграмму потока работ, иллюстрирующую задачи
действующего лица и процесс, в котором он участвует. Если действующим лицом является другая сис-
тема, с ним можно связать относящуюся к ней спецификацию и документацию.
Все связываемые с действующим лицом файлы и ссылки появляются в браузере под именем этого
действующего лица. Двойной щелчок мыши на файле или ссылке в браузере приводит к запуску соот-
ветствующего приложения и загрузке в него требуемого файла или ссылки.
Прикрепить к действующему лицу файл можно следующим образом:
1, Щелкните правой кнопкой мыши где-нибудь в свободном белом поле вкладки Files.
2. В открывшемся меню выберите пункт Insert File (Вставить файл).
3, В диалоговом окне найдите файл, который нужно прикрепить.
90
Глава
Рис. 3.16.
Вкладка Files
спецификации
действующего лица
И Class Specification lot Actor 1
НЕЗ
General ] Detail I Operations I Attributes j Relations j
Components I Nested Fifes ER win IDL
Filename
T| Definition of Actor 1
jk| jwww.rationai.com [
OK
Cancel
growse *
Help
4. Нажмите кнопку Open (Открыть), чтобы прикрепить файл к действующему лицу. Имя и пут
этого файла появятся во вкладке Files и в браузере ниже имени действующего лица.
Для связывания с действующим лицом ссылки на Web-страницу:
1. Щелкните правой кнопкой мыши где-нибудь в свободном белом поле вкладки Files.
2. В открывшемся меню выберите пункт Insert URL (Вставить ссылку),
3. Введите адрес страницы. Он появится в браузере под именем действующего лица.
Открыть прикрепленный файл можно следующим образом:
1, Откройте спецификацию действующего лица.
2. Дважды щелкните мышью на имени файла во вкладке Files. Rose автоматически запустит coo i
ветствующее приложение и загрузит в него файл.
ИЛИ
1, Найдите файл в браузере. Файл находится под именем соответствующего действующего лица.
2, Дважды щелкните мышью на имени файла. Rose автоматически запустит соответствующее при
ложение и загрузит в него файл.
ИЛИ
1. Откройте спецификацию действующего лица.
2. Щелкните правой кнопкой мыши на файле во вкладке Files.
3. В открывшемся меню выберите пункт Open File/URL (Открыть файл/ссылку). Rose автомат!i:
чески запустит соответствующее приложение и загрузит в него файл. :
ИЛИ
1. Найдите файл в браузере. Файл расположен под именем соответствующего действующего лица :
2. Щелкните правой кнопкой мыши на файле в браузере. -
3. В открывшемся меню выберите пункт Open (Открыть). Rose автоматически запустит соответа z
вующее приложение и загрузит в него файл. z
Для перехода по связанной с действующим лицом ссылке на Web-страницу: z
1. Откройте окно спецификации действующего лица. z
2. Дважды щелкните мышью на ссылке во вкладке Files. Rose автоматически запустит ваш Web-бра
узер и загрузит в него ссылку.
ИЛИ
Варианты использования и действующие лица
91
1. Найдите ссылку в браузере. Она находится под именем соответствующего действующего лица.
2. Дважды щелкните мышью на ссылке. Rose автоматически запустит ваш Web-браузер и загрузит
в него ссылку.
ИЛИ
1. Откройте спецификацию действующего лица.
2. Щелкните правой кнопкой мыши на ссылке во вкладке Files.
3. В открывшемся меню выберите пункт Open File/URL (Открыть файл/ссылку). Rose автомати-
чески запустит ваш Web-браузер и загрузит в него ссылку.
ИЛИ
1. Найдите ссылку в браузере. Она расположена под именем соответствующего действующего
лица.
2. Щелкните правой кнопкой мыши на ссылке в браузере.
3. В открывшемся меню выберите пункт Open (Открыть). Rose автоматически запустит ваш
Web-браузер и загрузит в него ссылку.
Для удаления связанного с действующим лицом файла или ссылки:
1. Щелкните правой кнопкой мыши на файле или ссылке в браузере.
2. В открывшемся меню выберите пункт Delete (Удалить).
Просмотр экземпляров действующего лица
При моделировании системь! может потребоваться узнать, в каких диаграммах Последовательности и
Кооперативных диаграммах участвует данное действующее лицо. Для этого в Rose предусмотрено
меню Report (Отчет).
Для просмотра списка диаграмм Последовательности и Кооперативных диаграмм, содержащих
данное действующее лицо:
1. Выделите действующее лицо на диаграмме Вариантов Использования.
2, Выберите в меню пункт Report >> Show Instances (Отчет >> Показать экземпляры).
3. Rose выведет список всех содержащих данное действующее лицо диаграмм Последовательности
и Кооперативных диаграмм (см. рис. 3.17). Чтобы открыть диаграмму, дважды щелкните на ней
в списке или нажмите кнопку Browse (Обзор).
Рис. 3.17.
Просмотр
экземпляров
действующего лица
Show Instances
in Sequence Diagram: Use Case 1 / Sequence 1
in Collaboration Diagram; Use Case 1 I Collaboration 1
f Browse ’ Cancel
4 .......... ........ ...J
Help
Работа co связями
В языке UML для вариантов использования и действующих лиц поддерживается несколько типов свя-
зей. Это связи коммуникации (communication), использования (uses), расширения (extends) и обобще-
ния действующего лица (actor generalization). Связи коммуникации описывают связи между
действующими лицами и вариантами использования. Связи использования и расширения отражают
связи между вариантами использования, а связи обобщения действующего лица — между действующи-
ми лицами.
Глава 3
Связи коммуникации
Связь коммуникации (communicates relationship) — это связь между вариантом использования и дейст-
вующим лицом. На языке UML связь коммуникации изображают в виде стрелки:
Клиент
Снять деньги
Направление стрелки показывает, кто инициирует коммуникацию. В приведенном выше примере
действующее лицо Клиент инициирует коммуникацию с системой для запуска функции "Снять день-
ги". Вариант использования также может инициировать коммуникацию с действующим лицом:
Клиент
Снять деньги
Кредитная
система
В данном примере вариант использования инициирует коммуникацию с действующим лицом Кре-
дитная система. Когда выполняется вариант использования "Произвести оплату", система ATM ини-
циирует коммуникацию с Кредитной системой, чтобы завершить транзакцию. Информация при этом
движется в обоих направлениях: от ATM к Кредитной системе и обратно; стрелка показывает только,
кто инициирует коммуникацию.
Каждый вариант использования должен быть инициирован действующим лицом; исключения со-
ставляют лишь варианты использования в связях использования и расширения (см. ниже).
Для добавления связи коммуникации:
И. Нажмите кнопку Unidirectional Association (Однонаправленная ассоциация) панели
инструментов.
2. Проведите мышью, удерживая ее левую кнопку, от действующего лица к варианту
использования.
3. Между вариантом использования и действующим лицом будет показана стрелка,
соответствующая связи.
Для удаления связи коммуникации:
1. Выделите связь на диаграмме Вариантов Использования.
2. В меню модели выберите пункт Edit Delete from Model (Правка Удалить из модели) или на-
жмите сочетание клавиш CTRL+D.
Связь использования
Связь использования (uses relationship) позволяет одному варианту использования задействовать функ-
циональность другого. С помощью таких связей обычно моделируют многократно применяемую фун-
кциональность, встречающуюся в двух или более вариантах использования. В примере ATM варианты
использования "Снять деньги" и "Положить деньги на счет" должны опознать (аутентифицировать)
клиента и его идентификационный номер перед тем, как разрешить выполнение самой транзакции.
Вместо того чтобы подробно описывать процесс аутентификации для каждого из них, можно помес-
тить эту функциональность в свой собственный вариант использования под названием "Аутентифици-
ровать клиента". Когда какому-нибудь варианту использования потребуется выполнить эти действия,
он сможет воспользоваться функциональностью созданного варианта использования "Аутентифици
ровать клиента".
Связь использования изображается в UML с помощью стрелок и слова «uses» (использование!,
как показано на рис. 3.18.
В этом примере варианты использования "Снять деньги" и "Положить деньги на счет" применяют
функциональность варианта использования "Аутентифицировать клиента". Последний является
абстрактным вариантом использования, т.е. таким, который предоставляет другим вариантам
Варианты использования и действующие лица
93
Рис. 3.18.
Связь
использования
Снять деньги
i
i
Конкретный
вариант
использования
«uses»
Абстрактный^
вариант
использования
Аутентифицировать
клиента
«uses»
Положить деньги
на счет
использования свою функциональность через связи использования и расширения. Варианты исполь-
зования "Снять деньги" и "Положить деньги на счет" — это конкретные варианты использования.
Связь использования предполагает, что один вариант использования всегда применяет функцио-
нальные возможности другого. Независимо от того, как именно осуществляется вариант использова-
ния "Снять деньги", вариант использования "Аутентифицировать клиента" будет запущен в любом
случае. Напротив, связи расширения (extends relationships) позволяют варианту использования толь-
ко при необходимости применять функциональные возможности другого.
Для добавления связи использования:
1. Нажмите кнопку Generalization (Обобщение) панели инструментов,
л
2. При нажатой кнопке мыши проведите ею от конкретного варианта использования к абстракт-
ному.
3. Между этими вариантами использования будет нарисована связь обобщения.
4. Щелкните правой кнопкой мыши на линии связи и в открывшемся меню выберите пункт Open
Specification (Открыть спецификацию), как показано на рис. 3.19.
Рис. 3.19.
Вывод на экран
спецификации
обобщения
Use Case Diagram: Use Case View / Main
Use Case 1
Use Case 2
Open Specification...
w* Stereotype Label
✓ Public inheritance
Protected inhe/itance
Private imeriar.ee
Inipiemenlatran inheritance
Virtual Inheritance
Eriend
Actor 1
94
Глава 3
Рис. 3.20.
Спецификация
обобщения
Geneialize Specification for Untitled
General | ERwin j
tlame:
Class; LJ so Case 1
Export Coi extencjs
f* РуЫс
u$ e
^vate C* [mptementation
documentation:
Г Friendship required
Г Vfftual inheritance
OK Cancel Apply Browse ; Help 1
•
5. Откроется окно спецификации обобщения (см. рис. 3.20).
6. В раскрывающемся списке Stereotype (Стереотип) выберите пункт uses (использование). Если
данный пункт недоступен, введите слово uses с клавиатуры. Оно появится в списке и будет до-
ступно в дальнейшем.
LJ ВНИМАНИЕ
В окне спецификации имеется ряд параметров, неприменимых к связям испо-
льзования. Они рассматриваются в главе 7.
7. Щелкнув на кнопке ОК, закройте окно спецификации.
8. Слово «uses» появится над стрелкой, соответствующей данному обобщению. Если это слово
не выводится, щелкните правой кнопкой мыши на линии связи и в открывшемся меню (см.
рис. 3.21) пометьте пункт Stereotype Label (Метка стереотипа).
9. Откройте окно спецификации абстрактного варианта использования.
10. Установите флажок Abstract (Абстрактный).
Рис. 3.21.
Помеченный пункт
Stereotype Label
0
Use Case Diagram: Use Case View / Main
Use Case 1
Actor 1
Open Specification...
Use Case 2
v* Stereotype Label
v* £ ubfic trh eritance
Prelected inheritance
Private inheritance
Implementation inheritance
Virtual Inheritance
friend
Варианты использования и действующие лица
95
Для удаления связи использования:
1. Выделите связь на диаграмме Вариантов Использования.
2. В меню модели выберите пункт Edit >> Delete from Model (Правка Удалить из модели) или на-
жмите сочетание клавиш CTRL+D.
Связь расширения
Связь расширения (extends relationship) позволяет варианту использования только при необходимости
применять функциональные возможности, предоставляемые другим вариантом использования. Она
напоминает связь использования. В обоих типах отношений некоторая общая функциональность вы-
деляется в отдельный вариант использования.
На языке UML связи расширения изображают в виде стрелки со словом «extends» (расшире-
ние), как показано на рис. 3.22.
Рис. 3.22.
Связь расширения
Конкретный
вариант
использования
Снять
деньги
«extends»
Абстрактный Ьч
вариант
использования
Произвести ускоренную
выплату
В нашем примере вариант использования "Снять деньги" иногда применяет функциональные воз-
можности, предоставляемые вариантом использования "Произвести ускоренную выплату". Это про-
исходит тогда и только тогда, когда клиент выбирает пункт "Быстро снять $40" во время работы
варианта использования "Снять деньги".
Предоставляющий дополнительные возможности вариант использования "Произвести ускорен-
ную выплату" является абстрактным. Вариант использования "Снять деньги" — конкретный.
Для добавления связи расширения на диаграмму:
1. Нажмите кнопку Generalization (Обобщение) панели инструментов.
2. При нажатой левой кнопке проведите мышью от предоставляющего дополнительную функцио-
нальность варианта использования (абстрактного) к применяющему ее (конкретному).
3. Между этими вариантами использования будет нарисовано обобщение.
4. На линии связи щелкните правой кнопкой мыши и в появившемся меню выберите пункт Open
Specification (Открыть спецификацию), как показано на рис. 3.19.
5. Откроется окно спецификации обобщения (см. рис. 3.23).
Рис. 3.23.
Спецификация
обобщения
Generalize Specification for Untitled
General ERwn |
Name:
Class: Изе Фазе 1
Stereotype: extends
Export Control " ......
Public Protected C" Private Implementation
Qociffnentation:
l~ Fnendshp required
Г* Virtual inheritance
□ K Cancel
growse ▼
Help
96
6. В раскрывающемся списке Stereotype (Стереотип) выберите пункт extends (расширение). Если
данный пункт недоступен, введите слово extends с клавиатуры. Оно появится в списке и будет
доступно в дальнейшем. :
Л ВНИМАНИЕ
В окне спецификации имеется ряд параметров, не применимых к связям
расширения. Они рассматриваются в главе 7.
7. Щелкнув мышью на кнопке ОК, закройте окно спецификации.
8. Слово «extends» появится над стрелкой, соответствующей данному обобщению. Если это ело:
во не выводится, щелкните правой кнопкой мыши на линии связи и в открывшемся меню поме:
тьте пункт Stereotype Label (Метка стереотипа), как показано на рис. 3.21. :
9. Откройте окно спецификации абстрактного варианта использования. :
10. Установите флажок Abstract (Абстрактный).
Для удаления связи расширения:
1. Выделите связь на диаграмме Вариантов Использования. :
2. В меню модели выберите пункт Edit Delete from Model (Правка >- Удалить из модели) или на-:
жмите сочетание клавиш CTRL+D.
Связь обобщения действующего лицо
С помощью связи обобщения действующего лица (actor generalization relationship) показывают, что у не-:
скольких действующих лиц имеются общие черты. Например, ваши клиенты могут быть двух типов:
корпоративные и индивидуальные. Это отношение моделируется с помощью нотации, представлен-:
ной на рис. 3.24.
Рис. 3.24.
Связи обобщения
действующего лицо
Абстрактное!^*
действующее
лицо
-------(--------
i
।
Индивидуальный
клиент
Корпоративный
клиент
Конкретные
действующие
лица
На диаграмме показано, что у нас имеются два типа клиентов: индивидуальные и корпоративные.
Это конкретные действующие лица. Они будут инстанцированы (наполнены) непосредственно. Дей-
ствующее лицо Клиент — абстрактное. Оно никогда не инстанцируется непосредственно. Оно нужно:
только для того, чтобы показать наличие двух типов клиентов.
Варианты использования и действующие лицо________________________________ 97
Рис. 3.25.
Измененные связи
обобщения
действующего лица
Клиент
Индивидуальный
клиент
Корпоративный
клиент
Частная
компания
Правительственное
агентство
При необходимости можно усиливать ветвление. Допустим, имеются два типа корпоративных
клиентов: правительственные агентства и частные компании. С учетом этого модифицируем диаграм-
му (см. рис. 3.25).
Связи этого типа создаются не всегда. В общем случае они нужны, если поведение действующего
лица одного типа отличается от поведения другого настолько, что это затрагивает систему. Если, на-
пример, корпоративные клиенты инициируют некоторые варианты использования, которые не мо-
гут быть запущены индивидуальными клиентами, вероятно, имеет смысл включить в диаграмму связи
этого типа. Если клиенты обоих типов применяют одни и те же варианты использования, показывать
обобщение действующего лица не требуется. Если эти типы действующих лиц задействуют одни и те
же варианты использования, но с некоторым отличием, не стоит включать их обобщение. Неболь-
шие различия можно документировать в потоке событий варианта использования.
Еще раз повторим, что основным назначением этих диаграмм является отображение коммуника-
ций. Если обобщение действующих лиц предоставляет некоторую полезную информацию, включайте
его в диаграмму. Если нет — не загромождайте диаграмму избыточной информацией.
Добавить обобщение действующего лица на диаграмму можно следующим образом:
1. Поместите действующих лиц на диаграмму Вариантов Использования.
2. Выберите кнопку Generalization (Обобщение) панели инструментов.
3. При нажатой левой кнопке проведите мышью от конкретного действующего лица к абстрактному.
4. Откройте окно спецификации для абстрактного действующего лица.
5. Перейдите на вкладку Detail.
6. Установите флажок Abstract (Абстрактный).
Для удаления связи обобщения действующего лица:
1. Выделите связь на диаграмме Вариантов Использования.
2. В меню модели выберите пункт Edit Delete from Model (Правка >- Удалить из модели) или на-
жмите комбинацию клавиш CTRL+D.
98
Глава ЗЕ
Работа с примечаниями е
При работе над диаграммой имеет смысл связывать примечания (notes) с действующими лицами и ва- —
риантами использования. Например, иногда нужно пояснить, почему конкретное действующее лицо —
взаимодействует с конкретным вариантом использования, почему вариант использования участвует в —
связях использования или расширения или почему одно действующее лицо наследует от другого. До- —
бавление примечаний в Rose выполняется с помощью кнопки Note (Примечание) панели инструмен-
тов. z
Добавление примечаний на диаграмму е
На диаграмму можно поместить примечания двух типов: собственно примечания (notes) и текстовую —
область (text box). В общем случае, примечания позволяют добавить комментарий к какому-то одному zz
элементу диаграммы, а текстовая область содержит сведения, общие для всей диаграммы, напримерz
ее имя. zz
Поместить на диаграмму примечание можно следующим образом: zz
1. Нажмите на панели инструментов кнопку Note (Примечание). zz
2. Щелкните мышью где-нибудь внутри диаграммы, чтобы поместить туда примечание. =
3. Выделив новое примечание, введите текст. ЕЕ
Для прикрепления примечания к элементу диаграммы: ЕЕ
1. Нажмите кнопку Anchor Note to Item (Прикрепить примечание к элементу) панели инстру-
ментов. z
2. Нажав левую кнопку мыши, проведите ею от примечания к варианту использования или дейст -
вующему лицу, с которым оно будет связано. Между примечанием и вариантом использования zz
или действующим лицом будет начерчена штриховая линия (см. рис. 3.26). zz
Рис. 3.26.
Прикрепление
примечания
к варианту
использования
Примечание
к варианту
использования 1
Вариант
использования 1
Действующее
лицо 1
Кроме примечаний, на диаграмму можно поместить текстовую область. С ее помощью, например,
к диаграмме добавляется заголовок.
Для добавления на диаграмму текстовой области:
1. Нажмите кнопку Text Box (Текстовая область) панели управления.
2. Щелкните мышью где-нибудь внутри диаграммы, чтобы поместить туда текстовую область.
3. Выделив эту область, введите в нее текст.
Удаление примечаний
При работе над диаграммой может понадобиться удалить некоторые примечания или текстовые об-
ласти.
1. Выделите на диаграмме примечание или текстовую область.
2. Нажмите клавишу Delete.
Варианты использования и действующие лица
99
Работа с пакетами
На языке UML такие элементы, как действующие лица, варианты использования, классы и компонен-
ты, можно сгруппировать в пакеты (packages). В частности, в представлении Вариантов Использова-
ния можно сгруппировать в пакеты варианты использования и действующих лиц. На языке UML
пакет изображается следующим образом:
Пакет 1
Создание пакетов
Для упорядочения элементов модели в среде Rose можно создавать столько пакетов, сколько нужно.
При необходимости, для лучшей организации разрешается помещать один пакет внутрь другого. При
создании нового пакета Rose автоматически создает диаграмму Package Overview (Обзор пакета) и
список ассоциаций (Associations list).
Для добавления пакета на диаграмму:
1. Щелкните правой кнопкой мыши на представлении Вариантов Использования в браузере. Что-
бы вложить пакет в существующий, щелкните правой кнопкой мыши на существующем пакете в
браузере.
2. В открывшемся меню выберите пункт New Package (Создать Пакет), как показано на
рис. 3.27.
Рис. 3.27.
Добавление пакета
на диаграмму
Hahonal Hose - Sample
£7le Edit View fidd-lns Window Help
Packaae
Use Case
Actor
Use Case diagram
Collaboration Diagram
Sequence Diagram
£ie
Hename
;•••• Я Customer
Use Case Vi>i
New
Refresh
Alow D ock ing
Же
5 л Mam
: о t Employe.
i Qpen Specification
±1 Л Actor 1 Sort
: X Employe. “
Hourly Ei
i- Я Salaried
Я Tempoia
3. Введите имя нового пакета.
Чтобы поместить в пакет элемент диаграммы, перетащите его в этот пакет в браузере.
Удаление пакетов
Пакет в среде Rose можно удалить с одной диаграммы Вариантов Использования или из модели в це-
лом. В последнем случае пакет и все его содержимое будут полностью уничтожены.
Для удаления пакета с диаграммы Вариантов Использования:
1. Выделите пакет на диаграмме Вариантов Использования.
2. Нажмите клавишу Delete.
3. Обратите внимание, что, хотя пакет исчез с данной диаграммы, он остался в браузере и на дру-
гих диаграммах.
Для удаления пакета из модели:
1. Щелкните правой кнопкой мыши на пакете в браузере.
2. В открывшемся меню выберите пункт Delete (Удалить).
или
100
Глава 3
1. Выделите пакет на диаграмме Вариантов Использования.
2. В меню модели выберите пункт Edit Delete from Model (Правка Удалить из модели) или на-
жмите комбинацию клавиш CTRL+D.
LJ ОСТОРОЖНО
При удалении пакета из модели все варианты использования, действующие
лица и другие элементы пакета также будут удалены из модели.
Упражнение
Упражнение этой главы проведет вас через процесс создания диаграммы Вариантов Использования
для системы обработки заказов.
Постановка проблемы
— Опять! — сказал Боб, повесив телефонную трубку.
Мэри взглянула на него, оторвавшись от компьютера:
— В чем дело?
— Четвертый раз за этот месяц один из наших клиентов жалуется, что не получил своего заказа.
Если так будет продолжаться и дальше, мы вылетим из дела.
— Остынь, — ответила Мэри. — Мы просто слишком быстро растем. Обработка всех заказов на бу-
маге проходила прекрасно, когда наша компания состояла из пяти человек. Нельзя ожидать от нее та-
кой работы теперь. Давай поговорим со Сьюзан, может быть, мы сумеем спроектировать систему,
которая поможет нам управиться со всем этим.
Robertson's Cabinets, Inc. — это маленькая компания, специализирующаяся на производстве стан-
дартных и нестандартных кухонных шкафов. Компания сформировалась три года назад из неболь-
шой группы собравшихся вместе предпринимателей. Тогда поступало слишком мало заказов, и с
ними вполне можно было управляться на бумаге. С ростом репутации компании число заказов возрас-
тало. Пришлось нанять новых рабочих, и за три года фирма выросла до магазина с более чем 50 со-
трудниками.
Теперь уже нельзя полагаться на обработку заказов вручную. Владельцы фирмы Боб и Мэри Ро-
бертсоны решили поговорить со Сьюзан, чтобы решить эту проблему. Сьюзан — специачист по
компьютерам. Она работает в отделении этой фирмы, занимающемся информационными технологи-
ями.
Боб пошел звонить Сьюзан:
— Совершенно очевидно, что нам требуется система по обработке заказов. Мы столкнулись с серь-
езным риском потерять клиентов.
— Согласна.
— Можешь ли ты разработать программу на Java, которая отслеживала бы заказы?
— Пока не волнуйтесь по поводу реализации. Давайте решим, чего вы хотите от системы.
— Она должна отслеживать заказы.
— Не мог бы ты быть более конкретным? Давай рассмотрим нынешний процесс.
— Хорошо. Получив звонок, мы заполняем форму заказа и передаем ее Клинту в магазин. Клинт за-
полняет все необходимые документы и готовит отправку товара клиенту. Копию формы мы отдаем
Дону в бухгалтерию. Он вводит ее в бухгалтерскую систему и выписывает счет.
— И вы хотите, чтобы новая система поддерживала весь этот процесс?
— Точно.
Из этого разговора Сьюзан смогла понять, что система должна обеспечивать возможность добав-
ления новых заказов, изменения старых, выполнения заказов, проверки и возобновления инвентар-
ных описей. При получении заказа система должна послать сообщение бухгалтерской системе,
которая выписывает счет. Если требуемого товара нет на складе, заказ должен быть отклонен. Затем
Сьюзан преобразовала требования в диаграмму Вариантов Использования, с помощью которой нача-
ла моделировать систему.
Создание диаграммы Вариантов Использования
Создайте диаграмму Вариантов Использования для системы обработки заказов. Требуемые для этого
действия перечислены ниже. Готовая диаграмма Вариантов Использования должна выглядеть, как по-
казано на рис. 3.28.
Варианты использования и действующие лица
101
Рис. 3.28.
Диаграмма
Вариантов
Использования
для системы
обработки заказов
существующий заказ
инвентарную опись
Управляющий
магазином
Обновить
инвентарную опись
«extends»
Оформить заказ
Отклонить
заказ
Клерк
в магазине
Этапы выполнения упражнения
Создание диаграммы Вариантов Использования, вариантов использования
и действующих лиц
1. Дважды щелкнув мышью на Главной диаграмме Вариантов Использования (Main) в браузере,
откройте ее.
2. С помощью кнопки Use Case (Вариант использования) панели инструментов поместите на диаграму
новый вариант использования.
3. Назовите его "Ввести новый заказ".
4. Повторив этапы 2 и 3, поместите на диаграмму остальные варианты использования:
Изменить существующий заказ
Напечатать инвентарную опись
Обновить инвентарную опись
Оформить заказ
Отклонить заказ
5. С помощью кнопки Actor (Действующее лицо) панели инструментов поместите на диаграмму новое
действующее лицо.
6. Назовите его "Продавец”.
7. Повторив шаги 5 и 6, поместите на диаграмму остальных действующих лиц:
Управляющий магазином
Клерк магазина
Бухгалтерская система
Создание абстрактного варианта использования
1 Щелкните правой кнопкой мыши на варианте использования "Отклонить заказ" на диаграмме.
2. В открывшемся меню выберите пункт Open Specification (Открыть спецификацию).
3. Установите флажок Abstract (Абстрактный), чтобы сделать этот вариант использования абстрактным.
102
Глава 3
Добавление ассоциаций
1. С помощью кнопки Unidirectional Association (Однонаправленная ассоциация) панели инструментов на-
рисуйте ассоциацию между действующим лицом Продавец и вариантом использования "Ввести новый
заказ".
2. Повторив шаг 1, поместите на диаграмму остальные ассоциации.
Добавление связи расширения
1. С помощью кнопки Generalization (Обобщение) панели инструментов нарисуйте связь между вариантом
использования "Отклонить заказ" и вариантом использования "Оформить заказ". Стрелка должна идти
от первого варианта использования ко второму. Связь расширения означает, что вариант использова-
ния "Отклонить заказ" при необходимости дополняет функциональные возможности варианта исполь-
зования "Оформить заказ".
2. Щелкните правой кнопкой мыши на новой связи между вариантами использования "Отклонить заказ" и
"Оформить заказ".
3. В открывшемся меню выберите пункт Open Specification (Открыть спецификацию).
4. В раскрывающемся списке стереотипов введите слово extends (расширение), затем нажмите ОК.
5. Надпись <<extends>> появится на линии данной связи.
Добавление описаний к вариантам использования
1. Выделите в браузере вариант использования "Ввести новый заказ".
2. В окне документации введите следующее описание: "Этот вариант использования дает клиенту
возможность ввести новый заказ в систему".
3. С помощью окна документации добавьте описания ко всем остальным вариантам использования.
Добавление описаний к действующему лицу
1. Выделите в браузере действующее лицо Продавец.
2. В окне документации введите следующее описание: "Продавец — это служащий, старающийся
продать товар".
3. С помощью окна документации добавьте описания к остальным действующим лицам.
Прикрепление файла к варианту использования
1. На Web-сайте издательства "Лори" (www.lory-press.ru) находится файл OrderFlow.doc, содержащий
главный поток событий для варианта использования "Ввести новый заказ". Воспользуйтесь этим фай-
лом или создайте свой собственный под таким же именем, введя в него поток событий, как показано на
рис. 3.29. * 1 2 3 4 5 6
Рис. 3.29.
Основной поток
событий
для варианта
использования
"Ввести новый заказ"
Основной ноток событий для варианта использования "Ввести новый заказ1'
1. Продавец выбирает в имеющемся меню пункт "Создать новый заказ".
2. Система выводит форму "Детали заказа".
3. Продавец вводит номер заказа, заказчика и то, что заказано.
4. Продавец сохраняет заказ.
5. Система создает новый заказ и сохраняет его в базе данных.
2. Щелкните правой кнопкой мыши на варианте использования "Ввести новый заказ".
3. В открывшемся меню выберите пункт Open Specification (Открыть спецификацию).
4. Перейдите на вкладку Files (Файлы).
5. Щелкните правой кнопкой мыши в белой области и в открывшемся меню выберите пункт Insert File
(Вставить файл).
6. Укажите файл OpenFlow. doc и нажмите на кнопку Орел (Открыть), чтобы прикрепить файл к варианту ис-
пользования.
глава
Взаимодействие объектов
Обзор диаграмм Последовательности
и Кооперативных диаграмм
Добавление объектов на диаграммы
Последовательности и Кооперативные
диаграммы
Сообщения на диаграммах
Последовательности и Кооперативных
диаграммах
Переключение между диаграммами
Последовательности и Кооперативными
диаграммами
Создание диаграмм Взаимодействия
в два этапа
104
Глава 4z
В этой главе рассматриваются методы моделирования взаимодействия между объектами системы, z
Существуют два типа диаграмм Взаимодействия: диаграммы Последовательности и Кооперативные=
диаграммы. Оба отображают события, участвующие в процессе обработки информации варианта ис-
пользования, и сообщения, которыми обмениваются объекты. События на диаграмме Последователь- с
ности упорядочены по времени, а Кооперативная диаграмма организована вокруг самих объектов. zzz
В приводимом в конце главы упражнении мы построим диаграмму Последовательности для они- z
сания потока событий варианта использования "Ввести новый заказ" нашей системы обработки за-—
казов. -
Диаграммы Взаимодействия
На диаграмме Взаимодействия (Interaction) отображают один из процессов обработки информации в ва:
рианте использования. В варианте использования "Снять деньги" из примера ATM имеется несколько
альтернативных потоков. Это значит, что для данного варианта использования нужно создать неско-
лько диаграмм Взаимодействия. В результате на одной диаграмме будет показано, что происходит^
когда все в порядке. На других будет отображен ход событий в альтернативных потоках: что произой-
дет, если клиент введет неправильный идентификационный номер, если денег на его счету меньше;
чем он хочет снять, и т.д. z
Рассмотрим два типа диаграмм Взаимодействия — диаграммы Последовательности (Sequence) и
Кооперативные диаграммы (Collaboration). Диаграммы первого типа организованы по времени. :
Пример такой диаграммы приведен на рис. 4.1. z
Рис. 4.1.
Диаграмма
Последовательности
Действующее
лицо 1
:Class 1
: Class 2
jl: Сообщение 1 1 1
1 2: Сообщение 2 1
На Кооперативной диаграмме отображается та же информация, но организована она по-другому—
(см. рис. 4.2). =
Рис. 4.2.
Кооперативная
диаграмма
На диаграммах обоих типов представлена одна и та же информация, однако между ними существу- г
ют два различия. Диаграммы Последовательности заостряют внимание на управлении, KoonepaTHBzzz
ные диаграммы отображают поток данных. -
Диаграммы Взаимодействия визуализируют практически те же детали, что уже были описаны
потоке событий, однако представляют их в форме, более удобной для разработчика. Главное здесь
объекты, которые должны быть созданы для реализации функциональных возможностей, заложен-с
ных в вариант использования. На диаграммах Последовательности и Кооперативных диаграммах mcezz
гут быть показаны объекты, классы или то и другое вместе. —
Взаимодействие объектов
105
Что такое объект?
Мы всегда видим объекты вокруг нас. Кресло, в котором мы сидим, книга, которую мы читаем, лампа,
помогающая нам видеть, — все это примеры объектов окружающего нас мира. В программировании
объект — это фактически то же самое.
Объектом называют нечто, заключающее (инкапсулирующее) в себе некоторые данные и поведе-
ние. Это термин, описывающий реальные, конкретные предметы. Объектами являются, например:
♦ Счет Джо до востребования
• Дом №7638 по Main Street
• Желтый цветок, растущий напротив окна моей кухни
В примере ATM объектами могут быть экран ATM, устройство чтения карточек, кредитная карга
Джо и чек, напечатанный после снятия Джо со счета $20.
Объекты инкапсулируют некоторые данные и поведение. Счет Джо, например, содержит следую-
щие данные: номер счета 123456789, владелец счета Джо Смит, баланс на счету $350. Кроме того, у
счета Джо имеется поведение. Счет позволяет класть деньги на себя, снимать с себя деньги и опреде-
лять, когда расходы по нему превышены.
Данные объекта называются атрибутами (attributes). Хотя их значения и изменяются время от
времени (на следующей недели на счету Джо может быть уже $400), сами атрибуты неизменны. У объ-
екта Счет Джо всегда будет номер, владелец и баланс.
Поведение объекта представляется его операциями (operations). В нашем примере операции счета
Джо — это изменение баланса, позволяющее снять деньги со счета или положить их на счет, а также
проверка превышения расходов по счету.
В среде Rose объекты помещают на диаграммы Взаимодействия. Когда действующее лицо (пред-
ставляющее собой стереотип класса) или какой-то другой класс переносится на диаграмму Взаимо-
действия, автоматически создается экземпляр объекта этого класса. Удаление объекта с диаграммы
Rose не приводит к удалению класса из модели.
Что такое класс?
Класс — это некая сущность, представляющая собой как бы схему (blueprint) объекта. Иными словами,
класс определяет данные и поведение, которыми должен обладать объект. Например, классы для сче-
та Джо, дома №7638 по Main Street и желтого цветка напротив моей кухни — это Account (Счет), House
(Дом) и Flower (Цветок). Класс House определяет, что у дома должны быть высота, ширина, количест-
во комнат и площадь. У объекта этого класса — дома №7638 по Main Street — могут быть высота 20 фу-
тов, ширина 60 футов, 10 комнат и его площадь может составлять 2000 квадратных футов. Класс —
более общий термин, являющийся, по существу, шаблоном для объектов.
Class
^Attributes
^OperationsQ
Представьте себе, что класс — это проект дома, а объекты — это 25 построенных по проекту домов.
Подробнее классы рассматриваются в следующей главе.
Поиск объектов
Хороший способ первоначального выявления некоторых объектов — это изучение имен существите-
льных в потоке событий. Можно также прочитать документы, описывающие конкретный сценарий.
Под сценарием понимается конкретный экземпляр потока событий. Наш поток событий для вариан-
та использования "Снять деньги" говорит о человеке, снимающем некоторую сумму денег со счета с
помощью ATM. Один из сценариев для этого потока может быть*. "Джо снимает со счета $20". Другой:
"Джейн хочет снять $20, но вводит неправильный идентификационный номер1. Еще один: "Боб хочет
снять $20, но на его счету недостаточно денег". У каждого потока событий существует обычно много
сценариев. Диаграмма Последовательности или Кооперативная диаграмма отображает один из таких
I I I I 1 I [ I I н I [ I I I I I 111 Н I I I I I I I I I I I I I I I । । I I I I I । Н I I I I I I । । । [ и I I I I I I I I I I I I
сценариев. -
Некоторые существительные в ваших сценариях будут действующими лицами, другие — объекта- z
ми, а третьи — атрибутами объекта. При разработке диаграмм Взаимодействия существительные по- z
кажут вам, что может быть объектом. Если вы не понимаете, что описывает существительное: объект Е
106 Г лава 4
или атрибут, подумайте, есть ли у него поведение. Если нет, то это, вероятно, атрибут; если да, то,
скорее всего, объект.
Не все объекты появляются в потоке событий. Там, например, может не быть форм для заполне-
ния, но их необходимо показать на диаграмме, чтобы позволить действующему лицу вводить новую
информацию в систему или просматривать ее. В потоке событий скорее всего не будет и управляю-
щих объектов (control objects). Эти объекты управляют последовательностью потока в варианте испо-
льзования (см. главу 5).
*
Использование диаграмм Взаимодействия
С помощью диаграмм Взаимодействия проектировщики и разработчики системы могут определить
классы, которые нужно создать, связи между ними, а также операции и ответственности (responsibili-
ties) каждого класса. Диаграммы Взаимодействия — краеугольный камень, на котором возводится
оставшаяся часть проекта.
Диаграммы Последовательности упорядочены по времени. Они полезны для того, кто хочет по-
нять логическую последовательность событий в сценарии. Хотя информация о последовательности
входит и в Кооперативные диаграммы, она лучше воспринимается на диаграмме Последовательно-
сти.
Кооперативные диаграммы полезны в тех случаях, когда нужно оценить последствия сделанных
изменений. Кооперативная диаграмма показывает, какие объекты взаимодействуют друг с другом.
При внесении изменений в объект вы сразу поймете, на какие другие объекты это повлияет.
Диаграммы Взаимодействия содержат:
Объекты Можно использовать имена как объектов, так и классов, или того и другого.
Сообщения С помощью сообщения один объект или класс запрашивает у другого выполнения
какой-то конкретной функции. Например, форма может запросить у объекта Отчет напечатать
ее.
Создавая диаграммы Взаимодействия, следует помнить, что вы таким образом назначаете объек-
там определенные ответственности. Помещая на диаграмму сообщение, вы назначаете ответствен-
ность получающему его объекту. Следите за тем, чтобы объекты и их ответственности
соответствовали друг другу. Например, в большинстве приложений экраны и формы не должны реа-
лизовывать никаких бизнес-процессов. С их помощью следует только вводить и просматривать ин-
формацию. Отделяя интерфейс от бизнес-логики, вы создаете архитектуру, уменьшающую "эффект
ряби" от изменений. Тогда внесение изменений в бизнес-логику не затронет интерфейс. С другой сто-
роны, если вы меняете формат одного или двух экранов, то хотя бы бизнес-логика останется неизмен-
ной. Еще пример: если вам нужно распечатать отчет обо всех балансах на всех счетах, этим не должен
заниматься объект Счет Джо, так как его ответственности должны быть связаны только со счетом
Джо и его деньгами. За просмотр всех счетов и генерацию соответствующего отчета должен отвечать
другой объект.
Диаграммы Последовательности
Диаграмма Последовательности — это упорядоченная по времени диаграмма Взаимодействия, читать ее
следует сверху вниз. Как упоминалось раньше, у каждого варианта использования имеется большое [
количество альтернативных потоков. Каждая диаграмма Последовательности описывает один из по- /
токов варианта использования. Например, на рис. 4.3 приведена диаграмма Последовательности, по- /
называющая, как клиент банка Джо снимает со счета $20 с помощью автоматического банкомата /
(ATM).
Участвующие в потоке объекты нарисованы в прямоугольниках в верхней части диаграммы. В на- /
шем примере имеются пять объектов: Джо, устройство для чтения карточки, экран ATM, счет Джо и /
кассовый аппарат. Объект действующего лица, Джо, инициирующий вариант использования, пока- i
зан в верхнем левом углу диаграммы.
Процесс начинается, когда Джо вставляет карточку в устройство для ее чтения. Это устройство
считывает номер карточки и выдает экрану ATM команду инициализации. ATM запрашивает у Джо
его идентификационный номер. Джо вводит свой номер (1234), и ATM открывает его счет. Иденти-
фикационный номер Джо подтверждается, и ATM предлагает Джо выбрать транзакцию. Джо указы-
вает "Снятие денег". ATM запрашивает требуемую сумму. Джо вводит $20. ATM удостоверяется, что на
счету Джо имеется достаточно денег, и вычитает $20 из его счета. Затем выдается требуемая сумма, и
Джо получает обратно свою карточку.
111111111111 111111111111111II11111.........111...............
Взаимодействие объектов
107
Рис. 4.3.
Диаграмма После-
довательности
снятия клиентом
Джо $20 со счета
Джо:клиент
Устройство
чтения
карточки
Экран
ATM
Счет
Джо
Кассовый
аппарат
1: Получение карточки) ।
устройством чтения ।
2: Чтение номера карточки
С " I I
l3: Инициализация экрана
4: Запрос регистрационного номера । ।
5: Ввод регистрационного номера (1234^1 6: Открытие счет^1
। । 7 П ।
7: Проверка
I I регистрационного номера
8: Запрос транзакции । । ।
9: Выбор транзакции (Снять деньги)^) | |
10: Запрос требуемой суммы денег * ’ ’
1111
11: Ввод суммы денег ($20) ।
I 112: Снятие денег со gsета ($20) |
। । 113:Проверка суммы ($20)
.14: Вычет снятой суммы денег из счета ($20)
I
15: Выдача наличности($20)
16: Выдача чека
17: Выдача карточки клиенту
У каждого объекта имеется линия жизни (lifeline), изображаемая в виде вертикальной штриховой
линии под объектом. Сообщения, соответствующие коммуникациям между объектами, рисуют между
линиями жизни объектов. Сообщение показывает, что один объект вызывает функцию другого. Да-
лее, когда мы определим операции классов, каждое сообщение станет операцией. Сообщения могут
быть рефлексивными, что соответствует обращению объекта к своей собственной операции. В на-
шем примере сообщение 2 демонстрирует, что устройство чтения карточки обращается к самому
себе, чтобы прочитать номер карточки.
Создание диаграммы Последовательности
Диаграммы Последовательности можно создавать в представлении Вариантов Использования или
в Логическом представлении браузера. Как показано на рис. 4.4, диаграммы Последовательности
должны находиться непосредственно внутри варианта использования или непосредственно внутри
пакета.
Для создания новой диаграммы Последовательности:
4. Щелкните правой кнопкой мыши на соответствующем пакете или варианте использования в
браузере.
2. В открывшемся меню выберите пункт New Sequence Diagram (Создать Диаграмма После-
до вате л ьности).
3. Дайте новой диаграмме Последовательности имя.
4. Дважды щелкнув на диаграмме в браузере, откройте ее.
Открыть существующую диаграмму Последовательности можно следующим образом:
1. Найдите ее в представлении Вариантов Использования браузера.
2. Откройте диаграмму, дважды щелкнув на ней мышью.
ИЛИ
108 Глава 4
Рис. 4.4.
Создание новой
диаграммы После-
довательности
V Rational Rose - Sample
File Edit View Add-Ins Window Help
Open Specification
£^laboetionDi^>rn
Sol'
Use Case 1
Sequence Diagfc
delete
Rename
X Main
+ S Class 1 { Coi
-. l2j Use Case View
I Л M ain
1л Employees
£ Actor 1
£ Employee
••••£. Fbuf ly &np kyee
Д Salaried Employee
£ T empoi ary E mployee
• S Class 3 (Coi
] i Pl Component Viev
Class diagram
Ц fia £> idgiam
_ State Diagram
File
URL
Qelresh
Д Deployment Viet ** Allow Docking
Hide
Рис. 4.5.
Открытие
существующей
диаграммы
Select Interaction Diagiam
Package:
Interaction Diagrams:
ВЕЛ
Sequence Diagram; Use Case View / Sequence 1 Ж
Sequence Diagram: Use Case View / Sequence 2 I
Cancel
1. В меню модели выберите пункт Browse Interaction Diagram (Обзор > Диаграмма Взаимодей- =
ствия). Появится окно, показанное на рис. 4.5.
2. В списке пакетов (Package) выберите тот из них, который содержит требуемую диаграмму. -
3. В списке диаграмм Взаимодействия выберите нужную диаграмму.
4. Нажмите на кнопку ОК.
Для добавления на диаграмму Последовательности нового элемента:
Воспользуйтесь кнопками панели инструментов (см. ниже). С их помощью можно помещать на—
диаграмму объекты и сообщения.
ИЛИ
Перетащите действующее лицо или класс из браузера на диаграмму.
Для удаления элемента с диаграммы Последовательности:
1. Выделите его на диаграмме.
2. В меню модели выберите пункт Edit >• Delete from Model (Правка Удалить из модели) или и-
жмите комбинацию клавиш CTRL+D.
Ы1 ВНИМАНИЕ Удаление объекта с диаграммы не удаляет из модели соответствующий класс.
Удаление диаграммы Последовательности
В процессе работы над проектом вы можете обнаружить, что некоторые диаграммы Последователь
ности устарели или стали избыточными.
Взаимодействие объектов
109
Диаграммы, которые больше не нужны или не отражают проект вашей системы, следует удалить.
В среде Rose удалить из модели диаграмму Последовательности можно с помощью браузера.
1. Щелкните правой кнопкой мыши в браузере на диаграмме Последовательности.
2. В открывшемся меню выберите пункт Delete (Удалить).
Связывание файлов и ссылок
с диаграммой Последовательности
Среда Rose позволяет связывать файлы и ссылки с конкретной диаграммой Последовательности. На-
пример, у вас может быть документ, который описывает сценарий, показанный на диаграмме. Вы мо-
жете прикрепить к диаграмме файл, содержащий реализующий ее логику код, или документ со
специфичными для этой диаграммы требованиями.
Что бы вы ни прикрепляли, проследите, чтобы этот документ или ссылка относились только к
данной диаграмме Последовательности, а не ко всему варианту использования. В противном случае
лучше связать их с вариантом использования, а не с отдельной его диаграммой.
Для прикрепления файла к диаграмме Последовательности:
1. Щелкните на диаграмме в браузере правой кнопкой мыши.
2. В открывшемся меню выберите пункт New File (Создать Файл).
3. В диалоговом окне открытия файла укажите тот файл, который нужно прикрепить.
4. Для завершения процедуры нажмите кнопку Open (Открыть).
Если нужно связать с диаграммой Последовательности ссылку на Web-страницу:
1. Щелкните на диаграмме в браузере правой кнопкой мыши.
2. В открывшемся меню выберите пункт New URL (Создать >*- Ссылка).
3. Введите адрес ссылки.
Открыть связанный файл можно следующим образом:
Дважды щелкните на нем мышью в браузере. Rose запустит соответствующее приложение и за-
грузит в него файл.
ИЛИ
1. Щелкните правой кнопкой мыши на файле в браузере.
2. Выберите в открывшемся меню пункт Open (Открыть). Rose запустит соответствующее прило-
жение и загрузит в него файл.
Если нужно открыть связанную с диаграммой ссылку:
Дважды щелкните мышью на ссылке в браузере. Rose запустит ваш Web-браузер и загрузит в
него эту ссылку.
ИЛИ
1. Щелкните правой кнопкой мыши на ссылке в браузере.
2. Выберите в открывшемся меню пункт Open (Открыть). Rose запустит ваш Web-браузер и
загрузит в него эту ссылку.
Для удаления связанного с диаграммой файла или ссылки:
1. Щелкните правой кнопкой мыши в браузере на файле или ссылке.
2. В открывшемся меню выберите пункт Delete (Удалить).
Панель инструментов диаграммы Последовательности
Когда открывается диаграмма Последовательности, панель инструментов диаграммы изменяется так,
чтобы вы могли помещать на диаграмму объекты, сообщения и другие элементы (см. ниже). В табли-
це 4.1 приводится список кнопок панели диаграммы Последовательности и объясняется их назначе-
ние.
110
Главой
Таблица 4.1. Пиктограммы панели инструментов диаграммы Последовательности
Пиктограмма Кнопка
Назначение
Selects or deselects an item (Выделение или отмена Превращает курсор в стрелку указателя, так что вы
выделения объекта) можете выделить объект
две
Text Box (Текст)
Добавляет к диаграмме текст
Note (Примечание)
Добавляет к диаграмме примечание
Anchor Note to Item (Прикрепление примечания Связывает примечание с элементом на диаграмме
к элементу)
Object (Объект)
Помещает на диаграмму новый объект
Object Message (Сообщение для объекта)
Рисует сообщение между двумя объектами
Message to Self (Сообщение самому себе)
Рисует рефлексивное сообщение
Кооперативные диаграммы =
Подобно диаграммам Последовательности, Кооперативные диаграммы (Collaboration) отображают пб-
ток событий в конкретном сценарии варианта использования. Диаграммы Последовательности упб
рядочены по времени, а Кооперативные диаграммы больше внимания заостряют на связях междд—
объектами. На рис. 4.6 приведена Кооперативная диаграмма, описывающая, как Джо снимает со сче-
та $20.
Рис. 4.6.
Кооперативная
диаграмма,
описывающая
процесс снятия
Джо со своего
счета $20
Джо: клиент
1: Получение карточки
устройством чтения ч
Устройство
чтения
карточки
5: Ввод регистрационного номера (1234)
9: Выбор транзакции (Снять деньги)
11: Ввод суммы денег ($20)
2: Чтение номера
карточки
3: Инициализация экрана
17: Выдача карточки клиенту
4: Запрос регистрационного номера
8: Запрос транзакции
10: Запрос требуемой суммы денег
Экран
ATM
Счет
Джо
13: Проверка суммы ($20) z
14: Вычет снятой суммы денег из счета ($20)
6: Открытие счета
7: Проверка регистрационного номера
12: Снятие денег со счета ($20)
15: Выдача наличности ($20)
16: Выдача чека
Кассовый
аппарат
Здесь представлена вся та информация, которая была и на диаграмме Последовательности, но Ко-
оперативная диаграмма по-другому описывает поток событий. Из нее легче понять отношения между
«)бъектами, однако труднее уяснить последовательность событий. ~
По этой причине часто для сценария создают диаграммы обоих типов. Хотя они служат одной й
той же цели и содержат одну и ту же информацию, но представляют ее с различных точек зрения^
В Rose диаграмму Последовательности можно преобразовать в Кооперативную диаграмму и наобо-
рот. нажав клавишу F5 или выбрав в меню пункт Browse Create (Sequence/Collaboration) Diagram
(Обзор Создать диаграмму (Последовательности/ Кооперативную)). =
Взаимодействие объектов
111
Создание Кооперативной диаграммы
Как и диаграммы Последовательности, Кооперативные диаграммы обычно создаются в браузере и
размещаются под вариантом использования или пакетом. На рис. 4.7 показано, как добавить новую
Кооперативную диаграмму к модели. Можно сначала создать диаграмму Последовательности, а затем
нажать клавишу F5. В этом случае Rose сама создаст Кооперативную диаграмму из указанной диаграм-
мы Последовательности.
Рис. 4.7.
Создание новой
Кооперативной
диаграммы
V Rational Rote - Sample
File Edit Vir'Ai Addins Window Help
A i Main
о л Employees
t? Я Actor 1
Я E mployee
Я Hourly Employee
Я Salaried Employee
Я Temporary Employee
Use Case 1
> U se Case 2
> Use Case 3
Qpen Specification
И
Collaboration Diagram
Sequence Diagram
Class Diagram
Use Case Diagram
Strte Diagram
V
*
New
bOft
i Component Viev
I Deployment Vie1
D elete
Rename
fieheth
V Allow Docking
Hide
... ~।
File
Для создания новой Кооперативной диаграммы:
1. Щелкните правой кнопкой мыши на нужном варианте использования в браузере.
2. В открывшемся меню выберите пункт New >> Collaboration Diagram (Создать > Кооперативная
диаграмма).
3. Дайте этой диаграмме имя.
4. Дважды щелкнув мышью на диаграмме в браузере, откройте ее.
Удаление Кооперативной диаграммы
При работе над моделью вы можете обнаружить, что некоторые из ранее созданных Кооперативных
диаграмм стали неточными или более не нужны. Чтобы привести модель в порядок, следует удалить
лишние Кооперативные диаграммы из браузера.
1. Щелкните правой кнопкой мыши в браузере на Кооперативной диаграмме.
2. В открывшемся меню выберите пункт Delete (Удалить).
Связывание файлов и ссылок
с Кооперативной диаграммой
Как и в случае диаграмм Последовательности, к Кооперативным диаграммам можно прикреплять
файлы и ссылки Интернета.
Файлы и ссылки могут содержать информацию об иллюстрируемом диаграммой потоке событий,
о реализуемых диаграммой конкретных требованиях или другую документацию. Если файл или ссыл-
ка содержит информацию обо всем варианте использования, а не об отдельном его сценарии, ее сле-
дует прикрепить к варианту использования, а не к Кооперативной диаграмме.
Если файл или ссылку прикрепить к Кооперативной диаграмме, двойной щелчок мыши на файле
или ссылке приведет к запуску соответствующего приложения и к загрузке в него этого файла или
URL.
112
Глава 4
Для прикрепления файла к Кооперативной диаграмме:
1. Щелкните правой кнопкой мыши на диаграмме в браузере.
2. В открывшемся меню выберите пункт New > File (Создать Файл).
3. Укажите требуемый файл в диалоговом окне открытия файла.
4. Завершите процедуру, нажав кнопку Open (Открыть).
Для прикрепления ссылки к Кооперативной диаграмме:
1. Щелкните правой кнопкой мыши на диаграмме в браузере.
2. В открывшемся меню выберите пункт New URL (Создать Ссылка).
3. Введите адрес прикрепляемой ссылки.
Открыть прикрепленный файл можно следующим образом:
Дважды щелкните на нем в браузере. Rose откроет соответствующее приложение и загрузит в
него этот файл.
ИЛИ
1. Щелкните правой кнопкой мыши на файле в браузере.
2. В открывшемся меню выберите пункт Open (Открыть). Rose откроет соответствующее прило-
жение и загрузит в него этот файл.
Если нужно открыть прикрепленную к диаграмме ссылку на Web-страницу:
Дважды щелкните на ссылке в браузере. Rose запустит ваш Web-браузер и загрузит в него эту
ссылку.
ИЛИ
1. Щелкните правой кнопкой мыши на ссылке в браузере.
2. В открывшемся меню выберите пункт Open (Открыть). Rose запустит ваш Web-браузер и загру-
зит в него эту ссылку.
Для удаления связанного с диаграммой файла или ссылки:
1. Щелкните правой кнопкой мыши на файле или ссылке в браузере.
2. В открывшемся меню выберите пункт Delete (Удалить).
Панель инструментов Кооперативной диаграммы
Панель инструментов Кооперативной диаграммы чрезвычайно напоминает панель инструментов диа-
граммы Последовательности. Однако здесь имеется несколько параметров, которые не доступны на
диаграмме Последовательности, например связь с объектом и поток данных. В последующих разделах
будет показано, как с помощью кнопок этой панели добавлять на диаграмму новые элементы. В табли-
це 4.2 приведен список кнопок панели инструментов Кооперативной диаграммы.
Таблица 4.2. Пиктограммы панели инструментов Кооперативной диаграммы
Пиктограмма Кнопка
Назначение
Selects or deselects an item (Выделение или отмена
выделения объекта)
Превращает курсор в стрелку указателя, так что вы
можете выделить объект
Text Box (Текст)
Добавляет к диаграмме текст
Note (Примечание)
Anchor Note to Item (Прикрепление примечания
к элементу)
Object (Объект)
Добавляет к диаграмме примечание
Связывает примечание с элементом на диаграмме
Помещает на диаграмму новый объект
Взаимодействие объектов
113
Таблица 4.2. Пиктограммы панели инструментов Кооперативной диаграммы (продолжение)
Пиктограмма
Кнопка________________________
Class instance (Экземпляр класса)
Назначение
Помещает на диаграмму новый экземпляр класса
Object Link (Связь с объектом)
Создает путь коммуникации между объектами
О
Link to Self (Связь с самим собой)
Показывает, что объект может обращаться к своим
операциям
Link Message (Сообщение связи)
Показывает сообщение, передаваемое между двумя
объектами или передаваемое объектом самому себе
Reverse Link Message (Ответное сообщение)
Data Flow (Поток данных)
Показывает сообщение, передаваемое в противопо-
ложном направлении по связи между объектами или
объектом самому себе
Показывает поток информации между объектами
Reverse Data Flow (Обратный поток данных) Показывает поток информации между объектами в
противоположном направлении
Работа с действующими лицами
на диаграмме Взаимодействия
На любой диаграмме Последовательности или Кооперативной диаграмме должен быть объект-дейст-
вующее лицо. Он является внешним стимулом, дающим системе команду на выполнение какой-то фун
кции. Объекты-действующие лица на диаграмме Взаимодействия содержат действующих лиц.
взаимодействующих с вариантом использования на диаграмме Вариантов Использования.
Поместить на диаграмму Взаимодействия объект-действующее лицо можно следующим образом:
1. Откройте диаграмму Взаимодействия.
2. Выберите действующее лицо в браузере.
3. Перетащите его из браузера на открытую диаграмму.
Для удаления объекта-действующего лица с диаграммы Взаимодействия:
1. Выделите действующее лицо на диаграмме Взаимодействия.
2. В меню модели выберите пункт Edit Delete from Model (Правка Удалить из модели) или на-
жмите сочетание клавиш CTRL+D.
Удаление объекта с диаграммы не означает удаления соответствующего класса
из модели.
Работа с объектами
На диаграммах Последовательности и Кооперативных диаграммах изображают объекты, участвую-
щие в потоке одного конкретного варианта использования. После того как на диаграмму поместили
объект-действующее лицо, нужно добавить туда и все остальные объекты. Как отмечалось ранее, уча-
ствующие в конкретной диаграмме Последовательности или Кооперативной диаграмме объекты мож-
но выявить, изучив документацию по этому сценарию или имена существительные, встречающиеся в
потоке событий. После добавления объектов можно приступать к работе с сообщениями между ними.
114
Глава 4
Добавление объектов к диаграмме Взаимодействия
Одним из первых этапов в создании диаграмм Последовательности и Кооперативных диаграмм явля- /
ется добавление к ним объектов. Чтобы найти их, изучите имена существительные в вашем потоке со- /
бытий и сценарии.
Поместить объект на диаграмму Последовательности можно следующим образом:
1. Нажмите кнопку Object (Объект) панели инструментов.
2. Щелкните мышью в том месте диаграммы, куда будет помещен объект. На диаграмме Последо- /
вательности их располагают в ряд в верхней части.
3. Введите имя нового объекта.
4. Создав объект, вы всегда можете изменить его положение на диаграмме, перетащив его мышью, f
Чтобы расположить объект между двумя существующими объектами, достаточно щелкнуть мы- /
шью между ними на втором шаге описанной последовательности.
Для добавления объекта на Кооперативную диаграмму:
1. Нажмите кнопку Object (Объект) панели инструментов.
2. Щелкните мышью в том месте диаграммы, куда будет помещен объект. На Кооперативной диа- /
грамме его можно расположить в любом месте.
3. Введите имя нового объекта.
Удаление объектов с диаграмм Взаимодействия
В процессе работы с диаграммами Взаимодействия вам может понадобиться удалить некоторые объ- /
екты. При этом Rose автоматически удалит также все сообщения, которые начинаются или заканчива- /
ются на объекте, и переименует оставшиеся сообщения.
При удалении объекта с диаграммы Последовательности Rose автоматически удалит его и с соот- /
ветствующей Кооперативной диаграммы, но оставит его класс. Аналогично, при удалении объекта с /
Кооперативной диаграммы он будет автоматически удален и с диаграммы Последовательности. Если /
потребуется восстановить объект, можно воспользоваться командой Edit Undo (Правка Отме- I
нить команду) меню модели. Для удаления объекта с диаграммы Последовательности или Коопера- /
тивной диаграммы:
1. Выделите его на одной из этих диаграмм.
2. В меню модели выберите пункт Edit Delete from Model (Правка Удалить из модели) или на- f
жмите комбинацию клавиш CTRL+D.
LJ ВНИМАНИЕ При удалении объекта с диаграммы соответствующий класс модели
сохраняется.
Спецификации объекта
Rose предоставляет большое количество различных полей, позволяющих детализировать объекты
диаграммы. Вы можете ввести имя и класс объекта, указать устойчивость его существования (persisten-
ce) и возможность наличия у него нескольких экземпляров. В показанном на рис. 4.8 окне специфика-
ции объекта можно добавить также документацию.
Открыть спецификации объекта можно следующим образом:
1. Щелкните правой кнопкой мыши на объекте на диаграмме Последовательности или Коопера-
тивной диаграмме.
2. В появившемся меню выберите пункт Open Specification (Открыть спецификацию).
ИЛИ
1. Выделите объект на диаграмме Последовательности или Кооперативной диаграмме.
2. В меню модели выберите команду Browse Specification (Обзор Спецификация) или нажми-
те комбинацию клавиш CTRL+B.
Кзоимаденстние объектов
ТГ5
Рис. 4.8.
Окно спецификации
r.rTQ
Object Spaailicalra for Object 1
Grrtrf-i
Цате: | G ji^l 1
Q“'; 3
2 DO Yiltlil ckn JTl
..J
-<i liiI-ii ice .........•_•; :. • ••
•“ Г.гм;(вШ f* Italic Т/дайгН
( Multiple mtance*
f iH1* | t | j flrowse -r j Help
Именование объекта
IGij.j-iм\ । ruiK icty на диаграмме Пгк л нкгн i i.itoctk или Kuoitcpathiii h-i r i nai ].i;i\im(.• ашжио быть
длии •. । и i кагык jc имя. В отличие от имел к г, и ’I г mi, которые:, как правши I. । и а >11 । idiiitni характер i класс
Employee (Слузк i.. । или класс Company),имена объектов конкретны : ,.1.л,! чi .Т ।i.tti корпорации Ra—
tional Software). ILi диаграмме ВзаттмочеГкттшя может быть два объект, >111.1^10111,11 vcя экземплярами
одного и того же класса. Например, г. шил иг арпой системе клт сс Part (Деталь) может иметь два экзем-
пляра (двигатель и карбюратор), взаимодействующих дрсг и другом, Имя каждого присутствующего на
диаграмме объекта можно задеть непосредственно нал Hi диз грамме или в окне его спецификации,-
Дать название объекту можно следующим образом:
1. Щелкните правой кнопкой мыши на объекте на диаграмме Последовательности или Коопера-
тивной диаграмме.
2, В появившемся меню выберите пункт Open Specification н >i крыть спецификацию).
3. Введите имя объекта в поле Name (Имя). Каждый объект на диаграмме должен иметь уникаль-
ное имя. В дальнейшем с помощью этого поля можно изменить имя объекта.
ИЛИ ----------------
1. Выделите обьекг на диаграмме Последовательности или Кооперативной диаграмме.
2. Нажмите правую кнопку мыши так, чтобы курсор был виден на объекте.
3 Введите имя объекта.
Для добавления текстового описания к объекту:
4. Щелкните правой кнопкой мыши па объекте на диаграмме Последовательности или Коопера’
тивной диаграмме. -------
2. В появившемся меню выберите пункт Open Specification (Открыть спецификацию). ------------
3. В поле DoctimeiTation (Документация) введите описание объекта. ----------------
ИЛИ ----------------
1. Pjitu.ih 1 и ибьект на диаграмме Последовательности или Кооперативной диаграмме. —-
2. Введите описание в окно документации модели. ----------------
□ ВНИМАНИЕ Если объект уже был соотнесен с классом, наеденное таким образам описание
будет добавлено и к классу. В противном случае оно будет связано только с
объектом. Описание объекта не повлияет на генерацию кода, описание класса
будет присутствовать и в коде. Описание объекта можно просмотреть а отчете,
генерируемом командой File Print Specifications (Файл > Печать специфика—
ций) меню модели,
116 ГлаваС
_ _ _ __ _ _ __ __ _-_.__- _ ж ___ >_ _ _ _ __-__.__ _ ___.___- - - —-- - - --Л.—— — _— __-- - - - - -1— — -— ^-ж _ _ж — ~ - J- ж_А *-Ж.-. . Ж *_Ж_Ж - - . _ ж_ж _h - - Ж. Ж. _ — .--ж ж ж ж - ж- -I ж ж ж.ж — жж-.А^_^._ • - —-- - — .Л. * -- • — *LW>.K .L-U. -*• ь- h h.t_<
, ••,.•♦'•. - <£ : - ---у <
#•' ‘ ‘ ’z’ - <- *-•'.?>
--J-, > --J -ч< WJ
Соотнесение объекта с классом
Каждый объект диаграммы Последовательности или Кооперативной диаграммы может быть соотне- |
сен с классом. Например, объект Счет Джо можно соотнести с классом Account (Счет). Для назначь |
ния объекту класса можно воспользоваться полем Class окна спецификации данного объекта. По |
умолчанию объекту назначается класс Unspecified (Не определен).
При назначении объекту класса можно либо указать уже существующий класс модели, либо со- |
здать новый класс.
К моменту генерации кода все объекты должны быть соотнесены с классами.
Для соотнесения объекта с существующим классом:
1. Щелкните правой кнопкой мыши на диаграмме Последовательности или Кооперативной диа- |
грамме.
2. В появившемся меню выберите пункт Open Specification (Открыть спецификацию).
3. В раскрывающемся списке классов выберите имя класса или введите его с клавиатуры.
4. После соотнесения класса с объектом название класса появится на диаграмме за именем объек- |
та и двоеточием.
или
1. Выделите класс в Логическом представлении браузера.
2. Перетащите класс из браузера на объект диаграммы.
3. После соотнесения класса с объектом название класса появится на диаграмме за именем объек- |
та и двоеточием: I
Объект 1: Класс 1
ВНИМАНИЕ Если удалить класс, с которым вы соотнесли объект, имя класса сохранится на
диаграмме рядом с объектом, но будет заключено в скобки.
Разорвать соотнесение объекта с классом можно следующим образом: f
1. Щелкните правой кнопкой мыши на объекте на диаграмме Последовательности или Коопера-1
тивной диаграмме. |
2. В появившемся меню выберите пункт Open Specification (Открыть спецификацию). |
3. В раскрывающемся списке классов выберите пункт (Unspecified) (Не определен). |
Если нужно создать для объекта новый класс: j
1. Щелкните правой кнопкой мыши на объекте на диаграмме Последовательности или Коопера-1
тивной диаграмме. I
2. В появившемся меню выберите пункт Open Specification (Открыть спецификацию). \
3. В раскрывающемся списке классов выберите пункт New (Создать). |
Перед вами появится окно спецификации для нового класса. |
Если вы хотите убедиться, что все объекты соотнесены с классами: |
1. Выберите в меню модели пункт Report >- Show Unresolved Objects (Отчет Показать свобод- <
ные объекты). |
2. Появится список всех объектов, которые еще не были соотнесены с классами.
Взаимодействие объектов
117
Для того чтобы на диаграмме выводилось только имя объекта:
1. Щелкните правой кнопкой мыши на объекте на диаграмме Последовательности или Коопера-
тивной диаграмме.
2. В появившемся меню выберите пункт Open Specification (Открыть спецификацию).
3. Введите имя объекта в поле Name.
4. В раскрывающемся списке классов выберите пункт (Unspecified) (Не определен).
Если нужно показать на диаграмме имя объекта и имя его класса:
1. Щелкните правой кнопкой мыши на объекте на диаграмме Последовательности или Коопера-
тивной диаграмме.
2. В появившемся меню выберите пункт Open Specification (Открыть спецификацию).
3. В раскрывающемся списке классов выберите имя класса или введите его с клавиатуры.
Можно показать на диаграмме только имя класса:
1. Если вы хотите работать только с именем класса и вам не нужно имя соответствующего объекта
на диаграмме, щелкните правой кнопкой мыши на объекте на диаграмме Последовательности
или Кооперативной диаграмме.
2. В появившемся меню выберите пункт Open Specification (Открыть спецификацию).
3. Удалите имя объекта из поля его имени. Теперь на диаграмме для объекта будет показано толь-
ко имя соответствующего класса. Как и прежде, перед ним будет двоеточие.
: Класс 1
Определение устойчивости объекта
В среде Rose для каждого объекта на диаграмме можно задать его устойчивость (persistence). Поддер-
живаются следующие варианты:
Persistent (Устойчивый) Устойчивый объект сохраняется в базе данных или другим способом,
обеспечивающим постоянное хранение. Такой объект будет существовать даже после прекраще-
ния работы программы.
Static (Статичный) Статичный объект сохраняется в памяти компьютера в течение всего време-
ни работы программы. Он, в частности, продолжает существование после выполнения отражен-
ных на диаграмме Последовательности действий, но не сохраняется после прекращения работы
программы.
Transient (Временный) Временный объект сохраняется в памяти в течение очень короткого
времени (например, пока не закончится выполнение процессов, определенных в диаграмме По-
следовательности ).
Для определения устойчивости объекта:
1. Щелкните правой кнопкой мыши на объекте на диаграмме Последовательности или Коопера-
тивной диаграмме.
2. В появившемся меню выберите пункт Open Specification (Открыть спецификацию).
3. Установите переключатель Persistence в значение Persistent, Static или Transient.
Л ВНИМАНИЕ Если продолжительность жизни класса объекта установлена в Persistent, то для
самого объекта ее можно указать как Persistent, Static или Transient. Если же
продолжительность жизни класса объекта соответствует Transient, то для само-
го объекта она может быть только Static или Transient.
118
Г лава 4
Работа с несколькими экземплярами объекта Rose дает возможность с помощью одной пиктограм-
мы представлять несколько экземпляров одного и того же класса. Допустим, что вы хотите отобра-
зить список сотрудников на диаграмме
Последовательности или Кооперативной диаграмме. Вместо того чтобы каждого сотрудника пред-
ставлять как один объект, вы можете показать их все сразу с помощью значка множественного экзем-
пляра. Нотация UML для множественного экземпляра выглядит следующим образом:
I ь
Сотрудник
Для работы с множественными экземплярами объекта:
1. Щелкните правой кнопкой мыши на объекте на диаграмме Последовательности или Коопера-
тивной диаграмме.
2. В появившемся меню выберите пункт Open Specification (Открыть спецификацию).
3. Установите или сбросьте флажок Multiple Instances (Множественные экземпляры). На Коопера-
тивной диаграмме для этого объекта будет показана соответствующая пиктограмма (значок
множественного или одиночного объекта). На диаграмме Последовательности всегда выводит-
ся пиктограмма одиночного объекта.
Работа с сообщениями
Сообщение (message) — это связь между объектами, в которой один из них (клиент) требует от другого
(сервера) выполнения каких-то действий.
При генерации кода сообщения транслируются в вызовы функций.
В приведенном ниже примере одна форма просит другую, чтобы та вывела ее на экран:
Форма 1
Форма 2
I 1: Показать
I на экране
Добавление сообщений на диаграммы Взаимодействия
Расположив объекты на диаграмме Последовательности или Кооперативной диаграмме, нужно пока-
зать сообщения между объектами. На диаграмме Последовательности рисуется стрелка между линия-
ми жизни двух объектов. На Кооперативной диаграмме указывается связь между объектами, а затем
туда помещаются сообщения.
Добавление сообщений на диаграмму
Последовательности
На диаграмме Последовательности сообщение изображают в виде стрелки, которая проводится меж-
ду линиями жизни двух объектов или от линии жизни объекта к самой себе. Сообщения располагают в
хронологическом порядке сверху вниз.
Поместить сообщение на диаграмму Последовательности можно следующим образом:
1. Нажмите кнопку Object Message (Сообщение объекта) панели инструментов.
2. Нажав левую кнопку мыши, проведите ею от линии жизни объекта или действующего лица,
посылающего сообщение, к объекту или действующему лицу, получающему сообщение (см.
рис. 4.9).
3. Впечатайте текст сообщения.
Взаимодействие объектов 119
Рис. 4.9.
Добавление
сообщений
на диаграмму
Последовательно-
сти
Рис. 4.10.
Добавление
рефлексивного
сообщения
на диаграмму
Последователь-
ности
I
Если нужно поместить на диаграмму Последовательности рефлексивное сообщение:
1. Нажмите кнопку Message to Self (Сообщение самому себе) панели инструментов.
2. Щелкните мышью на линии жизни объекта, посылающего и получающего сообщение
(см. рис. 4.10).
3. Пока новое сообщение выделено, введите его текст.
Удаление сообщений с диаграммы Последовательности
В процессе работы с диаграммами Последовательности может потребоваться удалить ранее нарисо-
ванные сообщения. При этом оставшиеся сообщения будут автоматически перенумерованы.
120
Глава 4
Для удаления сообщения с диаграммы Последовательности:
И. Выделите удаляемое сообщение.
2. В меню модели выберите пункт Edit Delete from Model (Правка Удалить из модели) или на-
жмите комбинацию клавиш CTRL+D.
Изменение порядка сообщений
на диаграмме Последовательности
Иногда требуется изменить порядок сообщений на диаграмме Последовательности. В среде Rose для
этого достаточно перетащить сообщение на новое место. При изменении порядка следования сооб-
щений они автоматически перенумеровываются.
Изменить порядок следования сообщений на диаграмме Последовательности можно следующим
образом:
1. Выделите перемещаемое сообщение.
2. Перетащите его вверх или вниз. При этом все сообщения на диаграмме будут автоматически пе-
ренумерованы.
Нумерация сообщений на диаграмме
Последовательности
Хотя диаграмму всегда читают сверху вниз, вы можете еще и пронумеровать сообщения, чтобы по-
казать порядок их следования (см. рис. 4.11). Номера сообщений на диаграммах Взаимодействия по-
казывать необязательно. По умолчанию нумерация сообщений на диаграммах Последовательности
отключена.
Рис. 4.11.
Нумерация
сообщений
на диаграмме
Последователь-
ности
Object .1
Object 2
1: Message
2: Message
3 Message
4: Message
Message
Если нужно включить или выключить нумерацию сообщений:
1. В меню выберите пункт Tools Options (Инструменты Параметры).
2. Перейдите на вкладку Diagram (Диаграмма).
3. Установите или сбросьте флажок Sequence numbering (Нумерация сообщений), как показано
на рис. 4.12.
Взаимодейс гаие объектов
121
Рис. 4.12.
Флажок нумерации
сообщений
Options
ER win | IDL ] Java ] 0rack6 ] C*+ | MSVC | Visual Вале
General Diagram Browser ] Notatron | Toolbars DDL
Compartments
P Show visibility
P Show stereotypes
Display
Unresolved adornments
Г Unit adornments
Г Show operation signatures
P Show aH ^tributes
P Show all operations
Г" Suppress attributes
Г~ Suppress operations
Miscellaneous
P Doubleclick to diagram
Automatic [esizing
I? Class Name Completion
Stereotype display
|7 Collaboration numbering
f* jS aquenca nirrberin^
Г Focus ol control
l~ J Tier Diagram
- Grid
i I7 Snap to grid
Grid size: [5
C Mone
C £abel
(* Icon
|7 Show labels on relations and associations
OK I Cancel I Appiy Help
Просмотр активизации на диаграммах
Последовательности
Ha диаграммах Последовательности можно показать активизацию (focus of control). Активизация —
это маленький прямоугольник (см. рис. 4.13). поясняющий, какой из объектов активен и получаем
управление в конкретный промежуток времени. В этом заключается одно из различий между диаграм
мами Последовательности и Кооперативными диаграммами, поскольку активизация может быть пока-
зана только на первых из них.
Рис. 4.13.
Активизация
на диаграмме
Последователь-
ности
RS Sequence Diagram: Use Case 1 / Sequence 1
Object 1
Object 1
Object 2
Object 3
BEE
1: Message
3: Message
4: Message
6 Message
6: Message
J
Qfajert 2
*ИМ*Я I **4,1
122
Рис. 4.14.
Флажок
активизации
Options
ERwin | IDL | Java ] OiacleS ] C++ | MSVC | Visual Basic
General Diagram I Browser j Notation | Toolbars | DDL
Compartments
P Show visibTity
R7 Show stereotypes
Г Show operation signatures
Iv* Show all attributes
l^ Show all operations
l~ Suppress attributes
Г Suppress operations
Miscellaneous
P Double-click Io diagram
P Automatic jesting
P Class Name Completion
Stereotype display
C None Г
Display
l*7 U nresb v^ d ornrndn s
Г" LJrnl adornments
I*7 Collaboration numbering
P Sequence (numbering
. _ _ ” ”«1 ‘ ЛННШГЧ I 1ГШ
P jFocus of control
Г” Э Tier Diagram
Grid
l*7 Snap to grid
Grid si^e: fs
<+ Icon
Label
P Show labels on relations and associations
Включить или отключить показ активизации можно следующим образом:
1. В меню выберите пункт Tools >> Options (Инструменты Параметры).
2. Перейдите на вкладку Diagram (Диаграмма).
3. Установите или сбросьте флажок Focus of control, как показано на рис. 4.14.
Добавление сообщений на Кооперативную диаграмму =
Перед тем как поместить сообщение на Кооперативную диаграмму, необходимо установить путь ком—
муникации между объектами. Этот путь называется связью (link) и создается с помощью кнопки Object—
Link (Связь объекта) панели инструментов. После создания связи можно поместить сообщение меж,г—
объектами. —
Поместить сообщение на Кооперативную диаграмму можно следующим образом: -
1. Нажмите на панели инструментов кнопку Object Link (Связь объекта).
2. Нажав левую кнопку, проведите мышью от одного объекта к другому, чтобы создать связь. -
. На панели инструментов нажмите кнопку Link Message (Сообщение связи) или Reverse Link
Message (Сообщение обратной связи).
4. Щелкните на связи между объектами.
При этом будет нарисована стрелка сообщения (см. рис. 4.15).
5. Выделив новое сообщение, введите текст.
Рис. 4.15.
Добавление
сообщения
на Кооперативную
диаграмму
Celhboration Diagram: Use Case 1 / Collaboration 1 НЕЁЮ
t.
Взаимодействие объектов
123=
Если нужно поместить на Кооперативную диаграмму рефлексивное сообщение: zz
И. Нажмите кнопку Link to Self (Связь с собой) панели инструментов. zz
2. Щелкните мышью на объекте, посылающем и принимающем сообщение. У этого объекта будет
нарисована рефлексивная связь. На диаграмме она изображается в виде полукруга над объект
том. zz
Связь с собой
Объект 1
3. На панели инструментов нажмите кнопку Link Message (Сообщение связи).
4. Щелкните на рефлексивной связи объекта. При этом будет нарисована стрелка сообщения
(см. рис. 4.16).
5. Выделив новое сообщение, введите текст.
Рис. 4.16.
Добавление
рефлексивного
сообщения
к Кооперативной
диаграмме
] ВНИМАНИЕ
Если вы рисуете несколько рефлексивных сообщений у одного объекта, то для zz
всех последующих сообщений пропустите шаги 1 и 2. zz
Удаление сообщений с Кооперативной диаграммы
Как и в случае диаграмм Последовательности, с Кооперативных диаграмм можно едалять сообщения, zz
При зтом оставшиеся сообщения будут автоматически перенумерованы. =
Д. я удаления сообщения с Кооперативной диаграммы: =
1.1‘ иделите \ д:и гемое сообщение. =
i -
2. В мет ио модели выберите пункт Edit >- Delete from Model (Правка >- Удалить из модели) или
нажмите комбинацию клавиш CTRL+D.
Нумерация сообщений на Кооперативной диаграмме z
Поскольку диаграмму Последовательности читают сверху вниз, нумерация сообщений необязательна. —
Однако на Кооперативной диаграмме информация о порядке следования сообщений будет потеряна, zz
если вы не пронумеруете их. Е
Хотя это и не рекомендуется, у вас все-таки имеется возможность отключить нумерацию сообще- Е
ний на Кооперативной диаграмме. Е
Включить или отключить нумерацию сообщений можно следующим образом: Е
1. Выберите пункт меню Tools Options (Инструменты Параметры).
2. Перейдите на вкладку Diagram (Диаграмма).
3. Установите или сбросьте флажки Sequence Numbering и Collaboration numbering.
Добавление потоков данных к Кооперативной диаграмме =
Как уже упоминалось ранее, одно из от личий диаграмм Последовательности от Кооперативных диа- =
грамм заключается в использовании активизаций в первых из них. Другое отличие связано с потоком =
данных, который можно показать на Кооперативных диаграммах, но не на диаграммах Последовате- =
льности. zz
124
Потоки данных применяют для отображения информации, возвращаемой, когда один объект ни»—
сылает сообщение другому. В общем случае не следует добавлять потоки данных к каждому сообще-
нию — это переполнит диаграмму ненужной информацией. Если сообщение возвращает ОК, т.е. оно—
было получено и все сделано правильно, или OOPS, означающее, что во время выполнения требуемой функции
произошла ошибка, это не стоит показывать на диаграмме. Но если сообщение возвращает структуру,
например список сотрудников компании, это уже может быть настолько важным, что заслуживаем^
специального отображения. —
После соотнесения сообщений с операциями класса информация потоков данных будет добавлена—
к деталям операции. Как правило, не стоит тратить слишком много времени на разработку потоков,
данных на этом этапе. Помещайте их на диаграмму, только если считаете, что они достаточно значи-—
мы, чтобы помочь разработчикам. ЕЕ
Для добавления потока данных к Кооперативной диаграмме: ЕЕ
1. На панели инструментов нажмите кнопку Data Flow (Поток данных) или Reverse Data Flow (Об-
ратный поток данных). —
2. Щелкните на сообщении, с которым необходимо связать данные. На диаграмму будут добавлю
ны соответствующие потоку данных стрелки (см. рис. 4.17). ==
3. Выделив этот поток данных, введите в него возвращаемые данные. =
Рис. 4.17.
Добавление
потока данных
к Кооперативной
диаграмме
Cilhboiahun Diagiam: Use Case 1 / Collaboiation 1
ВВЕЗ
Object 1
Object 2
Object 3
Спецификации сообщений ее
Для детализации сообщений в среде Rose можно задать большое количество различных параметров:
Как и в случае вариантов использования или действующих лиц, можно вводить имена и текстовое опи
сание сообщений.
Кроме того, разрешается определять параметры синхронизации и частоты. Рассмотрим все параё
метры, доступные для сообщений. z
Открыть спецификации сообщений можно следующим образом: z
Дважды щелкните мышью на сообщении диаграммы. Появится окно спецификации сообщения^
показанное на рис. 4.18. =
ИЛИ =
1. Выделите сообщение на диаграмме. Е
2. В меню модели выберите пункт Browse Specification (Обзор >- Спецификация) или нажмите
комбинацию клавиш CTRL+B. 1
Именование сообщений
В окне документации сообщения можно дать сообщению имя или изменить его, а также добавить tciE
стовое описание. У каждого сообщения должно быть имя, соответствующее его цели. В дальнейшем^
при соотнесении сообщений с операциями, имя сообщения будет заменено именем операции. Е
Взаимодействие объектов
125
Рис. 4.18.
Окно спецификации
сообщения
Я Message Specification for Message
General
Detail ]
Name: iplessage
documentation;
ок Cancel Browse Help
Дать сообщению имя можно следующим образом:
1. Дважды щелкните на сообщении на диаграмме Последовательности или Кооперативной диа-
грамме.
2. Если вы уже соотнесли получающий сообщение объект с классом, операции этого класса поя-
вятся в раскрывающемся списке Name (Имя). Выберите в этом списке нужную операцию или
введите имя сообщения вручную.
ИЛИ
1. Выделите сообщение на диаграмме Последовательности или Кооперативной диаграмме.
2. Введите его имя.
ВНИМАНИЕ
Если вы уже соотнесли получающий сообщение объект с классом, имя этого
класса появится рядом с именем сообщения в поле класса. Это поле изменить
нельзя. Если вы хотите изменить получающий сообщение класс, соотнесите
объект с другим классом в окне спецификации объекта.
Для добавления текстового описания к сообщению:
1. Дважды щелкнув мышью на сообщении, откройте окно его спецификации.
2. Введите комментарии в области Documentation (Документация). Можно, например, ввести
псевдокод, описывающий выполняемые сообщением действия.
ИЛИ
1. Выделите сообщение на диаграмме Последовательности или Кооперативной диаграмме.
2. Введите комментарии в окне документации.
ВНИМАНИЕ
Если сообщение уже было соотнесено с операцией, это текстовое описание бу-
дет добавлено и к соответствующей операции, в противном случае оно будет
связано только с сообщением. Текстовое описание сообщения не влияет на ге-
нерацию кода. После соотнесения сообщения с операцией класса связанное с
операцией текстовое описание появится в генерируемом коде в виде коммен-
тария.
126
Соотнесение сообщения с операцией
Прежде чем приступить к генерации кода, следует соотнести сообщения диаграмм Последовательно:
сти и Кооперативных диаграмм с операциями классов. В следующем примере:
Клиент
Сервер
] 1: Запрос некоторых [
' действий 1
сообщение "Запрос некоторых действий" будет соотнесено с операцией класса сервера.
Для соотнесения сообщения с существующей операцией:
1. Проследите, чтобы получающий сообщение объект (сервер) был соотнесен с классом.
2, Щелкните правой кнопкой мыши на сообщении на диаграмме Последовательности или Коопе-
ративной диаграмме.
3. Появится список операций сервера.
4. Выберите операцию из списка (см. рис. 4.19).
Рис. 4.19.
Соотнесение
сообщения
с существующей
операцией
И S степсе Diagram: Use Case 1 I Sequence 1
Client: Class 1
Client: Class 1
Supplier: Class 2
1: Request some functionality
i------------------------------
: t Open Specification
<naw opeiation)
Initialize! ]
Display! ]
Ч.ИЯЮ.ЛШ'.'
.-j , и и j. i и. AWM
Можно уничтожить соотнесение сообщения с операцией: =
1. Дважды щелкните на сообщении на диаграмме Последовательности или Кооперативной диа-
грамме.
2. В поле Name удалите имя операции и введите новое имя сообщения.
Если нужно создать новую операцию для сообщения:
1. Проследите, чтобы получающий сообщение объект (сервер) был соотнесен с классом.
2. Щелкните правой кнопкой мыши на сообщении на диаграмме Последовательности или Коопе-
ративной диаграмме.
3. Выберите пункт <new operation> (новая операция).
4. Введите имя и детали новой операции. (Параметры окна спецификации операций подробно
рассматриваются в главе 6.)
Взаимодействие объектов
127Е
5, Нажмите кнопку ОК, чтобы закрыть окно спецификации операции и завершить создание но
вой операции.
6. Щелкните на сообщении правой кнопкой мыши.
7. В появившемся списке выберите новую операцию.
Если вы хотите убедиться в том, что каждое сообщение было соотнесено с операцией:
И. Выберите в меню модели пункт Report Show Unresolved Messages (Отчет Показать свобод
ные сообщения).
2. Появится список всех сообщений, которые еще не были соотнесены с классами.
I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I [ и I | I I I I I I I I I I I I I I
Установка синхронизации сообщений
На вкладке Detail (Подробно) окна спецификации сообщений можно определить синхронизацию по-
сылаемых сообщений (см. рис. 4.20).
Рис. 4.20.
Установка
параметра
синхронизации
Message Specification for message
General Detail
Synchronization
C* Synchronous
C Balking
C Timeout
C Asynchronous
Frequency
Aperiodic
C Periodic
Apply growse ▼ Help
Соответствующая сообщению стрелка изменится, если этот параметр будет определен как "с от ка-
зом становиться в очередь", "с лимитированным временем ожидания" или "асинхронное". Доступны
пять значений параметра синхронизации: _
Simple (Простое) Используется по умолчанию. Означает, что все сообщения выполняются в од-=
ном потоке управления. На диаграммах Последовательности и Кооперативных диаграммах сооб- =
щения такого типа показывают следующим образом: _
Объект 1
Объект 1
1: Простое
сообщение
1 I —
Synchronous (Синхронное) Применяется, когда клиент посылает сообщение и ждет ответа по-=
льзователя. На диаграммах Последовательности и Кооперативных диаграммах синхронные сооб-
щения показывают следующим образом: —
Объект 1
Объект 2
* 1: Синхронное
1 сообщение
128
Г лава 4
Balking (С отказом становиться в очередь) Клиент посылает сообщение серверу. Если сервер
не может немедленно принять сообщение, оно отменяется. На диаграммах Последовательности
и Кооперативных диаграммах такие сообщения показывают следующим образом:
Объект 1
Объект 2
* 1: Сообщение
I с отказом
становиться
в очередь
Timeout (С лимитированным временем ожидания) Клиент посылает сообщение серверу, а
затем ждет указанное время. Если в течение этого времени сервер не принимает сообщение, оно
отменяется. На диаграммах Последовательности и Кооперативных диаграммах сообщения с ли-
митированным временем ожидания показывают следующим образом:
Объект 1
Объект 2
1: Сообщение
I с лимитированным ।
временем ожидания
Asynchronous (Асинхронное) Клиент посылает сообщение серверу и продолжает свою работу,
не ожидая подтверждения о получении. На диаграммах Последовательности и Кооперативных
диаграммах такие сообщения показывают следующим образом:
Объект 1
Объект 2
1: Асинхронное
сообщение
Задать синхронизацию сообщения можно следующим образом:
1. Дважды щелкните на сообщении на диаграмме Последовательности или Кооперативной диа-
грамме.
2. В окне спецификации сообщения перейдите на вкладку Detail (Подробно).
3. Установите переключатель Synchronization в нужное значение.
Установка частоты сообщения
Устанавливая частоту сообщения (message frequency), вы указываете, что оно должно посылаться че-
рез регулярные временные интервалы, например, каждые 30 с. Такое сообщение является периодич-
ным. Частота сообщения задается на вкладке Detail (Подробно) окна спецификации сообщения (см.
рис. 4.21).
При этом у вас имеется следующий выбор:
Periodic (Периодическое) Означает, что сообщение регулярно посылается через определен-
ные промежутки времени.
Aperiodic (Апериодическое) Сообщение посылается нерегулярно. Оно может быть отправлено
только один раз или несколько раз, но через разные промежутки времени.
Взаимодействие объектов
129
Рис. 4.21.
Определение
частоты сообщения
Message Specification lor Message 1
General Detail |
Synchronization
Simple
< Synchronous
C Balking
C Timeout
C Asynchronous
Frequency
<* Aperiodic;
C Periodic
OK
Cancel
Apply
£rowse ▼
Help
ВНИМАНИЕ
Частота сообщения не изменяет его вид на диаграммах Последовательности и
Кооперативных диаграммах.
Для задания частоты сообщения:
1. Дважды щелкните мышью на сообщении на диаграмме Последовательности или Кооператив-
ной диаграмме.
2. Перейдите на вкладку Detail (Подробно) окна спецификации сообщения.
3. Укажите частоту сообщения, пометив в окне соответствующий переключатель.
’□бота с примечаниями
Имена сообщений и объектов на диаграмме Взаимодействия несут в себе много информации. Однако
иногда требуется поместить на диаграмму дополнительные сведения. Это делается с помощью приме-
чаний или программных сценариев — скриптов (scripts).
Примечания используются для связывания комментария с объектом на диаграмме. С их помощью
можно, например, пояснить назначение объекта.
Скрипты позволяют связать комментарии с сообщениями. Как вы увидите, на диаграмме Последо-
вательности с помощью сценариев определяются некоторые условия.
Добавление примечаний на диаграммы Взаимодействия
На диаграммах Взаимодействия можно связать примечания с объектами. С помощью примечаний вы
можете поместить комментарий непосредственно на диаграмму, не влияя на получающийся в резуль-
тате последующей генерации код. Таким образом, примечания позволяют пояснить назначение объ-
екта или добавить на диаграмму комментарии.
Для добавления примечания на диаграмму Взаимодействия:
1. Нажмите кнопку Note (Примечание) панели инструментов.
2. Щелкните мышью где-нибудь внутри диаграммы, чтобы поместить туда примечание.
3. Выделив созданное примечание, введите текст.
Для связывания примечания с объектом:
1. Нажмите кнопку Anchor Note to Item (Связать примечание с объектом) панели инструментов.
2. Проведите мышью линию от примечания к объекту, как показано на рис. 4.22.
130
Г лава 4
Рис. 4.22.
Связывание
примечания
с объектом
Если требуется поместить на диаграмму текстовую область:
1. Нажмите кнопку Text Box (Текстовая область) панели инструментов.
2. Щелкните в том месте диаграммы, куда нужно вставить область.
3. Выделив область, введите текст.
Работа со скриптами
В среде Rose с помощью примечаний можно связать комментарий с объектом. Скрипты же позволяют
связать комментарий с сообщением. Они применяются только на диаграммах Последовательности и
пишутся с левой стороны диаграммы напротив соответствующего сообщения.
С помощью скрипта можно пояснить назначение сообщения.
Например, у вас есть сообщение "Проверка клиента". В скрипте этого сообщения вы можете разъ-
яснить его значение следующим образом: "Проверить идентификационный номер, чтобы убедиться,
что клиент существует и что пароль введен правильно".
Кроме того, скрипты позволяют указывать на диаграмме некоторые условия (см. рис. 4.23).
В общем случае старайтесь избегать слишком большого количества условий на диаграмме, чтобы
не усложнять ее. При частом использовании условных операторов (IF), вложенных в другие условные
операторы, которые, в свою очередь, также вложены в условные операторы, объем информации на
диаграмме явно становится избыточным. С другой стороны, иногда бывает необходимо показать не-
которую условную логику. Сохраняйте равновесие между двумя крайностями. Пока диаграмма остает-
ся легко читаемой и понимаемой, все в порядке. При усложнении условий создайте дополнительные
диаграммы Последовательности: одну для описания событий, происходящих при выполнении усло-
вия IF, другую — для ELSE и т.д.
Помимо операторов IF, скрипты позволяют показывать на диаграмме циклы и другие элементы
псевдокода. Из них не генерируется код, но благодаря им разработчики понимают логику развития
событий на диаграмме.
Для добавления скрипта на диаграмму Последовательности:
И. Нажмите кнопку Text Box (Текстовая область) панели инструментов.
2. Щелкните на диаграмме там, где нужно разместить скрипт — обычно около левого края диа-
граммы.
3. Выделив текстовую область, введите скрипт.
4. Выделите текстовую область. При нажатой клавише SHIFT выделите нужное сообщение.
5. В меню модели выберите пункт Edit Attach Script (Правка Прикрепить скрипт).
Взаимодействие объектов
Рис. 4.23.
Использование
скриптов
на диаграмме
Последовательности
6. Если вы теперь передвинете сообщение вверх или вниз на диаграмме, скрипт последует за ним.
Если нужно отделить скрипт от сообщения:
1. Выделите скрипт.
2. В меню модели выберите пункт Edit Detach Script (Правка Отделить скрипт).
Переключение между диаграммами
Последовательности и Кооперативными
диаграммами
Обычно для конкретного сценария создают либо диаграмму Последовательности, либо Кооператив-
ную диаграмму. Если бы не такие инструменты моделирования, как Rose, разработка этих диаграмм за-
нимала бы слишком много времени, особенно с учетом того, что оба типа отражают одну и ту же
информацию.
В среде Rose можно создать диаграмму Последовательности из Кооперативной диаграммы и нао-
борот. Достаточно разработать диаграмму одного из этих типов, и в дальнейшем можно будет пере-
ключаться между ними.
Для создания Кооперативной диаграммы из диаграммы Последовательности:
1. Откройте диаграмму Последовательности.
2. В меню модели выберите пункт Browse >* Create Collaboration Diagram (Обзор Создать Ко-
оперативную диаграмму) или нажмите клавишу F5.
3. Будет создана Кооперативная диаграмма с тем же именем, что и у открытой диаграммы После-
довательности.
Для создания диаграммы Последовательности из Кооперативной диаграммы:
1. Откройте Кооперативную диаграмму.
2. В меню модели выберите пункт Browse Create Sequence Diagram (Обзор >- Создать диаграмму
Последовательности) или нажмите клавишу F5.
3. Будет создана диаграмма Последовательности с тем же именем, что и у открытой Кооператив-
ной диаграммы.
Для переключения между диаграммами этих типов:
1. Откройте диаграмму Последовательности или Кооперативную диаграмму.
132
Глава 4
2. В меню модели выберите пункт Browse Go То (Sequence or Collaboration) Diagram (Обзор
Перейти к диаграмме (Последовательности или Кооперативной)) или нажмите клавишу F5.
3. Вы увидите диаграмму Последовательности или Кооперативную диаграмму с тем же именем,
что и у открытой диаграммы.
Двухэтапный подход к разработке
диаграмм Взаимодействия
При разработке диаграмм Взаимодействия часто применяется двухэтапный подход. Прежде всего
отображается информация высокого уровня, которая нужна конечным пользователям проектируемой
системы. Сообщения еще не соотносятся с операциями, и объекты могут быть не соотнесены с класса-
ми. Эти диаграммы позволяют аналитикам, пользователям и всем заинтересованным в бизнес-процес-
сах лицам увидеть, как будут развиваться события в системе.
Полученная на первом этапе диаграмма Последовательности может иметь вид, представленный
на рис. 4.24.
Рис. 4.24.
Диаграмма
Последователь-
ности. созданная
на первом этапе
двухэтапного
подхода
ВД Sequence Diagram: Use Case 1 / Sequence 1
User; Actor 1
Form Object
DataObjcct
User; Actor 1
Form Object
Data Object
1: Open Form
2: Enter information
3; Save information
4: Create
5: Populate with information
6: Save
.. ........
Ha втором этапе, после того как пользователи придут к согласию по поводу полученной диаграм-
мы, можно углубиться в детали. При этом диаграмма может утратить свою полезность для пользовате-
лей, но станет важна для разработчиков, тестировщиков и остальных участников команды проекта.
В начале второго этапа на диаграмму помещают некоторые новые объекты. Как правило, на
каждой диаграмме Взаимодействия имеется управляющий объект, отвечающий за управление после-
довательностью событий сценария. Все диаграммы Взаимодействия для некоторого варианта исполь-
зования могут иметь один и тот же управляющий объект, так что у вас будет только один объект,
контролирующий все потоки информации варианта использования.
После добавления управляющего объекта ваша диаграмма Последовательности скорее всего будет
напоминать показанную на рис. 4.25.
Обратите внимание, что управляющий объект не реализует никаких бизнес-процессов, он лишь
посылает сообщения другим объектам. Управляющий объект отвечает за координацию действий дру-
гих объектов и за делегирование ответственности. По этой причине такие объекты называют еще объ-
ектами-менеджерами (manager object).
Преимущество использования управляющего объекта заключается в отделении бизнес-логики от
логики, определяющей последовательность событий. Если надо будет изменить последовательность,
это затронет только управляющий объект.
Взаимодействие объектов
Рис. 4.25.
Диаграмма После-
довательности
с управляющим
объектом
Вы можете поместить на диаграмму и другие объекты, отвечающие за безопасность, обработку
ошибок или за связь с базой данных. Многие из них бывают настолько общими, что допускают по-
вторное использование во многих приложениях. Рассмотрим для примера работу с базой данных.
При сохранении информации в базе данных или при получении ее оттуда чаще всего используют-
ся две возможности. Допустим, мы сохраняем в нашей базе информацию о новом сотруднике — Джо
Доу. Объект Джо Доу может знать о базе данных, в этом случае он сохраняет себя сам. Но он может
быть полностью отделен от логики базы данных, и тогда его сохранением должен заниматься другой
объект. Начнем со случая, когда Джо знает о базе данных (см. рис. 4.26).
В этом примере логика приложения не отделена от логики базы данных. Объект Джо Доу занима-
ется как первым (прием на работу или увольнение Джо Доу), так и вторым (например, сохранение
информации о Джо в базе данных и получение ее оттуда при необходимости). Поскольку множество
объектов в таком приложении содержит логику базы данных, последствия любого ее изменения ска-
жутся практически на всех этих объектах, и "эффект ряби" затронет все приложение. С другой сторо-
ны, такой подход легче моделировать и реализовывать.
Рис. 4.26.
Интеграция логики
приложения
и логики базы
данных
134
Глава ~
Другая возможность заключается в отделении логики приложения от логики базы данных. В этом
случае для работы с базой нужно создать объект, который можно назвать менеджером транзакций (tran-
saction manager). Объект Джо Доу по-прежнему содержит бизнес-логику. Он знает, как принять на ра-
боту, уволить Джо или как повысить его по службе. Менеджер транзакций знает, как затребовать
информацию о Джо из базы данных или как сохранить ее там. Соответствующая диаграмма Последо-
вательности может иметь вид, представленный на рис. 4.27.
Рис, 4.27.
Разделение логики
приложения
и логики базы
данных
Sequence Diagram. Use Case View 7 Add John Doe
Date-Entry Clerk Form Object
Data-Entrv Clerk
Form Object
I______________
1: Open
2 Enler informal ion
3; Save
Control Object
Control Object
John Doe
Transaction М... j
4. Save
reals
John Doe
Transaction
6, Populate with information
7: Save John Doe
0; Get information
9: Save
Л
X
F
j
j
j
^»,.ru jf, 11 HWJBFffWJ Ж Wil WB
5 C
Преимуществом данного подхода является возможность повторного использования объекта Джо
Доу в другом приложении с другой базой данных или вообще без базы данных. Кроме того, уменьша-
ются последствия изменений в требованиях к системе. Изменения в базе данных не повлияют на ло-
гику приложения, и наоборот.
Недостаток заключается в больших затратах времени на моделирование и реализацию этого ре-
шения.
Два описанных подхода являются наиболее общими при работе с базой данных, хотя существуют
и другие приемы, облегчающие этот процесс. Какое бы решение вы ни приняли, следите за тем, что-
бы процесс нашел свое отражение на диаграммах Последовательности.
Помимо работы с базами данных, можно добавить в систему и другие объекты, отвечающие за об-
работку ошибок, проблемы безопасности или коммуникацию между процессами. Все эти детали не
интересуют клиента, но неоценимы для разработчиков.
После того как все объекты созданы, необходимо соотнести их с классами. Их можно связать с су-
ществующими классами или создать для них новые (см. выше раздел "Соотнесение объекта с клас-
сом"). Затем нужно соотнести сообщения диаграммы с операциями (см. выше раздел "Соотнесение j
сообщений с операциями"). Наконец предстоит перейти к спецификациям самих объектов и сообще-
ний и задать такие детали, как устойчивость объекта, синхронизация и частота сообщений.
Упражнение
В этом упражнении разрабатываются диаграммы Последовательности и Кооперативные диаграммы,
описывающие ввод нового заказа в систему обработки заказов.
Постановка задачи
Поговорив с Бобом, Сьюзан поняла, что должна делать система обработки заказов, создаваемая ею
для фирмы Roberton's Cabinets. Она нарисовала диаграмму Вариантов Использования. Изучив эту диа-
грамму, все пришли к согласию по поводу области применения системы.
Взаимодействие объектов
135
Теперь наступило время анализа ее составных частей. Высший приоритет среди пользователей
имеет вариант использования "Ввести новый заказ", он же связан с наибольшим риском. Сьюзан ре-
шила заняться им в первую очередь.
Она поговорила с Карлом, заведующим отделом продаж. Вдвоем они обсудили поток событий, ко-
торый будет реализовываться в варианте использования.
Получив нужную информацию, Сьюзан составила описание сценариев:
• Продавец вводит новый заказ.
• Продавец пытается ввести заказ, но товара нет на складе.
• Продавец пытается ввести заказ, но при его сохранении в базе данных возникает ошибка.
Затем она приступила к созданию диаграмм Последовательности и Кооперативных диаграмм для
сценария "Ввести новый заказ".
Создание диаграмм Взаимодействия
Создайте диаграмму Последовательности и Кооперативную диаграмму, отражающую ввод нового за-
каза в систему обработки заказов. Готовая диаграмма Последовательности показана на рис. 4.28.
Рис. 4.28.
Диаграмма После-
довательности
для ввода
нового заказа
^Sequence Diagram: Enter new order / Add ordei with operations
‘ Salespcr... | Order OptionsF... I Order Detail F... | Order Mana... j Order 234 :...
Transaction Man... I
Salesperson RH* OphgnsFe.m;
? ---- OrderOotions
OrdarDelail
Form Order
Order Manager
• OrderMy
Order #1234
Order
Transaction Manager .
TransaclignMgr
1 Createf)
2: Open()
3; Submrtlnfof)
A Save()
5, SavaOrder()
6: Crealaf)
7: Sellnfa()
8: SayeOrder()
i----------
9: Getlnfo()
10
Commrt()
г
Это только одна из диаграмм, необходимых для моделирования варианта использования "Ввести
новый заказ". Она соответствует успешному варианту хода событий. Для описания того, что случится,
если возникнет ошибка или если пользователь выберет другие действия из предложенных, придется
разработать дополнительные диаграммы. Каждый альтернативный поток варианта использования
может быть промоделирован с помощью собственных диаграмм Взаимодействия.
136
Глава 4
4х Этапы выполнения упражнения
Настройка
1. В меню модели выберите пункт Tools Options (Инструменты >* Параметры).
2. Перейдите на вкладку Diagram (Диаграмма).
3. Установите флажки Sequence numbering, Collaboration numbering и Focus of control.
4. Нажмите OK, чтобы выйти из окна параметров.
Создание диаграммы Последовательности
1. Щелкните правой кнопкой мыши на Логическом представлении браузера.
2. В открывшемся меню выберите пункт New Sequence Diagram (Создать Диаграмма Последовате-
льности),
л
3. Назовите новую диаграмму Add order (Ввод заказа).
4. Дважды щелкнув на этой диаграмме, откройте ее.
Добавление на диаграмму действующего лица и объектов
1. Перетащите действующее лицо Salesperson (Продавец) из браузера на диаграмму.
2. Нажмите кнопку Object (Объект) панели инструментов.
3. Щелкните мышью в верхней части диаграммы, чтобы поместить туда новый объект.
4. Назовите объект Order Options Form (Выбор варианта заказа).
5. Повторив шаги 3 и 4, поместите на диаграмму объекты:
• Order Detail Form (Форма деталей заказа)
• Order N1234 (Заказ №1234)
Добавление сообщений на диаграмму
1. На панели инструментов нажмите кнопку Object Message (Сообщение объекта).
2. Проведите мышью от линии жизни действующего лица Salesperson (Продавец) к линии жизни объекта
Order Options Form (Выбор варианта заказа).
3. Выделив сообщение, введите его имя — Create new order (Создать новый заказ).
4. Повторив шаги 2 и 3, поместите на диаграмму сообщения:
• Open form (Открыть форму) — между Order Options Form и Order Detail Form
• Enter order number, customer, order items (Ввести номер заказа, заказчика и число заказываемых
предметов) — между Salesperson и Order Detail Form
• Save the order (Сохранить заказ) — между Salesperson и Order Detail Form
• Create new, blank order (Создать пустой заказ) — между Order Detail Form и Order N1234
• Set the order number, customer, order items (Ввести номер заказа, заказчика и число заказываемых
предметов) — между Order Detail Form и Order N1234
• Save the order (Сохранить заказ) — между Order Detail Form и Order N1234
Завершен первый этап работы. Готовая диаграмма Последовательности представлена на рис. 4.29. Те-
перь нужно позаботиться об управляющих объектах и о взаимодействии с базой данных. Как видно из диа-
граммы, объект Order Detail Form имеет множество ответственностей, с которыми лучше всего мог бы
справиться управляющий объект. Кроме того, новый заказ должен сохранять себя в базе данных сам. Ве-
роятно, эту обязанность лучше было бы переложить на другой объект.
Добавление на диаграмму дополнительных объектов
1. Нажмите кнопку Object панели инструментов.
2. Щелкните мышью между объектами Order Detail Form и Order N1234, чтобы поместить туда новый
объект.
3. Введите имя объекта — Order Manager (Управляющий заказами).
4. Нажмите кнопку Object панели инструментов.
5. Новый объект расположите справа от Order N1234.
6. Введите его имя— Transaction Manager (Управляющий транзакциями).
Взаимодействие объектов
Рис. 4.29.
Диаграмма После-
довательности
ввода нового
заказа после
завершения
первого этапа
работы
^Sequence Diagram Enter new older / Add order first pass
Salesperson
Order Option...
Order Detail ...
Orders 234
Order Options
Form
Order Detail
Form
Order #1234
1: Create new order*
2: Open form
i
i
i
3: Enter order number, customer, order items
4: Save the order
5: Create new, blank order
6: Set the order number, customer, order items
7: Save the order
1
...,;Lii( tarn г Шт Mi iwhMOiniraiiiMMtiMwi iobiioi
4
Назначение ответственностей объектам =
1. Выделите сообщение 5: Create new, blank order (Создать пустой заказ). =
2. Нажав комбинацию клавиш CTRL-rD, удалите это сообщение. =
3. Повторите шаги 1 и 2 для удаления двух последних сообщений: zz
• Set the order number, customer, order items (Вести номер заказа, заказчика и число заказываемых
предметов) zz
• Save the order (Сохранить заказ)
4. Нажмите кнопку Object Message панели инструментов.
5. Поместите на диаграмму новое сообщение, расположив его под сообщением 4 между Order Detail Form~
и Order Manager. =
6. Назовите его Save the order (Сохранить заказ). =
7. Повторите шаги 4 — 6, добавив сообщения с шестого по девятое и назвав их: —
• Create new, blank order (Создать новый заказ) — между Order Manager и Order N1234 =
• Set the order number, customer, order items (Вести номер заказа, заказчика и число заказываемых
предметов) — между Order Manager и Order N1234 =
• Save the order (Сохранить заказ) — между Order Manager и Transaction Manager —
• Collect order information (Информация о заказе) — между Transaction Manager и Order N1234 =
8. На панели инструментов нажмите кнопку Message to Self (Сообщение себе). —
9. Щелкните на линии жизни объекта Transaction Manager (Управляющий транзакциями) ниже сообще-
ния 9, добавив туда рефлексивное сообщение. =
10. Назовите его Save the order information to the database (Сохранить информацию о заказе в базе
данных). =
Теперь диаграмма Последовательности должна выглядеть, как показано на рис. 4.30. —
Соотнесение объектов с классами =
1. Щелкните правой кнопкой мыши на объекте Order Options Form (Выбор варианта заказа).
2. В открывшемся меню выберите пункт Open Specification (Открыть спецификацию).
138
Глава
Рис. 4.30.
Диаграмма После-
довательности
с новыми
объектами
SfeSemence Diagram. Entei new older f Add urdei
: Satespcrs... I QrdgQplil | QHfer 3tofr J Oftfe liilani <|rdt;cfl1234 | Transaction
у ' . Salesperson Order Options Form Order Detail Form Order Manager
Ord в г #1234
Transaction
Manager
< 1: Create new order 2: Open farm
3: Enter order number, customer, order items
4: Save :he order
5: Save the order
6: Create new, blank order
7: Set the order number, customer, order items
8: Save the order
----------4---------
9: Collect order information
10: Save the order information Io the database
. • t; _ fy . ,«u <,•••' a , i, 'V •••'• .-Д \~£ V?
b>l|f' f'liliiiiliilriHiitiiiltini" '1Ц l»'l*
J- *' I; C' xT’*?/ %
T'! - f' •• ^•1
TT
3. В раскрывающемся списке классов выберите пункт <New> (Создать). Появится окно спецификации
классов.
4. В поле Name введите OrderOptions (Выбор заказа).
5. Щелкните на кнопке ОК. Вы вернетесь в окно спецификации объекта.
6. В списке классов выберите класс OrderOptions.
7. Щелкните на кнопке ОК, чтобы вернуться к диаграмме. Теперь объект называется Order Options Form
OrderOptions.
8. Для соотнесения остальных объектов с классами повторите шаги с 1 по 7:
• Класс OrderDetail соотнесите с объектом Order Detail Form
• Класс OrderMgr — с объектом Order Manager
• Класс Order — с объектом Order N1234
• Класс TransactionMgr — с объектом Transaction Manager
По завершении этих действий ваша диаграмма должна иметь вид, представленный на рис. 4.31.
Соотнесение сообщений с операциями
1. Щелкните правой кнопкой мыши на сообщении 1: Create new order (Создать новый заказ).
2. В открывшемся меню выберите пункт <new operation> (создать операцию). Появится окно специфика :
ции операции.
3. В поле Name введите имя операции — Create (Создать).
4. Нажмите на кнопку ОК, чтобы закрыть окно спецификации операции и вернуться к диаграмме.
5. Еще раз щелкните правой кнопкой мыши на сообщении 1.
6. В открывшемся меню выберите новую операцию Createf).
7. Повторите шаги с 1 по 6, чтобы соотнести с операциями все остальные сообщения:
• Сообщение 2: Open form (Открыть форму) соотнесите с операцией Ореп()
• Сообщение 3: Enter order number, customer, order items (Ввести номер заказа, заказчика и число
заказываемых предметов) — с операцией Submitlnfof)
• Сообщение 4: Save the order (Сохранить заказ) — с операцией Save()
• Сообщение 5; Save the order (Сохранить заказ) — с операцией SaveOrderQ
Взаимодействие объектов
139
Рис. 4.31.
Диаграмма После-
довательности
с именами классов
Sequence Diaqiiim f nlei new eidiH 7 Add tiidei with classes
SattMtyerw^( OrdcrQptlon»F... | OrdcrDetaH F.H. | OrderMens,.. l Order 11234 :... | ТгвпваНопMan...
Salesperson ОММД£ЁМПЬ
Sai?§B?rSgn QrdarQptions
Order Detail Form , Order Order Manaoar
, OrderMgr
Ords/ #1234
Order
Transaction Manager:
TransactionMqr
1 Create new order
2: Open form
i-------------
Enter order number, customer, order items
4: Save the order
!
3
5: Save the order
6: Create new. blank order
7' Set the order number, customer, order items
9: Save the order
9: Collect order information
1Q Save the order information lo the database
4
1 4
• Сообщение 6: Create new, blank order (Создать пустой заказ) — с операцией Create() _
• Сообщение 7: Set the order number, customer, order items (Ввести номер заказа, заказчика и число:
заказываемых предметов) — с операцией Setlnfo() =
• Сообщение 8: Save the order (Сохранить заказ) — с операцией SaveOrder() —
• Сообщение 9: Collect order information (Информация о заказе) — с операцией Getlnfof) =
• Сообщение 10: Save the order information to the database (Сохранить информацию о заказе а базе
данных) — с операцией Commit() =
Ваша диаграмма должна выглядеть, как показано на рис. 4.32.
Рис. 4.32.
Диаграмма После-
довательности
с показанными
на ней операциями
140
Глава 4
Создание Кооперативной диаграммы
Для создания Кооперативной диаграммы достаточно нажать клавишу F5. Если же вы хотите сами про-
делать все требуемые операции, воспользуйтесь приводимым далее планом.
Создание Кооперативной диаграммы
1. Щелкните правой кнопкой мыши на Логическом представлении в браузере.
2. В открывшемся меню выберите пункт New Collaboration Diagram (Создать Кооперативная диа-
грамма).
3. Назовите эту диаграмму Add order (Ввод заказа).
4. Дважды щелкнув мышью на диаграмме, откройте ее.
Добавление действующего лица и объектов на диаграмму
1
1. Перетащите действующее лицо Salesperson (Продавец) из браузера на диаграмму.
2. Нажмите кнопку Object (Объект) панели инструментов.
3. Щелкните мышью где-нибудь внутри диаграммы, чтобы поместить туда новый объект.
4. Назовите объект Order Options Form (Выбор варианта заказа).
5. Повторив шаги 3 и 4, поместите на диаграмму объекты:
• Order Detail Form (Форма деталей заказа)
• Order N1234 (Заказ №1234)
Добавление сообщений на диаграмму
1. На панели инструментов нажмите кнопку Object Link (Связь объекта).
2. Проведите мышью от действующего лица Salesperson (Продавец) к объекту Order Options Form (Выбор
варианта заказа).
3. Повторите шаги 1 и 2, соединив связями следующие объекты:
♦ Действующее лицо Salesperson и объект Order Detail Form
• Объект Order Options Form и объект Order Detail Form
• Объект Order Detail Form и объект Order N1234
4. На панели инструментов нажмите кнопку Link Message (Сообщение связи).
5. Щелкните мышью на связи между Salesperson и Order Options Form.
6. Выделив сообщение, введите его имя — Create new order (Создать новый заказ).
«
7. Повторив шаги с 4 по 6, поместите на диаграмму сообщения:
• Open form (Открыть форму) — между Order Options Form и Order Detail Form
♦ Enter order number, customer, order items (Ввести номер заказа, заказчика и число заказываемых
предметов) — между Salesperson и Order Detail Form
• Save the order (Сохранить заказ) — между Salesperson и Order Detail Form
• Create new, blank order (Создать пустой заказ) — между Order Detail Form и Order N1234
• Set the order number, customer, order items (Ввести номер заказа, заказчика и число заказываемых
предметов) — между Order Detail Form и Order N1234
• Save the order (Сохранить заказ) — между Order Detail Form и Order N1234
После завершения первого этапа работы Кооперативная диаграмма, описывающая ввод нового заказа,
будет иметь вид, показанный на рис. 4.33. Теперь нужно поместить на диаграмму дополнительные элемен-
ты, а также рассмотреть ответственности объектов.
Добавление на диаграмму дополнительных объектов
1. Нажмите кнопку Object панели инструментов.
2. Щелкните мышью где-нибудь на диаграмме, чтобы поместить туда новый объект.
3. Введите имя объекта — Order Manager (Управляющий заказами).
4. На панели инструментов нажмите кнопку Object.
5. Поместите на диаграмму еще один объект.
6. Введите его имя — Transaction Manager (Управляющий транзакциями).
Взаимодействие объектов
141
Рис. 4.33.
Результат первого
этапа работы над
Кооперативной
диаграммой,
описывающей ввод
нового заказа
Назначение ответственностей объектам
Выделите сообщение 5: Create new, blank order (Создать пустой заказ). Выделяйте слова, а не стрелку.
2. Нажав комбинацию клавиш CTRL+D, удалите это сообщение.
3, Повторите шаги 1 и 2 для удаления сообщений 6 и 7:
• Set the order number, customer, order items
• Save the order
4. Выделите связь между объектами Order Detail Form и Order N1234.
5. Нажав комбинацию клавиш CTRL+D, удалите эту связь.
6. На панели инструментов нажмите кнопку Object Link (Связь объекта).
7. Нарисуйте связь между Order Detail Form и Order Manager.
8. На панели инструментов нажмите кнопку Object Link (Связь объекта).
9. Нарисуйте связь между Order Manager и Order N1234.
10. На панели инструментов нажмите кнопку Object Link (Связь объекта).
11. Нарисуйте связь между Order N1234 и Transaction Manager.
12. На панели инструментов нажмите кнопку Object Link (Связь объекта).
13. Нарисуйте связь между Order Manager и Transaction Manager.
14. На панели инструментов нажмите кнопку Link Message (Сообщение связи).
15. Щелкните мышью на связи между объектами Order Detail Form и Order Manager, чтобы ввести новое
сообщение.
16. Назовите это сообщение Save the order (Сохранить заказ).
17. Повторите шаги 14 — 16, добавив сообщения с шестого по девятое и назвав их:
• Create new, blank order (Создать новый заказ) — между Order Manager и Order N1234
• Set the order number, customer, order items (Ввести номер заказа, заказчика и число заказываемых
предметов) — между Order Manager и Order N1234
• Save the order (Сохранить заказ) — между Order Manager и Transaction Manager
• Collect order information (Информация о заказе) ~ между Transaction Manager и Order N1234
142
Глава 4
?:
18. Ha панели инструментов нажмите кнопку Link to Self (Связь с собой). —
19. Щелкнув на объекте Transaction Manager, добавьте к нему рефлексивное сообщение. =
20. На панели инструментов нажмите кнопку Link Message (Сообщение связи).
21. Щелкните мышью на рефлексивной связи Transaction Manager, чтобы ввести туда сообщение. —
22. Назовите новое сообщение Save the order information to the database (Сохранить информацию о за^
казе в базе данных). =
Кооперативная диаграмма должна иметь вид, представленный на рис. 4.34. =
Рис. 4.34.
Кооперативная
диаграмма
с дополнительными
объектами
Collaboration Diagram: Enter new order I Add order ИЕ £3
10: Save the order information to the database
Order
#1234
9 Coiled order information
Transaction
Manager
6: Create new, blank order
: Open form
Order Options
Form
7: Set the order number, customer, order items Д I
8: Save the order
5: Save the order
3: Enter order number, customer, order items
Order Detail
Form
: Salesperson
- <I i
..I'1 * W W ....,к,.яци.1.Ц|,ш ..1Л..8.1...118.1ЛМ»|ОДНУ . .1I.JW!
1: Create new order
Save the order
Order
Manager
Соотнесение объектов с классами (если классы были созданы
при разработке описанной выше диаграммы Последовательности)
1. Найдите в браузере класс Order Options.
2. Перетащите его на объект Order Options Form (Выбор варианта заказа) на диаграмме.
3. Повторите шаги 1 и 2, соотнеся остальные объекты и соответствующие им классы:
• Класс OrderDetail соотнесите с объектом Order Detail Form
• Класс OrderMgr — с объектом Order Manager
• Класс Order — с объектом Order N1234
• Класс TransactionMgr — с объектом Transaction Manager
Соотнесение объектов с классами
(если вы не создавали описанную выше диаграмму Последовательности)
1. Щелкните правой кнопкой мыши на объекте Order Options Form.
2. В открывшемся меню выберите пункт Open Specification (Открыть спецификацию).
3. В раскрывающемся списке классов выберите пункт <New> (Создать). Появится окно спецификации
классов.
4. В поле имени введите OrderOptions (Выбор заказа).
5. Щелкните на кнопке ОК. Вы вернетесь в окно спецификации объекта.
6. В списке классов выберите класс OrderOptions.
Взаимодействие объектов
7. Щелкните на кнопке ОК, чтобы вернуться к диаграмме. Теперь объект называется Order Options Form :
OrderOptions.
8. Для соотнесения остальных объектов с классами повторите шаги с 1 по 7.
• Класс OrderDetail соотнесите с объектом Order Detail Form
• Класс OrderMgr — с объектом Order Manager
• Класс Order — с объектом Order N1234
• Класс TransactionMgr — с объектом Transaction Manager
Полученная к этому моменту Кооперативная диаграмма должна выглядеть, как показано на рис. 4.35.
Рис. 4.35.
Кооперативная
диаграмма
с именами классов
ColUboiation Diagiam: Enter new order / Add order with classes
10: Save the order information to the database
Order #1234
: Order
9: Collect order information
Transaction Manager
•. TransactionMgr
7: Set the order number, customer, order items /
8: Save the order
6: Create new. blank order
Order Options Form
: OrderOptions
2: Open form
4-
J — — ——-Й
Order Manager;
OrderMgr
1 Create new order
4: Save the order
6: Save the order
Order Detail Form
: OrderDetail
3: Enter order number, customer, order items
: Salesperson
/
f
7м*?
•!>.!,!. I.W-ji. -ЛЛ К U Ч- Я , It ИЩЕМ-» • ЛГ 1 . 11- ^41* t
Соотнесение сообщений с операциями (если операции были созданы
при разработке описанной выше диаграммы Последовательности)
1. Щелкните правой кнопкой мыши на сообщении 1: Create new order (Создать новый заказ).
2. В открывшемся меню выберите пункт Open Specification (Открыть спецификацию).
3. В раскрывающемся списке имен укажите имя операции — Create() (Создать).
4. Нажмите на кнопку ОК.
5. Повторите шаги 1 — 4 для соотнесения с операциями остальных сообщений:
• Сообщение 2: Open form (Открыть форму) соотнесите с операцией Ореп()
• Сообщение 3: Enter order number, customer, order items (Ввести номер заказа, заказчика и число за-
казываемых предметов) — с операцией Submitlnfo()
♦ Сообщение 4: Save the order (Сохранить заказ) — с операцией Save()
• Сообщение 5: Save the order (Сохранить заказ) — с операцией SaveOrderQ
• Сообщение 6: Create new, blank order (Создать пустой заказ) - с операцией Create()
• Сообщение 7: Set the order number, customer, order items (Ввести номер заказа, заказчика и число за-
казываемых предметов) — с операцией Setlnfo()
• Сообщение 8: Save the order (Сохранить заказ) — с операцией SaveOrderf)
• Сообщение 9: Collect order information (Информация о заказе) - с операцией Getlnfof)
• Сообщение 10: Save the order information to the database (Сохранить информацию о заказе в базе дан-
ных) — с операцией Commit()
144
Глава 4
Соотнесение сообщений с операциями (если вы не создавали описанную выше
диаграмму Последовательности)
1. Щелкните правой кнопкой мыши на сообщении 1: Create new order (Создать новый заказ).
2. В открывшемся меню выберите пункт <new operation> (создать операцию). Появится окно специфика-
ции операции. —
3. В поле имени введите имя операции — Create() (Создать). ==
4. Нажмите на кнопку ОК, чтобы закрыть окно спецификации операции и вернуться к диаграмме. =
5. Еще раз щелкните правой кнопкой мыши на сообщении 1.
6. В открывшемся меню выберите пункт Open Specification (Открыть спецификацию).
7. В раскрывающемся списке Name (Имя) укажите имя новой операции.
8. Нажмите на кнопку ОК.
9. Повторите шаги 1 — 8, чтобы создать новые операции и соотнести с ними остальные сообщения:
• Сообщение 2: Open form (Открыть форму) соотнесите с операцией Ореп()
• Сообщение 3: Enter order number, customer, order items (Ввести номер заказа, заказчика и число за-
казываемых предметов) — с операцией SubmitlnfoQ Е
• Сообщение 4: Save the order (Сохранить заказ) — с операцией Save() =
• Сообщение 5: Save the order (Сохранить заказ) — с операцией SaveOrder() :
• Сообщение 6: Create new, blank order (Создать пустой заказ) - с операцией CreateQ :
• Сообщение 7: Set the order number, customer, order items (Ввести номер заказа, заказчика и число за-
казываемых предметов) — с операцией SetlnfoO
• Сообщение 8: Save the order (Сохранить заказ) — с операцией SaveOrder()
• Сообщение 9; Collect order information (Информация о заказе) - с операцией Getlnfo() :
• Сообщение 10: Save the order information to the database (Сохранить информацию о заказе в базе дан-
ных) — с операцией Commitf)
Ваша диаграмма должна выглядеть, как показано на рис. 4.36.
Рис. 4.36.
Кооперативная
диаграмма
с показанными
на ней операциями
Классы и пакеты
Создание диаграмм Классов
Добавление новых классов к модели
Работа с классами, примечаниями и пакетами
146
Глава 5
В предыдущей главе мы рассмотрели взаимодействие объектов системы, реализующее ее функциона-
льные возможности. Теперь приступим к изучению классов и организации их в пакеты (packages). Объ-
екты, моделируемые средствами Rose, соответствуют классам Логического представления. Классы
являются основой для создания объектов. Например, на основе класса Account (Счет) создается объект
"Счет Джо до востребования". В этой главе будет показано, как создавать классы и диаграммы Классов в
Логическом представлении модели.
Логическое представление модели Rose
В этой главе рассматривается несколько элементов Логического представления модели Rose. Как уже
упоминалось в предыдущей главе, в этом представлении можно создавать диаграммы Последователь-
ности и Кооперативные диаграммы. Кроме того, в Логическое представление входят: *
I
• Классы
• Диаграммы Классов
• Диаграммы Вариантов Использования
• Атрибуты и операции
• Ассоциации
• Диаграммы Состояний
Начнем с обсуждения классов и диаграмм Классов. Далее будут описаны такие элементы диаграмм
Классов, как атрибуты, операции и связи между классами и пакетами.
Диаграммы Классов
На диаграммах Классов отображаются некоторые классы и пакеты системы. Это статические картины
фрагментов системы и связей между ними. В среде Rose диаграмму Классов обозначают следующим
символом:
Обычно для описания системы создают несколько диаграмм Классов. На одних показывают неко-
торое подмножество классов и отношения между классами подмножества. На других отображают то
же подмножество, но вместе с атрибутами и операциями классов. Третьи соответствуют только паке-
там классов и отношениям между ними. Для представления полной картины системы можно разрабо-
тать столько диаграмм Классов, сколько требуется.
По умолчанию существует одна диаграмма Классов, называемая Главной (Main) и располагающая-
ся непосредственно под Логическим представлением в браузере. На этой диаграмме показывают па-
кеты классов модели. Внутри каждого пакета также имеется
Главная диаграмма, включающая в себя все классы этого пакета. Двойной щелчок мыши на пакете
диаграммы Классов в среде Rose открывает Главную диаграмму этого пакета.
Диаграммы Классов являются хорошим инструментом проектирования.
С их помощью разработчики могут видеть и планировать структуру системы еще до фактического
написания кода, благодаря чему они с самого начала могут понять, хорошо ли спроектирована систе-
ма. Пример диаграммы Классов приведен на рис. 5.1.
Что такое класс?
Класс— это некоторая сущность, инкапсулирующая данные и поведение. В соответствии с традицион-
ным подходом данные располагаются в базе данных, а поведением занимается собственно приложе-
ние. Объектноориентированный подход предполагает объединение некоторого количества данных и
поведения, обрабатывающего эти данные. Мы берем немного данных и немного поведения, а затем
инкапсулируем все это в некоторую структуру, называемую классом.
Классы и пакеты
Рис. 5.1.
Диаграмма
Классов
IJH Cle s Diagiam: Logical View / Main
Cara' Reader *
Account
^>A:count Number
§PIN
^Balance
^Provide CashQ
A^oviab receipt
^OpenQ
Withdraw FundsQ
^Deduct Funds))
^Verify Funds))
Например, в системе работы с данными о персонале фирмы может быть класс Employee (Сотруд-z
ник). Он содержит такие данные, как идентификационный номер сотрудника, его имя, адрес и номер
телефона. Класс Employee имеет также свое поведение. Он знает, как нанять или уволить сотрудника,=
а также повысить его по службе. Е
На языке UML классы изображают с помощью следующей нотации: =
Класс
Атрибут
Операция))
В верхней части прямоугольника класса содержится его имя и (необязательно) стереотип. Сред-
ний раздел включает в себя атрибуты класса, т.е. его данные. В нижней секции описываются опера-
ции, или поведение, класса. Для упрощения диаграммы атрибуты и/или операции класса можно не
показывать.
На диаграммах этого типа можно также отобразить видимость всех атрибутов и операций, тип
данных атрибутов и сигнатуру всех операций (см. главу 6). z
Класс Employee является шаблоном объектов Сотрудник. Объекте это экземпляр класса. Напри-
мер, объектами класса Employee могут быть Джон Доу, Фред Смит и другие сотрудники компании. Е
Класс Employee определяет данные и поведение, содержащиеся в его объектах. Например, объекту
Джон Доу может заключать в себе следующую информацию: имя, адрес, номер телефона и зарплату”
Кроме того, этот объект знает, как нанять Джона Доу, уволить Джона Доу и повысить Джона Доу noz
службе. Информация и поведение объекта определяются его классом. -
Выявление классов =
Выявление классов можно начать с изучения потока событий вашего сценария. Имена существитель-=
ные в описании этого потока дадут понять, что может являться классом. В общем случае существитель-z
ные могут соответствовать следующим элементам: -
• Действующее лицо —
• Класс Е
* Атрибут класса Е
& Выражение, не являющееся действующим лицом, классом или атрибутом Е
Изучив все эти существительные, вы определите классы вашей системы. =
148
Г лава 5
Другим способом является анализ диаграмм Последовательности и Кооперативных диаграмм.
Ищите на этих диаграммах похожие объекты.
Например, у вас может быть диаграмма Последовательности, описывающая процесс выплаты зар-
платы. На ней показано, как выдают деньги Джону Доу и Фреду Смиту. Обратите внимание на объек-
ты Джон Доу и Фред Смит этой диаграммы. Атрибуты обоих сходны: имя, адрес и номер телефона.
Операции тоже одинаковы: нанять или уволить сотрудника. Таким образом вы можете обнаружить,
что следует создать класс Employee, который будет шаблоном для объектов Джон Доу и Фред Смит.
Каждый объект диаграмм Последовательности и Кооперативных диаграмм должен быть соотне-
сен с соответствующим классом. Процесс соотнесения объектов и классов на диаграмме Взаимодейст-
вия описан в предыдущей главе.
Поток событий и диаграммы Взаимодействия являются прекрасным местом, где можно начать по-
иск классов. Тем не менее некоторые классы вы там не найдете. При выявлении классов следует рас-
смотреть три возможных стереотипа: сущность (entity), границу (boundary) и управление (control).
Не все они содержатся в потоке событий и на диаграммах Взаимодействия (см. ниже).
Создание диаграмм Классов
В среде Rose диаграммы Классов создаются в Логическом представлении модели. Еще раз повторим,
вы можете создать столько диаграмм Классов, сколько нужно для полного описания вашей системы.
При построении новой модели автоматически будет создана Главная диаграмма Классов, она разме-
щается непосредственно под Логическим представлением. Обычно с помощью этой диаграммы пока-
зывают пакеты классов модели. Вы можете создать дополнительные диаграммы классов в Логическом
представлении или внутри любого пакета.
Открыть Главную диаграмму Классов можно следующим образом:
1. Щелкните на значке рядом с Логическим представлением в браузере.
. Вы увидите Главную диаграмму Классов. Обратите внимание, что справа на диаграммах Классов
в среде Rose имеется значок:
3. Откройте Главную диаграмму Классов,
дважды щелкнув на ней мышью.
ВНИМАНИЕ Если вы сразу после запуска Rose откроете новую модель, Главная диаграмма
Классов появится автоматически.
Для создания новой диаграммы Классов:
1. Щелкните правой кнопкой мыши на Логическом представлении браузера.
2. В открывшемся меню выберите пункт New Class Diagram (Создать Диаграмма Классов).
3. Введите имя новой диаграммы.
4. Дважды щелкнув на диаграмме в браузере, откройте ее.
Если нужно открыть существующую диаграмму Классов:
1. Найдите ее в Логическом представлении браузера.
2. Дважды щелкнув на диаграмме, откройте ее.
ИЛИ
1. В меню модели выберите пункт Browse Class Diagram (Обзор Диаграмма Классов). Откро-
ется окно, показанное на рис. 5.2.
2. В списке Package (Пакет) выберите пакет, содержащий требуемую диаграмму.
3. В списке Class Diagrams (Диаграммы Классов) укажите нужную вам диаграмму.
4. Нажмите ОК.
Классы и пакеты
149
Рис. 5.2.
Открытие
существующей
диаграммы Классов
Select Class Diagram
Package:
LogicalView
Rename
Class Diagiams:
1<New>
\ Class Diagram: Logical View / Class Diagram 1
Class Diagram: Logical View 7 Class Diagram 2
7 Г'1 > =i^r arrr I ^£11—‘
Delete
Cancel
Help
Для добавления к диаграмме Классов нового элемента воспользуйтесь кнопками панели инстру-
ментов диаграммы Классов. Можно также выбрать в меню модели пункт Tools Create (Инструмен-
ты > Создать) и указать элемент, который вы хотите добавить (см. ниже).
Существуют два способа удаления элемента с диаграммы. Для удаления элемента только с текущей
диаграммы:
И. Выделите его на диаграмме.
2, Нажмите клавишу Delete.
Для удаления элемента из модели:
1. Выделите его на диаграмме.
2. В меню модели выберите пункт Edit >- Delete from Model (Правка >- Удалить из модели) или на-
жмите комбинацию клавиш CTRL+D.
ИЛИ
1* Щелкните правой кнопкой мыши на удаляемом элементе в браузере.
2. В открывшемся меню выберите пункт Delete (Удалить).
Удаление диаграмм Классов
В процессе работы с моделью может потребоваться удалить некоторые из созданных вами диаграмм
Классов. В среде Rose это делается с помощью браузера. При удалении диаграммы содержащиеся в
ней классы не удаляются. Они сохранятся в браузере и других диаграммах.
Для удаления диаграммы Классов:
1. Щелкните правой кнопкой мыши на диаграмме в браузере.
2. В открывшемся меню выберите пункт Delete (Удалить).
Организация элементов на диаграмме классов
По мере добавления на диаграмму новых классов и связей она постепенно становится все более за-
хламленной и трудной для восприятия. Rose способна автоматически приводить в порядок все классы
на диаграмме.
Добавляя к классу атрибуты и операции, а также изменяя его размеры на диаграмме, вы можете
получить слишком большой или слишком маленький прямоугольник, изображающий класс. Rose мо-
жет автоматически изменить размеры этого прямоугольника так, чтобы вместить весь относящийся к
нему текст. Воспользовавшись двумя описанными возможностями, вы преобразуете диаграмму, пока-
занную на рис. 5.3, в диаграмму рис. 5.4.
Для расположения элементов на диаграмме Классов:
Выберите в меню пункт Tools Layout Diagram (Инструменты Расположить диаграмму). Все
классы на диаграмме будут автоматически размещены наиболее оптимальным способом.
Для изменения размеров элементов на диаграмме Классов:
Выберите в меню пункт Tools Autosize All (Инструменты >> Настроить размер всех элемен-
тов). Размер соответствующего каждому классу прямоугольника будет автоматически изменен
так, чтобы вместить имя, атрибуты и операции класса.
150 Глава 5
Рис. 5.3.
Диаграмма
Классов,
нарисованная
без использования
возможности
изменения
размеров
и автоматического
расположения
элементов
Рис. 5.4.
Диаграмма
Классов,
нарисованная
с использованием
возможности
изменения
размеров
и автоматического
расположения
элементов
Class Diagram: Logical View / Main
Class 3
^Attribute 1
^Attribute 2
I^Attriute 3
^Attribute 4
Class 4
^Attribute
^OperationQ
^Operation 1Q
^Operation 2Q
^Operation 30
^Operation 4Q
^Operation 5Q
i
Class 1
^OperationQ
Class 2
^InitializeQ
^DisplayO
Связывание файлов и ссылок с диаграммой Классов
Если у вас имеется дополнительная информация по классам диаграммы, вы можете поместить ее в
файл или на Web-страницу, а затем прикрепить к диаграмме Классов. Связываемые таким образом
файлы и ссылки будут относиться ко всем классам диаграммы. Если вы хотите связать их только с од-
ним конкретным классом, прикрепите их именно к этому классу.
Классы и пакеты
И51
Для прикрепления файла к диаграмме Классов:
1. Щелкните правой кнопкой мыши на диаграмме Классов в браузере.
2. Выберите пункт New >> File (Создать Файл).
3. В диалоговом окне открытия файла укажите прикрепляемый файл.
4. Для завершения процесса нажмите кнопку Open (Открыть).
Для прикрепления ссылки к диаграмме Классов:
1. Щелкните правой кнопкой мыши на диаграмме Классов в браузере.
2. Выберите пункт New URL (Создать Ссылка).
3. Введите адрес прикрепляемой ссылки.
Открыть прикрепленный файл можно следующим образом:
Дважды щелкните на нем в браузере. Rose откроет соответствующее приложение и загрузит в
него этот файл.
ИЛИ
1. Щелкните правой кнопкой мыши на файле в браузере.
2. Выберите пункт Open (Открыть). Rose откроет соответствующее приложение и загрузит в него
этот файл.
Если нужно открыть связанную с диаграммой ссылку:
Дважды щелкните на ней мышью в браузере. Rose автоматически запустит ваш Web-браузер и
загрузит в него эту ссылку.
ИЛИ
1. Щелкните правой кнопкой мыши на ссылке в браузере.
2. Выберите пункт Open (Открыть). Rose автоматически запустит ваш Web-браузер и загрузит в
него эту ссылку.
Для удаления связанного с диаграммой файла или ссылки:
1. Щелкните правой кнопкой мыши на файле или ссылке в браузере.
2. В открывшемся меню выберите пункт Delete (Удалить).
Панель инструментов диаграммы Классов
В этом разделе рассказывается о добавлении классов в модель и на диаграмму. В последующих разде-
лах рассматриваются другие возможности, реализуемые кнопками панели инструментов диаграммы
Классов, за исключением работы со связями. Кнопки, используемые при работе со связями, описыва-
ются в главе 7.
Если на вашей панели инструментов показаны не все кнопки, щелкните на ней правой кнопкой
мыши и в появившемся меню выберите пункт Customize (Настроить). Откроется диалоговое окно, с
помощью которого можно добавить на панель любую из кнопок, перечисленных в таблице 5.1.
Таблица 5.1. Пиктограммы панели инструментов диаграммы Классов
Пиктограмма Кнопка
Назначение
АВС
Selects or deselects an item (Выделение или отмена Превращает курсор в стрелку указателя, так что вы мо-
выделения объекта) жете выделить объект
Text Box (Текст)
Добавляет к диаграмме текст
Note (Примечание)
Добавляет к диаграмме примечание
Anchor Note to Item (Прикрепление примечания
к объекту)
Связывает примечание со сценарием или объектом
на диаграмме
152
Глава
Таблица 5.1. Пиктограммы панели инструментов диаграммы Классов (продолжение)
Пиктограмма
Кнопка
Class (Класс)
Назначение
Добавляет на диаграмму новый класс
Interface (Интерфейс)
Association (Ассоциация)
Aggregation (Агрегация)
Link Attribute (Атрибут связи)
Добавляет на диаграмму новый интерфейсный класс
Рисует связь ассоциации
Рисует связь агрегации
Связывает класс ассоциаций со связью ассоциации
Package (Пакет)
Добавляет на диаграмму новый пакет
Dependency or instantiates (Зависимость или
наполнение)
Рисует связь зависимости
Generalization (Обобщение)
Рисует связь обобщения
Realize (Реализация)
Рисует связь реализации
Unidirectional Association (Однонаправленная
ассоциация)
Рисует однонаправленную ассоциацию
Parameterized Class (Параметризованный класс)
Добавляет на диаграмму новый параметризованный
класс
Class Utility (Утилита класса)
Добавляет на диаграмму новую утилиту класса
Parameterized Class Utility (Утилита параметризованного Добавляет на диаграмму новую утилиту параметризо-
класса) ванного класса
Instantiated Class (Класс-наполнитель)
Добавляет на диаграмму новый класс-наполнитель
Instantiated Class Utility (Утилита класса-наполнителя) Добавляет на диаграмму новую утилиту
класса-наполнителя
Работа с классами
После создания диаграммы Классов нужно добавить новые классы в модель. Доступны классы неско-
льких типов: регулярные, параметризованные, классы-наполнители, утилиты классов, утилиты пара-
метризованных классов, утилиты классов-наполнителей и метаклассы.
Rose предоставляет ряд возможностей по детализации классов. Каждому классу можно дать имя,
определить его стереотип, указать видимость, а также задать несколько других параметров.
В этой главе мы покажем, как просматривать атрибуты, операции и связи классов. В последующих
нескольких главах будут детально описаны методы добавления и работы с атрибутами, операциями и
связями.
Добавление классов
Для начала поместим на диаграмму стандартный класс. Это можно сделать несколькими способами: с
помощью панели инструментов, браузера и меню.
Классы и пакеты
153
Если поместить новый класс непосредственно в браузер, он не появится ни на одной диаграмме,
но его можно будет туда вставить. Действуя по-другому, можно расположить новый класс сразу на диа-
грамме. В этом случае он будет автоматически добавлен и в браузер.
Поместить новый класс на диаграмму Классов можно следующим образом:
1. Нажмите кнопку Class (Класс) панели инструментов.
ИЛИ
1. В меню выберите пункт Tools >• Create Class (Инструменты Создать Класс).
2. Щелкните мышью где-нибудь внутри диаграммы Классов. Ваш новый класс будет назван
NewClass.
3. Rose выведет список всех существующих классов. Чтобы поместить на диаграмму существую-
щий класс, дважды щелкните на нем в списке (см. рис. 5.5). Чтобы создать новый класс, замени-
те слово NewClass в списке новым именем класса. Обратите внимание, что он появился не
только на диаграмме, но и в Логическом представлении браузера.
Рис. 5.5.
Добавление нового
класса
lass Diagiam: Logical View / Mam
•!
Class 3
Class 4
Employee (Logical View)
Employee (Use Case View)
Hourly Employee
NewClass
NewClass2
Salaried Employee /.
Temporary Employee y
II _I II HI. I II I1 1 |*IWF
Tim*
ВНИМАНИЕ
С помощью меню Tools Create можно также создавать регулярные, парамет-:
ризованные классы, классы-наполнители, утилиты классов, утилиты парамет-.
ризованных классов, утилиты классов-наполнителей (см. ниже).
Можно также добавить новый класс с помощью диаграмм Взаимодействия:
1. Откройте диаграмму Последовательности или Кооперативную диаграмму.
2. Щелкните правой кнопкой мыши на объекте диаграммы.
3. В появившемся меню выберите пункт Open Specification (Открыть спецификацию).
4. В раскрывающемся списке классов выберите пункт <New> (Создать). Перед вами появится окно:
спецификации нового класса.
5. В поле Name введите имя вашего класса.
В ВНИМАНИЕ
Так как диаграммы Взаимодействия относятся к представлению Вариантов Ис-=
пользования браузера, создаваемые этим методом классы также будут появля-z
ться в представлении Вариантов Использования. В Логическое представление^
их можно перенести с помощью мыши. z
Если нужно поместить на диаграмму Классов существующий класс:
Перетащите его из браузера на открытую диаграмму Классов.
ИЛИ
154
Глава
1. В меню выберите пункт Query Add Classes (Запрос Добавить классы). Появится диалоговое
окно добавления классов (см. рис. 5.6).
2. В раскрывающемся списке Package (Пакет) выберите пакет, содержащий ваш класс.
3. Перетащите нужные классы из списка Classes (Классы) в список Selected Classes (Выбранные
классы). Если вы хотите добавить все классы, нажмите кнопку АН (Все).
4. Нажмите кнопку ОК.
5. Выбранные вами классы будут добавлены к открытой диаграмме.
Рис. 5.6.
Добавление
существующих
классов
на диаграмму
Классов
Add Classes
Package:
Logical View
Selected Classes
OK
Cancel
Classes
Employee
NewCLass
NewCiass2 All>>
NewClass3 ~ш
<< All
Logical View::Class 1
Logical View::Class 2
W 111111111111111111111111111111111111111111111111111111111 III I
Для добавления нового класса в браузер:
1. Щелкните правой кнопкой мыши на Логическом представлении браузера. Если вы добавляете
класс к пакету, щелкните правой кнопкой на имени пакета.
2. В открывшемся меню укажите пункт New Class (Создать Класс). Если вы создаете утилит)
класса или интерфейс, выберите пункт New Class Utility (Создать >- Утилита класса) или
New Interface (Создать Интерфейс). Новый класс под названием NewClass появится в брау
зере.
3. Выделите класс и введите его имя.
4. Чтобы расположить новый класс на диаграмме Классов, перетащите его на открытую диаграм
му мышью.
Удаление классов
Как и в случае других элементов модели, существуют два способа удаления классов. Вы можете удалить
класс с диаграммы, но оставить его на других диаграммах. Кроме того, можно удалить его из модели.
Для удаления класса с диаграммы Классов:
1. Выделите его на диаграмме.
2. Нажмите клавишу Delete.
3. Обратите внимание, что, хотя класс исчез с диаграммы, он остался на других диаграммах и и
браузере.
Для удаления класса из модели:
1. Выделите его на диаграмме.
2. В меню модели выберите пункт Edit Delete from Model (Правка Удалить из модели) или на
жмите комбинацию клавиш CTRL+D.
ИЛИ
1. Щелкните правой кнопкой мыши на классе в браузере.
2. В открывшемся меню выберите пункт Delete. Класс будет удален со всех диаграмм Классов и из
браузера.
Классы и пакеты
155
Спецификации класса
Большинство определяемых для класса параметров доступно в окне спецификации класса, показан-:
ном на рис. 5.7. В частности, это окно позволяет указать стереотип класса, а также его видимость и:
устойчивость (persistence).
Рис. 5.7.
Окно спецификации
класса
Class Specification lor Class 1
Components | N ested J Files | E R win ] ID L
General ( Detail | Operations ( Attributes ) Relations
Name; Class 1 Parent' LogicdView
Ivpe: | Class
Stereotype: |
Export Control
Public
C" Implementation
Documentation;
OK Cancel
Browse *
Help
•/цу»!!;,. ^iiui i.i. . V.P^ JIK..' U.-tF11!1.1.1
II ______________ ,1.1 .цд^и,.1д||ДЦ,_....
Если вы работаете в среде Rose 98i и описываете классы Java или CORBA, появляющееся окно спе-
цификации будет несколько отличаться от приведенного выше. Все параметры этого окна имеются
также и в окне стандартных спецификаций.
Class Specification
Class
Name
Modifiers
Visibility
(public
О 31.П1 p 11? Cl 6lSS
Г abstract
Generate
Г Finalizer
Г Static Initializer
Г Instance Initializer
Г? Default Constructor
1“ Interface
Constructor Visibility
Extends
*1 у
DocComment
OK
Cancel
Help
156
Глава 5
Открыть спецификацию класса можно следующим образом:
И. Щелкните правой кнопкой мыши на классе в браузере или на диаграмме Классов.
2. В открывшемся меню выберите пункт Open Specifications (Открыть спецификацию).
ВНИМАНИЕ
При работе в среде Rose 98i с классами Java или CORBA в открывшемся меню
следует выбрать пункт Open Standard Specification (Открыть стандартную
спецификацию). Пункт Open Specification вызовет другое окно.
ИЛИ
1. Выделите класс на диаграмме Классов
2. В меню модели выберите пункт Browse Specification (Обзор Спецификация).
ВНИМАНИЕ
При работе в среде Rose 98i с классами Java или CORBA в меню Browse следует
выбрать пункт Standard Specification (Стандартная спецификация). Пункт
Specification вызовет другое окно.
ИЛИ
1. Выделите класс на диаграмме Классов.
2. Нажмите комбинацию клавиш CTRL+B.
.Я ВНИМАНИЕ
При работе в среде Rose 98i с классами Java или CORBA этот способ вызывает
другое окно спецификации.
Добавление параметризованного класса
Параметризованный класс (parameterized class) — один из специальных типов классов. Он применяется
для создания семейства других классов. Обычно параметризованный класс является разновидностью
контейнера, его еще называют шаблоном. В частности, если у вас есть параметризованный класс List
(Список), то с помощью экземпляров этого класса вы можете создать такие классы, как EmployeeLisi
OrderList и AccountList (соответствующие спискам сотрудников, заказов и счетов), как показан-
ниже.
На языке UML параметризованный класс изображается с помощью следующей нотации:
item--------'
Parameterized Class
^Attribute —
^OperationQ
Элемент
Параметризованный класс
Атрибут
Операция()
Для добавления параметризованного класса:
1. Нажмите кнопку Parameterized Class (Параметризованный класс) панели инструментов.
2. Щелкните мышью где-нибудь на диаграмме, чтобы поместить туда новый класс.
3. Введите имя класса.
ИЛИ
1. С помощью одного из описанных выше методов добавьте класс на диаграмму Классов или в
браузер.
2. Откройте окно спецификации класса.
3. В поле Туре (Тип) этого окна укажите ParameterizedClass.
4. Нажмите ОК.
Классы и пакеты
157
ИЛИ
1. В меню модели выберите пункт Tools Create Parameterized Class (Инструменты
Создать Параметризованный класс).
2. Щелкните где-нибудь на диаграмме, чтобы поместить туда новый класс.
3. Введите имя класса.
Задание аргументов параметризованного класса
Аргументы класса указываются в прямоугольнике, выделенном пунктирными линиями. Па основе ар-
гументов создаются элементы стандартного класса. Например, если в приведенной выше нотации за-
менить параметр "Элемент" специфическим элементом, например Employee (Сотрудник), то будет
инициализирован класс EmployeeList.
Аргументом может быть другой класс, тип данных или выражение-константа. Вы можете задавать
неограниченное количество аргументов.
Для добавления аргумента:
1. Откройте окно спецификации класса.
2. Перейдите на вкладку Detail (Подробно).
3. Щелкните правой кнопкой мыши в поле Name области Formal Arguments (Формальные аргу-
менты).
4. В открывшемся меню выберите пункт Insert (Вставить).
5. Введите имя аргумента.
6. Щелкнув мышью, раскройте список Туре (Тип). Выберите один из типов аргумента или введите
свой (см. рис. 5.8).
>
7. Щелкните в поле Default Value (Значение по умолчанию) и введите значение аргумента по умол-
чанию. (Это делать не обязательно.)
Рис. 5.8.
Задание аргументов
параметризован-
ного класса
Class Specification for Parameterized Class
Components | Nested j Files | ERwin
General Detail
Operations | Atlfibules |
IDL
Relations
Cardinality; n
Space;
Persistence
C Persistent
Transient
Г" Abstract
Formal Arguments.
Name___________
item
Concurrency
Г» Sequential
C Guarded
C Active
C Synchionous
Default Value
NewClass2
NewClassS
Object
Parameterize
Salaried Emp
Для удаления аргумента:
1. Откройте окно спецификации класса.
2. Перейдите на вкладку Detail.
3. Щелкните правой кнопкой мыши на удаляемом аргументе.
4. В открывшемся меню выберите пункт Delete.
158
Глава 5
Создание класса-наполнителя
Класс-наполнителъ (instantiated class) является параметризованным классом, аргументы которого име-
ют фактические значения. В частности, в рассмотренном выше примере мы имеем дело со списком
некоторых элементов. Определив значение аргумента, мы получим список сотрудников. В соответст-
вии с нотацией UML, имя аргумента класса-наполнителя заключается в угловые скобки (< >).
Атрибут
Операция()
Для добавления класса-наполнителя:
I f [ [ 111111111111111111111111111111111
1. Нажмите кнопку Instantiated Class панели инструментов.
2. Щелкните мышью на диаграмме там, где будет располагаться новый класс.
3. Введите имя класса с аргументами, заключив их в угловые скобки (< >).
ИЛИ
1. С помощью одного из описанных выше методов добавьте класс на диаграмму Классов или
в браузер.
2. Откройте окно спецификации класса.
3. В поле Туре (Тип) укажите InstantiatedClass.
4. Нажмите ОК.
ИЛИ
1. В меню модели выберите пункт Tools Create Instantiated Class (Инструменты >- Создать >- |
Класс-наполнитель). j
2. Щелкните мышью где-нибудь на диаграмме, чтобы поместить туда новый класс. |
3. Введите имя класса. |
Добавление утилиты класса
Утилита класса (class utility) — это совокупность операций. Например, в вашей системе может быть со- |
вокупность математических функций (квадратный корень, кубический корень и т.д.), которые исполь- |
зуются всей системой и не слишком хорошо подходят для какого-либо конкретного класса. Эти |
функции можно собрать вместе и объединить в утилиту класса, которая будет использоваться другими j
классами системы. I
Утилиты классов часто применяют для расширения функциональных возможностей языка про- |
граммирования или для хранения общих элементов функциональности многократного использова- |
ния, необходимых в нескольких системах. 1
Утилита класса выглядит на диаграмме как класс "с тенью": |
-------Ути л ита, класса j
-------Операция)) J
Для добавления утилиты класса: |
1. Нажмите кнопку Class Utility (Утилита класса) панели инструментов. |
2. Щелкните мышью на диаграмме там, где будет находиться новый класс. |
3. Введите его имя. |
ИЛИ I
1. С помощью одного из описанных выше методов добавьте класс на диаграмму Классов или |
в браузер. I
159
Классы и пакеты
й^^Я^^^®28ж^®1^ЯИ0^^дйй8и5В®В^ЯЮ11В^Мв8ИиИ
2. Откройте окно спецификации класса.
3. В поле Туре (Тип) укажите ClassUtility.
I
4. Нажмите ОК.
ИЛИ
1. В меню модели выберите пункт Tools >- Create >- Class Utility
(Инструменты >- Создать >- Утилита класса).
2. Щелкните где-нибудь на диаграмме, чтобы поместить туда новый класс.
3. Введите имя класса.
Добавление утилиты параметризованного класса
Утилитой параметризованного класса (parameterized class utility) является параметризованный класс, со-
'ержащий только набор операций. Это шаблон для создания утилит класса. На диаграмме классов она
выглядит следующим образом:
Элемент
Утилита класса
Операция()
Для добавления утилиты параметризованного класса:
1. Нажмите кнопку Parameterized Class Utility (Утилита параметризованного класса) панели инст-
рументов.
2. Щелкните мышью на диаграмме там, где будет находиться новый класс.
3. Введите его имя.
ИЛИ
1. С помощью одного из описанных выше методов добавьте класс на диаграмму Классов или
в браузер.
2. Откройте окно спецификации класса.
3. В поле Туре (Тип) укажите ParameterizedClassUtility.
4. Нажмите ОК.
ИЛИ
1. В меню модели выберите пункт Tools
Create >- Parameterized Class Utility
(Инструменты Создать
>- Утилита параметризованного класса).
2. Щелкните где-нибудь на диаграмме, чтобы поместить туда новый класс.
3. Введите имя класса.
Создание утилиты класса-наполнителя
Утилитой классагнаполнителя (instantiated class utility) называется утилита параметризованного класса,
параметры которой имеют фактические значения. На диаграмме классов она выглядит следующим об-
разом:
------<Утилита класса>
----— Операция()
Для добавления утилиты класса-наполнителя:
1. Нажмите кнопку Instantiated Class Utility панели инструментов.
2. Щелкните мышью на диаграмме там, где будет находиться новый класс.
3. Введите его имя.
160
Глава 5
или
1. С помощью одного из описанных выше методов добавьте класс на диаграмму Классов или
в браузер.
2. Откройте окно спецификации класса.
3. В поле Туре (Тип) укажите InstantiatedClassUtility.
4. Нажмите ОК.
ИЛИ
ч
И. В меню модели выберите пункт Tools Create Instantiated Class Utility
(Инструменты Создать Утилита класса-наполнителя).
2. Щелкните где-нибудь на диаграмме, чтобы поместить туда новый класс.
3. Введите имя класса.
Добавление метакласса
Метакласс (metaclass) — это класс, экземпляры которого являются классами, а не объектами. К числу |
метаклассов относятся параметризованные классы и утилиты параметризованных классов. На языке |
UML метаклассы изображают следующим образом:
Для добавления метакласса:
MetaClass
^>Att ri b ut е -
^OperationQ
Метакласс
Атрибут
Операция!)
1. С помощью одного из описанных выше методов добавьте класс на диаграмму Классов или
в браузер.
2. Откройте окно спецификации класса.
3. В поле Туре (Тип) укажите MetaClass (Метакласс).
4. Нажмите ОК.
3
Именование классов
Каждому классу модели Rose необходимо дать уникальное имя. Большинство организаций имеет собст- |
венные соглашения по именованию классов. В общем случае используются существительные в единст I
венном числе. В системе обработки данных о сотрудниках может быть класс Employee (Сотрудник) и |
класс Position (Должность). Мы не будем называть их Employees (Сотрудники) и Positions (Должности). I
Обычно имена классов не содержат пробелов. Это делается по практическим причинам и из сооб- j
ражений удобочитаемости — языки программирования, как правило, не поддерживают пробелы в |
именах классов. Старайтесь, чтобы имена были относительно короткими. 1
Несмотря на то, что название ListOfEmployeesThatAreOnProbation (Список сотрудников, проходя- 1
щих испытательный срок) хорошо описывает назначение класса, оно слишком сложное. Имя Emp- 1
loyeeList (Список сотрудников) будет в данном случае лучшим вариантом. I
Используемый для именования классов регистр символов определяется обычно организацией. I
Если, например, ваш класс соответствует списку пользователей, вы можете назвать его employeelist, I
EmployeeList, Employeelist или EMPLOYEELIST. Таким образом, компания может придерживаться I
своих соглашений по именованию. Важно только, чтобы принятый подход применялся ко всем клас- |
сам модели. I
Дать классу имя можно следующим образом: |
1. Выделите класс в браузере или на диаграмме классов. I
2. Введите его имя. Л
ИЛИ I
И. Откройте окно спецификации класса. I
2. Введите имя в поле Name (Имя). I
Для добавления к классу текстового описания: I
Классы и пакеты
161
1. Выделите класс в браузере.
2. Введите текст в окно документации.
ИЛИ
1. Откройте окно спецификации класса.
2. Введите вашу информацию в области Documentation.
Назначение стереотипа для класса
Стереотип — это механизм, позволяющий категоризировать классы. Допустим, вы хотите найти все
формы в вашей модели. Для этого можно создать стереотип Farm (Форма) и назначить его всем окнам
вашего приложения. В дальнейшем при поиске форм нужно только искать классы с этим стереотипом.
На языке UML определены три основных стереотипа: Boundary (Граница), Entity (Объект) и Cont-
rol (Управление).
Пограничные классы
Пограничными классами (boundary classes) называются такие классы, которые расположены на границе
системы со всем остальным миром. Они включают в себя формы, отчеты, интерфейсы с аппаратурой
(такой, как принтеры или сканеры) и интерфейсы с другими системами. В UML пограничные классы
обозначают следующим образом:
Для выявления пограничных классов необходимо исследовать диаграммы Вариантов Использова-
ния. Для каждого взаимодействия между действующим лицом и вариантом использования должен су-
ществовать хотя бы один пограничный класс. Именно он позволяет действующему лицу
взаимодействовать с системой.
лицо 1
Пограничный
класс
Обратите внимание, что необязательно создавать уникальные пограничные классы для каждой
пары "действующее лицо — вариант использования". Например, если два действующих лица иниции-
руют один и тот же вариант использования, они могут применять общий пограничный класс для
взаимодействия с системой.
Изучение диаграмм Вариантов Использования поможет вам обнаружить пограничные классы.
Пограничный
класс
162
Глава 5
Классы-сущности
Классы-сущности (entity classes) содержат информацию, хранимую постоянно. В нашей системе работы с
данными о сотрудниках хорошим примером такого класса является класс Employee. Классы-сущности
можно обнаружить в потоке событий и на диаграммах Взаимодействия. Они имеют наибольшее значе-
ние для пользователя, и потому в их названиях часто применяют термины из предметной области.
На языке UML классы-сущности представляют следующим символом:
Часто для каждого класса-сущности создают таблицу в базе данных. В этом заключается еще одно
отличие от типичного подхода к конструированию системы. Вместо того чтобы с самого начала зада-
вать структуру базы данных, у нас теперь есть возможность разрабатывать ее на основе информации,
получаемой из объектной модели. Это позволяет отслеживать соответствие всех полей базы данных
и требований к системе. Требования определяют поток событий. Поток событий определяет объек-
ты, классы и атрибуты классов. Каждый атрибут класса-сущности становится полем в базе данных.
Применяя такой подход, легко отслеживать соответствие между полями базы данных и требования-
ми к системе, что уменьшает вероятность сбора ненужной информации.
Управляющие классы
Управляющие классы (control classes) отвечают за координацию действий других классов. Обычно у каж-
дого варианта использования имеется один управляющий класс, контролирующий последователь-
ность событий этого варианта использования. Как показано на рис. 5.9, на диаграмме Взаимодействия
управляющий класс отвечает за координацию.
Рис. 5.9.
Управляющий класс
на диаграмме По-
следовательности
Sequence [hayfam: Use Cese 1 У Sequww? T
Control Object | Data Object! | Data Object 2 |
Form Object
DalaX>bjecl_T
1 Data Object 2 1
User: Actor!
Г.Ореп Form
2, Enter information
3 Save information
4. Save
------------>: 5. Create
6: Populate with information
7. Save ;
B. Create
a
a
9: Populate with information
L _____ ____l—_ . -
10: Save
l 1
I
Обратите внимание, что сам управляющий класс не несет в себе никакой функциональности -
остальные классы посылают ему мало сообщений. Но сам он посылает множество сообщений. Управ-
ляющий класс делегирует ответственность другим классам. По этой причине управляющий класс час-
то называют классом-менеджером. На языке UML его рисуют следующим образом:
Классы и пакеты
163
В системе могут применяться и другие управляющие классы, общие для нескольких вариантов ис-
пользования. Например, класс SecurityManager (Менеджер безопасности) может отвечать за конт-
роль событий, связанных с безопасностью, а класс TransactionManager (Менеджер транзакций) —
заниматься координацией сообщений, относящихся к транзакциям с базой данных. Могут быть и дру-
гие менеджеры для работы с такими элементами функционирования системы, как разделение ресур-
сов, распределенная обработка данных и обработка ошибок.
С помощью управляющих классов можно изолировать функциональность системы. Инкапсуляция
в один класс, например, координации безопасности минимизирует последствия вносимых измене-
ний. Любые изменения отвечающей за безопасность логики системы затронут только менеджера бе-
зопасности.
Помимо упомянутых выше стереотипов, вы можете создавать и свои собственные. Для этого нуж-
но ввести новый стереотип в поле Stereotype, после чего он будет доступен в текущей модели Rose.
Разрешается добавлять стереотип для использования во всех моделях и даже создавать для него кноп-
ки и пиктограммы панели инструментов.
Назначить стереотип классу можно следующим образом:
1. Откройте окно спецификации класса.
2. В раскрывающемся списке выберите нужный стереотип или введите его сами.
£
Для вывода имени стереотипа на диаграмму:
1. Щелкните правой кнопкой мыши на классе диаграммы Классов.
2. В открывшемся меню выберите пункт Options Stereotype Display
каз стереотипа Метка). Над именем этого класса
двойные угловые скобки (« »).
Label (Параметры По-
появится имя стереотипа, заключенное в
Класс 1
Атрибут
Операция!)
Класс 1
Атрибут
Операция))
[
I,-
J-
Если нужно показать пиктограмму стереотипа на диаграмме:
1. Щелкните правой кнопкой мыши на классе диаграммы Классов.
2. В открывшемся меню выберите пункт Options Stereotype Display Icon (Параметры Показ
стереотипа Пиктограмма).
3. Представление класса на диаграмме изменится в соответствии с используемой пиктограммой.
Например, значок для интерфейсного класса выглядит следующим образом:
Class 1 —
^Attribute -
^Operation!)
появится только его имя.
JВНИМАНИЕ He у всех стереотипов есть пиктограммы. Если у вашего стереотипа нет значка,
Отключить показ стереотипов на диаграмме можно следующим образом:
1. Щелкните правой кнопкой мыши на классе диаграммы Классов.
2. В открывшемся меню выберите пункт Options >- Stereotype Display None (Параметры По-
каз стереотипа Ничего). У класса по-прежнему будет стереотип, видимый в окне специфика-
ции, но не отображаемый на диаграмме.
Для изменения принятого по умолчанию режима показа стереотипа:
1. В меню модели выберите пункт Tools Options (Инструменты Параметры).
И 64
Глава
2. Перейдите на вкладку Diagram (Диаграмма).
3, В области Compartments установите или сбросьте флажок Show Stereotypes (Показывать стерео-
типы). Он определяет, будет ли виден стереотип на диаграмме.
4. Установите переключатель Stereotype Display (Показ стереотипа) в нужное значение (None,
Label или Icon).
Рис. 5.10.
Изменение
принятого
по умолчанию
режима
отображения
стереотипа
на диаграмме
Options БЕЗ!
ERwin | IDL | Java ) OfacleB | C++ | MSVC j Visual Basic |
General Diagram I Browser | Notation ] Toolbars | DDL |
Compartments
P Show visibility
-k killU d I I V I ••
P iShow stereotypes
Г~ Show operation signatures
P" Show aHgttfrbutes
P Show all gpeialiens
’ Г" Sufipiess attributes
Г Suppress operations
Miscellaneous
P Double click to diagram
. P Automatic resizing
P Class Name Completion
Display '
P Unresolved adornments
Г“ Unit adornments
P Collaboration numbering
P Sequence numbering
Г Focus of control
Г- J Tier Diagram
Grid ..................
P Snap to grid
Grid size: E
Stereotype display
C ftone Г' Label
P Show labels on relations and associations
jeon
□K Cancel &pply
Для добавления к модели Rose нового стереотипа:
1. Откройте окно спецификации класса.
2. Введите новый стереотип в поле Stereotype. Теперь новый стереотип будет появляться в рас-
крывающемся списке, но только для текущей модели.
Для добавления нового стереотипа ко всем моделям Rose:
1. Завершите работу с Rose.
2. В файле DefaultStereotypes.ini перейдите в раздел [Stereotyped Items].
3. Добавьте в этот раздел соответствующую строку для нового стереотипа. Например, чтобы доба-
вить стереотип Boundary, следует ввести:
[Stereotyped Items]
Class: Boundary
4, Добавьте в файл Defaultstereotypes, ini соответствующий новому стереотипу раздел. Здесь нуж-
но указать, для чего будет использоваться стереотип (для классов, сценариев и т.д.), и ввести^
его имя. Для стереотипа Boundary, в частности, следует указать: =
[Class:Boundary]
Item=Class
Stereotype=Boundary
Если требуется назначить стереотипу новую пиктограмму для отображения его на диаграмме: Е
1. Завершите работу с Rose. =
2. Нарисуйте новую пиктограмму в формате метафайла Windows (.WMF) либо расширенного мета-
файла (. EMF). z
3, Откройте файл DefaultStereotypes.ini. z
Классы и пакеты
165
4. Перейдите в раздел, соответствующий данному стереотипу. Например, чтобы добавить значок
к стереотипу Boundary, перейдите в раздел [Class.-Boundary].
5. Добавьте в раздел новую строку, определяющую имя метафайла с пиктограммой. Например:
t
[Class:Boundary]
Item=Class
Ste reotype=Bounda ry
Metafiles:\program files\rational rose 98\boundary.emf
Можно использовать стандартные или расширенные метафайлы Windows. Если метафайл нахо-
дится в той же директории, что и файл DefaultStereotypes.ini, вместо указания полного пути
достаточно ввести символ например:
Metafile=&\ boundary.emf
6. Если вы используете стандартный (.WMF), а не расширенный (. EMF) метафайл Windows, к разделу
следует добавить две дополнительные строки: ExtentX и ExtentY. В них указываются ширина и
высота пиктограммы. Например, раздел, описывающий стереотип Boundary, будет выглядеть
следующим образом:
[Class:Boundary]
Item=Class
Ste reotype=Bounda ry
Metafiles :\prog ram files\rational rose 98\boundary.wmf
ExtentX=20
ExtentY=20
7. Теперь при использовании стереотипа в модели Rose можно показывать его пиктограмму. В ча-
стности, мы добавили к стереотипу Boundary значок пограничного класса UML:
Boundary Class
^OperationQ
Пограничный класс
Атрибут
Операция))
8. Для того чтобы заданный в разделе значок стереотипа использовался по умолчанию, добавьте
следующие строки. В противном случае изображение стереотипа будет зависеть от установок
вашей модели, принятых по умолчанию.
[Class:Boundary]
Item=Class
Stereotype=Boundary
Metafile=c:\program files\rational rose 98\boundary.wmf
ExtentX=20
ExtentY=20
StereotypeIconStyle=Icon
R. J
[ Если нужно, поместить на панель инструментов маленькую кнопку для стереотипа:
1. Завершите работу с Rose.
/ t
2. В графическом приложении нарисуйте маленький значок кнопки панели инструментов для это-
го стереотипа. Сохраните его в формате . BMP. Размер значка должен составлять 15 пикселей в
высоту и 16 пикселей в ширину, фон серый (соответствует RGB = 192,192,192 в Rational Rose).
3.Откройте файл DefaultStereotypes.ini.
4
166
Глава 5
4. Перейдите в раздел, соответствующий вашему стереотипу. Например, чтобы поместить на
панель инструментов маленький значок стереотипа Boundary, перейдите в раздел [Class:Boun-
dary] .
5. Добавьте строку, соответствующую маленькому значку панели инструментов. Если файл растро-
вого изображения находится в том же каталоге, что и DefaultStereotypes.ini, для сокращения
описания пути к этому файлу можно использовать символ 8с:
[Class:Boundary]
Item=Class
Stereotype=Boundary
Metafiles: \prog ram files\rational rose 98\boundary.wmf
ExtentX=20
ExtentY=20
SmallPaletteImages=&\smalltoolbar.bmp
6. Если в файле . BMP содержится несколько пиктограмм, добавьте к файлу DefaultStereotypes.ini
еще одну строку с указанием расположения требуемого значка в файле:
[Class:Boundary]
Item=Class
Stereotype=Boundary
Metafile=c:\program files\rational rose 98\boundary.wmf
ExtentX=20
ExtentY=20
SmallPaletteImages=&\smalltoolbar. bmp
SmallPaletteIndex=1
ВНИМАНИЕ Размер файла растрового изображения не должен превышать 512 Кбайт. Файл
большего размера следует разбить на меньшие файлы.
7. В меню модели Rose выберите пункт Tools Options (Инструменты Параметры).
8. Перейдите на вкладку Toolbars (Панели инструментов).
9. Для настройки какой-либо панели инструментов нажмите на находящуюся рядом с ней кнопку с
символом многоточия (...).
ИО. Добавьте новую кнопку на панель диаграммы Классов.
Если нужно поместить на панель инструментов большую кнопку для стереотипа:
И. Завершите работу с Rose.
2. В графическом приложении нарисуйте большой значок кнопки панели инструментов для этого
стереотипа. Сохраните его в формате . ВИР. Размер значка должен составлять 24 пикселя в вы-
соту и 24 пикселя в ширину, фон серый (соответствует RGB = 192, 192, 192 в Rational Rose)
3. Откройте файл DefaultStereotypes.ini.
4. Перейдите в раздел, соответствующий вашему стереотипу. Например, чтобы поместить на па-
нель инструментов большой значок стереотипа Boundary, перейдите в раздел [Class:Boundary].
5. Добавьте строку, соответствующую большому значку панели инструментов. Если файл растро-
вого изображения находится в том же каталоге, что и DefaultStereotypes.ini, для сокращения
описания пути к этому файлу можно использовать символ &:
[Class:Boundary]
Item=Class
Stereotype=Boundary
Metafiles:\program files\rational rose 98\boundary.wmf
ExtentX=20
Классы и пакеты
167
/
ExtentY=20
MediumPaletteImages=&\la rgetoolba г.bmp
6. Если в файле .BMP содержится несколько пиктограмм, добавьте к файлу Defaultstereotypes, ini
еще одну строку с указанием расположения требуемого значка в файле:
[Class:Boundary]
Item=Class
Stereotype=Boundary
, Metafiles: \program files\rational rose 98\boundary. wmf
ExtentX=20
ExtentY=20
MediumPaletteImages=&\largetoolbar.bmp
MediumPaletteIndex=1
7. В меню модели Rose выберите пункт Tools Options (Инструменты Параметры).
8. Перейдите на вкладку Toolbars (Панели инструментов).
9. Для настройки какой-либо панели инструментов нажмите на находящуюся рядом с ней кнопку с
символом многоточия (...).
40. Добавьте новую кнопку на панель диаграммы Классов.
Если нужно добавить значок для представления стереотипа в браузере:
1. Завершите работу с Rose.
2. В графическом приложении нарисуйте значок. Сохраните его в формате .BMP. Раз^мер значка
должен составлять 16 пикселей в высоту и 16 пикселей в ширину, фон белый.
3. Откройте файл DefaultStereotypes.ini.
4. Перейдите в раздел, соответствующий вашему стереотипу. Например, чтобы добавить значок
для представления в браузере стереотипа Boundary, перейдите в раздел [Class:Boundary].
5. Добавьте строку, соответствующую этому значку. Если файл растрового изображения находит-
ся в том же каталоге, что и Defaultstereotypes, ini, для сокращения описания пути к этому фай-
лу можно использовать символ 8с:
[Class:Boundary]
Item=Class
Stereotype=Boundary
Metafiles:\program files\rational rose 98\boundary.wmf
ExtentX=20
ExtentY=20
Listlmages=&\listimages.bmp
6. Если в файле .BMP содержится несколько пиктограмм, добавьте к файлу DefaultStereotypes.ini
еще одну строку с указанием расположения требуемого значка в файле:
[Class:Boundary]
Item=Class
Stereotype=Boundary
Metafiles:\program files\rational rose 98\boundary.wmf
ExtentX=20
ExtentY=20
Listlmages=&\listimages. bmp
Listlndex=3
7. Теперь если вы создадите на диаграмме новый элемент с применением этого стереотипа, в бра-
узере для его представления будет использоваться новый значок.
168
Глава 5
Задание видимости класса
Параметр Visibility (Видимость) показывает, будет ли класс виден вне своего пакета. Вы можете ука-
зать для класса одно из трех значений:
Public (Открытый) Этот класс виден всем остальным классам системы.
(98i) Protected, Private (Защищенный, закрытый) Класс может быть виден во вложенных в
него классах, "друзьям" (friends) этого класса или из самого класса.
Package or Implementation (Пакет или реализация) Класс может быть виден только из клас-
сов того же пакета.
Для установки видимости класса:
1. Щелкните правой кнопкой мыши на классе в браузере или диаграмме классовг
2. В открывшемся меню выберите пункт Open Specification (Открыть спецификацию).
3. Установите параметр Export control (Контроль экспорта) в значение Public; Protected, Private
или Implementation.
Задание множественности класса
Поле Cardinality (Множественность) позволяет указать, сколько у данного класса должно быть экземп-
ляров. Например, в системе обработки информации о сотрудниках можно ожидать наличия множест-
ва экземпляров у класса Employee: Джон Доу, Билл Смит и другие. Следовательно, множественность
этого класса нужно определить как п.
Множественность управляющего класса обычно равна 1.
Во время работы приложения вам скорее всего понадобится только один экземпляр менеджера бе-
зопасности.
В Rose доступны следующие значения множественности (они находятся в раскрывающемся списке).
Множественность___Значение__________________________________________________
п (по умолчанию)__много_____________________________________________________
0..0 нуль
0..1______________нуль или один_____________________________________________
О..п нуль или больше
— 1 ' .S——И — * М
1..1 ровно один________________________________________________________
1..п один или больше
Вы также можете ввести множественность сами в соответствии со следующим форматом:
Формат_____ Значение
<число>ровно число
<число 1>..<число 2>____________между числом 1 и числом 2___________________
<число>..п число или больше
<число 1>, <число 2>число 1 или число 2
<число 1>, <число 2>..<число 3>_ровно число 1 или между числом 2 и числом 3_
<число 1>..<число 2>, <число 3>..<число 4> между числом 1 и числом 2 или между числом 3 и числом 4
Для задания множественности класса:
1. Откройте окно спецификации класса.
2. Перейдите на вкладку Detail (Подробно).
3. Укажите множественность в раскрывающемся списке или введите ее значение сами.
Классы и пакеты
169
Задание требований к хранению класса
Строя модель, вы можете указать количество абсолютной или относительной памяти, которая, по ва-
шему мнению, потребуется для каждого объекта класса. Для этой цели служит поле Space (Простран-
ство) окна спецификации класса.
Это поле не применимо для утилит классов, утилит классов-наполнителей и утилит параметризо-
ванных классов.
Для указания пространства класса:
1. Откройте окно спецификации класса.
2. Перейдите на вкладку Detail.
3. В поле Space введите требования по хранению класса.
Задание устойчивости класса
В среде Rose на основе модели можно генерировать DDL (Data Definition Language — Язык Описа-
ния Данных). DDL определяет структуру вашей базы данных.
При генерации DDL приложение Rose ищет устойчивые (persistent) классы. Поле Persistence окна
спецификации класса применяется для определения этого параметра. Он может-принимать одно из
следующих значений:
Persistent (Устойчивый) Класс сохраняется и после завершения работы приложения. Иначе го-
воря, содержащаяся в объектах класса информация будет сохраняться в базе данных или каким-то
другим способом, обеспечивающим длительное хранение.
Transient (Временный) Информация, содержащаяся в объектах класса, не будет сохраняться
после завершения работы приложения.
Это поле нельзя использовать для утилит классов, утилит параметризованных классов и утилит
классов-наполнителей.
Задать устойчивость класса можно следующим образом:
1. Откройте окно спецификации класса.
2. Перейдите на вкладку Detail (Подробно).
3. В области Persistence выберите пункт Persistent или Transient.
Задание параллелизма класса
Параллелизм (concurrency) позволяет описать, как будет вести себя класс в присутствии нескольких
потоков управления. Для класса доступны четыре значения этого параметра:
Sequential (Последовательный) Это значение по умолчанию, оно показывает, что класс будет
вести себя нормально (т.е. операции будут выполняться так, как ожидается) при наличии только
одного потока управления, но в присутствии нескольких потоков управления поведение класса
не гарантируется.
Guarded (Ограждающий) При наличии нескольких потоков управления класс будет вести себя,
как ожидается, но чтобы классы различных потоков не мешали друг другу, они должны взаимо-
действовать друг с другом.
Active (Активный) Класс будет иметь свой собственный поток управления.
Synchronous (Синхронный) При наличии нескольких потоков управления класс будет вести
себя, как ожидается. Между ним и классами других потоков не требуется какого-то специального
взаимодействия, так как класс может самостоятельно обрабатывать взаимные исключения.
Для указания параллелизма класса:
1. Откройте окно спецификации класса.
2. Перейдите на вкладку Detail (Подробно).
3. Установите переключатель Concurrency в значение, соответствующее требуемому паралле-
лизму.
170
Глава 5
Создание абстрактного класса
Абстрактным называется класс, который не наполняется конкретным содержанием (не инстанцирует-
ся). Иными словами, если класс А абстрактный, в памяти никогда не будет объектов типа А.
Обычно абстрактные классы применяют при работе с наследованием. В них содержатся данные и
поведение, общие для нескольких других классов. Например, у нас может быть класс Животное с ат-
рибутами Рост, Цвет и Разновидность. От этого класса наследуют три других класса: Кошка, Собака и
Птица. Каждый из них наследует свойства Рост, Цвет и Разновидность от класса Животное и имеет
свои собственные уникальные атрибуты и операции.
Объекты класса Животное не создаются во время работы приложения — все объекты являются то-
лько кошками, собаками и птицами. Класс Животное является абстрактным, он описывает, что обще-
го есть у кошек, собак и птиц.
На языке UML название абстрактного класса на диаграмме пишут курсивом:
Abstract Class
^Attribute-----
^Operation))
Абстрактный класс
Атрибут
Операция))
Для создания абстрактного класса:
1. Создайте класс одним из описанных выше способов.
2. Откройте окно спецификации класса.
3. Перейдите на вкладку Detail (Подробно).
4. Установите флажок Abstract.
Просмотр атрибутов класса
В следующей главе подробно описываются методы добавления, удаления и работы с атрибутами клас-
са. Окно спецификации класса содержит информацию о том, какие атрибуты класса уже были созда-
ны.
Если нужно просмотреть атрибуты класса:
1. Откройте окно спецификации класса.
2. Перейдите на вкладку Attributes (Атрибуты). Здесь перечисляются атрибуты класса с указанием
их видимости, стереотипа, имени, типа данных и значения по умолчанию.
11111111111111IIIIII11111111111111Н и и п н и и п j,.ни
Просмотр операций класса
В следующей главе подробно рассматриваются добавление, удаление и работа с операциями класса. |
Информация об операциях содержится в окне спецификации класса. |
Если требуется просмотреть операции класса: I
1. Откройте окно спецификации класса |
2. Перейдите на вкладку Operations (Операции). Здесь перечисляются все операции класса, вклю- |
чая их видимость, стереотип, сигнатуру и тип возвращаемого значения. |
Просмотр связей класса
В главе 7 подробно рассматриваются все типы связей, которые можно добавить к классу. Рассказыва- J
ется о методах задания и удаления связей, а также о вводе их подробного описания. В окне специфика- |
ции класса можно просмотреть связи, добавленные к классу. |
Для просмотра связей класса: f
1. Откройте окно спецификации класса. |
2. Перейдите на вкладку Relations. Здесь перечисляются все связи, в которых участвует класс. |
Классы и пакеты 171
Использование вложенных классов
В Rose классы можно вкладывать друг в друга. Во вложенные (nested) классы можно вкладывать другие
классы, организуя столько уровней вложения, сколько необходимо.
Для создания вложенного класса:
1. Откройте окно спецификации родительского класса.
2. Перейдите на вкладку Nested (Вложенные).
3. Щелкните правой кнопкой мыши на белом поле этой вкладки.
4. В открывшемся меню выберите пункт Insert (Вставить).
5. Введите имя вложенного класса.
Если нужно показать вложенный класс на диаграмме Классов:
1. Откройте диаграмму Классов.
2. Выберите в меню модели пункт Query Add Classes (Запрос Добавить классы).
3. Перетащите вложенный класс из списка Classes (Классы) в список Selected Classes (Выбранные
классы). Вложенный класс представлен в формате: Родительский класс :: Вложенный класс.
4. Щелкните мышью на ОК. Вложенный класс появится на диаграмме с именем родительского
класса, заключенным в скобки.
Класс
Атрибут
Операция))
— Class
^Attribute
^Operation))
Вложенный класс
(Родительский класс)
Для удаления из модели вложенного класса:
л
л
1. Откройте окно спецификации родительского класса.
2. Перейдите на вкладку Nested (Вложенные).
3. Щелкните правой кнопкой мыши на имени вложенного класса, который нужно удалить.
4. В открывшемся меню выберите пункт Delete (Удалить). Вложенный класс будет удален со всех
диаграмм Класса.
Связывание файлов и ссылок с классом
Файлы и ссылки можно прикреплять к диаграмме Классов (см. выше), а также связывать непосредст-
венно с классом. Например, к классу модели можно прикрепить файл с его исходным кодом или файл
с описанием действий по тестированию его функциональных возможностей. В Rose связывание фай-
лов и ссылок с классом выполняется с помощью браузера или окна спецификации класса.
Для прикрепления файла к классу:
1. Откройте окно спецификации класса.
2. Перейдите на вкладку Files (Файлы).
3. Щелкните правой кнопкой мыши где-нибудь на белом поле этой вкладки.
4. В открывшемся меню выберите пункт Insert File (Вставить файл).
5. В диалоговом окне открытия файла укажите файл, который нужно прикрепить.
6. Нажмите на кнопку Open (Открыть) для завершения процесса.
ИЛИ
1. Щелкните правой кнопкой мыши на классе в браузере.
2. В открывшемся меню выберите пункт New File (Создать Файл).
3. В диалоговом окне открытия файла укажите файл, который нужно прикрепить.
I
4. Нажмите на кнопку Open (Открыть) для завершения процесса.
172
Глава 5
Для прикрепления ссылки к классу:
1. Откройте окно спецификации класса.
2. Перейдите на вкладку Files (Файлы).
3. Щелкните правой кнопкой мыши где-нибудь на белом поле этой вкладки.
4. В открывшемся меню выберите пункт Insert URL (Вставить ссылку).
5. Введите адрес ссылки.
ИЛИ
1. Щелкните правой кнопкой мыши на классе в браузере.
2. В открывшемся меню выберите пункт New URL (Создать Ссылка).
3. Введите адрес ссылки.
Открыть связанный файл можно следующим образом:
1. Найдите файл в браузере.
2. Дважды щелкните мышью на его имени. Rose автоматически запустит соответствующее прило-
жение и загрузит в него файл.
ИЛИ
1. Щелкните правой кнопкой мыши на файле в браузере.
2. В открывшемся меню выберите пункт Open. Rose автоматически запустит соответствующее
приложение и загрузит в него файл.
ИЛИ
1. Откройте окно спецификации класса.
2. Перейдите на вкладку Files (Файлы).
3. Дважды щелкните на файле, который нужно открыть. Rose автоматически запустит соответст-
вующее приложение и загрузит в него файл.
ИЛИ
1. Откройте окно спецификации класса.
2. Перейдите на вкладку Files (Файлы).
3. Щелкните правой кнопкой мыши на файле, который нужно открыть.
4. В появившемся меню выберите пункт Open File/URL (Открыть файл/ссылку). Rose автомати-
чески запустит соответствующее приложение и загрузит в него файл.
Если требуется открыть связанную с классом ссылку:
1. Найдите ее в браузере.
2. Дважды щелкните мышью на ссылке. Rose автоматически запустит ваш Web-браузер и загрузит
в него ссылку.
ИЛИ
1. Щелкните правой кнопкой мыши на ссылке в браузере.
2. В открывшемся меню выберите пункт Open. Rose автоматически запустит ваш We ^браузер и за-
грузит в него ссылку.
ИЛИ
И. Откройте окно спецификации класса.
2. Перейдите на вкладку Files (Файлы).
3. Дважды щелкните мышью на ссылке, которую нужно открыть. Rose автоматически запустит
ваш Web-браузер и загрузит в него ссылку.
ИЛИ
1. Откройте окно спецификации класса.
Классы и пакеты
173
2. Перейдите на вкладку Files (Файлы).
3. Щелкните правой кнопкой мыши на ссылке, которую нужно открыть.
4. В появившемся меню выберите пункт Open File/URL (Открыть файл/ссылку). Rose автомати-
чески запустит ваш Web-браузер и загрузит в него ссылку.
Для удаления связанного файла или ссылки:
1. Щелкните правой кнопкой мыши на файле или ссылке в браузере.
2. В открывшемся меню выберите пункт Delete (Удалить).
Просмотр диаграмм Взаимодействия,
содержащих классы
При необходимости изменить класс полезно точно знать, где в системе он используется. Два типа диа-
грамм Взаимодействия — диаграммы Последовательности и Кооперативные диаграммы — позволяют
понять, где и как применяется класс. Чтобы узнать, какие диаграммы Последовательности и Коопера-
тивные диаграммы содержат объекты данного класса, можно воспользоваться меню Report (Отчет).
Для просмотра всех диаграмм Взаимодействия, содержащих определенный класс:
1. Укажите класс на диаграмме Классов.
2. В меню модели выберите пункт Report >> Show Instances (Отчет Показать экземпляры).
3. Вы увидите список всех диаграмм Последовательности и Кооперативных диаграмм, содержа-
щих экземпляры данного класса (см. рис. 5.11). Чтобы открыть диаграмму, дважды щелкните на
ней в списке или нажмите кнопку Browse (Обзор).
Рис. 5.11.
Просмотр
экземпляров
класса
Show Usage I
Object Form Object in Collaboration Diagram: Use Case I / Collabr
Object Form 1 in Sequence Diagram: Use Case 1 / Sequence 2
Object Form 1 in Collaboration Diagram; U se Case 1 / Sequence 2
Г Biowse
. SI. i i ь. ******
Cancel
-
Help
Работа с примечаниями
Ha диаграмме Классов можно размещать примечания, содержащие дополнительную информацию о
конкретном классе, пакете, атрибуте, операции или связи. Хотя примечания не влияют на генерируе-
мый код, они помогают разработчикам и другим участникам проекта лучше понять модель.
Добавление примечаний
Для добавления примечания на диаграмму Классов можно использовать два инструмента. Во-первых,
к классу или другому элементу диаграммы можно прикрепить примечание-комментарий (note). Если
же требуется прокомментировать целую диаграмму, применяется текстовая область (text box). В част-
ности, в такой области указывается заголовок диаграммы.
Поместить на диаграмму примечание можно следующим образом:
1. Нажмите кнопку Note (Примечание) панели инструментов.
2. Щелкните мышью внутри диаграммы в том месте, куда нужно поместить примечание.
3. Введите текст примечания.
Для прикрепления примечания к элементу на диаграмме:
1. Нажмите кнопку Anchor Note to Item (Прикрепить примечание к элементу) панели инстру-
ментов.
174
Глава
2. Нажав кнопку, проведите мышью от примечания к элементу.
3. Между примечанием и элементом появится пунктирная линия.
Если нужно поместить на диаграмму текстовую область:
1. Нажмите кнопку Text Box (Текстовая область) панели инструментов,
ь
2. Щелкните внутри диаграммы, чтобы расположить там текстовую область.
3. Введите текст.
*
Удаление примечаний
При необходимости можно удалить примечание с диаграммы. Это разрешается делать непосредствен-
но на диаграмме Классов.
Для удаления с диаграммы примечания или текстовой области:
И. Выделите примечание или текстовую область на диаграмме.
2. Нажмите клавишу Delete.
Работа с пакетами
Пакеты (packages) применяются для группирования классов, обладающих некоторой общностью. На
языке UML пакет изображают следующим символом:
Package 1
Пакет 1
Объединять классы можно, как угодно, однако существует несколько наиболее распространенных
подходов. Во-первых, можно группировать классы по стереотипу. В таком случае получается один па-
кет с классами-сущностями, один с пограничными классами, один с управляющими классами и т.д.
Этот подход может быть полезен с точки зрения размещения готовой системы, поскольку все находя-
щиеся на клиентских машинах пограничные классы уже оказываются в одном пакете.
Второй подход заключается в объединении классов по их функциональности. Например, в пакете
Security (Безопасность) будут содержаться все классы, отвечающие за безопасность приложения.
Другие пакеты могут называться Employee Maintenance (Работа с сотрудниками), Reporting (Под-
готовка отчетов) и Error Handling (Обработка ошибок). Преимущество этого метода заключается в
возможности повторного использования пакетов. Если внимательно подойти к группированию клас-
сов, можно получить практически не зависящие друг от друга пакеты. Например, пакет Security мож-
но использовать и в других приложениях.
Наконец, применяют комбинацию двух указанных подходов. Для дальнейшей организации клас-
сов разрешается вкладывать пакеты друг в друга. На высоком уровне, например, можно сгруппиро-
вать классы по функциональности, создав пакет Security. Внутри него можно создать другие пакеты,
сгруппировав отвечающие за безопасность классы по функциональности или по стереотипу.
Добавление пакетов
Очередным этапом разработки модели является добавление пакетов. Пакеты классов создают в Логи-
ческом представлении браузера.
Для добавления на диаграмму Классов существующего пакета:
Перетащите пакет на диаграмму из браузера.
Поместить на диаграмму Классов новый пакет можно следующим образом:
1, Нажмите кнопку Package (Пакет) панели инструментов.
2. Щелкните мышью внутри диаграммы Классов, чтобы поместить туда пакет.
3. Введите его имя.
Классы и пакеты
175
Для добавления пакета в браузер:
1. Щелкните правой кнопкой мыши на Логическом представлении браузера. Если вы создаете па-
кет внутри существующего пакета, щелкните правой кнопкой мыши на нем в браузере.
2. Выберите пункт меню модели New Package (Создать Пакет).
3. Введите имя нового пакета.
Если нужно поместить в пакет элемент:
Перетащите элемент в этот пакет в браузере.
Удаление пакетов
Пакет можно удалить только с диаграммы Классов или из модели в целом. При удалении пакета из мо-
дели удаляется и все его содержимое.
Для удаления пакета с диаграммы Классов:
1. Выделите его на диаграмме Классов.
2. Нажмите клавишу Delete.
3. Обратите внимание, что, хотя пакет и исчез с диаграммы Классов, он сохранился в браузере и
на других диаграммах.
Для удаления пакета из модели:
1. Щелкните правой кнопкой мыши на пакете в браузере.
2. В открывшемся меню выберите пункт Delete (Удалить).
ИЛИ
1. Выделите пакет на диаграмме Классов.
2. В меню модели выберите пункт Edit Delete from Model (Правка Удалить из модели) или на-
жмите комбинацию клавиш CTRL+D.
hl ОСТОРОЖНО При удалении пакета из модели все классы и диаграммы пакета также будут
удалены.
Упражнение
В этом упражнении необходимо сгруппировать в пакеты классы, созданные при выполнении предыду-
щего упражнения. Затем нужно будет построить несколько диаграмм Классов и показать на них клас-
сы и пакеты системы.
*
1
Постановка задачи
Изучив диаграммы Взаимодействия, Боб понял, что система соответствует требованиям компании.
После этого Сьюзан пришла к руководителю группы разработчиков Карен:
— Вот диаграммы Взаимодействия, описывающие процесс ввода нового заказа.
— Прекрасно. Приступаем к разработке.
Ознакомившись с классами модели Rose, Карен решила объединить их в пакеты по стереотипу.
Она создала пакеты Entities (Сущности), Boundaries (Границы) и Control (Управление), поместив в
них соответствующие классы. Затем для каждого пакета были построены диаграммы Классов. Кроме
того, на Главной диаграмме были показаны пакеты, а на диаграмме ’’Ввод нового заказа" — все классы
этого варианта использования.
Создание диаграммы Классов
Объедините обнаруженные нами классы в пакеты. Создайте диаграмму Классов для отображения па-
кетов, диаграммы Классов для представления классов в каждом пакете и диаграмму Классов для пред-
ставления всех классов варианта использования "Ввести новый заказ".
176
Глава 5
Этапы выполнения упражнения
Настройка
1. В меню модели выберите пункт Tools Options (Инструменты Параметры).
2. Перейдите на вкладку Diagram (Диаграмма).
3. Убедитесь, что установлен флажок Show stereotypes (Показать стереотипы).
4. Убедитесь, что установлены флажки Show All Attributes (Показать все атрибуты) и Show Ail Operations
(Показать все операции).
5. Убедитесь, что сброшены флажки Suppress Attributes (Подавить вывод атрибутов) и Suppress Operations
(Подавить вывод операций).
Создание пакетов
1. Щелкните правой кнопкой мыши на Логическом представлении браузера.
2. В открывшемся меню выберите пункт New Package (Создать Пакет).
3. Назовите новый пакет Entities (Сущности).
4. Повторив шаги 1 — 3, создайте пакеты Boundaries (Границы) и Control (Управление).
Браузер должен теперь иметь вид, показанный на рис. 5.12.
Рис. 5.12.
Пакеты системы
обработки заказов
язе - Older
> О Use Case View
О Logical View
X Main
Г~! Entities
Г~I Boundaries
Cj Control
Add order
UH Add order
+ S OrderOptions
it, El OrderDelail
3 OrderMgr
•+l S Order
iJ -S TransactionMgr
№- Г"1 Component View
: Deployment View
Создание Главной диаграммы Классов
1. Дважды щелкнув мышью на Главной диаграмме Классов, находящейся под Логическим представлени-
ем браузера, откройте ее.
2. Перетащите пакет Entities из браузера на диаграмму.
3. Перетащите пакеты Boundaries и Control из браузера на диаграмму.
Главная диаграмма Классов должна выглядеть, как показано на рис. 5.13.
Создание диаграммы Классов для сценария 'Ввести новый заказ"
с отображением всех классов
1. Щелкните правой кнопкой мыши на Логическом представлении браузера.
2. В открывшемся меню выберите пункт New >> Class Diagram (Создать Диаграмма Классов).
3. Назовите новую диаграмму Классов Add New Order (Ввод нового заказа).
4. Дважды щелкнув мышью на этой диаграмме в браузере, откройте ее.
5. Перетащите из браузера все классы (OrderOptions, OrderDetail, Order, OrderMgr и TransactionMgr).
Полученная диаграмма Классов представлена на рис. 5.14.
Классы и пакеты
177
Рис. 5.13.
Главная диаграмма
Классов системы
обработки заказов
Class Diagram: Logical View / Main
Boundaries
Control
Л лД L J „Vk-Ь ..j.-ljbДИ. WUtWft ЛЖДРЮЛ9.Ч ff WJ! МЦ. I- ДЦ. k: l Ц. Мкл I. WW
Рис. 5.14.
Диаграмма
Классов
Add New Order
Добавление стереотипов к классам
1. Щелкните правой кнопкой мыши на классе OrderOptions диаграммы.
2. В открывшемся меню выберите пункт Open Specification (Открыть спецификацию).
3. В поле стереотипа введите слово Boundary.
4. Нажмите на кнопку ОК.
5. Щелкните правой кнопкой мыши на классе OrderDetail диаграммы.
6. В открывшемся меню выберите пункт Open Specification (Открыть спецификацию).
7. В раскрывающемся списке поля стереотипов будет указан стереотип Boundary. Выделите его.
8. Нажмите на кнопку ОК.
9. Повторив шаги 1 — 4, свяжите классы OrderMgr и TransactionMgr со стереотипом Control, а класс
Order — со стереотипом Entity.
178 Главой
Рис. 5.15.
Стереотипы
классов
для варианта
использования
"Ввести новый заказ"
Теперь диаграмма Классов должна иметь вид, показанный на рис. 5.15.
Объединение классов в пакеты
1. В браузере перетащите класс OrderOptions на пакет Boundaries.
2. Перетащите класс OrderDetail на пакет Boundaries.
3. Перетащите классы OrderMgr и TransactionMgr на пакет Control.
4. Перетащите класс Order на пакет Entities.
Классы и пакеты в браузере показаны на рис. 5.16.
Рис. 5.16.
Классы и пакеты
варианта
использования
"Ввести новый заказ"
V Rational Rose - Bidet
File Edit View Browse Report Query Xools Add-Ins
* Cj Use Case View
- ГП Logical View
SMain
Entities
+ S <<Entity>> Order
- lj Boundaries
•+: S <<Boundaiy>> OrderOptions
+; S <<Boundary>> DiderDetail
- LJ Control
+ В <<Ccinliol>> TransactionMgr
+ о <<Contrcl>> OrdeiMgr
^2 Add order
Add order
Add new older
* Cj Component View
fl Deployment View
Добавление диаграмм Классов к каждому пакету
1. В браузере щелкните правой кнопкой мыши на пакете Boundaries.
2. В открывшемся меню выберите пункт New Class Diagram {Создать >> Диаграмма Классов). ------------
3. Введите имя новой диаграммы — Main (Главная). ---
4, Дважды щелкнув мышью на этой диаграмме, откройте ее. ---
5. Перетащите на нее из браузера классы OrderOptions и OrderDetail. Главная диаграмма Классов пакета
Boundaries должна теперь выглядеть, как показано на рис. 5.17. ---
Классы и пакеты
179
Рис. 5.17.
Главная диаграмма
Классов пакета
Boundaries
Class Diagram: Boundaries/ Main
<<Boundary>>
OrderOptions
<<Boundary>>
OrderD etail
3
^CreateQ
^OpenQ
^SubmitinfoO
*SaveQ
6. Закройте диаграмму.
7. В браузере щелкните правой кнопкой мыши на пакете Entities.
8. В открывшемся меню выберите пункт New Class Diagram (Создать 5* Диаграмма Классов).
9. Введите имя новой диаграммы — Main (Главная).
10. Дважды щелкнув мышью на этой диаграмме, откройте ее.
11. Перетащите на нее из браузера класс Order. Главная диаграмма Классов пакета Entities должна теперь
иметь вид, представленный на рис. 5.18.
Рис. 5.18.
Главная диаграмма
Классов пакета
Entities
12. Закройте диаграмму.
13. В браузере щелкните правой кнопкой мыши на пакете Control.
14. В открывшемся меню выберите пункт New Class Diagram (Создать Диаграмма Классов).
15. Введите имя новой диаграммы — Main (Главная).
480
Глава 5
Рис. 5.19.
Главная диаграмма
Классов пакета
Control
Chss Diagram: Control / Main
<<Control>>
TransactioiMg r
'1
<<Control»
Огаёггйдг
^SaveOrderQ
| Qnm ilfl
^SaveO tie 0
l- -__________I
я* «чадами ikw v-jiuijua
16. Дважды щелкнув мышью на этой диаграмме, откройте ее.
17. Перетащите на нее из браузера классы OrderMgr и TransactionMgr.
18. Закройте диаграмму.
Главная диаграмма Классов пакета Control должна теперь выглядеть, как показано на рис. 5.19,
глава
Атрибуты и операции
Работа с атрибутами
Работа с операциями
Изображение атрибутов и операций
на диаграммах Классов
Соотнесение операций с сообщениями
В предыдущей главе были изучены классы и пакеты. Напомним, что классы инкапсулируют атрибуты
(данные) и действующие на них операции (поведение). В этой главе рассматривается работа с атрибу-
тами и операциями. Начнем мы с выявления атрибутов, их добавления к модели Rose и детализации. За-
тем опишем выявление, добавление к модели и детализацию операций. После этого познакомимся с
тем, как располагать атрибуты и операции на диаграмме Классов. И в заключение обсудим методы соот-
несения операций с сообщениями диаграмм Взаимодействия.
Работа с атрибутами
Атрибут — это фрагмент информации, связанный с классом. Например, у класса Company (Компания)
могут быть атрибуты Name (Название), Address (Адрес) и NumberOfEmployees (Число служащих).
Rose дает возможность добавлять атрибуты (один или несколько) к классам модели. В следующем
разделе описывается, как искать атрибуты, добавлять их к модели, удалять из модели и детально спе-
цифицировать каждый атрибут.
Выявление атрибутов
Существует множество источников, где можно найти атрибуты. Для начала взгляните на описание ва-
рианта использования. Ищите имена существительные в потоке событий. Некоторые из них будут
классами или объектами, другие — действующими лицами, и, наконец, последняя группа — атрибута-
ми. Например, в потоке событий может быть написано: "Пользователь вводит имя сотрудника, его ад-
рес, номер социальной страховки и номер телефона". Это означает, что у класса Сотрудник имеются
атрибуты Имя, Адрес, Номер страховки и Номер телефона.
Атрибуты можно также выявить, изучая документацию, описывающую требования к системе.
Ищите такие требования, которые определяют собираемые системой данные. Любой элемент соби-
раемой информации может быть атрибутом класса.
Наконец, взгляните на структуру базы данных. Если она уже определена, поля в ее таблицах дадут
вам хорошее представление об атрибутах.
Часто имеется однозначное соответствие между таблицами базы данных и классами-сущностями.
Если вернуться к предыдущему примеру, то в таблице Сотрудник должны быть поля Имя, Адрес, Но-
мер телефона и Номер страховки. Соответствующий класс Сотрудник также имеет атрибуты Имя, Ад-
рес, Номер телефона и Номер страховки. Следует отметить, однако, что не всегда существует такое
однозначное соответствие. Подходы к проектированию баз данных и классов могут различаться.
В частности, реляционные базы данных не поддерживают наследование непосредственно.
Определяя атрибуты, следите за тем, чтобы каждый из них можно было соотнести с требования-
ми к системе. Это помогает решить классическую проблему приложения, собирающего огромный
объем никому не нужной информации. Каждое требование должно быть отслежено до конкретного
потока событий варианта использования, конкретного требования или существующей таблицы базы
данных. Если это не удается сделать, нельзя быть уверенным в том, что данное требование нужно за-
казчику. В этом заключается отличие данного подхода к проектированию приложений от более ста-
рых методов — вместо того чтобы сначала создавать структуру базы данных и затем на ее основе
разрабатывать систему, вы проектируете систему и базу данных одновременно, добиваясь их соответ-
ствия одним и тем же требованиям.
Определив атрибуты, внимательно соотнесите их с соответствующими классами. Атрибут должен
соответствовать классу. Например, класс Сотрудник может содержать имя и адрес, но не должен
включать в себя сведения о выпускаемой компанией продукции. Для последних подошел бы класс
Продукция.
Обратите внимание на классы, у которых слишком много атрибутов. Возможно, такой класс следу-
ет разделить на два меньших. Так, класс с 10-ю или 15-ю атрибутами может быть вполне приемле-
мым — только убедитесь, что все его атрибуты нужны и действительно должны принадлежать этому
классу. Будьте осторожны и с классами, у которых слишком мало атрибутов. Вполне возможно, что
все нормально — например, управляющий класс имеет мало атрибутов. Однако это может быть и при-
знаком необходимости в объединении нескольких классов.
Иногда могут возникнуть сомнения, соответствует ли обнаруженная вами информация атрибуту
или классу. Рассмотрим, например, такой атрибут, как название компании. Является ли он атрибутом
класса Person (Человек), или лучше создать отдельный класс Company (Компания)? Ответ зависит от
:l 1111111111111111111111111111II1111111111111111111111111111111111111111111111111111111111111111111111111111.11..
того, какое приложение вы пишете. Если вы собираете сведения о компании и имеется связанное с
ней поведение, она может быть классом. Допустим, что вы проектируете систему работы с заказчика-
ми. В таком случае может потребоваться информация о компаниях, которым вы поставляете товары
или услуги. Вам нужно знать, сколько сотрудников работает в компании, ее имя и адрес, контактный
телефон и т.д.
С другой стороны, специфическая информация о компании может и не требоваться. Допустим,
ваше приложение должно генерировать письма людям, работающим в других организациях. При
этом вам достаточно знать названия их фирм. В таком случае имя компании будет атрибутом класса
Контакт.
Кроме того, нужно рассмотреть, есть ли поведение у подозрительной информации. Если в вашем
приложении компания имеет некоторое выраженное поведение, лучше моделировать ее как класс.
Если поведения нет, то это скорее всего атрибут.
После выявления атрибутов необходимо добавить их в модель. В последующих разделах рассказы-
вается о том, как добавлять атрибуты в модель и как описывать их подробно, задавая, например, зна-
чения по умолчанию и типы данных.
Добавление атрибутов
Определив атрибуты, вы должны добавить их к соответствующим классам вашей модели. При этом с
атрибутами можно связать три основных фрагмента информации: имя атрибута, тип его данных и
первоначальное значение. Имя и тип атрибута должны быть определены перед генерацией кода, пер-
воначальное значение задавать необязательно.
Добавление атрибута выполняется непосредственно на диаграмме Классов, в браузере или в окне
спецификации класса.
С атрибутом можно связать некоторое текстовое описание. Как правило, это короткое описание
или определение атрибута. В генерируемый код оно войдет в качестве комментария. Таким образом,
документируя атрибут, вы начинаете документировать и код.
Для добавления атрибута к классу:
1. Щелкните правой кнопкой мыши на клдссе диаграммы Классов.
2. В открывшемся меню выберите пункт New Attribute (Создать Атрибут).
3. Введите имя атрибута в формате Имя : Тип данных = Начальное значение. Например:
Address : String
IDNumber : Integer = О
Тип данных нужен при генерации кода, но начальное значение необязательно.
4. Чтобы еще добавить атрибуты, нажмите клавишу Enter и введите новые атрибуты непосредст-
венно на диаграмму Классов.
ИЛИ
1. Щелкните правой кнопкой мыши на классе в браузере.
2. В открывшемся меню выберите пункт New Attribute (Создать Атрибут).
3. Под классом в браузере появится новый атрибут пате (имя). Введите имя этого атрибута. Тип
данных и значение атрибута по умолчанию не могут быть назначены в браузере, их можно ввес-
ти на диаграмме Классов (см. ниже).
ИЛИ
1. Откройте окно спецификации класса данного атрибута.
2. Перейдите на вкладку Attributes (Атрибуты). Если у класса уже имеются атрибуты, они будут пе-
речислены на этой вкладке.
3. Щелкните правой кнопкой мыши где-нибудь внутри области атрибутов, как показано на
рис. 6.1.
4. В открывшемся меню выберите пункт Insert (Вставить).
5. Введите имя нового атрибута.
6. Задайте видимость, стереотип, тип данных и значение по умолчанию в соответствующих колон-
ках (см. ниже).
184
Глава 6
Рис. 6.1.
Добавление нового
атрибута в окне
спецификации
класса
Д Cla;$ Specification for Employee
Components j Nested j Filas | ERwin I IDL | Java
General j Detail j Operations Attributes j Relations
P Show inherited
Star...
Name
rfiployee _1D rfip oj|»e integer 0
SSN Employ* string
Salary Employe float
Address Employe string
City Employe string
State Employe string
Zip Cgde Employe long
D epartmat E m(b ye It ring
Для добавления к атрибуту текстового описания:
1. Выделите атрибут в браузере или на диаграмме Классов.
2. Введите описание атрибута в окне документации.
ИЛИ
И. Щелкните правой кнопкой мыши на атрибуте в браузере.
2- В открывшемся меню выберите пункт Open Specification (Открыть спецификацию).
3. Введите описание атрибута в области документации окна спецификации атрибута класса.
ИЛИ
1. Откройте окно спецификации класса данного атрибута.
2. Перейдите на вкладку Attributes (Атрибуты).
3. Укажите атрибут,
4. Введите описание в окне документации.
Удаление атрибутов =
В процессе работы может потребоваться удалить ранее созданные атрибуты. Например, часто при из- z
менении требований к системе пропадает необходимость в конкретном атрибуте, В среде Rose это-
легче делать в браузере. Можно также использовать диаграмму Классов. При удалении атрибута с диа-
граммы Классов он будет автоматически удален со всех остальных диаграмм Классов и из модели. =
Для удаления атрибута класса: ~
1. Щелкните правой кнопкой мыши на атрибуте в браузере. =
2, В открывшемся меню выберите пункт Delete (Удалить). ~
ИЛИ =
1. Выделите атрибут на диаграмме Классов. ~
2. С помощью клавиши Backspace удалите с диаграммы имя атрибута, тип данных и начальное зна-
чение. z
3- Щелкните мышью где-нибудь на диаграмме. =
4. Rose подтвердит удаление атрибута перед тем, как завершить это действие. =
ИЛИ =
1. Откройте окно спецификации класса данного атрибута. =
Атрибуты и операции
185
2. Перейдите на вкладку Attributes (Атрибуты).
3. Щелкните правой кнопкой мыши на удаляемом атрибуте.
4. В открывшемся меню выберите пункт Delete (Удалить).
5. Rose подтвердит удаление атрибута перед тем, как завершить это действие.
Спецификации атрибута
Как и в случае других элементов модели Rose, можно определить подробные спецификации атрибута.
Они включают в себя, помимо прочего, тип данных, значение по умолчанию, стереотип и видимость
атрибута.
Все спецификации можно просматривать или изменять в окне спецификации атрибута, показан-
ном на рис. 6.2.
Рис. 6.2.
Окно спецификации
атрибута
Ip Class Attribute Specification for Employee^lD
General | Detail ] DDL | ER win | IDL
^ame:
lype:
Stereotype:
| Employ ее JO
jinteger
I Java |
Class: Employee
P Show classes
Initial value: |0
Export Control
С Pybbc С Protected Private
Documentation:
С Implementation
DK
Cancel
growse *
Открыть окно спецификации атрибута можно следующим образом:
1. Щелкните правой кнопкой мыши на атрибуте в браузере.
2. В открывшемся меню выберите пункт Open Specification (Открыть спецификацию).
ИЛИ
1. Откройте окно спецификации класса данного атрибута.
2. Перейдите на вкладку Attributes (Атрибуты).
3. Дважды щелкните мышью на соответствующем атрибуге.
\А ВНИМАНИЕ
В среде Rose 98i эти действия приведут к появлению другого окна специфика-
ции. Чтобы открыть окно, показанное на рис. 6.2, щелкните правой кнопкой
мыши на атрибуте в браузере и в меню выберите пункт Open Standard Specifica-
tion (Открыть стандартную спецификацию).
Задание типа данных атрибута
Одной из главных характеристик атрибута является его тип данных. Он специфичен для используемо-
го языка. Это может быть, например, тип string, integer, long или boolean. Перед началом генерации
кода необходимо указать тип данных каждого атрибута.
В качестве типов данных можно использовать либо встроенные типы языка программирования
(string, integer, long и т.д.), либо определенные в вашей модели имена классов. Для того чтобы имена
определенных в модели классов выводились в раскрывающемся списке типов данных атрибутов, уста-
новите флажок Show Classes (Показать классы).
186
- *
Глава6
Для задания типа данных атрибута:
1. Щелкните правой кнопкой мыши на атрибуте в браузере.
2. В открывшемся меню выберите пункт Open Specification (Открыть спецификацию). Вы увидите
окно спецификации атрибута класса.
3. Укажите тип данных в раскрывающемся списке типов или введите собственный тип данных.
ИЛИ
1. Выделите атрибут на диаграмме Классов,
i
2. После имени атрибута введите двоеточие и тип его данных. Например, если атрибут Address от-
носится к строковому типу, введите
Address : String.
Назначение стереотипа для атрибута
Как у действующих лиц, вариантов использования и классов, у атрибутов могут быть стереотипы. Сте-
реотип атрибута является способом его классификации. Например, некоторые атрибуты могут соот-
ветствовать полям базы данных, а другие нет. Для каждого такого типа можно определить свой
стереотип.
В Rose необязательно назначать стереотипы атрибутам. Стереотипы не требуются для генерации
кода, но при их использовании легче читать и понимать модель.
Для назначения стереотипа атрибуту:
1. Щелкните правой кнопкой мыши на атрибуте в браузере.
2. В открывшемся меню выберите пункт Open Specification (Открыть спецификацию). Вы увидите
окно спецификации атрибута класса.
3. Укажите стереотип в раскрывающемся списке или введите новый стереотип.
ИЛИ
1. Выделите атрибут в браузере.
2. Для того чтобы отредактировать имя атрибута, щелкните на нем один раз. Перед именем поя-
вятся символы "« »".
Card Reader
<<|» - Card Number
+ Accept CardQ
+ Eject Card()
+ Read CardQ
3. Введите внутри угловых скобок имя стереотипа.
Card Reader
<<Stereotype>> - Card Number
+ Accept CardO
+ Eject CardQ
+ Read CardQ
Задание начальных значений атрибута
Атрибуты могут иметь значения по умолчанию. Например, класс Order содержит информацию и пове-
дение, связанное с заказами, которые получает ваша компания. Атрибут TaxRate этого класса пред-
ставляет собой ставку налога с покупки. В вашем городе налог равен 7.5%, так что почти все заказы
будут облагаться налогом 7.5%. Следовательно, у атрибута TaxRate можно определить значение по
умолчанию, равное 0.075.
Для генерации кода, как и в случае стереотипов, задавать начальные значения необязательно. Тем
не менее при их наличии генерируемый код будет соответствующим образом инициализировать ат-
рибут.
Атрибуты и операции
187
Для задания начального значения атрибута:
1. Щелкните правой кнопкой мыши на атрибуте в браузере,
2. В открывшемся меню выберите пункт Open Specification (Открыть спецификацию). Вы увидите
окно спецификации атрибута класса.
3. В поле Initial Value (Начальное значение) введите значение атрибута по умолчанию.
ИЛИ
1. Выделите атрибут на диаграмме Классов.
2. После типа данных атрибута введите знак равенства, а затем значение по умолчанию. Напри-
мер, если начальное значение целочисленного атрибута EmployeelD должно быть равно нулю,
то на диаграмме это будет выглядеть следующим образом:
_______Employee_______
- Employee ID : integer = О
Задание видимости атрибута
Одной из центральных концепций объектно-ориентированного программирования является инкапсу-
ляция. Благодаря наличию атрибутов и операций, каждый класс инкапсулирует некоторое количество
данных и поведение. К преимуществам такого подхода относится возможность создания небольших
самодостаточных фрагментов кода. Класс Employee, например, содержит всю связанную с сотрудни-
ком информацию и поведение.
Класс можно представить себе следующим образом:
Так как атрибуты содержатся внутри класса, они скрыты от других классов. В связи с этим нужно
указать, какие классы имеют право читать и изменять атрибуты. Это свойство называется видимостью
атрибута (attribute visibility)
Допустимы четыре значения этого параметра. Рассмотрим каждый из них в контексте примера.
Пусть у нас имеется класс Employee с атрибутом Address и класс Company.
Public (Общий, открытый) Атрибут виден всем остальным классам. Любой класс может про-
смотреть или изменить значение атрибута. В таком случае класс Company может изменить значе-
ние атрибута ^Address класса Employee. В соответствии с нотацией UML общему атрибуту
предшествует знак "+".
Private (Закрытый, секретный) Атрибут не виден никаким другим классам. Классу Employee бу-
дет известно значение атрибута Address, и он сможет редактировать его, но класс Company не
сможет его ни увидеть, ни изменить. При необходимости он должен попросить у класса Employee
разрешение на просмотр или изменение значения этого атрибута, что обычно делается с помо-
щью общих операций (см. ниже). В соответствии с нотацией UML закрытый атрибут обозначает-
ся знаком
488 Глава 6
Protected (Защищенный) Атрибут доступен только самому классу и его потомкам. Допустим,
что имеются два различных типа сотрудников: с почасовой оплатой и с окладом. Таким образом,
мы получаем классы HourlyEmp и SalariedEmp, являющиеся потомками класса Employee. Защи-
щенный атрибут Address можно просмотреть или изменить из классов Employee, HourlyEmp и
SalariedEmp, но не из класса Company. Нотация UML для защищенного атрибута — знак
Package or Implementation (Пакетный) Атрибут является общим, но только в пределах своего
пакета. Допустим, что атрибут Address имеет пакетную видимость. В таком случае он может быть
изменен из класса Company, только если этот класс находится в том же пакете. Данный тип види-
мости не обозначается никаким специальным значком.
_______Employee________
- Employee ID : integer = О
#SSN : string
# Salary : float
+ Address : string
+ City : string
+ State: string
+ Zip Code : long
Department: string
HireO
FireQ
PromoteO
DemoteQ
+ TransferQ
В общем случае атрибуты рекомендуется делать закрытыми или защищенными. Это позволяет луч-
ше контролировать сам атрибут и код. При использовании закрытых или защищенных атрибутов уда-
ется избежать ситуации, когда значение атрибута изменяется всеми классами системы. Вместо этого
логика изменения атрибута будет заключена в том же классе, что и сам атрибут. Задаваемые парамет-
ры видимости влияют на генерируемый код. Например, на рис. 6.3 приводится код Java, генерируе-
мый для описанного выше класса.
Рис. 6.3.
Атрибуты видимости
в генерируемом
коде
// Source File: Enployee.java
public class Employee {
private integer Enployee_ID - 8;
protected string SSH;
protected Float Salary;
public string Address;
public string City;
public string State;
public long 2ip_Code;
string Departnent;
Enployee() {
Qroseuid 36A95C440186
integer Hire() {
Qroseuid 36A95C5C0118
void Fire() {
Qroseuid 36A95C61003C
void Pronote() {
Qroseuid 36А95С6Э02ВС
void Denote() <
Qroseuid 36A95C66003C
public void TransFer() {
Атрибуты и операции
189
В среде Rose поддерживаются два набора нотаций видимости. Первый — это нотация UML (+,-,#)
для общих, закрытых и защищенных атрибутов соответственно. Вторая включает в себя четыре знач-
ка Rose, показанных в таблице 6.1.
Таблица 6.1. Пиктограммы видимости Rose
Пиктограмма Описание
Public
Private
Protected
Package or Implementation
На диаграмме Классов разрешается применять любую из этих нотаций. Ниже описывается воз-
можность переключения между ними. На рис. 6.4 приведен пример класса, видимость атрибутов ко-
торого соответствует нотации UML. На рис. 6.5 показан тот же класс, но уже в соответствии с
нотацией Rose. Нотации описания видимости Rose и UML перечислены в таблице 6.2.
Рис. 6.4.
Нотация видимости
UML
Sample Class
+ Public attribute
- Private attribute
# Protected attribute
Implementation altrbiule
+ Public operationQ
- Private operationQ
# Protected operationQ
Implementation operationQ
Рис. 6.5.
Нотация видимости
среды Rose
_______Sample Class________
<>Public attribute
^Private attribute
^Protected attribute
^►Implementation attrbiute
^Public aperationQ
^Private operationQ
^Protected operationQ
^Implementation operationQ
Таблица 6.2. Нотации видимости Rose и UML
Если вы хотите
Сделать атрибут доступным всем классам
Используйте
Тип видимости Public
Нотация UML Нотация Rose
Сделать атрибут доступным только для одного класса Тип видимости Private
Сделать атрибут доступным для класса и его потомков Тип видимости Protected #
Сделать атрибут доступным для всех классов
в одном пакете
Тип видимости Package Or
Implementation
<нет значка>
190
Главеt
Для задания значения видимости атрибута:
1. Щелкните правой кнопкой мыши на атрибуте в браузере. =
2. В открывшемся меню выберите пункт Open Specification (Открыть спецификацию). Появится
окно спецификации атрибута класса. =
3. В поле Export Control (Контроль экспорта) выберите видимость атрибута: Public, Protected;
Private или Implementation. По умолчанию видимость всех атрибутов установлена в Private. =
ИЛИ
1. Выделите атрибут на диаграмме Классов. —
2. Если для обозначения видимости вы используете нотацию UML, щелкните мышью на значке
или рядом с атрибутом. В появившемся списке выберите значение видимости. —
3. Если для обозначения видимости используется нотация Rose, щелкните мышью на значке видгезз
мости слева от имени атрибута. В появившемся списке значков выберите требуемую видимость.
Изменить нотацию для обозначения видимости можно следующим образом: z
1. В меню модели выберите пункт fools > Options (Инструменты > Параметры). z
2. Перейдите на вкладку Notation (Нотация). =
3. Установите флажок Visibility as icons (Отображать пиктограммы) для использования нотации
Rose или сбросьте его для применения нотации UML. :
И ВНИМАНИЕ
Изменение значения этого параметра приведет к смене нотации только для
новых диаграмм и не затронет уже существующие диаграммы.
Задание метода локализации атрибута
Метод локализации атрибута (containment) показывает, каким образом атрибут хранится в классе;
Возможны три значения этого параметра:
By value (По значению) Предполагается, что атрибут содержится внутри класса. Например,
если атрибут относится к типу string, эта строка будет содержаться внутри определения класса.
By reference (По ссылке) Предполагается, что атрибут локализован вне класса, но класс содер-
жит указатель на него. Например, у класса Timecard (Карточка табельного учета) может быть ат-:
рибут типа Employee (Сотрудник). Сам объект employee размещен вне объекта timecard. Таким
образом, этот атрибут является указателем на внешний объект employee.
Unspecified (Не определен) Метод локализации атрибута еще не определен. В этом случае при
генерации кода по умолчанию применяется значение By value этого параметра.
Задать метод локализации атрибута можно следующим образом:
1. Щелкните правой кнопкой мыши на атрибуте в браузере.
2. В открывшемся меню выберите пункт Open Specification (Открыть спецификацию) или Open
Standard Specification (Открыть стандартную спецификацию), если вы работаете с Rose 98i. По
явится окно спецификации атрибута класса.
3. Перейдите на вкладку Detail (Подробно).
4. Укажите значение метода локализации атрибута (containment): By value, By reference или Unspe-
cified. Значение этого параметра по умолчанию — Unspecified.
Определение статичного атрибута
При добавлении атрибута к классу каждый экземпляр класса получит свою собственную копию этого
атрибута. Рассмотрим, например, класс Employee. В процессе работы приложения мы можем создать:
Атрибуты и операции 191
экземпляры трех сотрудников: Джона Доу, Билла Джонса и Джейн Смит. Каждый из этих объектов по-
лучит свою собственную копию атрибута Salary.
Статичный атрибут (static) — это такой атрибут, который используется всеми экземплярами клас-
са. Если бы атрибут Salary был статичным, он был бы общим для Джона, Билл и Джейн.
На языке UML статичный атрибут помечают символом "$". В нашем примере Salary станет $Salary.
<<Entity>>
________Employee_________
^>Employee_ID : integer = О
*&>SSN : string
Salary : float
<?Address : string
OCity : string
^State : string
^Zip_Code : long
^►Department : string
T^HireQ
^FireQ
^PromoteQ
-^DemoteQ
^TransferQ
Сделать атрибут статичным можно следующим образом:
1. Щелкните правой кнопкой мыши на атрибуте в браузере.
2. В открывшемся меню выберите пункт Open Specification (Открыть спецификацию) или Open
Standard Specification (Открыть стандартную спецификацию), если вы работаете с Rose 98i. По-
явится окно спецификации атрибута класса.
3. Перейдите на вкладку Detail (Подробно).
4. Установите флажок Static, чтобы сделать атрибут статичным. Перед именем атрибута на диа-
грамме Классов появится символ
Определение производного атрибута
Производным (derived) называется атрибут, созданный из одного или нескольких других атрибутов. На-
пример, класс Rectangle (Прямоугольник) может иметь атрибуты Width (Ширина) и Height (Высота).
У него также может быть атрибут Area (Площадь), вычисляемый как произведение ширины и высоты.
Так как Area получается из этих двух атрибутов, он считается производным атрибутом.
В UML производные атрибуты помечают символом "/". В описанном примере атрибут Area следу-
ет написать как /Area.
rectangle
^length
<^width
^>/ area
Сделать атрибут производным можно следующим образом:
1. Щелкните правой кнопкой мыши на атрибуте в браузере.
2. В открывшемся меню выберите пункт Open Specification (Открыть спецификацию) или Open
Standard Specification (Открыть стандартную спецификацию), если вы работаете с Rose 98i. По-
явится окно спецификации атрибута класса.
3. Перейдите на вкладку Detail (Подробно).
4. Установите флажок Derived (Производный). Перед именем атрибута на диаграмме Классов поя-
вится символ "/".
192
Глава 6
Работа с операциями
Операцией называется связанное с классом поведение. Операция состоит из трех частей: имени, пара- i
метров и типа возвращаемого значения. Параметры — это аргументы, получаемые операцией "на вхо- |
де". Тип возвращаемого значения относится к результату действия операции. |
На диаграмме Классов можно показывать как имена операций, так и их параметры и типы возвра- |
щаемого значения. |
На некоторых диаграммах полезно показывать полную сигнатуру операций. Если же нужно упрос- |
тить диаграмму, лучше оставить только имена. |
В языке UML операции имеют следующую нотацию: j
Имя операции (аргумент! : тип данных аргумента!, аргумент2 : тип данных аргумента2, ...): тип |
возвращаемого значения |
Операции определяют ответственности классов. При идентификации операций и анализе клас-1
сов имейте в виду следующее: |
л -
• Относитесь с подозрением к любому классу, имеющему только одну или две операции. Возмож- |
но, класс написан совершенно правильно, но его следует объединить с каким-нибудь другим |
классом. |
• С величайшим подозрением относитесь к классу без операций. Как правило, класс инкапсули- |
рует не только данные, но и поведение. Класс без поведения лучше моделировать как один или j
несколько атрибутов. |
• С осторожностью относитесь к классу со слишком большим числом операций. Набор ответст- |
венностей класса должен быть управляем. Если класс очень большой, им будет трудно управ- |
лять. В такой ситуации лучше разделить класс на два меньших. |
В следующем разделе мы поговорим о выявлении операций, добавлении их к модели Rose и зада- j
нии их деталей. Рассмотрим также представление операций на диаграммах Классов. |
Выявление операций I
Создав диаграммы Последовательности и Кооперативные диаграммы, вы проделаете большую часть |
работы, требуемой для выявления операций. I
Следует рассмотреть четыре различных типа операций. I
Операции реализации I
Операции реализации (implementor operations) реализуют некоторую бизнес-функциональность. Такие |
операции можно найти, исследуя диаграммы Взаимодействия. Диаграммы этого типа фокусируются I
на бизнес-функциональности, и каждое сообщение диаграммы скорее всего можно соотнести с опера- I
цией реализации. I
Необходимо, чтобы каждую операцик> реализации можно было проследить до соответствующего I
требования. Это достигается на различных этапах моделирования. Операция выводится из сообще- I
ния на диаграмме Взаимодействия, сообщения выделяются из подробного описания потока событий, I
который создается на основе варианта использования, а последний — на основе требований. Возмож- I
ность проследить всю эту цепочку гарантирует, что каждое требование будет воплощено в коде, а I
каждый фрагмент кода реализует какое-то требование. I
Операции управления I
Операции управления (manager operations) управляют созданием и разрушением объектов. В эту катего- 1
рию попадают конструкторы и деструкторы классов. I
В среде Rose не требуется вручную создавать конструкторы и деструкторы классов. При генера-1
ции кода вам предоставляется возможность сделать это автоматически.
Операции доступа I
Атрибуты обычно бывают закрытыми или защищенными. Тем не менее другие классы иногда должны I
просматривать или изменять их значения. Для этого предназначены операции доступа (access operati- I
ons). I
Пусть, например, у нас имеется атрибут Salary класса Employee. Нам бы не хотелось, чтобы другие I
классы могли изменять этот атрибут. Я
Но мы добавляем к классу Employee две операции доступа: GetSalary и SetSalary. К первой из них, I
являющейся общей, могут обращаться остальные классы. Она получает значение атрибута Salary и I
Атрибуты и операции
193
возвращает его вызвавшему ее классу. Операция SetSalary также является общей, она помогает вы-
звавшему ее классу установить новое значение атрибута Salary. Эта операция может содержать любые
правила и условия проверки, которые необходимо выполнить, прежде чем изменить атрибут.
Такой подход дает возможность безопасно инкапсулировать атрибуты внутри класса, защитив их
от других классов, но все же позволяет осуществлять контролируемый доступ к ним.
Создание операций Get и Set (получения и изменения значения) для каждого атрибута класса явля-
ется промышленным стандартом.
Как и в случае операций управления, операции доступа не нужно вводить вручную. При генерации
кода Rose автоматически создаст операции Get и Set для каждого атрибута класса.
Вспомогательные операции
Вспомогательными (helper operations) называются такие операции класса, которые необходимы ему
для выполнения его ответственностей, но о которых другие классы не должны ничего знать. Это за-
крытые и защищенные операции класса.
Как и операции реализации, вспомогательные операции можно обнаружить на диаграммах После-
довательности и Кооперативных диаграммах. Часто такие операции являются рефлексивными сооб-
щениями.
Для идентификации операций выполните следующие действия:
1. Изучите диаграммы Последовательности и Кооперативные диаграммы. Большая часть сообще-
ний на этих диаграммах является операциями реализации. Рефлексивные сообщения будут
вспомогательными операциями.
2. Рассмотрите управляющие операции. Возможно, требуется добавить конструкторы и деструкто-
ры. Повторим еще раз, что это необязательно — Rose может сделать это за вас при генерации
кода.
3. Рассмотрите операции доступа. Для каждого атрибута класса, с которым будут работать другие
классы, необходимо создать операции Get и Set. Как и в случае управляющих операций, это нео-
бязательно делать вручную — Rose может создать указанные операции автоматически.
Добавление операций
Как и атрибуты, операции можно добавить в модель Rose на диаграмму Классов или в браузер. Можно
также воспользоваться окном спецификации класса.
После создания операции с ней можно связать какое-либо текстовое описание. Оно будет включе-
но в генерируемый код в качестве комментария. В описании операции обычно указывается ее назна-
чение, параметры и тип возвращаемого значения.
Для добавления операции к классу:
1. Щелкните правой кнопкой мыши на классе диаграммы Классов.
2. В открывшемся меню выберите пункт New Operation (Создать Операция).
3. Введите имя операции в формате
Имя (Аргумент! : Тип данных аргумента) : Тип возвращаемого значения
Например:
Add(X : Integer, Y : Integer) : Integer
Print(EmployeelD : Long) : Boolean
DeleteO : Long
4. Если вы хотите еще добавить операции, нажмите клавишу Enter и введите новые операции не-
посредственно на диаграмму Классов.
ИЛИ
1. Щелкните правой кнопкой мыши на классе в браузере.
2. В открывшемся меню выберите пункт New Operation (Создать Операция).
3. Под названием этого класса в браузере появится новая операция opname. Введите ее имя. В бра-
узере нельзя указывать аргументы операции и тип возвращаемого значения; как и в случае атри-
бутов, это делается на диаграмме Классов.
194
Глава 6
или
1. Откройте окно спецификации класса данной операции (или стандартное окно спецификации в
Rose 98i).
2. Перейдите на вкладку Operations (Операции). Здесь будут перечислены уже имеющиеся опера-
ции класса.
3. Щелкните правой кнопкой мыши где-нибудь внутри области операций, как показано на рис. 6.6.
Рис. 6.6.
Добавление новой
операции в окно
спецификации
класса
вClass Specification for Employee
Components ] Nested ] Files ] ER win | IDL [ Java
General | Detail Operations | Attiibules | Relations
P ^.how inherited
Ster.. Signature Class Return type
Hue Employee integer Fire Employee В Promote E mployee Demote Employee * Transfer Employee + Access GetSalaiyl Employee
Cancel
E^iowse Help
--- --- ----- ..
4. В открывшемся меню выберите пункт Insert (Вставить).
5. Введите имя новой операции в колонке Operation.
6. В соответствующих колонках задайте видимость, стереотип и тип возвращаемого значения
операции.
Для добавления к операции текстового описания:
1. Выделите операцию в браузере или на диаграмме Классов.
2. Введите текстовое описание в окне документации.
ИЛИ
1. Щелкните правой кнопкой мыши на операции в браузере.
2. В открывшемся меню выберите пункт Open Specification (Открыть спецификацию).
3. В области DocComment окна спецификации операции введите комментарии к операции.
ИЛИ
1. Откройте окно спецификации класса данной операции (или стандартное окно спецификации в
Rose 98i).
2. Перейдите на вкладку Operations (Операции).
3. Укажите там операцию.
4. Введите описание в окне документации.
Удаление операций
Удалить операцию можно с диаграммы Классов или из браузера. При удалении с диаграммы операция
автоматически удаляется из модели в целом.
При удалении операции следите за тем, чтобы модель оставалась согласованной. Возможно, вы
использовали операцию на диаграммах Последовательности и Кооперативных диаграммах. При
Атрибуты и операции 195
удалении она автоматически преобразуется в сообщение на этих диаграммах. Следовательно, нужно
обновить соответствующим образом диаграммы Последовательности и Кооперативные диаграммы.
Если требуется определить, какие диаграммы используют операцию:
1. Откройте окно спецификации класса этой операции (или стандартное окно спецификации в
Rose 98i).
2. В нижней части окна нажмите кнопку Browse(O63op) и выберите Show Usage (Показать исполь-
зование).
Для удаления операции класса:
1. Щелкните правой кнопкой мыши на операции в браузере.
2. В открывшемся меню выберите пункт Delete (Удалить).
ИЛИ
1. Выделите операцию на диаграмме Классов.
2. С помощью клавиши Backspace сотрите имя операции и ее сигнатуру.
3. Щелкните мышью где-нибудь в другом месте диаграммы.
4. Rose подтвердит удаление перед завершением этой процедуры.
ИЛИ
1. Откройте окно спецификации класса данной операции (или стандартное окно спецификации в
Rose 98i).
2. Перейдите на вкладку Operations (Операции).
3. Щелкните правой кнопкой на удаляемой операции.
4. В открывшемся меню выберите пункт Delete (Удалить),
5. Rose подтвердит удаление перед завершением этой процедуры.
Спецификации операции
В спецификациях операции можно задать ее параметры, тип возвращаемого значения и видимость.
Все спецификации операции можно просмотреть и изменить в окне спецификации операции, по-
казанном на рис. 6.7.
Открыть спецификацию операции можно следующим образом:
I
1. Щелкните правой кнопкой мыши на операции в браузере.
2. В открывшемся меню выберите пункт Open Specification (Открыть спецификацию).
Рис. 6.7.
Окно спецификации
операции
Operation Specification for GetSalary
Postconditions j Files | IDL | Java |
Genet al | Detail | Precondtions ] Semantics j
Name: GetS alary Class: Employee
Return class. ' ' " ' £how classes
Stereotype:
Export Control
Public C Protected C Private C Implementation
ccess
Documentation:
196
Глава 6
или
1. Откройте окно спецификации класса операции.
2. Перейдите на вкладку Operations (Операции).
3. Дважды щелкните мышью на соответствующей операции.
ВНИМАНИЕ В среде Rose 98i выполнение этих действий выводит другое окно специфика-
ции. Чтобы открыть окно, показанное на рис. 6.7, щелкните правой кнопкой
мыши на операции в браузере и в появившемся меню выберите пункт Open
Standard Specification (Открыть стандартную спецификацию).
Задание возвращаемого класса операции
Возвращаемым классом (return class) операции называется тип данных ее результата. Допустим, что у /
нас имеется операция Add, принимающая два параметра — строки X и Y. Операция преобразует стро* /
ки X и Y в значения типа integer, складывает их и возвращает целочисленный результат. Возвращае- {
мым классом операции Add будет integer.
При определении возвращаемого класса можно использовать либо встроенные типы языка про- /
граммирования (такие, как string, char или integer) либо определенные в вашей модели классы.
Для задания возвращаемого класса операции:
1. Щелкните правой кнопкой мыши на операции в браузере.
2. Откройте окно спецификации класса этой операции (или стандартное окно спецификации в
Rose 98i).
3. Укажите возвращаемый класс в раскрывающемся списке или введите свой тип.
ИЛИ
1. Выделите операцию на диаграмме Классов.
2. После имени операции введите двоеточие, а затем тип возвращаемого значения. Например, /
если операция Print возвращает целочисленные значения, то соответствующий класс будет вы- /
глядеть следующим образом: 7
rectangle
length
^width
area
а
^PrintQ : Integer
Назначение стереотипа для операции
Как и в случае других элементов модели, для классификации операций создаются их стереотипы. Как
упоминалось ранее, существуют четыре наиболее распространенных стереотипа операций:
Implementor (Реализация) Операции, реализующие некоторую бизнес-логику.
Manager (Управляющая) Конструкторы, деструкторы и операции управления памятью.
Access (Доступ) Операции, позволяющие другим классам просматривать или редактировать
атрибуты данного класса. Как правило, такие операции называют Оегсимя атрибута> или
8е1<имя атрибутах
Helper (Вспомогательная) Закрытые или защищенные операции, которые используются клас-
сом, но не видны другим классам.
Назначение операциям стереотипов не требуется для генерации кода. Тем не менее они облегча-
ют понимание модели. Кроме того, они помогают убедиться в том, что ни одна операция не была
пропущена.
Для назначения стереотипа операции:
1. Щелкните правой кнопкой мыши на операции в браузере.
2. Откройте окно спецификации класса этой операции (или стандартное окно спецификации
в Rose 98i).
11|Н11111|1||НН11||||||||||||1111|||||||11|||||||||||||||111||||||||Н111|||||||Ш ...... 17 н 1111111J ।' и 1111111111.11 и 11111111.11. |и 11111 н 11111111.111
Атрибуты и операции
197
3. В соответствующем раскрывающемся списке укажите стереотип или введите новый.
ИЛИ
1. Выделите операцию в браузере.
2. Чтобы отредактировать имя операции, один раз щелкните на ней мышью. Перед именем поя-
вятся символы "« »".
«Entity»
________Employee______
^EmployeeJD : integer = О
i^SSN: string
Salary: float
^Address : string
0City: string
^State: string
^Zip_Code: long
^Department: string
-^HireQ
-#FireQ
-^PromoteQ
^►DemoteO
♦TransferQ
♦«» GetSalaryQ
3. Внутри этих скобок введите стереотип:
«Entity»
________Employee________
^Employee_ID : integer = 0
'BpSSN : string
Salary : float
^Address: string
^City: string
^State: string
<>Zip Code: long
"^Department: string
^HireQ
-#FireQ
^PromoteQ
-^DemoteQ
♦TransferQ
♦«Access» GetSalaryQ
Задание видимости операций
Как уже упоминалось выше, видимость показывает, каким образом данные и поведение инкапсулиру-
ются в класс. Для операций допустимы четыре значения этого параметра (их визуальное представле-
ние на диаграмме указано в таблице 6.2).
Public (Общая) Операция доступна всем остальным классам. Любой класс может запросить
ее выполнение.
Private (Закрытая) Операция не доступна ни одному другому классу.
Protected (Защищенная) Доступ к операции разрешен только для самого класса и его потомков.
Package or Implementation (Пакетная) Операция доступна только классам данного пакета.
«Entity»
________Employee________
- EmployeeJD : integer = О
# SSN : string
Salary : float
+ Address: string
+ City : string
+ State: string
+ Zip_Code: long
Department: string
HireQ
FireQ
# PromoteQ
* DemoteQ
+ TransferQ
+ GetSalaryQ
198
Глава 6
Рис. 6.8.
Представление
видимости
операций в коде
public class Employee {
private integer Employee_ID = 0;
protected string SSN;
protected static Float Salary;
public string Address;
public string City;
public string State;
public long Zip_Code;
string Department;
Employee() {
Qroseuid 36A95C440186
integer Hire() {
4
Qroseuid 36A95C5C0118
void Fire() <
>
/»«
Qroseuid 36A95C61003C
protected void Promote() {
Qroseuid 36A95C6302BC
private void Demote() {
Qroseuid 36A95C66003C
public void TransFer() {
Qroseuid 36A96B620334
public void GetSalaryO {
> >l
В то время как атрибуты обычно бывают закрытыми или защищенными, операции могут быть об-
щими, закрытыми, защищенными или пакетными. Принимая решение по поводу видимости опера-
ции, подумайте, какие классы должны знать о ней. При генерации кода Rose учтет установленную
вами видимость. На рис. 6.8 приведен код, сгенерированный для показанного выше класса.
Как говорилось ранее, на диаграммах Классов разрешается использовать стандартную нотацию
UML или собственную нотацию Rose. Допускается переключение между ними. На рис. 6.4 изображен
класс, видимость элементов которого обозначена в соответствии со стандартом UML, а на рис. 6.5 —
тот же класс, но уже в нотации Rose. В таблице 6.2 перечислены все возможные параметры видимо-
сти и их обозначения, включая нотации обоих типов.
Назначить операции видимость можно следующим образом:
1. Щелкните правой кнопкой мыши на операции в браузере.
2. В открывшемся меню выберите пункт Open Specification (Открыть спецификацию) или Open
Standard Specification (Открыть стандартную спецификацию) в Rose 98i. Появится окно специ-
фикации операции.
3. Установите переключатель Export Control в нужное значение: Public, Protected, Private или Imp-
lementation. По умолчанию видимость всех операций установлена в Public.
ИЛИ
1. Выделите операцию на диаграмме классов.
2. Если вы работаете с нотацией UML, щелкните один раз на символе "+", или рядом с опера-
цией. В появившемся списке значков Rose выберите нужную видимость.
3. Если вы работаете с нотацией Rose, щелкните один раз на значке видимости Rose слева от име-
ни операции. В появившемся списке значков выберите нужную видимость.
Атрибуты и операции
199
Добавление аргументов к операции
Аргументы, или параметры, операции — это получаемые ею входные данные. Например, операция
Add может принимать два аргумента, X и Y, и складывать их.
Для каждого аргумента должны быть заданы имя и тип данных.
На диаграмме Классов аргументы и их типы указываются в скобках после имени операции:
«Entity»
___________________Employee
- Employee ID : integer = 0
# SSN: string
# Salary : float
+ Address : string
+ City: string
+ State : string
+ Zip_Code: long
Department: string
Hire(new_dept: String, new_salary : float): integer
FireQ
# PromoteQ
• DemoteQ
+ TransferQ
+ GetSalaryQ
При желании для аргументов можно задавать также их значения по умолчанию. В таком случае но-
тация UML будет иметь вид:
Имя операции (аргумент! : тип данных аргумента! - значение по умолчанию аргумента!) : тип
возвращаемого значения операции
«Entity»
Employee
- Employee_ID : integer = 0
# SSN : string
# Salary : float
+ Address : string
+ City : string
+ State : string
+ Zp_Code: long
Department. string
Hire(new_dept: String. new_salary : float = 50000): integer
FireQ
# PromoteQ
- DemoteQ
+ TransferQ
+ GetSalaryQ
При генерации кода Rose будет генерировать имя операции, ее аргументы, их типы данных и зна-
чения по умолчанию, а также тип возвращаемого значения. Если к операции было добавлено тексто-
вое описание, Rose создаст комментарии.
Для добавления аргумента к операции:
1. Откройте окно спецификации операции (или стандартное окно спецификации в Rose 98i).
2. Перейдите на вкладку Detail (Подробно).
3. Щелкните правой кнопкой мыши в области аргументов. В открывшемся меню выберите Insert
(Вставить).
4. Введите имя аргумента (см. рис. 6.9).
5. Щелкните мышью на колонке Туре (Тип) и введите тип данных аргумента.
6. При необходимости щелкните на колонке Default (По умолчанию) и введите значение аргумен-
та по умолчанию.
200
Главой
Для удаления аргумента операции:
Z Откроите окно спецификации операции (или стандартное окно спецификации в Rose 981).
2. Перейдите на вкладку Detail (Подробно).
Рис. 6.9.
Аргументы
операции
Operation Specification for Hire
Postconditions ] Files j IDL
General Detail Preconditions
Arguments:
Name Type../ _ Default
new^dept String
new_salary float
Protocol: J
Qualification:
Exceptions: j
Size: |
Tima
Concurrency
<* Sequential C Guarded ( Synchronous
__
OK.
Cancel
Browse •' Help
3. В списке аргументов щелкните правой кнопкой мыши на удаляемом аргументе. В открывшемся
меню выберите пункт Delete (Удалить).
4. Подтвердите удаление.
Определение протокола операции
Протокол операции описывает, какие операции и в каком порядке может выполнять клиент над объ-
ектом. Например, если операцию А нельзя запускать до завершения операции Б, это можно отметить
в поле протокола операции А.
Вводимая таким образом информация будет включена в генерируемый код в качестве коммента-
рия, но не повлияет на сам код. Экран протокола операции представлен на рис. 6.10.
Рис. 6.10.
Протокол операции
Operation Specification for Fire
Postconditions j Files | ID L | Java
G eneral Det ail | Preconditions | S emantics
Arguments:
Name
| Type j Default
i-
Protocol: | Нйе() must be run prior to executingFireO
Qualification:
Exceptions:
Concurrency
Sequential C Guarded C Synchronous
OK
Cancel
Apply
browse | Help
I I I I | | I I I I I I I I I I I I I I I I I I I I I I I I I I I | | । I I I I I I I I I I I I I I I I i I I I l I I I I I I I I I I I I I
Атрибуты и операции
201
Для задания протокола операции:
1. Откройте окно спецификации операции (или стандартное окно спецификации в Rose 98i).
2. Перейдите на вкладку Detail (Подробно).
3. Введите протокол в поле Protocol.
Определение уточнений операции
Поле Qualification (Уточнение) позволяет идентифицировать любые уточнения операции, связанные
с конкретным языком программирования. Все, что вы здесь введете, войдет в генерируемый код в ка-
честве комментария, но на сам код не повлияет.
Для ввода уточнения операции:
1. Откройте окно спецификации операции (или стандартное окно спецификации в Rose 98i).
2. Перейдите на вкладку Detail (Подробно).
3. Введите уточнения в поле Qualification.
Задание исключительных ситуаций операции
В поле Exceptions (Исключительные ситуации) можно перечислить исключительные ситуации для
данной операции (см. рис. 6.11). Эта информация войдет в качестве комментария в генерируемый
код, но на сам код не повлияет.
Рис. 6.11.
Исключительные
ситуации
ЕД Operation Specification for Promote
Postconditions I Files | IDL | Java
General Detail | Preconditions ] Semantics
Arguments:
Name Type Default
protocol |
Qualification: |
Exceptions: (throw Problemf'an error hasatur erf]
Size: j
-,? Ji. '-тл ~ ' -Sizr i':: .
/_ -x—
Concurrency
Sequential Guarded C' Synchronous
DK Cancel
Apply
Browse '•r
Help
Для указания исключительных ситуаций операции:
1. Откройте окно спецификации операции (или стандартное окно спецификации в Rose 98i).
2. Перейдите на вкладку Detail (Подробно).
3. Введите исключительные ситуации в поле Exeptions.
Определение размера операции
В поле Size можно указать предполагаемый объем памяти, требуемой операции во время ее выполне-
ния. Эта информация войдет в качестве комментария в генерируемый код.
Для указания размера операции:
1. Откройте окно спецификации операции (или стандартное окно спецификации в Rose 98i).
2. Перейдите на вкладку Detail (Подробно).
3. Введите размер в поле Size.
202
Глава?
Задание времени выполнения операции =
Время операции — это предполагаемое время, требуемое для выполнения операции. Указываемая иге
формация войдет в сгенерированный код в качестве комментария. z
Для задания времени операции: -
1. Откройте окно спецификации операции (или стандартное окно спецификации в Rose 98i).
2. Перейдите на вкладку Detail (Подробно).
3. Введите время в поле Time.
Задание параллелизма операции =
Значение переключателя Concurrency (Параллелизм) определяет поведение операции при наличии
нескольких потоков управления. Возможны три значения этого параметра: ^Е
Sequential (Последовательная) Предполагается, что операция будет выполняться правильно
при наличии только одного потока управления. Выполнение операции должно завершиться пе-
ред тем, как начнется выполнение другой операции. =
Guarded (Охраняемая) Предполагается, что операция будет выполняться правильно в нескол^Е
ких потоках управления, но только если взаимодействие классов гарантирует взаимное исключен
ние выполняемых операций. =
Synchronous (Синхронная) Предполагается, что операция будет правильно выполняться при—
наличии нескольких потоков. После обращения операция будет выполняться в одном потоке
управления вплоть до своего завершения. =
Другие операции могут в то же самое время выполняться в других потоках. Класс должен сам поза-
ботиться о решении проблем взаимных исключений, так что взаимодействие с другими классами не
требуется. - =
Сведения о параллелизме операции появятся в сгенерированном коде в качестве комментариев. —
Для задания параллелизма операции: ^Е
1. Откройте окно спецификации операции (или стандартное окно спецификации в Rose 98i). ^Е
2. Перейдите на вкладку Detail (Подробно). ^Е
3. Установите переключатель Concurrency (Параллелизм) в требуемое значение. —
Задание предусловий операции =
Предусловия — это такие условия, которые должны быть выполнены перед запуском операции. Лю-—
бые предусловия операции можно ввести на вкладке Preconditions (Предусловия) окна спецификаций^
операции (см. рис. 6.12). —
Рис. 6.12.
Предусловия
операции
вOperation Specification for Promote
Postconditions ] Files | IDL
General ] Detail Preconditions
t,.gr econditions:
^.Employ ее. Paling > 4
g|
Й
• :-:l*
ft &'
i.i
l ья №
Jjj r.......I.IL “ -Г
й t in (era chon |(Unspecified)
Java
j
OK. Cancel ЗГ"’/ firowse ▼ He'P
Атрибуты и операции
203
Предусловия не влияют на генерируемый код, но появляются в нем в качестве комментариев.
Если какая-либо диаграмма Взаимодействия иллюстрирует эти условия, можно ввести ее имя в ниж
ней части вкладки предусловий.
Для задания предусловий операции:
1. Откройте окно спецификации операции (или стандартное окно спецификации в Rose 98i).
2. Перейдите на вкладку Preconditions.
3. Введите предусловия в поле Preconditions.
Определение постусловий операции
Постусловиями называются такие условия, которые должны всегда выполняться после завершения
работы операции. Постусловия задаются на вкладке Postconditions (Постусловия) окна спецификации
операции (см. рис. 6.13).
Рис, 6,13.
Постусловия
операции
Д Operation Specification for Promote
General | Detail | Preconditions | Semantics
Postconditions | Pfes ] IDL | Java
Postconditions
Interaction diagram: | (Unspecified)
OK
Cancel
Hrowse ▼
Help
Как и предусловия, постусловия не влияют на генерируемый для этой операции код, но появляют-
ся в нем в качестве комментария. Если у вас имеется диаграмма Взаимодействия, иллюстрирующая
постусловия, вы можете ввести ее имя в нижней части вкладки.
Для указания постусловий операции:
1. Откройте окно спецификации операции (или стандартное окно спецификации в Rose 98i).
2. Перейдите на вкладку Postconditions.
3. Введите постусловия в поле Postconditions.
Определение семантики операции
В поле Semantics (Семантика) окна спецификации операции можно описать, что будет делать опера-
ция (см. рис. 6.14). Для передачи логики используется псевдокод или обыкновенное описание. Все,
что вы введете в этом поле, появится в готовом коде в виде комментария. Если какая-либо диаграмма
Взаимодействия иллюстрирует семантику операции, можно ввести имя диаграммы в нижней части
вкладки.
Для описания семантики операции:
1, Откройте окно спецификации операции (или стандартное окно спецификации в Rose 98i).
2. Перейдите на вкладку Semantics (Семантика).
3. В поле Semantics введите семантику операции.
204__________________________________________________ _________________________ Глава £
Рис. 6.14.
Семантика
операции
Operation Specification loi Promote
Postconditions j Files j IDL
G eneral ] D elail | Pieconditions
Semantics. _______________
..p .i ' Raise salary by 10%.
i-',; Set last promotion = Today(]
1 Change title.
и
I nteraction diagram: (LI nspecilied)
OK. Cancel I Appty Browse » Help
Связывание файлов и ссылок с операцией
Некоторая информация, касающаяся данной операции, может содержаться во внешнем файле или на
Web-странице. Например, это может быть документ с требованиями, подтверждающими необходи-
мость операции, или с описанием того, что она будет делать.
Rose позволяет связать файл или ссылку с операцией. Прикрепленный таким образом файл или
ссылку можно открыть непосредственно в браузере.
Прикрепить к операции файл можно следующим образом: :
1. Откройте окно спецификации операции (или стандартное окно спецификации в Rose 98i).
2. Щелкните правой кнопкой мыши где-нибудь внутри белого поля вкладки Files (Файлы).
3. В открывшемся меню выберите пункт Insert File (Вставить файл).
4. В диалоговом окне открытия файла укажите нужный вам файл.
5. Для завершения процедуры нажмите на кнопку Open (Открыть).
ИЛИ
1. Щелкните правой кнопкой мыши на операции в браузере.
2. В открывшемся меню выберите пункт New File (Создать >* Файл).
3. В диалоговом окне открытия файла укажите нужный вам файл.
4. Для завершения процедуры нажмите на кнопку Open (Открыть).
Для прикрепления к операции ссылки Интернета:
1. Откройте окно спецификации операции (или стандартное окно спецификации в Rose 98i).
2. Щелкните правой кнопкой мыши где-нибудь внутри белого поля вкладки Files (Файлы).
3. В открывшемся меню выберите пункт Insert URL (Вставить ссылку).
4. Введите адрес вашей ссылки.
ИЛИ
1. Щелкните правой кнопкой мыши на операции в браузере. —
2. В открывшемся меню выберите пункт New URL(Создать Ссылка). =
3. Введите адрес ссылки. .
Если нужно открыть прикрепленный файл: —-
1. Откройте окно спецификации операции (или стандартное окно спецификации в Rose 98i). —-
Атрибуты и операции ______________________________________________205
2. Дважды щелкните мышью на имени файла во вкладке Files (Файлы). Rose автоматически запус-
тит соответствующее приложение и загрузит в него требуемый файл.
ИЛИ
1. Найдите в браузере файл. Он находится под именем соответствующей операции.
2. Дважды щелкните мышью на имени файла. Rose автоматически запустит соответствующее при-
ложение и загрузит в него требуемый файл.
ИЛИ
1. Откройте окно спецификации операции (или стандартное окно спецификации в Rose 98i).
2. Щелкните правой кнопкой мыши на файле во вкладке Files (Файлы).
3. В открывшемся меню выберите пункт Open File/URL (Открыть файл/ссылку). Rose автомати-
чески запустит соответствующее приложение и загрузит в него требуемый файл.
ИЛИ
1. Найдите в браузере файл. Он находится под именем соответствующей операции.
2. Щелкните правой кнопкой мыши на имени файла.
3. В открывшемся меню выберите пункт Open (Открыть). Rose автоматически запустит соответст-
вующее приложение и загрузит в него требуемый файл.
Открыть прикрепленную ссылку на Web-страницу можно следующим образом:
1. Откройте окно спецификации операции (или стандартное окно спецификации в Rose 98i).
2. Дважды щелкните мышью на ссылке во вкладке Files (Файлы). Rose автоматически запустит ваш
Web-браузер и загрузит в него требуемую ссылку.
ИЛИ
1. Найдите ссылку в браузере. Она располагается под именем соответствующей операции.
2. Дважды щелкните мышью на имени ссылки. Rose автоматически запустит ваш Web-браузер и за-
грузит в него требуемую ссылку.
ИЛИ
1. Откройте окно спецификации операции (или стандартное окно спецификации в Rose 98i).
2. Щелкните правой кнопкой мыши на ссылке во вкладке Files (Файлы).
3. В открывшемся меню выберите пункт Open File/URL (Открыть файл/ссылку). Rose автомати-
чески запустит ваш Web-браузер и загрузит в него требуемую ссылку.
ИЛИ
1. Найдите ссылку в браузере. Она располагается под именем соответствующей операции.
2. Щелкните правой кнопкой мыши на ссылке.
3. В открывшемся меню выберите пункт Open (Открыть). Rose автоматически запустит ваш
Web-браузер и загрузит в него требуемую ссылку.
Изображение атрибутов и операций
на диаграммах Классов
Язык UML позволяет изображать на диаграммах Классов как все детали, так и только те, что нужны
вам. В Rose можно настроить диаграммы Классов так, чтобы:
• Показать все атрибуты и операции
• Скрыть операции
• Скрыть атрибуты
• Показать некоторые атрибуты или операции
• Показать операции вместе с их полными сигнатурами или только их имена
206
Глава 6
• Показать или скрыть видимость атрибутов и операций
л
♦ Показать или скрыть стереотипы атрибутов и операций
В типичном проекте создается большое количество диаграмм Классов. На одних основное внима-
ние уделяется связям, а детали атрибутов и операций практически не отображаются. Другие показы-
вают сами классы, но ничего не сообщают об операциях и атрибутах. На третьих могут быть
представлены все атрибуты и операции с наиболее подробной информацией о них. В среде Rose
один и тот же класс можно располагать на любом необходимом вам количестве диаграмм Классов.
А с помощью параметров можно задать отображение деталей описания атрибутов и операций.
Значения параметров по умолчанию задаются в окне, открываемом при выборе пункта меню
Tools Options (Инструменты Параметры).
Изображение атрибутов
Для данного класса на диаграмме можно:
• Показать все атрибуты
♦ Скрыть все атрибуты
• Показать только выбранные вами атрибуты
• Подавить вывод атрибутов
Подавление вывода атрибутов приведет не только к исчезновению атрибутов с диаграммы, но и к
удалению линии, показывающей место расположения атрибутов в классе. Проиллюстрируем разли-
чия между подавлением и сокрытием атрибутов. Ниже показан класс Employee, все атрибуты которо-
го были скрыты:
4- Hirefnewjjept: String, new_salary : float): integer
+ FireQ
# PromoteQ
- DemoteQ
1 + TransferQ
| + GetSalaryQ
i ЧЦ w Wv* W <«««»« » a a a » f a*a«a««aai
Теперь произведем подавление вывода атрибутов для того же класса:
<<Entfty>>
Employee
1 • V ™ BP* V V V ^F^F “ * ^P^F^P^^^P ^FM ^BM ^F^F^F^F^F ^F^F^F ф 4
Hire(new_dept: String, new_salary : float): integer
FireQ
# PromoteQ
- DemoteQ
+ TransferQ
+ GetSalaryQ
I
Существует два способа изменения параметров представления атрибутов на диаграмме. Можно
установить нужные вам значения для каждого класса индивидуально либо изменить значения требуе-
мых параметров по умолчанию до начала создания диаграммы Классов. Внесенные таким образом из-
менения влияют только на вновь создаваемые диаграммы.
Для вывода всех атрибутов класса:
1. Выделите класс на диаграмме.
2. Щелкните правой кнопкой мыши Откроется контекстнозависимое меню.
3. Выберите пункт Options >- Show All Attributes (Параметры >- Показать все атрибуты).
ИЛИ
1. Выделите класс на диаграмме.
2. В меню модели выберите пункт Edit >- Diagram Object Properties >- Show All Attributes
(Правка > Свойства объектов диаграммы >- Показать все атрибуты).
Если нужно показать только избранные атрибуты класса:
1. Выделите класс на диаграмме.
Атрибуты и операции
207
2. Щелкните правой кнопкой мыши на классе. Откроется контекстнозависимое меню.
3. Выберите пункт Options > Select Compartment Item.
4. В окне Edit Compartment укажите нужные вам атрибуты.
ИЛИ
1. Выделите класс на диаграмме.
2. В меню модели выберите пункт Edit Compartment.
3. В окне Edit Compartment укажите нужные вам атрибуты (см. рис. 6.15).
Рис. 6.15.
Выбор атрибутов
в окне Edit
Compartment
Edit Compartment
AS Items
Selected Items
Hire(new_dept: String, new jalary : floe *
Fire(] “
it Promoted
- Demoted
T rensfer() _
+ GetSalaryd................_
tt..S5 N.;...string.....................
+ Address: string
< r...........................I .►
- Employee JD : integer = 0
tt Salary: float
□ K Cancel Help
Для подавления вывода всех атрибутов класса диаграммы:
1. Выделите класс на диаграмме.
2. Щелкните правой кнопкой мыши на классе.
3. В контекстно-зависимом меню выберите пункт Options Suppress Attributes
(Параметры Подавить атрибуты).
ИЛИ
1. Выделите класс на диаграмме.
2. В меню модели выберите пункт Edit Diagram Object Properties Suppress Attributes
(Правка Свойства объектов диаграммы Подавить атрибуты).
Для изменения принятого по умолчанию вида атрибута:
1. В меню модели выберите пункт Tools Options (Инструменты Параметры).
«
2. Перейдите на вкладку Diagram (Диаграмма).
3. Для установки значений параметров отображения атрибутов по умолчанию воспользуйтесь
флажками Suppress attributes (Подавить атрибуты) и Show all attributes (Показать все атрибуты).
......"
ВНИМАНИЕ
Изменение значений по умолчанию повлияет только на новые диаграммы. Вид
существующих диаграмм Классов не изменится.
Изображение операций
Как и в случае атрибутов, имеется несколько вариантов представления операций на диаграммах:
• Показать все операции
• Показать некоторые операции
• Скрыть все операции
• Подавить вывод операций
208
Глава 6
Кроме того, вы можете:
• Показать только имя операции. На диаграмме будет представлено имя операции, но не aprv-
менты или тип возвращаемого значения.
• Показать полную сигнатуру операции. На диаграмме будет представлено не только имя опера
ции, но и все ее параметры, их типы данных и тип возвращаемого значения операции.
Для отображения всех операций класса:
1. Выделите класс на диаграмме.
2. Щелкните правой кнопкой мыши на классе.
3. В контекстно-зависимом меню выберите пункт Options Show All Operations
(Параметры Показать все операции).
ИЛИ
1. Выделите класс на диаграмме.
2. В меню модели выберите пункт Edit Diagram Object Properties Show All Operations
(Правка Свойства объектов диаграммы Показать все операции).
Если нужно показать только избранные операции класса:
1. Выделите класс на диаграмме.
2. Щелкните правой кнопкой мыши на классе.
3. В контекстно-зависимом меню выберите Options Select Compartment Items.
4. В окне Edit Compartment укажите нужные вам операции.
ИЛИ
1. Выделите класс на диаграмме.
2. В меню модели выберите пункт Edit Compartment.
3. В окне Edit Compartment укажите нужные вам операции (см. рис. 6.16).
Рис. 6.16.
Выбор операций
в окне Edit
Compartment
АН Hems
Selected Items
.ttPfpmoleH...............
Demoted
♦ t ransfer(]
+ GetSalaryf]
• Employee_ID : integer = 0
И SSN: siring
It Salary: float
+ Address. string
+ City: string
«All
* С.
Hire(new_dept: String, new_ salary : float);
Firef)
Help
Для подавления вывода всех операций класса диаграммы:
1. Выделите класс на диаграмме.
2. Щелкните правой кнопкой мыши на имени класса.
З. В контекстно-зависимом меню выберите Options Suppress Operations
(Параметры >• Подавить операции).
ИЛИ
1. Выделите класс на диаграмме.
2. В меню модели выберите пункт Edit >- Diagram Object Properties Suppress Operations
(Правка Свойства объектов диаграммы >* Подавить операции).
Если требуется показать на диаграмме Классов сигнатуру операции:
1. Выделите класс на диаграмме.
2. Щелкните правой кнопкой мыши на имени класса.
Атрибуты и операции
209Е
3. В контекстно-зависимом меню выберите Options >> Show Operation Signature (Параметры >-=
Показать сигнатуру операции). z
ИЛИ Е
1. Выделите класс на диаграмме. =
2. В меню модели выберите пункт Edit Diagram Object Properties Show Operation Signaturez
(Правка Свойства объектов диаграммы Показать сигнатуру операции). z
Для изменения принятого по умолчанию вида операции: =
1. В меню модели выберите пункт Tools >- Options (Инструменты >- Параметры). =
2. Перейдите на вкладку Diagram (Диаграмма). Е
3. Для установки значений параметров отображения операций по умолчанию воспользуйтесьз
флажками Suppress operations (Подавить операции), Show all operations (Показать все опера-
ции) и Show' operation signatures (Показать сигнатуры операции). z
^ВНИМАНИЕ
Изменение значений по умолчанию повлияет только на новые диаграммы. Видз
существующих диаграмм Классов не изменится. z
Изображение видимости
Видимость атрибутов и операций может принимать одно из следующих значений: общая, закрытая,
защищенная и пакетная. Первые три представляют на языке UML символами и соответст-=
венно. У пакетной видимости обозначения нет. z
При изображении видимости атрибутов и операций можно использовать также собственную нота-z
цию Rose. Нотации Rose и UML для показа параметров видимости представлены в таблице 6.3. =
Таблица 6,3. Нотации видимости Rose и UML =
Видимость
Public (общая)
Нотация UML
+
Нотация Rose
Package or Implementation (пакетная)
<значка нет>
Параметр видимости может быть скрыт.
Показать видимость атрибута или операции класса можно следующим образом:
И. Выделите класс на диаграмме.
2. Щелкните правой кнопкой мыши на имени класса.
3. В контекстно-зависимом меню выберите Options >- Show Visibility
(Параметры Показать видимость).
ИЛИ
1. Выделите класс на диаграмме. z
2. В меню модели выберите пункт Edit >• Diagram Object Properties >• Show Visibility z
(Правка >- Свойства объектов диаграммы Показать видимость). z
Для изменения принятого по умолчанию значения параметра видимости: z
1. В меню модели выберите пункт Tools Options (Инструменты Параметры). z
2. Перейдите на вкладку Diagram (Диаграмма). =
3. Для установки значения параметра отображения видимости по умолчанию воспользуйтесь =
флажком Show visibility (Показать видимость). =
210
Глава 6
Для переключения между нотациями видимости Rose и UML:
1. В меню модели выберите пункт Tools Options (Инструменты Параметры).
2. Перейдите на вкладку Notation (Нотация).
3. Для переключения между нотациями воспользуйтесь флажком Visibility as icons (Отображать
пиктограммы). Если он установлен, будет использоваться нотация Rose. В противном случае —
нотация UML. Изменение этого параметра повлияет только на новые диаграммы. Существую-
щие диаграммы Классов останутся прежними.
Изображение стереотипов
В среде Rose можно показывать или не показывать стереотипы атрибутов и операций. Стереотипы
выводятся в угловых скобках (« ») перед именем атрибута или операции:
«Entity»
__________________Employee
- EmployeeJD : integer = 0
# SSN : string
# Salary : float
+ Address : string
+ City : string
+ State : string
+ Zip_Code: long
Department: string
Hire(new_dept: String, new_salary : float): integer
FireQ
# PromoteQ
- DemoteQ
+ TransferQ
«Access» + GetSalaryQ
Для отображения стереотипов атрибутов и операций класса:
1. Выделите класс на диаграмме.
2. Щелкните правой кнопкой мыши на имени класса.
3. В контекстно-зависимом меню выберите Options Show Compartment Stereotypes.
ИЛИ
1. Выделите класс на диаграмме.
2. В меню модели выберите пункт Edit Diagram Object Properties Show Compartment
Stereotypes.
Для указания того, нужно ли отображать стереотипы по умолчанию:
1. В меню модели выберите пункт Tools Options (Инструменты Параметры).
2. Перейдите на вкладку Diagram (Диаграмма).
3. Для установки значения этого параметра воспользуйтесь флажком Show stereotypes
(Показать стереотипы).
ВНИМАНИЕ Изменение значений по умолчанию повлияет только на вновь создаваемые
диаграммы. Существующие диаграммы останутся прежними.
Атрибуты и операции
211
Соотнесение операций с сообщениями
Как уже упоминалось, каждое сообщение диаграммы Последовательности или Кооперативной диа-
граммы должно быть соотнесено с операцией. Если диаграмма Последовательности выглядит следую-
щим образом:
1: операция 1
то операция! будет расположена внутри класса В. При создании диаграмм Последовательности и Ко-
оперативных диаграмм вы можете использовать для сообщений не имена операций, а фразы на анг-
лийском языке (см. рис. 6.17).
Рис. 6.17.
Диаграмма После-
довательности,
на которой
сообщения
не соотнесены
с операциями
V fl dhonal Hose - OtderChapieiB mctt- (Sequence Diagiam: Entei new tNdef ZAdd<wdei with classes]
.If# Ум Bapcri lodi AddW Wrdow Ье(р
! DI^IHI S] k?|nj AlHtilnl я J MEiM
:Sele>per... | Order OplIonaF... Order Detail F... j Order Mane... ] Order >12 34
я
Salesperson
... [ TpDB»cficn Men...
PiduQpliDnsfoiT х Order Detail Form Qrdar Мвпмвг 1 Ofdej#1234: Transaction Manager
OrdBrQntmns | i.QrQprPeiail : Crde<Mqr [ Order TransaclionMgr
2 Open farm
1: Create new order
3: Enter order number, customer, order hems
4 Save I he order
rS: Save the order
j
6: Create new. blank order
7: Sat ihe order number, customer, order rtems
6: Se«e the order
9: Collect order informal юп
i
10: Save Ihe order information to the database
J
1
r
i
I
Однако при идентификации операций вам придется соотнести с ними соответствующие сообще-
ния. В результате диаграмма Последовательности изменится, как показано на рис. 6.18.
212
Глава
Рис. 6.18.
Диаграмма После-
довательности
после соотнесения
операций
с сообщениями
V National Но$₽ - UideiLhapleitt.mdl - (Sequence Oiagrart- Logical View 7 Add order ]
tSi £fa £dt УЙН growie Дери £оой Window
[ O(«|at l^lel al win I xlwlBlal -KI l£l@EJ|
;Saiop<f „. Order Optional.j Order Detail For,., Order ManagerOlder >1234 : Order |
Qrdur Ор1гогтвГ ofrri i Order Dalai! Form Order Manaaer Qfdgf W234 i
QidgrQtflivns J : OidarDstail Order
Tranaactian Ыалддаг
ХошашаМк
Tran*
actipn Mtn*j
er
BOE3
• k : 1 1 2 Oo»n( 1 >
I J
* J
г 3: Sul j ' *0 Nnitlnfaf) : F
j ¥ I * Sm()
I J TJ 5; SavaOrderf) U i I t ! I L № 6 Craaie( ] i' л 7 SatMn() i *i В £ i 1 i®veOfd»r( )
I t I [ J 4 J 1 b i I J г 9: Getlnfof) J< . .. .
T1
10: Cammil()
Соотнесение операций с сообщениями
на диаграммах Взаимодействия
Идентифицируя операции, изучите все сообщения на диаграммах Последовательности и Кооператив-
ных диаграммах. Прежде чем генерировать код, убедитесь в том, что каждое сообщение соотнесено с
соответствующей операцией.
ВНИМАНИЕ Операции можно соотнести с сообщениями, только если объекты диаграммы
Взаимодействия уже соотнесены с классами.
Соотнести сообщение с существующей операцией можно следующим образом:
1. Убедитесь, что получающий сообщение объект (сервер) уже соотнесен с классом.
2. Щелкните правой кнопкой мыши на сообщении диаграммы Последовательности или Коопера-
тивной диаграммы.
3. Появился список операций сервера (см. рис. 6.19).
4. Выберите операцию в списке.
Для удаления соответствия между сообщением и операцией:
1. Дважды щелкните мышью на сообщении диаграммы Последовательности или Кооперативной
диаграммы.
2. В поле имени удалите имя операции и введите новое сообщение.
Если требуется определить для сообщения новую операцию:
1. Убедитесь, что получающий сообщение объект (сервер) уже соотнесен с классом.
2. Щелкните правой кнопкой мыши на сообщении диаграммы Последовательности или Коопера-
тивной диаграммы.
3. Выберите пункт <new operation> (новая операция).
4. Введите имя и детальное описание новой операции. Параметры окна спецификации операции
рассматривались выше.
5. Нажмите на кнопку ОК, чтобы закрыть окно спецификации операции и добавить новую опера-
цию.
Атрибуты и операции
213
Рис. 6.19.
Соотнесение
сообщения
с существующей
операцией
V national Нояе - thlciLidpterU.mtil - [Sequence Ditjiani: Lntcf iew k4*i / xldoidet wdhclasseil
0 flport £ooh AdtHnt Window
: S*la"ay. f Qrder OpilontF- Order Delall F... .Order M»na... Order fl 234:Цгеиееcaion Men— |
Salesperson
OtdtfCftUn^a^a^H^.'L^L, £l(rta'.wd3J.T>j»r'pw,„„u-Vlnr.Maft4pa. ,
Form; Order | | ; Ord Er Mgr | Qutfil | | Тдгг.я icliony.gr }
___ЯПП
4^*1
1г>4^йд!'ддя1--
| Грир, Order
peofcabD.
3' Enter order number.
1, Create new ofd«fi
d Save the order
lhe order;
fi .Cteeie new,blank о rrier
7 Sei lhe order number.
В Sm lhe order
9 C llotecdof eihhoati гол
10. Saw lhe order inform alio
6. Щелкните правой кнопкой мыши на сообщении.
7. Выберите новую операцию в появившемся списке.
Если нужно проверить, все ли сообщения диаграммы соотнесены с операциями:
1. В меню модели выберите пункт Report >* Show Unresolved Messages
(Отчет >* Показать свободные сообщения).
2. Появится список всех сообщений, которые еще не были соотнесены с операциями
(см. рис. 6.20).
Рис. 6.20.
Просмотр
свободных
сообщений
Show Unresolved Messages
: j'i Sequence tagra
!fa ve Ine am^t nte new older / Add о
jEnter order number, customer, order ilemsnn Sequence Diagrai
S 5ve the order n Sequence Diagram: Enter new order / Add □
1 £ reale new order in Sequence Diagram: E nler new order / Ad (
Пре з form in Sequence Diagram; Enter new order / Add order
Save lhe order in Sequence Diagram: Enter new order / Add о
: Create new, blank order in Sequence Diagram Enter new (de v
в J 4 J • «I M J-Л _>
f Browse
м,а ьььаьч i i • i • “ “ X
Cancel
Упражнение
В предыдущих упражнениях мы создали несколько операций для классов (см. главу 4) и нанесли клас-
сы на диаграмму (см. главу 5). В этом упражнении к описаниям операций будут добавлены детали,
включая параметры и типы возвращаемых значений, и определены атрибуты классов.
Постановка проблемы
После того как Карен разработала диаграмму Классов для варианта использования "Ввести новый за-
каз", она начала заполнять ее. В качестве языка программирования был выбран C++, что позволило до-
бавить к классам параметры операций, типы данных и типы возвращаемых значений.
Для определения атрибутов Карен вновь обратилась к потоку событий. В результате к классу Or-
der диаграммы Классов были добавлены атрибуты Order Number (Номер заказа) и Customer Name
(Имя клиента). Карен просмотрела список заказываемых товаров. Так как в одном заказе можно ука-
зать большое количество товаров и у каждого из них имеются свои собственные данные и поведение,
Карен решила моделировать товары как самостоятельные классы, а не как атрибуты класса Order.
214
Глава 6
Рис. 6.21.
Модификация
диаграммы После-
довательности
Чтобы привести модель в соответствие с новыми идеями, пришлось обновить диаграмму Последо:
вательности (см. рис 6.21).
В этот момент Боб решил изменить требования:
— Нам надо отслеживать дату заказа и дату его выполнения. Кроме того, так как у нас появились
новые поставщики, слегка изменилась процедура инвентаризации.
Сначала Карен документировала новые требования относительно дат и рассмотрела изменения и
процедуре инвентаризации "на высоком уровне". Поскольку в данный момент она работала над вари-
антом использования "Ввести новый заказ", ее больше всего интересовало, как процедурные измене-
ния повлияют на этот вариант использования.
Работа с вариантом использования "Провести инвентаризацию" была запланирована на следую-
щий месяц, тогда она и позаботится о деталях соответствующих процедур. Оказалось, что изменения
чрезвычайно сильно повлияют на вариант использования "Провести инвентаризацию", но совсем не
отразятся на варианте использования "Ввести новый заказ".
Новые требования, связанные с датами, привели к тому, что пришлось добавить два атрибута в
класс Order. После этого модель опять стала соответствовать последним предъявленным к системе
требованиям.
Добавление атрибутов и операций
Добавим атрибуты и операции к классам диаграммы Классов "Ввод нового заказа". При этом использу-
ем специфические для языка особенности. Установим параметры так, чтобы показывать все атрибу-
ты, все операции и их сигнатуры. Применим нотацию UML.
Этапы выполнения упражнения
Настройка
1. В меню модели выберите пункт Tools >- Options (Инструменты >> Параметры).
2. Перейдите на вкладку Diagram.
3. Убедитесь, что флажок Show visibility (Показать видимость) установлен.
4. Убедитесь, что флажок Show stereotypes (Показать стереотипы) установлен.
5. Убедитесь, что флажок Show operation signatures (Показать сигнатуры операций) установлен.
6, Убедитесь, что флажки Show all attributes (Показать все атрибуты) и Show all operations (Пока-
зать все операции) установлены.
Атрибуты и операции ____________________________________________ 215
7. Убедитесь, что флажки Suppress attributes (Подавить атрибуты) и Suppress operations
(Подавить операции) сброшены.
8. Перейдите на вкладку Notation (Нотация).
9. Убедитесь, что флажок Visibility as icons (Отображать пиктограммы) сброшен.
Добавление нового класса
1. Найдите в браузере диаграмму Классов варианта использования "Ввести новый заказ".
2. Дважды щелкнув мышью на диаграмме, откройте ее.
3. Нажмите кнопку Class панели инструментов.
4. Щелкните мышью внутри диаграммы, чтобы поместить туда новый класс.
5. Назовите его Orderitem.
6. Назначьте этому классу стереотип Entity.
7. В браузере перетащите класс в пакет Entities.
Добавление атрибутов
1. Щелкните правой кнопкой мыши на классе Order.
2. В открывшемся меню выберите пункт New Attribute (Создать атрибут).
3. Введите новый атрибут:
OrderNumber : Integer
t
4. Нажмите клавишу Enter.
5. Введите следующий атрибут:
CustomerName : String.
6. Повторив шаги 4 и 5, добавьте атрибуты:
OrderDate : Date
OrderFillDate : Date
7. Щелкните правой кнопкой мыши на классе Orderitem.
8. В открывшемся меню выберите пункт New Attribute (Создать атрибут).
9. Введите новый атрибут:
ItemID : Integer.
10. Нажмите клавишу Enter.
11. Введите следующий атрибут:
ItemDescription : String.
Добавление операций к классу Orderitem
1. Щелкните правой кнопкой мыши на классе Orderitem.
2. В открывшемся меню выберите пункт New Operation (Создать операцию).
3. Введите новую операцию:
Create.
4. Нажмите клавишу Enter.
5. Введите следующую операцию:
Setinfo
6. Нажмите клавишу Enter.
7. Введите операцию:
Getlnfo
Подробное описание операций с помощью диаграммы Классов
1. Щелкнув мышью на классе Order, выделите его.
2. Щелкните на этом классе еще раз, чтобы переместить курсор внутрь.
3. Отредактируйте операцию Create(), чтобы она выглядела следующим образом:
CreateO : Boolean
216
Глава 6
4. Отредактируйте операцию Setlnfo():
Setlnfo(OrderNum : Integer, Customer : String, OrderDate : Date, FillDate : Date) .* Boolean
5. Отредактируйте операцию Getlnfo():
Getlnfo() : String
Подробное описание операций с помощью браузера
1. Найдите в браузере класс Orderitem.
2. Раскройте этот класс, щелкнув на значке "+" рядом с ним. В браузере появятся атрибуты и операции
класса.
3. Дважды щелкнув мышью на операции Getlnfo(),OTKponTe окно ее спецификации:
Operation Specification for Getlnfo
Semantics
General
] Postconditions ]
I Detail
Fil
s IDL
Preconditions
Нате:
Return class:
|G etlnlo
| String
Class: Orderltem
P Show classes
Stereotype:
Export Control
Public Protected Private Implementation :
Hocumentation:
Cancel
Apply
Browse *
Help
4. В раскрывающемся списке Return class (Возвращаемый класс) укажите String.
5. Щелкнув мышью на кнопке ОК, закройте окно спецификации операции.
6. Дважды щелкните в браузере на операции Setlnfo() класса Orderitem, чтобы открыть окно ее
спецификации.
7. В раскрывающемся списке Return class укажите Boolean.
8. Перейдите на вкладку Detail (Подробно).
9. Щелкните правой кнопкой мыши в области аргументов, чтобы добавить туда новый параметр:
нOperation Specification for Setinfo
Semantics ]
General
Arguments:
Postconditions ]
D etail
Files IDL
Preconditions
Name
Default
Size; j
lime: |
Concurrency
Sequential f* Guarded Synchronous
Cancel j
Browse ▼
Атрибуты и операции
217
10. В открывшемся меню выберите пункт Insert (Вставить). Rose добавит аргумент под названием argname.
11. Щелкнув один раз на этом слове, выделите его и измените имя аргумента на ID.
12. Щелкните на колонке Туре (Тип). В раскрывающемся списке типов выберите Integer.
13. Щелкните на колонке Default (По умолчанию), чтобы добавить значение аргумента по умолчанию. Вве-
дите число 0.
и
14. Нажав на кнопку ОК, закройте окно спецификации операции.
15. Дважды щелкните на операции Create() класса Orderitem, чтобы открыть окно ее спецификации.
16. В раскрывающемся списке Return class укажите Boolean.
17. Нажав на кнопку ОК, закройте окно спецификации операции.
Подробное описание операций
1. Используя браузер или диаграмму Классов, введите следующие сигнатуры операций класса
OrderDetail:
Open() : Boolean
SubmitlnfoO : Boolean
Save() : Boolean
2. Используя браузер или диаграмму Классов, введите сигнатуру операций класса OrderOptions:
Create() : Boolean
3. Используя браузер или диаграмму Классов, введите сигнатуру операций класса OrderMgr:
SaveOrder(OrderlD : Integer) : Boolean
4. Используя браузер или диаграмму Классов, введите сигнатуры операций класса TransactionMgr:
SaveOrder(OrderlD : Integer) : Boolean
Commit() : Integer
Связи
Добавление в модель Rose связей ассоциации,
зависимости, агрегации и обобщения
с помощью диаграмм Классов
Добавление имен связей, стереотипов,
ролевых имен, статичных и дружественных
связей, квалификаторов, элементов связи
и ограничений
Задание множественности, управления
экспортом и метода включения
220
Глава!
JL ассмотрев классы, их атрибуты и операции, мы приступили к изучению того, как классы взаимо-|
действуют друг с другом на диаграммах Взаимодействия. Теперь перейдем к описанию связей между!
классами. t
Связь представляет собой семантическую взаимосвязь между классами. Она позволяет классу узн2Н|
вать об атрибутах, операциях и связях другого класса. Иными словами, чтобы на диаграмме Последов!
вательности или Кооперативной диаграмме один класс мог послать сообщение другому, между нимк|
должна существовать связь.
В этой главе рассматриваются различные типы связей, устанавливаемых между классами или пак
тами. Описываются назначение связей каждого типа и добавление их к модели Rose.
Связи
В этом разделе содержится описание четырех типов связей, добавляемых к модели Rose, и рассказы!
вается о том, где и как их искать. К данному моменту большая часть работы по выявлению связей уже;
проделана. ' ]
В этой главе связи и методы их добавления к диаграмме описываются более формально. Связи1
представляют на диаграммах Классов. 1
Типы связей
Существуют четыре типа связей, которые могут быть установлены между классами: ассоциации, зави-
симости, агрегации и обобщения.
Ассоциация (association) — это семантическая связь между классами. Ее рисуют на диаграмме класй
сов в виде обыкновенной линии (см. рис. 7.1). |
&
Связь ассоциации
•к * J
TS
После того как классы связали ассоциацией, они могут передавать друг другу сообщения на дин
грамме Последовательности или Кооперативной диаграмме. Ассоциации могут быть двунаправле|Я
ными (рис. 7.1) или однонаправленными. На языке UML двунаправленные ассоциации изображаюти
виде простой линии без стрелок или со стрелками с обеих сторон. На однонаправленной ассоциации
ставят только одну стрелку, показывающую направление связи. |
После определения ассоциации Rose помещает в классы соответствующие дополнительные атрия
буты. Например, если между классом Дом и классом Жилец установлена связь ассоциации, класс Дом!
получит атрибут "жилец”, чтобы знать, кто его владелец, а класс Жилец — атрибут "дом", что позволит!
жильцу определить, каким домом он владеет. 1
Связь зависимости (dependency) также отражает связь между классами, но делает это несколько ина-1
че. Зависимости всегда однонаправленные, они показывают, что один класс зависит от определений,!
сделанных в другом. Специальные атрибуты для классов, связанных зависимостью, не создаются. Так,|
если от класса Жилец к классу Дом проведена связь зависимости, а не ассоциации, Rose не генериру!
ет каких-то специальных атрибутов внутри этих классов. Тем не менее класс Жилец будет зависеть оЯ
сделанных в классе Дом определений. Зависимости изображают в виде стрелки, проведенной пунк-1
тарной линией (см. рис. 7.2). я
Связи зависимости
Клиент
Сервер
Агрегация (aggregations) представляет собой более тесную форму ассоциации. Агрегация - этен
связь между целым и его частями. Например, у вас может быть класс Автомобиль, а также классы Двин|
гатель, Покрышки и классы для других частей автомобиля. В результате объект класса Автомобиль бу|
дет состоять из объекта класса Двигатель, четырех объектов Покрышек и т.д. Агрегацию изображают
в виде линии с ромбиком у класса, являющегося целым (см. рис. 7.3). I
Связи
221
Л'
Связь агрегации
С помощью обобщений (generalization) показывают связи наследования между двумя классами. Боль-
шинство объектноориентированных языков непосредственно поддерживает концепцию наследова-
ния. Она позволяет одному классу наследовать все атрибуты, операции и связи другого. На языке
[ UML связь наследования называют обобщением и изображают в виде стрелки от классапотомка к
f классу-предку (см. рис. 7.4).
Связь обобщения
Выявление связей
j Для выявления связей следует изучить созданные к этому моменту элементы модели. Почти вся ин-
; формация о связях уже описана вами на диаграммах Последовательности и Кооперативных диаграм-
мах. Просмотрите их еще раз, и вы найдете ассоциации и зависимости. Агрегации и обобщения
можно обнаружить, изучив имеющиеся классы.
} Для обнаружения связей сделайте следующее:
1. Начните с изучения диаграмм Последовательности и Кооперативных диаграмм. Если класс А
посылает сообщение классу В, между этими классами должна быть установлена связь. Как пра-
вило, обнаруживаемые таким способом связи — это ассоциации или зависимости.
2. Исследуйте ваши классы на предмет наличия связей целое-часть. Любой класс, состоящий из
других классов, может принимать участие в связях агрегации.
; 3. Исследуйте классы на предмет связей обобщения. Постарайтесь найти все классы, у которых
есть несколько типов или вариантов. Например, у вас может быть класс Employee (Сотрудник).
В вашей компании имеются два типа сотрудников — получающих почасовую оплату и оклад. Это
значит, что вам нужно создать классы HourlyEmp и SalariedEmp, наследующие от класса Emp-
loyee. Общие для всех сотрудников атрибуты, операции и связи следует поместить в класс Emp-
loyee. Атрибуты, операции и связи, уникальные для сотрудников какого-то типа, необходимо
поместить в классы HourlyEmp и SalariedEmp.
t 4. Изучите классы еще раз и найдите остальные связи обобщения. Постарайтесь обнаружить
такие классы, которые имеют много общего. В частности, у вас могут быть классы CheckingAc-
count (Счет до востребования) и SavingsAccount (Сберегательный счет). Их данные и поведе-
ние сходны. Для общих элементов двух классов можно создать третий класс Account (Счет).
Будьте осторожны, работая с классами, у которых слишком много связей. Одной из особенностей
foponio спроектированного приложения является сравнительно небольшое количество связей в сис-
теме. Класс, у которого много связей, должен знать о большом числе других классов системы. В резу-
ьтате его трудно будет использовать во второй раз. Кроме того, сложно будет вносить изменения в
Новое приложение. Если изменится любой из классов, это может повлиять на данный.
222
Глава?
Ассоциации
Ассоциация — это семантическая связь между классами. Ассоциация дает классу возможность узнавать
об общих атрибутах и операциях другого класса. Например, на рис. 7.5 показана двунаправленная ас-
социация между классами Дом (House) и Жилец (Person).
Рис. 7.5.
Связь ассоциации
Класс Жилец знает об общих атрибутах и операциях Дома, а Дом — об общих атрибутах и операци-
ях Жильца. Таким образом, на диаграммах Последовательности Дом может посылать сообщения Жи-
льцу, и наоборот.
:Дом
.Жилец
1:Сообщение1
1:Сообщение2
В приведенном примере связи двунаправленные. Однако ассоциации можно сделать и однонап-
равленными. Такие связи легче создавать, ими легче управлять, и с их помощью можно найти классы,
допускающие повторное использование. На рис. 7.6 показана однонаправленная ассоциация.
Рис. 7.6.
Связь
однонаправленной
ассоциации
В этом случае Жилец знает об общих атрибутах и операциях Дома, но Дом не знает об атрибутах и
операциях Жильца. Сообщения на диаграммах Последовательности и Кооперативных диаграммах
Связи
Направление ассоциации можно определить, изучая диаграммы Последовательности и Коопера-
тивные диаграммы. Если все сообщения на них отправляются только Жильцом и принимаются толь-
ко Домом, но не наоборот, между этими классами существует однонаправленная связь. Если хотя бы
одно сообщение идет в обратную сторону, ассоциация должна быть двунаправленной.
Однонаправленные связи позволяют выявить классы, являющиеся кандидатами на повторное
использование. Если ассоциация двунаправленная, каждый класс-участи и к должен знать о другом, и
потому ни один из них не может применяться без другого. Теперь допустим, что имеется однонаправ-
ленная ассоциация между Жильцом и Домом. Жилец должен знать о Доме и потому не может исполь-
зоваться без него. Однако Дом не должен знать о Жильце и потому допускает самостоятельное
повторное использование. Класс с большим количеством исходящих однонаправленных связей по-
вторно использовать трудно, а класс, все связи которого входящие, — чрезвычайно легко (см.
рис. 7.7).
Рис. 7.7.
Возможность
многократного
использования
классов
яри наличии
однонаправленной
ассоциации
Легко использовать
несколько раз
Трудно использовать
несколько раз
При генерации кода для двунаправленной ассоциации создаются дополнительные атрибуты у каж-
дого класса. В нашем примере Rose поместит атрибут класса Жилец внутри Дома, а атрибут класса
Дом внутри Жильца. На рис. 7.8 приведен код, сгенерированный для этих двух классов.
Рис. 7.8.
Код,
сгенерированный
для
двунаправленной
ассоциации
House, java ' Notepad
PeuofLtava - Notepad
File Edit Search Help
File Edit Search Help
// Source File: House.jaua
public class House (
public Person mPerson;
House() {
>
Person() {
Source File: Person.jaua
public class Person {
public House mHouse;
l-lolxl
224
Глава?
В случае однонаправленной ассоциации атрибут’ Дом будет помещен внутри Жильца, но не наобо
рот. На рис. 7.9 приведен код для однонаправленной ассоциации.
Рис. 7.9.
Код, созданный для
однонаправленной
ассоциации
Personjava -Notepad
& House Java Notepad esc
File Edit Search Help
H Source File: Person.jaua
public class Person {
public House njlouse;
Person() {
>
>
File Edit Search Help
// Source File: House.jaua
public class House {
House() {
>
Ассоциации могут быть рефлексивными. Рефлексивная ассоциация предполагает, что один экзем-
пляр класса взаимодействует с другими экземплярами этого же класса. Рассмотрим класс Жилец.
Один человек может быть родителем нескольких других людей. Поскольку все они являются взаи-
модействующими друг с другом экземплярами класса Жилец, мы получаем рефлексивную ассоциацию
(см. рис. 7.10).
Рис. 7.9.
Рефлексивная
ассоциация
Создание ассоциаций
В среде Rose ассоциации создают непосредственно на диаграмме Классов. Панель инструментов диа-
граммы Классов содержит кнопки для построения как одно-, так и двунаправленных ассоциаций.
Если вы создали двунаправленную ассоциацию, то ее впоследствии можно преобразовать в одно-
направленную, изменив возможности навигации (см. ниже).
Для создания двунаправленной ассоциации на диаграмме Классов:
1. Нажмите кнопку Association (Ассоциация) панели инструментов.
ИЛИ
1. В меню модели выберите пункт Tools Create Association (Инструменты Создать >> Ассо-
циация).
2. Проведите мышью линию ассоциации от одного класса к другому.
Для создания на диаграмме Классов однонаправленной ассоциации:
1. Нажмите кнопку Unidirectional Association (Однонаправленная ассоциация) панели инстру-
ментов.
Связи
225
или
1. В меню модели выберите пункт Tools >* Create Unidirectional Association (Инструменты >>
Создать Однонаправленная ассоциация).
2. Проведите мышью линию ассоциации от одного класса к другому.
Для задания возможности навигации по ассоциации:
1. Щелкните правой кнопкой мыши на том конце связи, на котором нужно показать стрелку.
2. В открывшемся меню выберите пункт Navigable (Навигация).
ИЛИ
1. Откройте окно спецификации требуемой связи.
2. Перейдите на вкладку Role Detail (Роль, детали) для того конца ассоциации, для которого нужно
подключить возможность навигации.
3. Измените возможность навигации с помощью флажка Navigable.
Для создания на диаграмме Классов рефлексивной ассоциации:
1. Нажмите кнопку Association (Ассоциация) панели инструментов диаграммы.
ИЛИ
1. В меню модели выберите пункт Tools >- Create Association
(Инструменты Создать Ассоциация).
2. Проведите линию ассоциации от класса до какого-нибудь места вне класса.
3. Отпустите кнопку мыши.
4. Проведите линию ассоциации обратно к классу.
Для добавления к ассоциации текстового описания:
1. Дважды щелкните мышью на ассоциации.
2. Перейдите на вкладку General (Общие).
3. Введите описание в поле документации.
ИЛИ
1. Выделите ассоциацию.
2. В меню модели выберите пункт Browse Specification (Обзор Спецификация).
3. Перейдите на вкладку General (Общие).
4. Введите описание в поле документации.
Для преобразования связи в ассоциацию:
1. Выделите требуемую связь.
2. В меню модели выберите пункт Edit Change Into Association
(Правка >► Преобразовать в Ассоциация).
Удаление ассоциаций
Возможны два способа удаления ассоциации. При удалении с одной диаграммы ассоциация по-преж-
нему будет существовать на других диаграммах Классов. В этом случае Rose будет знать о наличии ассо-
циации и отслеживать ее "за сценой".
При удалении ассоциации из модели связь будет удалена со всех диаграмм Классов и перестанет
отслеживаться Rose.
Для удаления ассоциации только с одной диаграммы:
1. Выделите ассоциацию.
2. Выберите пункт Edit Delete (Правка Удалить) или нажмите клавишу Delete.
ВНИМАНИЕ Удаление ассоциации с диаграммы не удаляет ее из модели.
226
Га
Для удаления ассоциации из модели:
1. Выделите ассоциацию.
2. В меню модели выберите пункт Edit Delete from Model (Правка Удалить из модели) илина^
жмите комбинацию клавиш CTRL+D. j
или
1. Откройте окно спецификации для одного из участвующих в ассоциации классов. j
1
2. Перейдите на вкладку Relations.
3. Щелкните на отношении правой кнопкой мыши.
4. В открывшемся меню выберите пункт Delete. :
Зависимости
Связь зависимости показывает, что один класс ссылается на другой. Таким образом, изменения во вто-z
ром классе повлияют на первый. При генерации кода для классов, между которыми установлена связь:
зависимости, Rose не добавляет к ним никаких новых атрибутов. Предположим, что между классами:
Жилец и Дом существует связь зависимости. Ее изображают пунктирной линией (см. рис. 7.11). :
Рис. 7.11.
Связь зависимости
При генерации кода для этих классов к ним не добавляются новые атрибуты (см. рис. 7.12), но
здаются специфические для языка операторы, необходимые для поддержки связи. Например, на язьй=
ке C++ в код войдут операторы #include. =
Делается предположение, что существуют другие способы извещения Жильца о существований^
Дома. Направление стрелки показывает, что класс Жилец зависит от класса Дом. Иначе говоря, сущё£
ствует диаграмма Последовательности или Кооперативная диаграмма, на которой Жилец посылаем
Дому сообщение. Если бы между ними была обыкновенная ассоциация, Дом был бы атрибутом класса^
Жилец, и для передачи сообщения Дому класс Жилец должен был бы только взглянуть на свой собст^
венный атрибут, ~
Рис. 7.12.
Г операция кода для
связи зависимости
House, java • Notepad
Pei son. java - Notepad H® E3
File £dit Search Help
// Source File: House.jaua
public class House {
House() {
>
>
File £сй Search Help
// Source file: Person.jaua
public class Person {
Person() <
>
>
Для зависимостей, однако, такой механизм не реализуется.
Класс Жилец должен узнавать о Доме каким-то другим способом. Здесь предусмотрены три воз-
можности. Во-первых, класс Дом можно сделать глобальным, и тогда Жилец будет знать о его сущест-
вовании. Во-вторых, Дом можно инстанцировать как локальную переменную внутри операции класса
Жилец. Наконец, Дом можно передавать операциям класса Жилец в качестве параметра. При нали-
чии связей зависимости необходимо следовать одному из этих трех подходов.
Выбор подхода может повлиять на всю модель. Вероятно, потребуется добавить новый аргумент к
операции класса Жилец.
Person
+BuyHouse(theHouse: House)
Второе отличие ассоциаций от зависимостей состоит в том, что ассоциации могут быть двунап-
равленными, но зависимости всегда однонаправленные. Кроме того, зависимости часто используют-
ся для описания связей между пакетами (см. ниже).
Создание зависимостей
Добавив к классам ассоциации, можно рассмотреть их заново и подумать, не стоит ли преобразовать
некоторые из них в зависимости.
Создать новую зависимость можно с помощью кнопки Dependency панели инструментов диаграм-
мы Классов.
Для создания зависимости на диаграмме Классов:
1. Нажмите кнопку Dependency (Зависимость) панели инструментов.
ИЛИ
1. Выберите пункт Tools >- Create >- Dependency (Инструменты >- Создать Зависимость).
2. Щелкните мышью на классе, который будет зависеть от другого.
3. Проведите линию зависимости к другому классу.
Для добавления к зависимости текстового описания:
1. Дважды щелкните мышью на зависимости.
2. Перейдите на вкладку General (Общие).
3. Введите описание в поле документации.
ИЛИ
1. Выделите зависимость
2. Выберите пункт Browse Specification (Обзор >- Спецификация).
3. Перейдите на вкладку General (Общие).
4. Введите описание в поле документации.
Для преобразования в зависимость связи другого типа:
1. Выделите связь.
2. Выберите пункт Edit >- Change Into Uses Dependency (Правка >- Преобразовать в Зависи-
мость).
228
Глава
Удаление зависимостей
Допустимы два способа удаления зависимости: только с одной диаграммы или из модели в целом.
Для удаления зависимости с диаграммы:
1. Выделите зависимость.
2. Выберите в меню пункт Edit Delete (Правка Удалить) или нажмите клавишу Delete.
J ВНИМАНИЕ Удаление зависимости с диаграммы не приводит к удалению ее из модели.
Для удаления зависимости из модели:
1. Выделите зависимость.
2. В меню модели выберите пункт Edit Delete from Model (Правка Удалить из модели) или на-
жмите комбинацию клавиш CTRL+D.
ИЛИ
1. Откройте окно спецификации для одного из участвующих в отношении классов.
2. Перейдите на вкладку Relations (Связи).
3. Щелкните на связи правой кнопкой мыши.
4. В открывшемся меню выберите пункт Delete (Удалить).
Зависимости между пакетами
Зависимости можно устанавливать не только между классами, но и между пакетами. Фактически, это
единственный тип связей, существующий между пакетами. Как и в случае классов, зависимость между
пакетами изображают пунктирной линией (см. рис. 7.13).
Рис. 7.13.
Зависимость между
пакетами
Связь зависимости между пакетами А и В означает, что некоторый класс пакета А связан однонап-
равленной связью с некоторым классом пакета В. Иначе говоря, класс А должен знать что-либо о
классе В.
Зависимости определяют возможность повторного использования пакетов. На приведенном
выше рисунке пакет А зависит от В. Это означает, что при создании других приложений пакет А мож-
но использовать только совместно с пакетом В. Однако сам пакет В можно использовать повторно,
так как он не зависит ни от чего больше.
Зависимости между пакетами можно обнаружить, исследуя связи на диаграмме Классов. Если два|
класса из различных пакетов связаны, эти пакеты также связаны. |
Создавая зависимости между пакетами, старайтесь по мере возможности избегать циклических за- |
висимостей (см. рис. 7.14). |
гт
। лг
Т ».
Рис. 7.14.
Циклическая
зависимость
=3
—а
—=а
4
1
Связи
229
Такая зависимость предполагает, что класс из пакета А должен знать о классе из пакета В, а еще ка-
кой-то класс пакета В должен знать о классе из пакета А. Следовательно, ни один пакет нельзя само-
стоятельно использовать повторно, и изменения в одном из них неизбежно повлияют на другой.
Таким образом, теряется одно из преимуществ пакетов — они становятся слишком взаимозависимы.
Чтобы разбить циклическую зависимость, разделите пакет на два. В нашем примере можно взять
классы пакета В, от которых зависит А, и переместить их в третий пакет С. Теперь зависимости паке-
тов будут выглядеть следующим образом:
Создание зависимостей между пакетами
Определив зависимости между пакетами, можно добавить их к модели на диаграмме Классов. Как пра-
вило, на одной из диаграмм Классов изображают все пакеты и связи между ними. Как и в случае клас-
сов, зависимости между пакетами создаются с помощью кнопки Dependency панели инструментов
диаграммы Классов.
Для создания зависимости между пакетами на диаграмме Классов:
1. Нажмите кнопку Dependency (Зависимость) панели инструментов.
ИЛИ
1. Выберите пункт Tools Create Dependency (Инструменты Создать Зависимость).
2. Проведите линию от зависимого пакета к тому, от которого он зависит.
Удаление зависимостей между пакетами
Допустимы два способа удаления зависимости между пакетами: только с одной диаграммы Классов и
из модели в целом. (
Если удалить зависимость между пакетами, классы которых все еще связаны, возникнут проблемы
при генерации кода. С помощью пункта меню Report Show Access Violations (Отчет Показать на-
рушения доступа) можно проверить, имеются ли в вашей модели проблемы такого рода.
Для удаления связи зависимости между пакетами с диаграммы Классов:
1. Выделите зависимость между пакетами.
2. Выберите пункт Edit Delete (Правка Удалить) или нажмите клавишу Delete.
230
Г лава 71
Агрегации
Агрегация — это более сильная форма ассоциации. Агрегацией называют связь между целым и его час-
тями. Например, класс EmployeeList (Список сотрудников) может состоять из классов Employee (Со-1
трудник). На языке UML агрегацию изображают в виде соединяющей два класса линии с ромбиком на ।
конце, указывающем на класс-целое (см. рис. 7.15).
Рис. 7.15.
Связь агрегации
Один класс может участвовать в нескольких отношениях агрегации с другими классами. Напри-
мер, класс Саг (Машина) образует такие связи со всеми своими частями.
3
5
4
_ Ч
-jj
Zj
—
—.
4
j
Как и ассоциации, агрегации могут быть рефлексивными (см. рис. 7.16). Рефлексивные агрегации |
предполагают, что один экземпляр класса состоит из одного или нескольких других экземпляров того I
же класса. Например, комбинируя ингредиенты при приготовлении пищи, вы получаете ингредиен-1
ты для других блюд. Иначе говоря, каждый ингредиент состоит из других ингредиентов. I
Рис. 7.16.
Связь рефлексивной
ассоциации
’ife-r
При генерации кода для агрегации автоматически создаются поддерживающие ее дополнитель-1
ные атрибуты. Так, класс-целое Саг получит атрибуты, соответствующие классам Door, Engine, Tire и |
всем остальным частям связи агрегации. |
Создание агрегаций
Агрегации указывают на диаграммах Классов. Для создания агрегации можно воспользоваться кноп-
кой Aggregation (Агрегация) панели инструментов диаграммы.
Для добавления агрегации на диаграмму Классов:
1. Нажмите кнопку Aggregation (Агрегация) панели инструментов.
ИЛИ
1. Выберите пункт Tools Create Aggregation (Инструменты > Создать Агрегация).
2. Проведите линию агрегации от класса-части к целому.
Для создания на диаграмме Классов рефлексивной агрегации:
1. Нажмите кнопку Aggregation (Агрегация) панели инструментов диаграммы.
ИЛИ
1. В меню модели выберите пункт Tools Create Aggregation
(Инструменты Создать Агрегация).
2. Проведите линию агрегации от класса до какого-нибудь места вне класса.
3. Отпустите кнопку мыши.
4. Проведите линию агрегации обратно к классу.
Для добавления текстового описания к агрегации:
1. Дважды щелкните мышью на агрегации.
2. Перейдите на вкладку General (Общие).
3. Введите описание в поле документации.
ИЛИ
1. Выделите агрегацию.
2. В меню модели выберите пункт Browse Specification (Обзор Спецификация).
3. Перейдите на вкладку General (Общие).
4. Введите описание в поле документации.
Если нужно преобразовать связь на диаграмме Классов в агрегацию:
1. Выделите требуемую связь.
2. В меню модели выберите пункт Edit Change Into Aggregation
(Правка Преобразовать в Агрегация).
ИЛИ
1
I
1. Откройте окно спецификации преобразуемой связи.
2. Перейдите на вкладку Role Detail (Роль, детали).
3. Установите флажок Aggregate (Агрегация).
Удаление агрегаций
Агрегации можно удалять с одной только диаграммы или из модели в целом.
Для удаления агрегации с диаграммы:
£” *
L 1. Выделите агрегацию.
< .
[ 2. Выберите пункт Edit Delete (Правка Удалить) или нажмите клавишу Delete.
К’/
[Ъ
I мим анис Удаление агрегации с диаграммы не означает удаления ее из модели.
Глава 7
' t.
Для удаления агрегации из модели:
1. Выделите агрегацию.
2. В меню модели выберите пункт Edit >- Delete from Model (Правка Удалить из модели) или
нажмите комбинацию клавиш CTRL+D.
ИЛИ
1. Откройте окно спецификации для одного из участвующих в связи классов.
2. Перейдите на вкладку Relations (Связи).
3 Щелкните на связи правой кнопкой мыши.
4. В открывшемся меню выберите пункт Delete (Удалить).
Обобщения
Обобщение — это связь наследования между двумя классами. Оно дает классу возможность наследо-
вать общие и защищенные атрибуты и операции другого класса. Пример обобщения показан на
Рис. 7.17.
С н я зь обобщения
Здесь описаны два типа сотрудников: с почасовой оплатой и получающие оклад. Оба типа наел еду- /
ют от класса Employee. Класс Employee в таком случае называется суперклассом (superclass), а оба /
производных от него класса — подклассами (subclass). Стрелка показывает направление от подкласса (
к суперклассу.
Общие для обоих типов элементы размещаются в классе Employee.
Таким образом, классы HourlyEmp и SalariedEmp наследуют от него атрибуты Name, Address, SSN /
и операции Hire() и Fire().
Помимо наследуемых, каждый подкласс имеет свои собственные уникальные атрибуты, операции
и связи. Класс сотрудников с почасовой оплатой имеет уникальный атрибут Rate (Оплата за час), а
класс сотрудников, получающих оклад, имеет уникальный атрибут Salary (Оклад).
Связи обобщения позволяют сэкономить время и усилия как при разработке, так и при дальнейшей
поддержке программы. В приведенном примере вам не требуется писать и поддерживать две различ-
ные копии операции Hire() — для каждого подкласса. Достаточно разработать только одну копию. Лю-
бые сделанные в ней изменения будут автоматически наследоваться классами HourlyEmp, SalariedEmp
и всеми остальными подклассами суперкласса Employee.
Для выявления обобщений на диаграмме можно развертывать структуру наследования сверху вниз
или снизу вверх. В первом случае необходимо искать классы, у которых имеется несколько разновид-
ностей.
Например, изучая класс Employee, можно понять, что существуют различные типы сотрудников.
При построении структуры снизу вверх следует искать классы, имеющие между собой что-то общее.
В нашем примере, рассмотрев классы HourlyEmp и SalariedEmp, вы поймете, что они похожи друг на
друга. После этого можно создать новый класс Employee для хранения общих элементов.
I I I | 1 1 1 I I 11111111111 I | I I | I 11111 I | I 111111111111111111 I I I 111 1 1 1 I I 111 I 111 I I 111 I I I 11111111II III III I 111'1'1 | 11 1 I I I
Связи
233
Создаваемая структура должна быть управляемой. Иерархия со слишком большим количеством
уровней может стать плохо управляемой. Каждое изменение в верхней части структуры немедленно
отразится во всех производных классах. Являясь, с одной стороны, преимуществом, это может за-
труднить анализ и управление системой. В некоторых языках большое количество уровней усложня-
ет работу приложения.
Создание обобщений
Связи обобщения можно добавлять к модели Rose с помощью диаграмм Классов. Часто даже создают
специальные диаграммы Классов, посвященные структуре наследования. Они содержат минимальное
количество данных и атрибутов.
При создании обобщений может потребоваться перенести некоторые атрибуты или операции из
одного класса в другой. Допустим, что вы начали работать с классами HourlyEmp и SalariedEmp, каж-
дый из которых содержит атрибут Address, и теперь нужно перенести его вверх по структуре в роди-
тельский класс Employee. В браузере достаточно перетащить атрибут из любого порожденного класса
в класс Employee. Не забудьте удалить копию атрибута из второго класса-потомка.
Для создания обобщения на диаграмме Классов:
1. Нажмите кнопку Generalization (Обобщение) панели инструментов.
ИЛИ
1. Выберите пункт Tools Create Inherits (Инструменты Создать Наследование).
2. Проведите линию обобщения от подкласса к суперклассу.
Для добавления текстового описания к обобщению:
1. Дважды щелкните мышью на обобщении.
2. Перейдите на вкладку General (Общие).
3. Введите описание в поле документации.
ИЛИ
1. Выделите обобщение.
2. В меню модели выберите пункт Browse >- Specification (Обзор Спецификация).
3. Перейдите на вкладку General (Общие).
4. Введите описание в поле документации.
Если нужно преобразовать связь на диаграмме Классов в обобщение:
1. Выделите требуемую связь.
2. В меню модели выберите пункт Edit >- Change Into Inherits
(Правка > Преобразовать в Наследование)'.
Удаление обобщений
j Как и в случае остальных связей, обобщение можно удалить с одной диаграммы или из модели. При
| удалении из модели помните, что атрибуты, операции и связи суперкласса больше не будут наследова-
| ться подклассами. Если они нужны в подклассе, их необходимо туда добавить.
I Для удаления обобщения с диаграммы:
I 1. Выделите обобщение.
I 2. Выберите пункт Edit Delete (Правка >> Удалить) или нажмите клавишу Delete.
ВНИМАНИЕ Удаление обобщения с диаграммы не означает удаления его из модели.
Для удаления обобщения из модели:
1. Выделите обобщение.
2. В меню модели выберите пункт Edit Delete from Model (Правка >• Удалить из модели) или на-
жмите комбинацию клавиш CTRL+D.
234
Глава 7
ИЛИ
1- Откройте окно спецификации для одного из участвующих в связи классов.
2. Перейдите на вкладку Relations (Связи).
3. Щелкните на связи правой кнопкой мыши.
4. В открывшемся меню выберите пункт Delete (Удалить).
Работа со связями
В этом разделе подробно описываются спецификации связей в Rose. Разре:
II
ается добавлять в модель
такие элементы связей, как имена ассоциаций, ролевые имена и квалификаторы, объясняющие при-
чину появления связи.
До начала генерации кода необходимо указать также множественность связи, иначе будут заданы
значения по умолчанию.
Многие спецификации являются необязательными. Если не хватает какой-то необходимой специ-
фикации, Rose сообщит вам об этом при генерации кода.
Задание множественности
Множественность (multiplicity) показывает, сколько экземпляров одного класса взаимодействуют с
помощью связи с одним экземпляром другого класса в данный момент времени.
Например, при разработке системы регистрации курсов в университете можно определить клас-
сы Course (Курс) и Student (Студент). Между ними устанавливается связь: у курсов могут быть студен-
ты, а у студентов — курсы. Вопросы, на которые должен ответить параметр множественности:
"Сколько курсов студент может посещать в данный момент?" и "Сколько студентов могут посещать )
один курс?"
Так как множественность дает ответ на оба вопроса, ее индикаторы устанавливаются на обоих
концах линии связи. В примере регистрации курсов мы решили, что один студент может посещать от /
нуля до четырех курсов, а один курс могут слушать от 10 до 20 студентов (см. рис. 7.18.).
Рис. 7.18.
Множественность
связи
10..20
В языке UML приняты следующие нотации для обозначения множественности:
Множественность__Значение___
*________________много______
О нуль______________________
j________________один_______
0..*нуль или больше
1..*_____________один или больше
Q..1 нуль или один
1..1 ровно один
235
Можно также задать собственное значение множественности в одном из следующих форматов:
Формат_____________ Значение______________________________
<число>ровно число
Счисло 1>..<число 2>j между числом 1 и числом 2
<число>..п число или больше
<число 1>, <число 2>число 1 или число 2
<число 1>, <число 2>..<число 3>ровно число 1 или между числом 2 и числом 3
<число 1>..<число 2>, <число 3>..<число 4>_между числом 1 и числом 2 или между числом 3 и числом 4
Помните, что значение множественности позволяет понять, является ли данная связь обязатель-
ной. В рассматриваемом нами примере студент может посещать от нуля до четырех курсов в семестр.
Это означает, что студент может пропустить семестр. Если бы множественность была 1..4, то каждый
студент был бы обязан за это время прослушать хотя бы один курс. Таким образом, множественность
реализует такие бизнес-правила, как "каждый студент обязан за семестр прослушать хотя бы один
курс".
Обычно для форм, экранов и окон множественность равна 0..1 с каждой стороны связи. Это озна-
чает, что формы могут существовать независимо одна от другой, хотя это и не всегда правильно.
Для задания множественности связи:
1. Щелкните правой кнопкой мыши на одном конце связи.
2. В открывшемся меню выберите пункт Multiplicity (Множественность).
3. Укажите нужную множественность.
А
4. Повторите шаги с первого по третий для другого конца связи.
ИЛИ
1. Откройте окно спецификации связи.
2. Перейдите на вкладку Role Detail (Роль, детали) для одного конца связи.
3. Измените множественность в поле Cardinality.
4. Повторите шаги 1—3 для другого конца связи.
Использование имен связей
Связи можно уточнить с помощью имен связей или ролевых имен. Имя связи — это обычно глагол или
глагольная фраза, описывающая, зачем нужна связь. Например, между классом Person (Человек) и
классом Company (Компания) существует ассоциация. Можно задать вопрос: "А зачем нужна эта связь?
Является ли объект класса Person клиентом компании, ее сотрудником или владельцем?" Для проясне-
ния ситуации можно назвать ассоциацию "employs" (нанимает). На рис. 7.19 приведен пример имени
связи.
Имена у связей определять необязательно. Обычно это делают, если причина создания связи нео-
чевидна. Имя показывают около линии соответствующей связи.
236
В Rose можно указать также направление связи. Например, можно сказать, что компания нанима-
ет сотрудника, но не наоборот. Направление действия имени устанавливается в окне спецификации
связи.
Для задания имени связи:
1. Выделите связь.
2. Введите ее имя.
ИЛИ
1. Откройте окно спецификации связи.
2. Перейдите на вкладку General (Общие).
3. Введите имя связи в поле имени.
Для указания направления имени:
И. Откройте окно спецификации связи.
2. Перейдите на вкладку Detail (Подробно).
3. В поле Name direction (Направление имени) укажите направление имени связи.
Использование стереотипов
Как и другим элементам модели, связям разрешается назначать стереотипы. Они применяются для
классификации связей. :
Например, вы используете два типа ассоциаций. Для этих типов можно создать стереотипы. Сте-
реотипы пишут вдоль линии ассоциации в двойных угловых скобках (« »). z
Стереотип связи задается на вкладке General (Общие) окна спецификации связи (см. рис. 7.20).Е
Рис. 7.20.
Окно спецификации
связи
Association Specihcation foi eraploys
] Java 8
Role A General
Role В Genaal | Role A Detail ] Role В Detail | ERwin
IDLA | JavaA ] IDLB
General | Detail |
Logical View
Company
Person
Browse j Help j
АРЙ
Для задания стереотипа связи:
1. Откройте окно спецификации связи.
2. Перейдите на вкладку General (Общие).
3, Введите стереотип в поле Stereotype.
Использование ролей |
Ролевые имена применяют в связях ассоциации или агрегации для описания назначения связи. —
Возвращаясь к примеру с классами Person и Company, можно сказать, что класс Person играет рольн
сотрудника класса Company. Ролевые имена — это обычно имена существительные или фразы.
Связи
237
Их показывают на диаграмме рядом с классом, играющим соответствующую роль. Как правило,
пользуются или ролевым именем, или именем связи, но не обоими сразу. Как и имена связей, роле-
вые имена необязательны, их указывают, только если цель связи неочевидна. Пример ролей приво-
дится на рис. 7.21.
Рис. 7.21.
Роли связи
В окне спецификации связи можно добавить к роли текстовое описание. При генерации кода оно
войдет в комментарий. Чтобы увидеть роль на диаграмме, щелкните правой кнопкой мыши на связи
и в открывшемся меню выберите пункт Role name (Имя роли), как показано на рис. 7.22.
Рис. 7.22.
Добавление
описания к роли
Class Diagram. Logical View / Sumpk
Для задания ролевого имени:
1. Щелкните правой кнопкой мыши на нужном конце ассоциации.
2. В открывшемся меню выберите пункт Role name (Имя роли).
3. Введите ролевое имя.
или
1. Откройте окно спецификации ассоциации.
2. Перейдите на вкладку Role General (Роль, общие) для той роли, которой нужно дать имя.
3. Введите имя роли в поле Role (Роль).
238
Глава 7
Для добавления текстового описания к роли:
Откройте окно спецификации требуемой ассоциации.
2. Перейдите на вкладку Role General (Роль, общие) вашей роли.
3. Введите описание в поле Documentation (Документация).
Задание управления экспортом
При генерации кода для классов, связанных ассоциацией, создаются атрибуты. Видимость этих атри-
бутов определяется значением переключателя Export Control (Управление экспортом). Как и для лю-
бых других атрибутов, возможны четыре значения видимости:
Public (Общий) Доступ к атрибуту осуществляется из всех остальных классов.
Private (Закрытый) Доступ к атрибуту невозможен ни из какого другого класса.
Protected (Защищенный) Доступ к атрибуту возможен только из самого класса и его потомков.
Package or Implementation (Пакетный) Доступ осуществляется только из классов того же пакета.
В двунаправленных ассоциациях управление экспортом можно установить для атрибутов обоих
концов связи. В однонаправленных ассоциациях это делается только для одного конца. Управление
экспортом можно задать на вкладке Role A General (Роль А, общие) или Role В General (Роль В, об-
щие) окна спецификации связи.
Назначить управление экспортом для роли можно следующим образом:
1. Щелкните правой кнопкой мыши на имени роли.
2. В открывшемся меню выберите пункт Export Control (Управление экспортом).
ИЛИ
1. Откройте окно спецификации связи, как показано на рис. 7.23.
Рис. 7.23.
Задание
управления
экспортом
Association Specification for Untitled
IDL A [ Java A
RoleB General | RoleADetail
General Detail
IDL В | Java В j
| Role В Detail ] ERwin |
Role A General
Element: Company
Implementation
Documentation:
Role: |employer
Export Control
iPyblid Protected
4 • ь • a • a i r i
Cancel
Apply
3
2. Перейдите на вкладку Role General (Роль, общие) роли.
3. Установите переключатель Export Control (Управление экспортом) в нужное значение: Public.
Protected, Private или Implementation.
Использование статичных связей
a
Как уже упоминалось, при создании кода для связей ассоциации и агрегации генерируются атрибуты.
Поле Static (Статичная) определяет, будут ли эти атрибуты статичными. Статичным называется атри-
бут, который используется всеми экземплярами класса.
Связи
239
Если роль статичная, то создаваемый при генерации кода соответствующий ей атрибут также бу-
дет статичным. На диаграмме Классов перед статичной ролью ставится знак $ (см. рис. 7.24).
Рис. 7.24.
Статичная роль
Для определения статичной ассоциации:
1. Щелкните правой кнопкой мыши на нужном конце ассоциации.
2. В открывшемся меню выберите пункт Static (Статичная).
ИЛИ
1. Откройте окно спецификации требуемой ассоциации.
2. Перейдите на вкладку Detail (Подробно) роли, которую нужно сделать статичной.
3. Установите флажок Static (Статичная).
Использование дружественных связей
Дружественная (friend) связь предполагает, что класс-клиент имеет право доступа к атрибутам и опе-
рациям класса-сервера, не являющимся общими. Это свойство можно задать для ассоциаций, агрега-
ций, зависимостей и обобщений. В исходный код класса-сервера войдет логика, поддерживающая
дружественную видимость для клиента.
Допустим, что у нас имеется двунаправленная ассоциация, связывающая классы Person и Company
и мы установили флажок Friend для этой связи. Тогда при генерации кода на языке C++ в файл Сот-
рапу.Н будет добавлена строка "friend class Person". Это означает, что класс Person получит право до-
ступа к частям класса Company, не являющимся общими.
Для создания дружественной связи:
1. Щелкните правой кнопкой мыши на соответствующем конце связи.
2. В открывшемся меню выберите пункт Friend.
ИЛИ
1. Откройте окно спецификации требуемой связи.
2. Перейдите на вкладку Detail (Подробно) роли, которую нужно сделать дружественной.
3. Установите флажок Friend (Друг).
Задание метода включения
Параметр Containment of Button определяет, каким образом будут включаться созданные атрибуты аг-
регации: по значению или по ссылке. Если два класса связаны отношением агрегации, то в класс-целое
войдут атрибуты для каждого класса-части. В поле Containment of Button устанавливается, будут ли эти
данные атрибутами по значению или по ссылке.
Значение By Value (По значению) этого параметра предполагает, что целое и часть создаются и
разрушаются одновременно. Например, если между классами Window (Окно) и Button (Кнопка) уста-
новлена агрегация по значению, соответствующие объекты создаются и разрушаются в одно и то же
время. На языке UML агрегацию по значению помечают закрашенным ромбиком (см. рис. 7.25).
240
Глава 7
Рис. 7.25.
Агрегация
по значению
Агрегация по ссылке (By Reference) предполагает, что целое и часть создаются и разрушаются в раз-
ное время. Если класс EmployeeList состоит из классов Employee, то агрегация по ссылке означает,
что как класс EmployeeList, так и классы Employee могут находиться или не находиться в памяти
компьютера в любой момент времени независимо друг от друга. Если они имеются в памяти, то взаи-
модействуют друг с другом посредством агрегации. Классы Employee и EmployeeList создаются и раз-
рушаются в разное время. Агрегация по ссылке отображается в виде пустого ромбика (см. рис. 7.26).
Рис. 7.26.
Агрегация
по ссылке
Для установки метода включения:
1. Щелкните правой кнопкой мыши на том конце ассоциации, где требуется задать включение
2. В открывшемся меню выберите пункт Containment.
3. Укажите метод включения: By Reference, By Value или Unspecified (He определен).
ИЛИ
1. Откройте окно спецификации требуемой связи.
2. Перейдите на вкладку Role Detail (Роль, детали) нужной роли.
3. Укажите метод включения: By Reference, By Value или Unspecified (He определен), как показано
на рис. 7.27.
Рис. 7.27.
Задание включения
QAggiegation Specification tot Untitled
IDLA ] Java A ]
General | Detail
Role В General Role A Detail
Raia: J"*
Constraints
IDLВ j Java В |
j Role A General ]
Role В Detail j ERwin |
Element: Window
Cardinality:
Navigable
P Aggregate
Г static
I- Friend
Containment of Button
By Valuer C By Reference C Unspecified
' • “IK
Keys / Qualifiers
Name
Type
OK
Cancel
Browse
Help
Работа с квалификаторами
Квалификаторы (qualifiers) применяются для того, чтобы уменьшить область действия ассоциации.
Допустим, что между классами Person и Company установлена связь ассоциации и что для данного зна-
чения атрибута Person ID (Идентификационный номер) существуют две взаимодействующие с клас-
сом компании. Это можно показать на диаграмме с помощью квалификаторов (см. рис. 7.28).
Связи
241
Рис. 7.28.
Использование
квалификаторов
Для добавления на диаграмму квалификатора:
1. Щелкните правой кнопкой мыши на том конце ассоциации, куда требуется добавить квалифи-
катор.
2. В открывшемся меню выберите пункт New Key/Qualifier (Создать ключ/квалификатор).
3. Введите имя и тип нового квалификатора.
ИЛИ
1. Откройте окно спецификации требуемой ассоциации.
2. Перейдите на вкладку Role Detail (Роль, детали) нужной роли.
3. Щелкните правой кнопкой мыши в окне Keys/Qualifiers (Ключи/Квалификаторы).
4. В открывшемся меню выберите пункт Insert (Вставить).
5. Введите имя и тип нового квалификатора.
Для удаления квалификатора:
1. Откройте окно спецификации требуемой ассоциации.
2. Перейдите на вкладку Role Detail (Роль, детали) нужной роли.
3. Щелкните правой кнопкой мыши на удаляемом квалификаторе.
4. В открывшемся меню выберите пункт Delete (Удалить).
Работа с элементами связи
Элементом связи (link element), известным также как класс Ассоциаций (Association class), называется
место, где хранятся относящиеся к ассоциации атрибуты. Допустим, что у нас есть два класса: Student
и Course, и необходимо добавить на диаграмму атрибут Grade (Год обучения).
В этом случае возникает вопрос: в какой класс добавить атрибут? Если мы поместим его в класс Stu-
dent, то придется вводить атрибут для каждого посещаемого студентом курса, что значительно увели-
чит этот класс. Если же мы поместим его в класс Course, то придется задавать атрибут для каждого
посещающего этот курс студента.
Для решения подобной проблемы можно создать класс Ассоциаций. В него следует поместить ат-
рибут Grade, относящийся в большей степени к связи между курсом и студентом, чем к какому-то клас-
су конкретно. Нотация UML для класса Ассоциаций представлена на рис. 7.29.
Для задания элемента связи:
1. Откройте окно спецификации требуемой связи.
2. Перейдите на вкладку Detail (Подробно).
3. Укажите элемент связи в поле Link Element (Элемент связи).
242
Глава?
Рис. 7.29.
Элементы связи
(классы
Ассоциаций)
Course
Student
10..20
Использование ограничений
Ограничением (constraint) называется некоторое условие, которое должно выполняться. В среде Rose
можно установить ограничения для связи в целом или для одной роли. При генерации кода все огра^
ничения войдут в комментарий.
Для установки ограничения связи:
1. Откройте окно спецификации связи (см. рис. 7.30).
РИС. 7.30.
Ограничения связи
Association Specification foi Untitled
Role В General | Role A Detail | Role В Detail | ERwin
IDLA | Java A | IDL В ] Java В
General Detail I Role A General
Derived
fctjr...7;
Link Element: | Grade
Name direction; | : Cou'se
Constraints________ - '
Student must be active
OK.
Caned
Apply Browse » Help
2. Перейдите на вкладку Detail (Подробно).
3. Введите ограничения в поле Constraints (Ограничения).
Если нужно установить ограничения для одной роли:
1. Откройте окно спецификации связи.
2. Перейдите на вкладку Role Detail (Роль, детали) нужной роли.
3. Введите ограничения в поле Constraints (Ограничения), как показано на рис. 7.31.
Рис. 7.31.
Ограничения роли
Association Specification for Untitled
IDLA | JavaA J
General j Detail
RoleB General | RoleA Detail
fide: | “
Constraints
Course musl have an mstructoi
IDLE Java 6
| Role A General
Role 6 Detail ERwin
Element: Course
--------------------3
Cardinality: f
Г Navigable
Г Aggregate Г Static
; Containment of Student..........
: By Value By Reference
Friend
£eys7 Qualifiers
IZH®
OK I Cancel
Browse ▼ Help
i
Упражнение
В этом упражнении определяются связи между классами, участвующими в варианте использования
"Ввести новый заказ".
Постановка задачи
После добавления к классам атрибутов и операций Карен была готова к генерации кода. Но сначала
она должна была изучить связи между классами.
Чтобы найти связи, Карен просмотрела диаграммы Последовательности. Все взаимодействующие
там классы нуждались в определении соответствующих связей на диаграммах Классов. После*обнару-
жения связей Карен добавила их в модель.
Добавление связей
Добавим связи к классам, принимающим участие в варианте использования "Ввести новый заказ".
.? Этапы выполнения упражнения
Настройка
1. Найдите в браузере диаграмму Классов "Ввод нового заказа".
2. Дважды щелкнув на диаграмме, откройте ее.
3. Проверьте, имеется ли в панели инструментов диаграммы кнопка Unidirectional Association (Однонап-
равленная ассоциация). Если ее нет, продолжите настройку, выполнив шаги 4 и 5. Если есть, присту-
пайте к выполнению самого упражнения.
4. Щелкните правой кнопкой мыши на панели инструментов диаграммы и в открывшемся меню выберите
пункт Customize (Настроить).
5. Добавьте на панель кнопку Creates A Unidirectional Association (Создать однонаправленную ассоциа-
цию).
Добавление ассоциаций
1. Нажмите кнопку Unidirectional Association панели инструментов.
2. Проведите ассоциацию от класса OrderOptions к классу OrderDetail.
3. Повторите шаги 1 и 2, создав ассоциации:
• От класса OrderDetail к классу OrderMgr
Глава 7
• От класса OrderMgr к классу Order
• От класса OrderMgr к классу TransactionMgr
• От класса TransactionMgr к классу Order
• От класса TransactionMgr к классу Orderitem
• От класса Order к классу Orderitem
4. Щелкните правой кнопкой мыши на однонаправленной ассоциации между классами OrderOptions и
OrderDetail со стороны класса OrderOptions.
5. В открывшемся меню выберите пункт Multiplicity Zero or One (Множественность Нуль или один).
6. Щелкните правой кнопкой мыши на другом кон(де однонаправленной ассоциации.
7. В открывшемся меню выберите пункт Multiplicity Zero or One (Множественность Нуль или один).
8. Повторите шаги 4 — 7, добавив на диаграмму значения множественности для остальных ассоциаций,
как показано на рис. 7.32.
Рис. 7.32.
Ассоциации
сценария
"Ввести новый заказ"
«Boundary»
OrderDetail
(из пакета
Boundaries)
+OpenQ
+SubmitlnfoO
+SaveQ
«Entity»
Orderitem
(из пакета Entities)
♦GetlnfoO
+untitled О
+CreateO
ч-SetlnfoO
+SaveOrder0
«Boundary»
OrderOptions
(из пакета
Boundaries)
+С reate О
«Control»
OrderMgr
(из пакета Control)
«Entity»
Order
(из пакета Entities)
| - name: type = initval
+CreateQ
+SetlnfoO
ч-GetlnfoQ
«Control»
TransactionMgr
(из пакета Control)
+SaveOrderQ
+CommitQ
.........",....................
8
глава
Поведение объекта
Создание диаграммы Состояний
Добавление к состояниям деятельностей,
входных и выходных действий, событий
и историй состояний
Добавление к переходам аргументов событий,
ограждающих условий, действий и посылаемых
событий
Добавление начальных, конечных и вложенных
состояний
246
Глава 8
Выше мы рассмотрели классы и связи между ними, теперь изучим жизнь одного объекта. Конкретный
объект может иметь одно или несколько состояний. Например, объект Сотрудник может быть нанят,
уволен, проходить испытательный срок, находиться в отпуске или в отставке. В каждом из этих состоя-
ний объект класса Employee может вести себя по-разному.
В этой главе описываются диаграммы Состояний (State Transition), содержащие информацию о
различных состояниях, в которых может существовать объект, о том, как он переходит из одного со-
стояния в другое и каким образом он ведет себя в этих состояниях.
Диаграммы Состояний
На диаграмме Состояний отображают жизненный цикл одного объекта, начиная с момента его созда-
ния и заканчивая разрушением. С помощью таких диаграмм удобно моделировать динамику поведе-
ния класса. Как правило, диаграммы Состояний не требуется создавать для каждого класса. Многие
проекты вообще обходятся без них. На рис. 8.1 показан пример диаграммы Состояний для класса Co-
urse (Учебный курс).
Диаграмма
Состояний
для класса Course
Открыт
/ Отмена курса
Закончена регистрация
X
Отмена курса
Закрыт
Конец «семестра
Отменен
Завершен
'Г.
Если динамика поведения класса важна, то для него полезно разработать диаграмму Состояний.
Такие классы обычно имеют много различных состояний. В нашем примере курс может быть открыт,
закрыт, отменен или завершен. В упражнении будет рассмотрен класс Order (Заказ). Объект этого
класса также может существовать в различных состояниях: приостановка заказа, его выполнение и
отмена. В каждом из них заказ ведет себя по-разному.
Для анализа динамики поведения класса необходимо рассмотреть его атрибуты. Экземпляр класса
может вести себя по-разному в зависимости от их значений. Хорошим индикатором нескольких со-
стояний является атрибут Status.
Попытайтесь понять, как ведет себя экземпляр класса при различных значениях этого атрибута.
Полезно исследовать также связи между классами. Рассмотрите все связи, множественность кото-
рых может принимать нулевое значение. Нули указывают, что данная связь не является обязательг
ной. Ведет ли себя экземпляр класса по-разному при наличии и отсутствии связи? Если да, то он |
имеет несколько состояний. Для примера рассмотрим взаимодействие между сотрудником (етр-1
loyee) и компанией. Если между ними установлена связь, это означает, что сотрудник нанят. Если нет, |
то он уволен или в отставке. й
В среде Rose на основании диаграмм Состояний не генерируется никакого исходного кода. Они |
нужны для того, чтобы документировать динамику поведения класса, благодаря чему аналитики и 1
•к
-4
£
Поведение объекта
247
разработчики получат о нем четкое представление. Реализацией заложенной в эти диаграммы логики
будут заниматься разработчики. Как и в случае других диаграмм UML, диаграммы Состояний дают
команде возможность обсудить и документировать логику перед началом процесса кодирования.
Создание диаграмм Состояний
В среде Rose можно создать одну диаграмму Состояний для класса. На ней отображаются все опреде-
ленные для этого класса состояния и переходы. В браузере диаграмма Состояний располагается ниже
класса и помечается пиктограммой:
Для создания диаграммы Состояний:
1. Щелкните правой кнопкой мыши в браузере на нужном классе.
2. В открывшемся меню выберите пункт Open State Diagram (Открыть диаграмму Состояний).
ИЛИ
1. Выделите нужный класс на диаграмме Классов.
2. Выберите в меню пункт Browse State Diagram (Обзор Диаграмма Состояний).
Добавление состояний
Состоянием (state) называется одно из возможных условий, в которых может существовать объект. Как
уже говорилось, для выявления состояний объекта необходимо исследовать две области модели: зна-
чения атрибутов объекта и связи с другими объектами. Рассмотрите различные значения, принимае-
мые атрибутами. Определите также состояние объекта в зависимости от того, существует некоторая
связь или нет.
Как и другие элементы Rose, состояние можно дополнять текстовым описанием. Однако посколь-
ку на основании этих диаграмм код не генерируется, описание не войдет в исходный код в качестве
комментариев.
На языке UML состояние изображают в виде прямоугольника с закругленными краями:
Состояние
Для добавления состояния:
1. Нажмите кнопку State (Состояние) панели инструментов.
ИЛИ
1. Выберите в меню пункт Tools Create >*’State (Инструменты Создать Состояние).
2. Щелкните мышью на диаграмме Состояний в том месте, куда нужно поместить состояние.
Для добавления к состоянию текстового описания:
1. Дважды щелкнув мышью на состоянии, откройте окно спецификации состояния.
2. Перейдите на вкладку General (Общие).
3. Введите описание в поле документации.
ИЛИ
1. Выделите состояние.
2. В меню выберите пункт Browse Specification (Обзор Спецификация).
3. Перейдите на вкладку General (Общие).
4. Введите описание в поле документации.
248 Главой
Добавление деталей к описанию состояния
Находясь в конкретном состоянии, объект может выполнять определенные действия. Например, он
может генерировать отчет, осуществлять некоторые вычисления или посылать событие другому объ-
екту. В Rose информация такого типа добавляется к модели посредством окна спецификации состоя-
ния.
С состоянием можно связывать данные пяти типов: деятельность, входное действие, выходное
действие, событие и история состояния.
Рассмотрим каждый из них в контексте примера. На рис. 8.2 показана диаграмма Состояний для
класса Account системы ATM.
Рис. 8.2.
Диаграмма
Состояний
для класса Account
системы ATM
Снять деньги
[отрицательный баланс]
Превышен счет
Открыт
Депозит [положительный баланс]
Клиент требует закрыть/
Сохранить дату закрытия счета
entry: Временно заморозить счет
do: Послать уведомление клиенту
exit: Разморозить счет
Проверить баланс [отрицательный баланс
в течение срока более 30 дней]
Закрыт
entry: Выдать
кредитную
карточку
Деятельность
Деятельностью (activity) называется поведение, реализуемое объектом, когда он находится в данном со-
стоянии. Например, когда счет находится в состоянии "Закрыт", происходит возврат кредитной кар-
точки пользователю. Деятельность — это прерываемое поведение. Оно может выполняться до своего
завершения, если объект находится в данном состоянии, или может быть прервано переходом объек-
та в другое состояние. Деятельность изображают внутри самого состояния, ей должны предшество-
вать слово do (делать) и двоеточие:
Состояние
do: деятельность
Входное действие
Входным действием (entry action) называется поведение, которое выполняется, когда объект переходит
в данное состояние. Например, при переходе счета (см. рис. 8.2) в состояние "Превышен счет", выпол-
няется действие "Временно заморозить счет" независимо от того, откуда объект переходит в это со-
стояние. Таким образом, данное действие осуществляется не после того, как объект перешел в
состояние, а скорее как часть этого перехода. В отличие от деятельности, входное действие рассмат-
ривается как непрерываемое.
Входное действие также показывают внутри состояния, ему предшествуют слово entry (вход) и
двоеточие.
Состояние
entry: действие
Выходное действие
Выходное действие (exit action) подобно входному. Однако оно осуществляется как составная часть про-
цесса выхода из данного состояния. Так, при выходе объекта Account из состояния "Превышен счет”,
независимо от того, куда он переходит, выполняется действие "Разморозить счет". Оно является ча-
стью процесса перехода. Как и входное, выходное действие является непрерываемым.
Поведение объекre
249
Выходное действие изображают внутри состояния, ему предшествуют слово exit (выход) и двоето-
чие.
Состояние
exit: действие J
Поведение объекта во время деятельности, входных и выходных действии може т включать в себя
отправку события другому объекту. Например, объект Account (Счет) может посылать событие объ-
екту Card reader (Устройство чтения карты). В этом случае описанию деятельности, входного или вы-
ходного действия предшествует знак "Л". Соответствующая строка на диаграмме выглядит как
Do: ЛЦель.Событие(Аргументы)
где Цель — это объект, получающий событие, Событие — посылаемое сообщение, а Аргументы явля-
ются параметрами посылаемого сообщения. В Rose все эти детали можно добавить к посылаемому со-
бытию.
Деятельность может также выполняться в результате получения объектом некоторого события.
Например, объект Account может быть в состоянии "Открыт". При получении некоторого события
будет выполнена определенная деятельность.
Все описанные элементы можно добавить в модель Rose с помощью вкладки Detail (Подробно)
окна спецификации состояния (см. рис. 8.3).
Рис. 8.3.
Окно спецификации
состояния
—г- • ГТ'
State Specification for Overdrawn
General Detail
Actions
Actions________________________
entry: Г emporarily freeze account
do: Send notice to customer
exit: Remove temporary freeze
Г” Slate; h..tory
Г
J
OK Cancel
rowse ▼
Help |
Для добавления деятельности:
1. Откройте окно спецификации требуемого состояния.
2. Перейдите на вкладку Detail (Подробно).
3. Щелкните правой кнопкой мыши в окне Actions (Действия).
4. В открывшемся меню выберите пункт Insert (Вставить).
5. Дважды щелкните мышью на новом действии.
6. Введите действие в поле Actions (Действия).
7. В окне When (Когда) укажите Entry Until Exit (Выполнять до выхода из состояния), чтобы сде-
лать новое действие деятельностью.
Для добавления входного действия:
1. Откройте окно спецификации требуемого состояния.
2. Перейдите на вкладку Detail (Подробно).
3. Щелкните правой кнопкой мыши в окне Actions (Действия).
4. В открывшемся меню выберите пункт Insert (Вставить).
5. Дважды щелкните мышью на новом действии.
250
Глава 8
6. Введите действие в поле Actions (Действия).
7. В окне When (Когда) укажите On Entry (При входе).
Для добавления выходного действия:
1. Откройте окно спецификации требуемого состояния.
2. Перейдите на вкладку Detail (Подробно).
3. Щелкните правой кнопкой мыши в окне Actions (Действия).
4. В открывшемся меню выберите пункт Insert (Вставить).
5. Дважды щелкните мышью на новом действии.
6. Введите действие в поле Actions (Действия). ; ;
7. В окне When (Когда) укажите On Exit (При выходе).
Если нужно послать событие:
1. Откройте окно спецификации требуемого состояния.
2. Перейдите на вкладку Detail (Подробно).
3. Щелкните правой кнопкой мыши в окне Actions (Действия).
4. В открывшемся меню выберите пункт Insert (Вставить).
5. Дважды щелкните мышью на новом действии.
6. В качестве типа действия укажите Send Event (Послать событие).
7. В соответствующие поля введите событие (event), аргументы (arguments) и целевой объект
(target).
Добавление переходов
Переходом (transition) называется перемещение из одного состояния в другое. Совокупность переходов
диаграммы показывает, как объект может переходить из одного состояния в другое. На диаграмме все
переходы изображают в виде стрелки, начинающейся в первоначальном и заканчивающейся в после-
дующем состоянии.
Состояние 1
Состояние 2
Переходы могут быть рефлексивными: объект переходит в то же состояние, в котором он в насто-
ящий момент находится. Рефлексивные переходы изображают в виде стрелки, начинающейся и за-
вершающейся на одном и том же состоянии.
» .. .
рефлексивный
переход
Для добавления перехода:
1. Нажмите кнопку Transition (Переход) панели инструментов.
2. Щелкните мышью на состоянии, откуда осуществляется переход.
3. Проведите линию к тому состоянию, где переход завершается.
Для добавления рефлексивного перехода:
1. Нажмите кнопку Transition to Self (Переход к себе) панели инструментов.
ИЛИ
Поведение объекта
251
1. В меню выберите пункт Tools Create Loop (Инструменты Создать Петля).
2. Щелкните мышью на том состоянии, где выполняется рефлексивный переход.
ИЛИ
1. Нажмите кнопку Transition (Переход) панели инструментов.
2. Щелкните мышью на состоянии, где выполняется рефлексивный переход.
3. Начните линию перехода от этого состояния и отпустите мышь.
4. Проведите линию перехода обратно к тому же состоянию.
Для добавления к переходу текстового описания:
1. Дважды щелкнув мышью на переходе, откройте окно его спецификации.
2. Перейдите на вкладку General (Общие).
3. Введите описание в поле Documentation (Документация).
Детальное описание перехода
У перехода существует несколько спецификаций: события, аргументы, ограждающие условия, дейст-
вия и посылаемые события. Рассмотрим эти параметры в контексте примера ATM. На рис. 8.2 показа-
на диаграмма Состояний для класса Account.
Событие
Событие (event) — это то, что вызывает переход из одного состояния в другое. В нашем примере собы-
тие "Клиент требует закрыть" вызывает переход счета из открытого состояния в закрытое. Событие
размещают на диаграмме вдоль линии перехода.
Для отображения события на диаграмме можно использовать как имя операции, так и обычную
фразу. В нашем примере события описаны обычными фразами. Если вы хотите использовать опера-
ции, то событие "Клиент требует закрыть" можно было бы назвать RequestClosure().
У событий могут быть аргументы. Так; событие "Сделать вклад", вызывающее переход счета из со-
стояния ""Превышен счет" в состояние "Открыт", может иметь аргумент Amount (Количество), описы-
вающий сумму депозита. Rose позволяет добавлять аргументы к событиям.
Большинство переходов должно иметь события, так как именно они инициируют переход. Тем не
менее бывают и автоматические переходы, не имеющие событий. При этом объект сам перемещает-
ся из одного состояния в другое со скоростью, предусматривающей выполнение входных действий,
деятельности и выходных действий.
Состояние 1
Состояние 2
Ограждающее условие
Ограждающие условия (guard conditions) определяют, когда переход может быть выполнен, а когда нет.
В нашем примере событие "Сделать вклад" переведет счет из состояния "Превышение счета" в состоя-
ние "Открыт", но только если баланс больше нуля. В противном случае переход не осуществится.
На диаграмме ограждающие условия заключают в квадратные скобки и размещают вдоль линии
перехода после имени события.
Состояние 1
Событие [ограждающее условие]
Состояние 2
Ограждающие условия задавать необязательно. Однако если существует несколько автоматиче-
ских переходов из состояния, необходимо определить для них взаимно исключающие ограждающие
условия. Это поможет читателю диаграммы понять, какой путь перехода будет выбран автоматиче-
ски.
252
Глава 8
Действие
Действием (action) является непрерываемое поведение, выполняющееся как часть перехода. Входные
и выходные действия показывают внутри состояния, поскольку они определяют, что происходит, ког-
да объект входит или выходит из состояния. Другие действия изображают вдоль линии перехода, так
как они не должны осуществляться при входе или выходе из состояния.
Например, при переходе счета из открытого в закрытое состояние выполняется действие "Сохра-
нить дату закрытия счета". Это непрерываемое поведение осуществляется только во время перехода
из состояния "Открыт" в состояние "Закрыт".
Действие размещают вдоль линии перехода после имени события, ему предшествует косая чер-
та (/).
Состояние 1
....... Л\Событие/Сохранить дату закрытия счета
Состояние 2
Событие или действие может быть поведением внутри объекта, а может представлять собой сооб-
щение, посылаемое другому объекту. Если событие или действие посылается другому объекту, перед
ним на диаграмме помещают знак "Л".
Г________Состояние________1
[ do: АЦель.Послать событие (аргументы) J
Для добавления события на диаграмму:
1. Дважды щелкнув мышью на переходе, откройте окно его спецификации.
2. Перейдите на вкладку General (Общие).
3. Введите событие в поле Event (Событие).
Для добавления аргументов к событию:
1. Дважды щелкнув мышью на переходе, откройте окно его спецификации.
2. Перейдите на вкладку General (Общие).
3. Введите аргументы в поле Arguments (Аргументы).
Если нужно задать ограждающее условие:
1. Дважды щелкнув мышью на переходе, откройте окно его спецификации.
2. Перейдите на вкладку Detail (Подробно).
3. Введите ограждающее условие в поле Condition (Условие).
Для добавления действия:
1. Дважды щелкнув мышью на переходе, откройте окно его спецификации.
2. Перейдите на вкладку Detail (Подробно).
3. Введите действие в поле Action (Действие).
Отправить событие можно следующим образом:
1. Дважды щелкнув мышью на переходе, откройте окно его спецификации.
2. Перейдите на вкладку Detail (Подробно).
3. Введите событие в поле Send Event (Отправляемое событие).
4. Введите аргументы в поле Send Arguments (Отправляемые аргументы).
5. Укажите цель в поле Send Target (Цель события).
Поведение объекта
253
Задание специальных состояний
На диаграмму можно добавить два специальных состояния объекта — начальное и конечное.
Начальное состояние
Начальным (start) называется состояние, в котором объект находится сразу после своего создания.
В нашем примере при создании счет имеет состояние "Открыт". На диаграмме его изображают в виде
закрашенного кружка. От него к первоначальному состоянию проводится переход.
Начальное состояние обязательно — читатель должен знать, с чего начинается объект. На диаграмме
может быть только одно начальное состояние.
Конечное состояние
Конечным (stop) называется состояние, в котором объект находится непосредственно перед уничтоже-
нием. Его изображают в виде закрашенного кружка с незакрашенным ободком ("бычий глаз"). Конеч-
ные состояния не являются обязательными, их может быть сколько угодно.
Для указания начального состояния:
1. Нажмите кнопку Start State (Начальное состояние) панели инструментов.
2. Щелкните мышью на диаграмме Состояний в том месте, куда нужно поместить начальное
состояние.
Для указания конечного состояния:
1. Нажмите кнопку End State (Конечное состояние) панели инструментов.
2. Щелкните мышью на диаграмме Состояний в том месте, куда нужно поместить конечное
состояние.
Использование вложенных состояний
Для уменьшения беспорядка на диаграмме можно вкладывать состояния одно в другое. Вложенные со-
стояния называются подсостояниями (substates), а те, в которые они вложены, — суперсостояниями (su-
perstates).
Если у нескольких состояний имеются идентичные переходы, эти состояния можно сгруппиро-
вать вместе в суперсостояние. Затем, вместо того чтобы поддерживать одинаковые переходы (по од-
ному на каждое состояние), их можно объединить, перенеся в суперсостояние. На рис. 8.1 приведен
пример диаграммы без вложенных состояний. На рис. 8.4 изображена та же диаграмма с использова-
нием вложенных состояний.
Как видите, суперсостояния позволяют навести порядок на диаграмме Состояний.
Бывают случаи, когда система должна помнить, в каких состояниях она была в прошлом. Если, на-
пример, вы выходите из суперсостояния с тремя подсостояниями, вам может потребоваться, чтобы
система запомнила, из какой точки суперсостояния произошел выход.
Существует два способа решения этой проблемы. Во-первых, можно включить в суперсостояние
начальное состояние. В таком случае вы будете знать, где находится стартовая точка в суперсостоя-
нии. Именно там окажется объект при входе в суперсостояние.
Во-вторых, чтобы запомнить, где был объект, можно использовать историю состояний (state histo-
ry). В таком случае объект может выйти из суперсостояния, а затем вернуться точно в то место, отку-
да вышел.
При подключении истории состояний в углу диаграммы располагается буква "Н" в кружке (см.
рис. 8.5).
Вложить состояния друг в друга можно следующим образом:
1. Нажмите кнопку State (Состояние) панели инструментов диаграммы.
2. Щелкните мышью на состоянии, в которое нужно вложить новое состояние.
254
Глава
Рис. 8.4.
Диаграмма
Состояний
с вложенными
состояниями
Рис. 8.5.
История
суперсостояния
Если требуется задействовать историю состояний:
1. Откройте окно спецификации состояния.
2. Перейдите на вкладку Detail (Подробно).
3. Установите флажок States History (История состояний).
4. Если имеется несколько уровней вложенности, можно отслеживать историю всех состояний,
вложенных в данное суперсостояние. Для этого установите флажок Substates History (История
подсостояний).
Поведение объекта 255
Упражнение
В этом упражнении создается диаграмма Состояний для класса Order.
Постановка задачи
Проектируя класс Order, Карен поняла, что за его поведением нужно наблюдать. Многие требования
к классу значительно изменяются при изменении состояния его экземпляра. Например, заказы, вы-
полнение которых приостановлено, ведут себя не так, как выполненные заказы, а те в свою очередь
не так, как отмененные заказы.
Для того чтобы убедиться, что проект удовлетворяет всем этим требованиям, Карен со своей груп-
пой разработчиков создала диаграмму Состояний для класса Order. С ее помощью разработчики смог-
ли понять, как писать код для этого класса.
Создание диаграммы Состояний
Постройте диаграмму Состояний для класса Order, показанную на рис. 8.6.
Рис. 8.6.
Диаграмма
Состояний
для класса Order
I
ь
Отменить заказ
Добавить к заказу новую позицию
[Остаются незаполненные позиции]
Выполнение заказа
приостановлено
новые позиции
Инициализация
entry: Сохранить дату заказа
do: Собрать клиентскую
информацию
do: Добавить к заказу
Выполнить
заказ
Добавить к заказу новую позицию
[Не осталось незаполненных позиций]
i
I
i
I
Выполнен
do: Выписать счет
Отменен
exit: Сохранить
дату отмены
L
l
£
".
*
if Этапы выполнения упражнения
i'
Создание диаграммы
г
1. Найдите в браузере класс Order.
2. Щелкните на классе правой кнопкой мыши и в открывшемся меню укажите пункт Open State Diagram
(Открыть диаграмму состояний).
-
Добавление начального и конечного состояний
г
Е-
1. Нажмите кнопку Start State (Начальное состояние) панели инструментов.
2. Поместите это состояние на диаграмму.
3. Нажмите кнопку End State (Конечное состояние) панели инструментов.
4. Поместите это состояние на диаграмму.
Добавление суперсостояния
1. Нажмите кнопку State (Состояние) панели инструментов.
2. Поместите это состояние на диаграмму.
Добавление оставшихся состояний
1. На панели инструментов нажмите кнопку State (Состояние).
2. Поместите состояние на диаграмму.
3. Назовите состояние Cancelled (Отменен),
d ,
4. На панели инструментов нажмите кнопку State (Состояние).
' . d •
5. Поместите состояние на диаграмму.
6. Назовите состояние Filled (Выполнен),
7. На панели инструментов нажмите кнопку State (Состояние).
8, Поместите состояние на диаграмму внутрь суперсостояния.
9. Назовите состояние Initialization (Инициализация).
10. На панели инструментов нажмите кнопку State (Состояние).
11. Поместите состояние на диаграмму внутрь суперсостояния.
12. Назовите состояние Pending (Выполнение заказа приостановлено).
Описание состояний
1. Дважды щелкните мышью на состоянии Initialization (Инициализация).
2. Перейдите на вкладку Detail (Подробно).
3. Щелкните правой кнопкой мыши в окне Actions (Действия).
4. В открывшемся меню выберите пункт Insert (Вставить).
5. Дважды щелкните мышью на новом действии.
6. Назовите его Store order date (Сохранить дату заказа).
7. Убедитесь, что в окне When (Когда) указан пункт On Entry (На входе).
8. Повторив шаги 3 — 7, добавьте следующие действия:
• Collect customer info (Собрать клиентскую информацию), в окне When укажите Entry
(Выполнять до завершения)
• Add order items (Добавить к заказу новые позиции), укажите Entry until Exit
(Выполнять до завершения)
9. Нажмите два раза на ОК, чтобы закрыть спецификацию.
10. Дважды щелкните мышью на состоянии Cancelled (Отменен).
11. Повторив шаги 2—7, добавьте действие:
• Store cancellation data (Сохранить дату отмены), укажите On Exit (На выходе)
12. Нажмите два раза на ОК, чтобы закрыть спецификацию.
13. Дважды щелкните мышью на состоянии Filled (Выполнен).
14. Повторив шаги 2 — 7, добавьте действие:
• Bill customer (Выписать счет), укажите Entry until Exit
15. Нажмите два раза на ОК, чтобы закрыть спецификацию.
Добавление переходов
1. Нажмите кнопку Transition (Переход) панели инструментов.
2. Щелкните мышью на начальном состоянии.
3. Проведите линию перехода к состоянию Initialization (Инициализация).
4. Повторив шаги с первого по третий, создайте следующие переходы:
• От состояния Initialization (Инициализация) к состоянию Pending
(Выполнение заказа приостановлено)
Поведение объекта
257
• От состояния Pending (Выполнение заказа приостановлено) к состоянию Filled (Выполнен)
• От суперсостояния к состоянию Cancelled (Отменен)
• От состояния Cancelled (Отменен) к конечному состоянию
• От состояния Filled (Выполнен) к конечному состоянию
5. На панели инструментов нажмите кнопку Transition to Self (Переход к себе).
6. Щелкните мышью на состоянии Pending (Выполнение заказа приостановлено).
Описание переходов
1. Дважды щелкнув мышью на переходе от состояния Initialization (Инициализация) к состоянию Pending
(Выполнение заказа приостановлено), откройте окно спецификации перехода.
2. В поле Event (Событие) введите фразу Finalize order (Выполнить заказ).
3, Щелкнув на кнопке ОК, закройте окно спецификации.
4. Повторив шаги с первого по третий, добавьте событие Cancel Order (Отменить заказ) к переходу меж-
ду суперсостоянием и состоянием Cancelled (Отменен).
5. Дважды щелкнув мышью на переходе от состояния Pending (Выполнение заказа приостановлено) к со-
стоянию Filled (Выполнен), откройте окно его спецификации.
6. В поле Event (Событие) введите фразу Add order item (Добавить к заказу новую позицию).
7. Перейдите на вкладку Detail (Подробно).
3. В поле Condition (Условие) введите No unfilled items remaining (Не осталось незаполненных позиций).
9. Щелкнув на кнопке ОК, закройте окно спецификации.
10. Дважды щелкните мышью на рефлексивном переходе (Transition to Self) состояния Pending (Выполне-
ние заказа приостановлено).
11. В поле Event (Событие) введите фразу Add order item (Добавить к заказу новую позицию).
12. Перейдите на вкладку Detail (Подробно).
13. В поле Condition (Условие) введите Unfilled items remaining (Остаются незаполненные позиции).
14. Щелкнув на кнопке ОК, закройте окно спецификации.
глава
Представление
Компонентов
Типы компонентов
Создание компонентов и соотнесение
с ними классов
Использование диаграмм Компонентов
260
Глава}
В этой главе мы приступаем к изучению представления Компонентов (Component view) среды Rose, в
котором описывается физическая организация системы. Прежде всего мы покажем, как классы преоб-
разуются в библиотеки кода. Затем рассмотрим различные исполняемые файлы, файлы динамических
библиотек (DLL) и другие файлы, необходимые для работы системы. На данном этапе не описывается,
где в сети размещаются все эти компоненты, так как этот вопрос решается в представлении Размеще-
ния.
Что такое компонент?
Компонентом (component) называется физический модуль кода. Компонентами бывают как библиоте-1
ки исходного кода, так и исполняемые файлы. Например, если вы работаете на языке C++, то файлы j
.СРР и .Н будут отдельными компонентами. Получающийся при компиляции исполняемый .EXE файл
также является компонентом системы. j
Перед началом генерации кода необходимо соотнести каждый из файлов с соответствующими j
компонентами. На языке C++ каждый класс соотносится с двумя компонентами, один из которых со-1
ответствует .СРР файлу этого класса, а другой — .Н файлу. На Java каждый класс соответствует одному |
компоненту — файлу с расширением JAVA этого класса. При генерации кода Rose использует инфор-1
мацию о компонентах для создания соответствующих файлов библиотек кода. |
• После создания компонентов их помещают на диаграмму Компонентов и рисуют связи между!
ними. Единственный тип связей между компонентами — это зависимости. Он показывает, что один из 1
компонентов должен компилироваться перед началом компиляции другого. i
Типы компонентов
В среде Rose можно использовать различные пиктограммы для изображения компонентов разных ти-
пов. Как уже упоминалось, существуют два основных типа компонентов: библиотеки исходного кодаи
исполняемые компоненты. Для представления каждого из них также применяется несколько различ-
ных значков.
Компонент (Component) Этот значок соответствует программному модулю с хорошо опреде-
ленным интерфейсом. В поле Stereotype (Стереотип) окна спецификации компонента можно
определить его тип (ActiveX, Applet, Application, DLL, исполняемый файл и другие). Ниже обсуж-
даются различные стереотипы, которые можно использовать для этого значка.
Обобщенный
компонент
Спецификация и тело подпрограммы (Subprogram Specification and Body) Эти значки |
представляют видимую спецификацию подпрограммы и тело ее реализации. Обычно подпрог- |
рамма состоит из коллекции стандартных программных компонентов (subroutines) и не содер- |
жит определений класса. |
Спецификация
подпрограммы
Тело
подпрограммы
Представление Компонентов
261
Главная программа (Main Program) Это файл, содержащий корень программы. Например, в
среде PowerBuilder такой файл содержит объект приложения.
Главная
программа
Спецификация и тело пакета (Package Specification and Body) Пакет в данном случае — это
реализация класса. Спецификацией пакета является заголовочный файл со сведениями о прото-
типах функций для класса. На C++ это файл с расширением .Н. Тело пакета содержит код опера-
ций класса. На C++ это файл .СРР.
При использовании языка Java значок спецификации пакета представляет файл с расширением
JAVA.
Для отображения исполняемых компонентов применяют другие значки. Исполняемые компо-
ненты — это исполняемые файлы, файлы DLL и задачи.
Спецификация
пакета
Тело
пакета
Файл DLL Для отображения файла динамической библиотеки используют значок
DLL
Спецификация и тело задачи (Task Specification and Body) Эти пиктограммы отображают
пакеты, имеющие независимые потоки управления. Исполняемый файл обычно представляют
как спецификацию задачи с расширением .EXE.
Спецификация задачи
Тело задачи
Диаграммы Компонентов
l-hW
Диаграммой Компонентов (Component diagram) называется диаграмма UML, на которой показаны ком-
поненты системы и зависимости между ними (см. рис. 9.1).
На такой диаграмме можно видеть исходный код и исполняемые компоненты системы.
С ее помощью отвечающий за компиляцию и размещение системы персонал выясняет, какие биб-
лиотеки кода существуют и какие исполняемые файлы будут созданы при его компиляции. Разработ-
чики узнают, какие библиотеки кода существуют и каковы связи между ними. Зависимости между
компонентами отражают порядок их компиляции.
262
Глава Я
Рис. 9.1.
Диаграмма
Компонентов
Account ATMServer.exe
Account
Создание диаграмм Компонентов
В Rose диаграммы Компонентов строятся в представлении Компонентов системы. Отдельные компо-
ненты можно создавать непосредственно на этой диаграмме или перетаскивать из браузера.
В браузере диаграмма Компонентов сопровождается следующей пиктограммой:
Для создания диаграммы Компонентов в представлении Компонентов:
1. В браузере щелкните правой кнопкой мыши на пакете, в который нужно поместить диаграмму
Компонентов.
2. В открывшемся меню выберите пункт New Component Diagram (Создать Диаграмма
Компонентов).
3. Введите имя новой диаграммы.
ИЛИ
1. В меню выберите пункт Browse Component Diagram (Обзор Диаграмма Компонентов).
Появится окно Select Component Diagram (Выбор диаграммы Компонентов).
2. Укажите нужный пакет.
3. В окне диаграммы Компонентов выберите пункт <New> (Создать).
4. Введите имя новой диаграммы Компонентов и щелкните на ОК.
Для удаления диаграммы Компонентов:
1. Щелкните правой кнопкой мыши на диаграмме в браузере.
2. В открывшемся меню выберите пункт Delete (Удалить).
ИЛИ
1. В меню выберите пункт Browse Component Diagram (Обзор Диаграмма Компонентов).
Появится окно Select Component Diagram (Выбор диаграммы Компонентов).
2. Укажите нужный пакет.
3. Укажите удаляемый компонент.
4. Щелкните мышью на кнопке Delete (Удалить).
Добавление компонентов
После создания диаграммы необходимо поместить туда компоненты. В панели инструментов диаграм-
мы Компонентов имеются кнопки для всех описанных выше типов. В проектах на C++, Java и Visual Ba-
sic чаще всего используются значки спецификации пакета, тела пакета и исполняемых файлов. Как
говорилось ранее, пиктограмма спецификации пакета применяется для обозначения заголовочных
файлов. Для файлов, созданных на языке Java, проектов Visual Basic и файлов DLL используются знач-
ки спецификации пакета или значки компонента. Пиктограмму тела пакета применяют для представ-
ления файлов .СРР.
С компонентом можно связать документацию, содержащую описание назначения компонента и
его классов.
Как и классы, компоненты можно объединять в пакет для лучшей организации. Как правило, для
каждого пакета Логического представления системы создается один пакет представления Компонен-
тов. Например, если пакет Orders Логического представления содержит классы Order, Orderitem и
OrderForm, в соответствующий пакет представления Компонентов войдут компоненты для всех этих
классов.
.......................................................................................................................................................................«.................................................................................................................................
Представление Компонентов 263
Для добавления нового компонента:
л
1. Нажмите кнопку Component панели инструментов диаграммы.
2. Щелкните мышью на диаграмме в том месте, куда нужно поместить новый компонент.
3. Введите имя нового компонента.
1 или
1. Выберите в меню пункт Tools Create >* Component (Инструменты Создать Компонент).
2. Щелкните мышью на диаграмме в том месте, куда нужно поместить новый компонент.
3. Введите имя нового компонента.
ИЛИ
1. В браузере щелкните правой кнопкой мыши на пакете, который будет содержать новый компо-
нент.
2. В открывшемся меню выберите пункт New Component (Создать Компонент).
3. Введите имя нового компонента.
Для добавления к компоненту текстового описания:
1. Щелкните правой кнопкой мыши на компоненте.
2. В открывшемся меню выберите пункт Open >> Specification (Открыть Спецификация).
Появится окно спецификации компонента.
3. Перейдите на вкладку General (Общие).
4. Введите описание в поле документации.
ИЛИ
1. Дважды щелкните мышью на компоненте. Появится окно его спецификации.
2. Перейдите на вкладку General (Общие).
3. Введите описание в поле документации.
ИЛИ
1. Выделите компонент.
А
2. В меню выберите пункт Browse Specification (Обзор Спецификация). Появится окно спе-
цификации компонента.
3. Перейдите на вкладку General (Общие).
4. Введите описание в поле документации.
ИЛИ
1. Выделите компонент.
2. Введите описание в окне документации.
Для удаления компонента с диаграммы:
1. Выделите его на диаграмме.
2. Нажмите клавишу Delete (Удалить).
IВНИМАНИЕ При удалении компонента с диаграммы он сохраняется в браузере и на других
диаграммах Компонентов системы.
Для удаления компонента из модели:
1. Выделите его на диаграмме.
2. В меню модели выберите пункт Edit Delete from Model (Правка >- Удалить из модели) или на-
жмите комбинацию клавиш CTRL+D.
ИЛИ
264
Глава 9
1. В браузере щелкните правой кнопкой мыши на компоненте.
2. В открывшемся меню выберите пункт Delete (Удалить).
ВНИМАНИЕ Rose удалит компонент со всех диаграмм компонентов и из браузера.
Определение деталей компонента т
Как и для остальных элементов модели Rose, для компонентов можно определить подробные специ-—
фикации: —
Stereotype (Стереотип) Стереотип компонента. Определяет пиктограмму, применяемую ддя=
представления компонента на диаграмме. ~
Выше рассматривались следующие стереотипы: <попе> (отсутствует, будет использована пик-;
тограмма компонента), спецификация подпрограммы, тело подпрограммы, главная программа,—
спецификация пакета, тело пакета, исполняемый файл, DLL-файл, спецификация задачи и тело с
задачи. Кроме того, существуют стереотипы для компонентов ActiveX, апплетов (applet), прило-^
жений (application), пакетов общего типа (generic package) и подпрограмм общего типа (generic^
subprogram). —
Для представления компонентов других типов на используемом языке программирования кг
приложении вы можете создать дополнительные стереотипы самостоятельно. —
Language (Язык) Rose позволяет назначать языки для программирования отдельных компонент
тов. Если вы работаете с версией Rose Enterprise, то можете программировать часть модели на2
C++, часть — на Java, часть — на Visual Basic и т.д. Эта возможность впервые появилась в вереиЙЕЕ
Rose 98. :
Среда Rose Enterprise содержит расширения для C++, Java, Visual Basic и Oracle8. Различные раз^
работники поставляют множество других расширений, повышающих возможности Rose. В том
числе доступны расширения для других языков и средств программирования (PowerBuilder;
Forte, Visual Age Java и т.д.). Полный список партнеров Rose содержится на Web-сайте Rational
Rose по адресу www.rational.com. ;
Declarations (Декларации) Rose позволяет создавать дополнительные декларации, добавляем
мые для каждого компонента при генерации кода. Декларациями называют специфичные для:
языка операторы, применяемые для объявления переменных, классов и т.д. Оператор ^include:
языка C++ также считается декларацией. г
Classes (Классы) Перед началом генерации кода класса нужно соотнести класс с компонентом.=
Это действие позволяет Rose определить, в каком физическом файле следует сохранить код классаЕЕЕ
С каждым компонентом можно соотнести один или несколько классов. В результате в Логиче-о
ском представлении после имени класса появится имя соответствующего компонента, заклк>—
ченное в скобки.
Ял'гга! В eu? ( I [Is i^iem Vie
File • ns
□ Logical View
X Main
; ВО,
Sample (Sample J
I
1 i Component View
| : (3 Deployment View
4
Представление Компонентов
265
Для назначения компоненту стереотипа:
1. Откройте стандартное окно спецификации компонента.
2. Перейдите на вкладку General (Общие) (см. рис. 9.2).
3 Укажите стереотип в поле Stereotype (Стереотип).
Рис. 9.2.
Назначение
стереотипа
компоненту
Component Specification for Account
< General | Detail | Realizes] Files ] IDL
I C++ I MSVC I
Marne: Account
Stereotype: |Package Specify’! Language: [c
documentation.'
-- ---4 ж._ц£-л-----=----'-Г'-
OK Cancel
£row$e -* Help
Если вы работаете в среде Rose 98i с компонентом Java или CORBA, вам предоставляется дополни-
тельное окно спецификации компонента:
ИЛИ
1. Выделите компонент.
2. Введите стереотип, заключив его в двойные угловые скобки: «Имя».
Для назначения компоненту языка:
1. Откройте стандартное окно спецификации компонента.
2. Перейдите на вкладку General (Общие).
3. Укажите язык в поле Language (Язык).
266
Для добавления деклараций:
1. Откройте стандартное окно спецификации компонента.
2. Перейдите на вкладку Detail (Подробно), как показано на рис. 9.3.
3. Укажите декларации в поле Declarations (Декларации).
Рис. 9.3.
Добавление
деклараций
к компоненту
SComponent Specification fot Account ВЕЗ
General Detail j Realizes | Files j IDL [ C++ j MSVC |
Declarations:
------------------------------------------------------L
£row$e I Help
Если нужно соотнести классы с компонентом;
1. Откройте стандартное окно спецификации компонента.
2. Перейдите на вкладку Realizes (Реализует), как показано на рис. 9.4.
Рис. 9.4.
Соотнесение
классов
с компонентом
PI Component Specification fot Account
General | Detail Realizes j Files j IDL ] C++ j MSVCj
M j^how aU classes:
Clast Name
; Rf Account
. ^Card Readei
Cash Dispenser
[ ЭаТМ Screen
card reader
f ^Employee
S&4
E0
rectangle
3<unknown>
S Blob
; Datetime
z S Number
| Logical Package,, j Language I
Logical ViewC++
Logical View
Logical View [
Logical View
Logical View C
Logical View
Logical View
Logical View
Logical View
ERw in Domains
ER win Domains
ER win Domains
ER win Domains
ER win Domains
Java
Java
Analysis
Analysis
Analysis
Analysis
Analysis
Analysis
Analysis
J AVA
3. Щелкните на классе правой кнопкой мыши.
4. В открывшемся меню выберите пункт Assign (Назначить).
ИЛИ
1. Выделите класс в браузере.
2. Перетащите его на желаемый компонент в браузере или на диаграмме.
Представление Компонентов
267
Связывание файлов и ссылок с компонентом
Файл или ссылку можно связать непосредственно с компонентом. Например, к компоненту вашей мо-
дели можно прикрепить файл с кодом или со схемой тестирования функциональных возможностей
компонента. Делается это в браузере или в окне спецификации компонента.
Для прикрепления файла к компоненту:
1. Щелкните правой кнопкой мыши на компоненте в браузере или на диаграмме Компонентов.
2. В открывшемся меню выберите пункт Open Standard Specification (Открыть стандартную специ-
фикацию).
3. Перейдите на вкладку Files (Файлы).
4. Щелкните правой кнопкой мыши внутри белого поля этой вкладки.
5. В открывшемся меню выберите пункт Insert File (Вставить файл).
6. В диалоговом окне открытия файла укажите прикрепляемый файл.
7. Для завершения процесса нажмите на кнопку Open (Открыть).
ИЛИ
1. Щелкните правой кнопкой мыши на компоненте в браузере.
2. В открывшемся меню выберите пункт New File (Создать >► Файл).
3. В диалоговом окне открытия файла укажите прикрепляемый файл.
4. Для завершения процесса нажмите на кнопку Open (Открыть).
Прикрепить к компоненту ссылку на Web-страницу можно следующим образом:
1. Щелкните правой кнопкой мыши на компоненте в браузере или на диаграмме Компонентов,
а
2. В открывшемся меню выберите пункт Open Standard Specification (Открыть стандартную специ-
фикацию).
3. Перейдите на вкладку Files (Файлы).
4. Щелкните правой кнопкой мыши внутри белого поля этой вкладки,
ч
5. В открывшемся меню выберите пункт Insert URL (Вставить ссылку).
6. Введите адрес прикрепляемой ссылки.
ИЛИ
1. Щелкните правой кнопкой мыши на компоненте в браузере.
2. В открывшемся меню выберите пункт New >> URL (Создать >► Ссылка).
3. Введите адрес прикрепляемой ссылки.
Если нужно открыть связанный с компонентом файл:
1. Найдите файл в браузере.
2. Дважды щелкните мышью на имени файла. Rose автоматически запустит соответствующее при-
ложение и загрузит в него фацл.
ИЛИ
1. Щелкните правой кнопкой мыши на файле в браузере.
2. В открывшемся меню выберите пункт Open (Открыть). Rose автоматически запустит соответст-
вующее приложение и загрузит в него файл.
ИЛИ
1. Щелкните правой кнопкой мыши на компоненте в браузере или на диаграмме Компонентов.
2. В открывшемся меню выберите пункт Open Standard Specification (Открыть стандартную специ-
фикацию).
3. Перейдите на вкладку Files (Файлы).
4. Дважды щелкните мышью на файле, который нужно открыть. Rose автоматически запустит со-
ответствующее приложение и загрузит в него файл.
268
Глава 9
ИЛИ
1. Щелкните правой кнопкой мыши на компоненте в браузере или на диаграмме Компонентов.
2. В открывшемся меню выберите пункт Open Standard Specification (Открыть стандартную специ-
фикацию).
3. Перейдите на вкладку Files (Файлы).
4. Щелкните правой кнопкой мыши на файле, который нужно открыть.
5. В появившемся меню выберите пункт Open File/URL (Открыть файл/ссылку). Rose автомати-
чески запустит соответствующее приложение и загрузит в него файл.
Если нужно открыть связанную с компонентом ссылку на Web-страницу:
1. Найдите ссылку в браузере.
2. Дважды щелкните мышью на ссылке. Rose автоматически запустит ваш Web-браузер и загрузит
в него эту ссылку.
ИЛИ
1. Щелкните правой кнопкой мыши на ссылке в браузере.
2. В открывшемся меню выберите пункт Open (Открыть). Rose автоматически запустит ваш
Web-браузер и загрузит ссылку.
ИЛИ
Щелкните правой кнопкой мыши на компоненте в браузере или на диаграмме Компонентов.
2. В открывшемся меню выберите пункт Open Standard Specification (Открыть стандартную специ-
фикацию).
3. Перейдите на вкладку Files (Файлы).
4. Дважды щелкните мышью на ссылке, которую нужно открыть. Rose автоматически запустит
ваш Web-браузер и загрузит ссылку.
ИЛИ
1. Щелкните правой кнопкой мыши на
2. В открывшемся меню выберите пункт
фикацию).
3. Перейдите на вкладку Files (Файлы).
4. Щелкните правой кнопкой мыши на
5. В появившемся меню выберите пункт Open File/URL (Открыть файл/ссылку). Rose автомата^
чески запустит ваш Web-браузер и загрузит в него ссылку.
Для удаления связанного с компонентом файла или ссылки:
1. Щелкните правой кнопкой мыши на файле или ссылке в браузере.
2. В открывшемся меню выберите пункт Delete (Удалить).
компоненте в браузере или на диаграмме Компонентов*
в
Open Standard Specification (Открыть стандартную специ-
лз
я
ссылке, которую нужно открыть.
*6:
Добавление зависимостей между компонентами
Единственный возможный тип связей между компонентами — это зависимость, означающая, что один
компонент зависит от другого. Зависимость между компонентами изображают пунктирной линией.
Компонент В
Представление Компонентов
269
Здесь компонент А зависит от компонента В. Иначе говоря, в компоненте А существует некото-
рый класс, зависящий от какого-то класса компонента В.
Эти связи имеют значение при компиляции. Так как А зависит от В, А не может быть скомпилиро-
ван до В. Анализируя эту диаграмму, можно понять, что сначала компилируется В, а затем уже А.
Как и в случае пакетов, следует избегать циклических зависимостей между компонентами. Если А
зависит от В, а В от А, то ни один из них нельзя компилировать, пока не скомпилирован другой. Та-
ким образом, оба компонента должны рассматриваться как один большой компонент. Все цикличе-
ские зависимости необходимо устранить до начала генерации кода.
Зависимости связаны также с проблемами управления системой. Если А зависит от В, то любые из-
менения в В повлияют на А. С помощью диаграммы Компонентов персонал сопровождения системы
может оценить последствия любых вносимых изменений. Если компонент зависит от большего числа
других компонентов, велика вероятность того, что его затронут изменения в системе.
Наконец, зависимости дают возможность понять, какие части системы можно использовать по-
вторно, а какие нельзя. В нашем примере А трудно будет применить второй раз. Поскольку он зави-
сит от В, то сделать это можно только совместно с В. С другой стороны, В легко использовать
повторно, так как он ни от чего не зависит. Чем от менщпего числа компонентов зависит данный, тем
легче его будет использовать повторно.
Для создания зависимости между компонентами:
1. Нажмите кнопку Dependency (Зависимость) панели инструментов.
ИЛИ
1. В меню выберите пункт Tools >> Create Dependency (Инструменты >* Создать Зависи-
мость) .
2. Проведите линию зависимости от компонента-клиента к компоненту-серверу.
Для удаления зависимости между компонентами:
1. Выделите зависимость на диаграмме.
2. В меню выберите пункт Edit Delete (Правка Удалить) или нажмите клавишу Delete.
пражнение
В этом упражнении создается диаграмма Компонентов системы обработки заказов. На данный
момент уже определены все классы, требуемые для варианта использования "Ввести новый заказ".
По мере реализации других вариантов использования на диаграмму следует добавлять новые компо-
ненты.
Постановка задачи
По завершении анализа и проектирования системы Дэн, один из разработчиков проекта, построил
диаграммы Компонентов. Выбрав в качестве языка программирования C++, Дэн создал для каждого
класса соответствующие этому языку компоненты.
На рис. 9.5 показана главная диаграмма Компонентов системы. Внимание на ней уделяется паке-
там создаваемых компонентов.
Рис. 9.5.
Главная диаграмма
Компонентов
системы
Boundaries
Control
270
Глава J
Ha рис. 9.6 изображены все компоненты пакета Entities. Они содержат классы пакета Entities Логи-
ческого представления системы.
Рис. 9.6.
Диаграмма
Компонентов пакета
Entities
Orderitem
Ha рис. 9.7 показаны компоненты пакета Control. Они содержат классы пакета Control Логическо-
го представления системы.
Рис. 9.7.
Диаграмма
Компонентов пакета
Control
TransactionMgr
Наконец, на рис. 9.8 показаны компоненты пакета Boundaries. Они также соответствуют классам
одноименного пакета Логического представления системы.
Представление Компонентов ______________________________________271
Рис. 9.8.
Диаграмма
Компонентов пакета
Boundaries
OrderDetail
OrderOptions
i OrderDetail
Ha рис. 9.9 показаны все компоненты системы. На этой диаграмме можно видеть все зависимости
между всеми компонентами проектируемой системы.
Рис. 9.9.
Диаграмма
Компонентов
системы
OrderClientExe
OrderMgr
272
Глава!
Этапы выполнения упражнения
Создание пакетов компонентов
1. Щелкните правой кнопкой мыши на представлении компонентов в браузере.
2. В открывшемся меню выберите пункт New >- Package (Создать Пакет).
3. Назовите пакет Entities (Сущности).
4. Повторив шаги с первого по третий, создайте пакеты Boundaries (Границы) и Control (Управление^
Добавление пакетов на Главную диаграмму Компонентов =
1. Откройте Главную диаграмму Компонентов, дважды щелкнув на ней мышью. =
2. Перетащите пакеты Entities, Boundary и Control из браузера на Главную диаграмму. ---
Отображение зависимостей между пакетами =
1. Нажмите кнопку Dependency (Зависимость) панели инструментов. ---
2. Щелкните мышью на пакете Boundaries Главной диаграммы Компонентов. =
3. Проведите линию зависимости к пакету Control. , ~~
4. Повторив шаги 1—3, проведите зависимость от пакета Control к пакету Entities. —1
Добавление компонентов к пакетам и отображение зависимостей =
j
1. Дважды щелкнув мышью на пакете Entities Главной диаграммы Компонентов, откройте Главную -
диаграмму Компонентов этого пакета.
2. Нажмите кнопку Package Specification (Спецификация пакета) панели инструментов. ---
3. Поместите спецификацию пакета на диаграмму. ---
4. Введите имя спецификации пакета — Order Item.
5. Повторив шаги 2 — 4, добавьте спецификацию пакета Order. ---
6. Нажмите кнопку Package Body (Тело пакета) панели инструментов. ---
7. Поместите его на диаграмму. =
8. Введите имя тела пакета — Orderitem. ---
9. Повторив шаги 6 — 8, добавьте тело пакета Order. ---
10. Нажмите кнопку Dependency (Зависимость) панели инструментов. =
11. Щелкните мышью на теле пакета Orderitem.
12. Проведите линию зависимости к спецификации пакета Orderitem. ---
13. Повторив шаги 10 — 12, добавьте линию зависимости между телом пакета Order и спецификацией па-
кета Order. • ----
14. Повторив шаги 10 — 12, добавьте линию зависимости от спецификации пакета Order к спецификации—
пакета Orderitem.
15. С помощью описанного метода создайте следующие компоненты и зависимости: ~~
Для пакета Boundaries: =
• Спецификацию пакета OrderOptions ---
• Тело пакета OrderOptions =
• Спецификацию пакета OrderDetail ---
• Тело пакета OrderDetail =
Зависимости в пакете Boundaries: ---
• От тела пакета OrderOptions к спецификации пакета OrderOptions ---
• От тела пакета OrderDetail к спецификации пакета OrderDetail ---
• От спецификации пакета OrderOptions к спецификации пакета OrderDetail ---
Компонентов
273
Для пакета Control:
• Спецификацию пакета OrderMgr
• Тело пакета OrderMgr
♦ Спецификацию пакета TransactionMgr
• Тело пакета TransactionMgr
Зависимости в пакете Control:
• От тела пакета OrderMgr к спецификации пакета OrderMgr
• От тела пакета TransactionMgr к спецификации пакета TransactionMgr
• От спецификации пакета OrderMgr к спецификации пакета TransactionMgr
Создание диаграммы Компонентов системы
1. Щелкните правой кнопкой мыши на представлении Компонентов в браузере.
2. В открывшемся меню выберите пункт New >- Component Diagram (Создать Диаграмма Компонентов).
3. Назовите новую диаграмму System.
4. Дважды щелкните на этой диаграмме мышью.
Размещение компонентов на диаграмме Компонентов системы
1. Разверните в браузере пакет компонентов Entities, чтобы открыть его.
2. Щелкните мышью на спецификации пакета Order в пакете компонентов Entities.
3. Перетащите эту спецификацию на диаграмму.
4. Повторив шаги 2 и 3, поместите на диаграмму спецификацию пакета Orderitem.
5. С помощью этого метода поместите на диаграмму следующие компоненты:
Из пакета компонентов Boundaries:
• Спецификацию пакета OrderOptions
• Спецификацию пакета OrderDetail
Из пакета компонентов Control:
• Спецификацию пакета OrderMgr
• Спецификацию пакета TransactionMgr
• Спецификацию задачи OrderClientExe
• Спецификацию задачи OrderServerExe
6. Нажмите кнопку Task Specification (Спецификация задачи) панёли инструментов.
7. Поместите на диаграмму спецификацию задачи и назовите ее OrderClientExe.
8. Повторите шаги 6 и 7 для спецификации задачи OrderServerExe.
Добавление оставшихся зависимостей на диаграмму Компонентов системы
несуществующие зависимости будут автоматически показаны на диаграмме Компонентов системы после
(бавления туда соответствующих компонентов. Теперь нужно добавить остальные зависимости.
1 Нажмите кнопку Dependency (Зависимость) панели инструментов.
2. Щелкните мышью на спецификации пакета OrderDetail.
3. Проведите линию зависимости к спецификации пакета OrderMgr.
4. Повторив шаги 1 — 3, создайте следующие зависимости:
• От спецификации пакета OrderMgr к спецификации пакета Order
• От спецификации пакета TransactionMgr к спецификации пакета Orderitem
«От спецификации пакета TransactionMgr к спецификации пакета Order
{ • От спецификации задачи OrderClientExe к спецификации пакета OrderOptions
I • От спецификации задачи OrderServerExe к спецификации пакета OrderMgr
£.
274
Главой
Соотнесение классов с компонентами
1. В Логическом представлении браузера найдите класс Order пакета Entities. =
2. Перетащите этот класс на спецификацию пакета компонента Order в представлении Компонентов брау^
зера. В результате класс Order будет соотнесен со спецификацией пакета компонента Order. -
3. Перетащите класс Order на тело пакета компонента Order в представлении Компонентов браузера!
В результате класс Order будет соотнесен с телом пакета компонента Order. z
4. Повторив шаги 1—3, соотнесите классы со следующими компонентами;
• Класс Orderitem со спецификацией пакета Orderitem
• Класс Orderitem с телом пакета Orderitem
• Класс OrderOptions со спецификацией пакета OrderOptions
• Класс OrderOptions с телом пакета OrderOptions
• Класс OrderDetail со спецификацией пакета OrderDetail
• Класс OrderDetail с телом пакета OrderDetail
• Класс OrderMgr со спецификацией пакета OrderMgr
• Класс OrderMgr с телом пакета OrderMgr
• Класс TransactionMgr со спецификацией пакета TransactionMgr
• Класс TransactionMgr с телом пакета TransactionMgr
10
глава
Представление
Размещения
Создание и использование диаграмм "
Размещения ’
Добавление процессоров :
Добавление устройств :
Добавление связей :
Добавление процессов
В этой главе описывается последнее представление Rose — представление Размещения (Deployment f
view). Оно отражает физическое распределение готового приложения, включая размещение и тополо f
гию сети, а также локализацию в ней компонентов системы. Рассматриваются и такие проблемы, как /
определение требуемой полосы пропускания сети, предполагаемого количества параллельно работаю- f
щих пользователей, действий при неполадках на сервере и т.д.
Представление Размещения содержит процессоры, устройства, процессы и связи между процессо- /
рами и устройствами. Все они наносятся на диаграмму Размещения (Deployment diagram). Для систе- /
мы и, следовательно, для модели Rose может быть создана только одна диаграмма Размещения.
Диаграммы Размещения
Диаграмма Размещения отображает все узлы сети, связи между ними и процессы, выполняющиеся на /
каждом узле. На рис. 10.1 приведен пример диаграммы Размещения.
Рис. 10.1.
Диаграмма
Размещения
системы ATM
Сервер Oracle
« локальная сеть»
ATMCIient.exe ATMCIient.exe
В последующих разделах главы будет описан каждый фрагмент этой диаграммы.
Открытие диаграммы Размещения
В Rose диаграмма Размещения создается в представлении Размещения системы. Поскольку у модели 7
может быть только одна диаграмма этого типа, она не показана в браузере. Чтобы открыть ее, нужно /
дважды щелкнуть мышью на словах Deployment view (Представление Размещения) в браузере.
Открыть диаграмму Размещения можно следующим образом:
1. Дважды щелкните мышью на представлении Размещения в браузере.
2. Приложение Rose откроет диаграмму Размещения модели.
=5
Создание процессоров
Процессором (processor) называется любая машина, имеющая вычислительную мощность, т.е. способ- |
ная производить обработку данных. В эту категорию попадают серверы, рабочие станции и другие t
устройства, содержащие физические процессоры.
На языке UML процессоры изображают следующим символом:
- Процессор
•'"Xn-:1*;
Представление Размещения____________________________________________________ 277
‘«№^j’S4'v^^44pfii'V'3^WWw<<^'*cc*^^S^4<w<?^8?R®b3jc4?¥W^W0?WeieW4BWWWie®wei
Для добавления на диаграмму процессора:
1. Нажмите кнопку Processor (Процессор) панели инструментов диаграммы.
2. Щелкните мышью на диаграмме Размещения в том месте, куда нужно поместить процессор.
3. Введите имя процессора.
ИЛИ
1. Выберите пункт меню Tools >* Create >* Processor (Инструменты >- Создать >- Процессор).
2. Щелкните мышью на диаграмме Размещения в том месте, куда нужно поместить процессор.
3. Введите имя процессора.
ИЛИ
1. Щелкните правой кнопкой мыши на представлении Размещения в браузере.
2. В открывшемся меню выберите пункт New >* Processor (Создать >- Процессор).
3. Введите имя процессора.
Для добавления к процессору текстового описания:
1. Щелкните на процессоре правой кнопкой мыши.
2. В открывшемся меню выберите пункт Open Specification (Открыть спецификацию). Появится
окно спецификации процессора.
3. Перейдите на вкладку General (Общие).
4. Введите описание в поле Documentation (Документация).
ИЛИ
1. Дважды щелкните мышью на процессоре. Откроется окно спецификации процессора.
2. Перейдите на вкладку General (Общие).
3. Введите описание в поле Documentation (Документация).
ИЛИ
1. Выделите процессор.
2. В меню выберите пункт Browse >- Specification (Обзор >- Спецификация). Откроется окно спе-
цификации процессора.
3. Перейдите на вкладку General (Общие).
4. Введите описание в поле Documentation (Документация).
ИЛИ
1. Выделите процессор.
2. Введите описание в окне документации.
Для удаления процессора с диаграммы:
1. Выделите процессор на диаграмме.
2. В меню выберите пункт Edit >- Delete (Правка >- Удалить) или нажмите клавишу Delete.
IВНИМАНИЕ Хотя процессор удален с диаграммы, он по-прежнему остается в браузере.
Для удаления процессора из модели:
1. Выделите процессор на диаграмме Размещения.
2. В меню модели выберите пункт Edit > Delete from Model (Правка >- Удалить из модели) или
нажмите комбинацию клавиш CTRL+D.
278
Глава 10
ИЛИ
1. Щелкните правой кнопкой мыши на процессоре в браузере.
2. В открывшемся меню выберите пункт Delete (Удалить).
ВНИМАНИЕ
Rose удалит процессор с диаграммы Размещения и из браузера.
Добавление деталей к описанию процессора
В спецификации процессора можно ввести информацию о его стереотипе, характеристиках и плани-
ровании.
Как и в случае других элементов модели, стереотипы применяются для классификации процессо-
ров. Например, у вас могут быть компьютеры под управлением UNIX и другие ПК. Чтобы различать
их, вы можете определить стереотипы.
Характеристики процессора — это его физическое описание. Оно может включать в себя скорость
процессора и объем памяти.
Поле планирования (scheduling) процессора содержит описание того, как осуществляется плани-
рование процессов. Доступны следующие параметры:
Preemptive (С приоритетом) Высокоприоритетные процессы имеют преимущество перед низ-
коприоритетными.
Non preemptive (Без приоритета) У процессов нет приоритета. Текущий процесс выполняется
до своего завершения, после чего начинается следующий.
Cyclic (Циклический) Управление передается между процессами по кругу. Каждому процессу
предоставляется определенное время на выполнение, затем управление переходит к следующему
процессу.
Executive (Исполнительный) Существует некоторый вычислительный алгоритм, который
управляет планированием процессов.
Manual (Вручную) Процессы планируются пользователем.
Для назначения процессору стереотипа:
1. Откройте окно спецификации процессора.
2. Перейдите на вкладку General (Общие), показанную на рис. 10.2.
3. Введите стереотип в поле Stereotype (Стереотип).
Рис. 10.2.
Задание
стереотипа
процессора
Processor Specification for 125 First St. ATM BQ
General | Detai |
p 25 First ST АТТГ
Stereotype: I----------------------------------------------3
Documentation:
OK Cancel
Представление Размещения
279
ИЛИ
1. Выделите процессор.
2. Введите название его стереотипа в двойных угловых скобках: «Имя».
Для ввода характеристик процессора:
1. Откройте окно спецификации процессора.
2. Перейдите на вкладку Detail (Подробно), показанную на рис. 10.3.
3. Введите характеристики в поле Characteristics.
Рис. 10.3.
Задание
характеристик
процессора
Processor Specification for 125 First St. ATM QB
General Detail
Characteristics;
Processes:
Name_________________________________________P norty________
(2jATMCIicnt.exe
Scheduling:
Preemptive C Non preemptive C Cyclic
C Executive C Manual
OK
Cancel
EJjowse
Help
Для определения планирования процессора:
1. Откройте окно спецификации процессора.
2. Перейдите на вкладку Detail (Подробно).
3. Укажите один из следующих типов планирования (Scheduling): Preemptive (С приоритетом),
Non preemptive (Без приоритета), Cyclic (Циклический), Executive (Исполнительный) или
Manual (Вручную).
Показать планирование на диаграмме можно следующим образом:
1. Щелкните правой кнопкой мыши на процессоре.
2. В открывшемся меню выберите пункт Show Scheduling (Показать планирование).
Если требуется показать на диаграмме процессы:
1. Щелкните правой кнопкой мыши на процессоре.
2. В открывшемся меню выберите пункт Show Processes (Показать процессы).
Добавление устройств
Устройством (device) называется аппаратура, не обладающая вычислительной мощностью. Это, на-
пример, терминалы ввода/вывода (dumb terminals), принтеры и сканеры.
На языке UML устройства обозначают следующим символом:
Устройство
Процессоры и устройства называются также узлами (nodes) сети.
Для добавления устройства на диаграмму:
1. Нажмите кнопку Device (Устройство) панели инструментов.
2. Щелкните мышью в том месте диаграммы Размещения, куда нужно поместить устройство.
3. Введите имя устройства.
ИЛИ
1. Выберите пункт меню Tools Create Device (Инструменты Создать Устройство).
2. Щелкните мышью на диаграмме Размещения в том месте, куда нужно поместить устройство-
3. Введите имя устройства. —
ИЛИ =
1. Щелкните правой кнопкой мыши на представлении Размещения в браузере. --------
2. В открывшемся меню выберите пункт New Device (Создать Устройство). --------
3- Введите имя устройства. --------
Для добавления к устройству текстового описания: =
Щелкните на устройстве правой кнопкой мыши. ==
2. В открывшемся меню выберите пункт Open Specification (Открыть спецификацию). Появится
окно спецификации устройства.
3. Перейдите на вкладку General (Общие). --------:
4. Введите описание в поле Documentation (Документация). --------
ИЛИ ' =
1. Дважды щелкните мышью на устройстве. Откроется окно спецификации устройства. ---------
2. Перейдите на вкладку General (Общие). --------
3. Введите описание в поле Documentation (Документация). --------
ИЛИ =
1. Выделите устройство. --------
2. В меню выберите пункт Browse >> Specification (Обзор Спецификация). Откроется окно^пё^
цификации устройства.
3- Перейдите на вкладку General (Общие). ~
4. Введите описание в поле Documentation (Документация). --------
ИЛИ =
1. Выделите устройство. --------
2. Введите описание в окне документации. --------
Для удаления устройства с диаграммы: --------
1. Выделите устройство на диаграмме. --------
2. В меню выберите пункт Edit > Delete (Правка > Удалить) или нажмите клавишу Delete. -
ВНИМАНИЕ Хотя устройство удалено с диаграммы, оно по-прежнему остается в браузере.
Для удаления устройства из модели: ---
1. Выделите устройство на диаграмме Размещения. ---
2. В меню модели выберите пункт Edit > Delete from Model (Правка >- Удалить из модели) или на-
жмите комбинацию клавиш CTRL+D. г
Представление Размещения 281
ИЛИ
1. Щелкните правой кнопкой мыши на устройстве в браузере.
2. В открывшемся меню выберите пункт Delete (Удалить).
ВНИМАНИЕ Rose удалит устройство с диаграммы Размещения и из браузера.
Добавление деталей к описанию устройства
Как и в случае процессоров, у устройств можно определять различные детали. Прежде всего это стере-
отип, применяемый для классификации устройств. Во-вторых, это характеристики, задаваемые в
поле Characteristics. Они представляют собой физическое описание устройств.
Для назначения устройству стереотипа:
1, Откройте окно спецификации устройства.
2. Перейдите на вкладку General (Общие), показанную на рис. 10.4.
3. Введите стереотип в поле Stereotype (Стереотип).
Рис. 10.4.
Задание
стереотипа
устройства
Device Specification for Printer
General | Detail ]
: Name: |Prinler
^teieotype: |"
QccuwcntatMu.
ИЛИ
1. Выделите устройство.
2. Введите название его стереотипа в двойных угловых скобках: «Имя».
Для ввода характеристик устройства:
1. Откройте окно спецификации устройства.
2. Перейдите на вкладку Detail (Подробно), показанную на рис. 10.5.
3. Введите характеристики в поле Characteristics.
282
Рис. 10.5.
Задание
характеристик
устройства
Device Specification foi Printer
Gene/al Detail |
CharacteiisLics
...
i
. i I I w ., , |
Lane el | | ^(owse j Help j
Добавление связей
Связью (connection) называется физическая связь между двумя процессорами, двумя устройства
или процессором и устройством. Чаще всего связи отражают физическую сеть соединений между'
лами вашей сети. Кроме того, это может быть ссылка Интернета, связывающая два узла.
Для добавления связи на диаграмму:
1. Нажмите кнопку Connection (Связь) панели инструментов.
ИЛИ
1. В меню выберите пункт Tools Create Connection (Инструменты Создать Связь).
2. Щелкните мышью на узле диаграммы.
3. Проведите линию связи к другому узлу.
Для удаления связи:
1. Выделите связь на диаграмме.
2. Выберите пункт Edit > Delete (Правка Удалить) или нажмите клавишу Delete.
Добавление деталей к описанию связей
В Rose разрешается назначать стереотипы для связей и задавать характеристики связи, представ/
щие собой техническое описание физического соединения. Например, соединение может осуще
ляться по линии Т1.
Назначить связи стереотип можно следующим образом:
1. Откройте окно спецификации связи.
2. Перейдите на вкладку General (Общие), показанную на рис. 10.6.
3. Введите стереотип в поле Stereotype (Стереотип).
ИЛИ
1. Выделите связь.
2. Введите название ее стереотипа в двойных угловых скобках: «Имя».
Для ввода характеристик связи:
1. Откройте окно спецификации связи.
2. Перейдите на вкладку Detail (Подробно), показанную на рис. 10.7.
3. Введите характеристики в поле Characteristics.
Размещения
283
Рис. 10.6.
Задание
стереотипа связи
вConnection Specification for Untitled
Generai | Detail | -
Name: |
Stereotype: | private Network
documentation.
OK. Cancel
Browse
Рис. 10.7.
Задание
характеристик
связи
BS Connection Specification foi Untitled
General Detail [
Characteristics
*•. ’ ..'.s:. • •• r
OK
Cancel
Browse Help
•I ... I —J.: I .J. II ".l.i . J .I IM* .
Добавление процессов
Процессом (process) называется поток обработки информации (execution), выполняющийся на про-
цессоре. Процессом, например, считается исполняемый файл. Добавляя процессы на диаграмму, уде-
ляйте внимание только тем из них, которые имеют отношение к проектируемой системе.
Процессы можно показывать или не показывать на диаграмме Размещения. В первом случае они
отображаются непосредственно под процессором (процессорами), на котором выполняются.
Процессам можно присваивать приоритеты. Если тип планирования соответствующего процессо-
ра позволяет это, то приоритет процесса будет определять, когда он может выполняться.
Для добавления процесса:
1. Щелкните правой кнопкой мыши на процессоре в браузере.
2. В открывшемся меню выберите пункт New > Process (Создать >- Процесс).
3. Введите имя нового процесса.
ИЛИ
1. Откройте окно спецификации процессора.
2. Перейдите на вкладку Detail (Подробно).
284 __________________________________Слава1!
3. Щелкните правой кнопкой мыши в окне Processes (Процессы).
4. В открывшемся меню выберите пункт Insert (Вставить).
5, Введите имя нового процесса.
Для добавления к процессу текстового описания:
И. Откройте окно спецификации процессора.
2. Перейдите на вкладку Detail (Подробно).
3. Введите описание в поле документации.
или
1. Дважды щелкните мышью на процессе в браузере.
2. Перейдите на вкладку Detail (Подробно).
3. Введите описание в поле документации.
или
И. Щелкните на процессе в браузере правой кнопкой мыши.
2. В открывшемся меню выберите пункт Open Specification (Открыть спецификацию).
3. Перейдите на вкладку Detail (Подробно).
4. Введите описание в поле документации.
Для назначения процессу приоритета:
1. Откройте окно спецификации процесса.
2. Перейдите на вкладку General (Общие), показанную на рис. 10.8.
3. Введите приоритет в поле Priority (Приоритет).
Рис. 10.8.
Ввод информации
о процессе
НProcess Specification for ATMCIient.exe
Name; |ATMClient.exej
Processor; 125 First St. ATM
General
documentation;
OK
мм
Cancel
Hfowse T
Для удаления процесса:
1. Щелкните правой кнопкой мыши на процессе в браузере.
2. В открывшемся меню выберите пункт Delete (Удалить),
или
1. Откройте окно спецификации процессора.
2. Перейдите на вкладку Detail (Подробно).
3. Щелкните на удаляемом процессе правой кнопкой мыши.
4. В открывшемся меню выберите пункт Delete (Удалить).
Представление Размещения
285
Упражнение
В этом упражнении создается диаграмма Размещения для системы обработки заказов.
Постановка задачи
Команда разработчиков завершила все предшествующие данному моменту этапы анализа и проекти-
рования системы. Варианты использования, взаимодействие между объектами и компоненты четко
описаны. Тем не менее подразделению администрирования сети необходимо знать, на каких компью-
терах будут размещаться различные компоненты системы. В связи с этим пришлось разработать диа-
грамму Размещения для системы обработки заказов.
Создание диаграммы Размещения
Разработайте диаграмму Размещения для системы обработки заказов. Готовая диаграмма показана на
рис. 10.9.
Рис. 10.9.
Диаграмма
Размещения
для системы
обработки заказов
Сервер
базы данных
Клиентская
рабочая
станция №1
OrderClientExe
OrderServerExe
Сервер
приложения
Принтер
Клиентская
рабочая
станция №2
ATMCIientExe
f Этапы выполнения упражнения
| Добавление узлов к диаграмме Размещения
I 1. Дважды щелкнув мышью на представлении Размещения в браузере, откройте диаграмму Размещения.
L
I 2. Нажмите кнопку Processor (Процессор) панели инструментов.
I 3. Щелкнув мышью на диаграмме, поместите туда процессор.
I 4. Введите имя процессора "Сервер базы данных”.
1 5. Повторив шаги 2 — 4, добавьте следующие процессоры:
к • Сервер приложения
К • Клиентская рабочая станция №1
I • Клиентская рабочая станция №2
6. На панели инструментов нажмите кнопку Device (Устройство).
В 7. Щелкнув мышью на диаграмме, поместите туда устройство.
| 8. Назовите его "Принтер".
286
Глава 10
Добавление связей
1. Нажмите кнопку Connection (Связь) панели инструментов.
2. Щелкните мышью на процессоре "Сервер базы данных".
' 3. Проведите линию связи к процессору "Сервер приложения".
&
4. Повторив шаги 1 — 3, добавьте следующие связи:
« От процессора ’’Сервер приложения" к процессору "Клиентская рабочая станция №1"
* От процессора "Сервер приложения" к процессору "Клиентская рабочая станция №2"
• От процессора "Сервер приложения" к устройству "Принтер"
Добавление процессов
1. Щелкните правой кнопкой мыши на процессоре "Сервер приложения" в браузере.
2. В открывшемся меню выберите пункт New > Process (Создать > Процесс).
3. Введите имя процесса — OrderServerExe.
4. Повторив шаги 1 — 3, добавьте процессы:
® Процесс OrderClientExe на процессоре "Клиентская рабочая етанция №1"
* Процесс ATMCIientExe на процессоре "Клиентская рабочая станция №2"
Показ процессов на диаграмме
1. Щелкните правой кнопкой мыши на процессоре "Сервер приложения".
2. В открывшемся меню выберите пункт Show Processes (Показать процессы).
3. Повторив шаги 1 и 2, покажите процессы на следующих процессорах:
& Клиентская рабочая станция №1
* Клиентская рабочая станция №2