Открыть Электронные книги
Категории
Открыть Аудиокниги
Категории
Открыть Журналы
Категории
Открыть Документы
Категории
UML
Проектирование систем реального времени,
параллельных и распределенных приложений
Designing
Concurrent,
Distributed,
and Real-Time
Applications
with UML
Hassan Gomaa
▼V
Addison-Wesley
Boston * San Francisco • New York • Toronto • M ontreal
London • Munich • Paris • M adrid
Capetown • Sydney • Tokyo • Singapore • Mexico City
Серия «Объектно-
ориентированные технологии
в программировании»
г-
«!
UML
Проектирование
т М ЗХЛ
систем реального
времени,
параллельных
и распределенных
приложений
Хассан Гома
Издание второе
№
Москва, 2011
У Д К 004.415.2
ББК 32.973.26-018.1
Г64
Г64 ГомаХ.
UML. Проектирование систем реального времени, параллельных и распре
деленных приложений: Пер. с англ. - М.: ДМ К Пресс, 2011. - 704 с.: ил.
(Серия «Объектно-ориентированные технологии в программировании»).
ISBN 9785-94074-723-9
Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то
ни было форме и какими бы то ни было средствами без письменного разрешения владельцев
авторских прав.
Материал, изложенный в данной книге, многократно проверен. Но, поскольку вероятность
технических ошибок все равно существует, издательство не может гарантировать абсолютную
точность и правильность приводимых сведений. В связи с этим издательство не несет ответ
ственности за возможные ошибки, связанные с использованием книги.
Предисловие ....................................................................................... 25
Г лава 3. К о н ц е п ц и и п р о е к ти р о в а н и я
П О и а р х и т е к т у р ы .........................................................................56
3 .1. О б ъ е к тн о -о р и е н ти р о в а н н ы е к о н ц е п ц и и ......................................... 56
3.1.1. Основные концепции ..............................................................................56
3.1.2. Объекты и классы ................................................................................... 57
3 .2 . С о кр ы ти е и н ф о р м а ц и и ............................................................................58
3.2.1. Сокрытие информации
в объектно-ориентированном проектировании .................................. 59
3.2.2. Сокрытие информации
в применении к внутренним структурам данных ................................. 59
3.2.3. Сокрытие информации при проектировании интерфейса
с устройствами ввода/вывода ............................................................... 62
3.2.4. Проектирование объектов, скрывающих информацию ................. 63
3 .3. Н а с л е д о в а н и е .......................... ..................... ............................................ 64
3 .4 . А к ти в н ы е и п а с с и в н ы е о бъ екты .......................................................... 65
3 .5 . П ар ал л ел ьн ая о б р а б о тк а ............. ..........................................................66
3.5.1. Преимущества параллельного выполнения задач ................... ........66
3.5.2. Тяжеловесные и облегченные процессы ................. .......... ..................67
3 .6 . К о о п е р а ц и я м е ж д у п а р ал л ел ьны м и за д а ча м и ............................. 68
3.6.1. Проблема взаимного исключения ........................................................ 68
3.6.2. Пример взаимного исключения ............................................................ 69
3.6.3. Проблема синхронизации задач ........................................................... 70
3.6.4. Пример синхронизации задач ............................................................... 70
3.6.5. Проблема производителя/потребителя ................. ..............................72
3.6.6. Слабо связанный обмен сообщениями ................................................ 73
3.6.7. Сильно связанный обмен сообщениями с ответом ............................. 74
3.6.8. Сильно связанный обмен сообщениями без ответа ............................74
3.6.9. Пример обмена сообщениями
между производителем и потребителем .............................................. 75
3.7. С о к р ы т и е и н ф о р м а ц и и
в п р и м е н е н и и к с и н х р о н и з а ц и и д о с т у п а ......................................... 76
3.7.1. Классы и объекты, скрывающие информацию .................. ................. 76
3 .8. М о н и то р ы ......................................................................................................77
3.8.1. Пример монитора................................................................................... 77
3.8.2. Условная синхронизация ....................................................................... 78
3 .9. Ш а б л о н ы п р о е к ти р о в а н и я ..................................................................... 79
Содержание ттшш
3.10. П р о гр а м м н ы е а р х и те ктур ы и к о м п о н е н т н ы е с и с те м ы .........80
3.10.1. Компоненты и разъемы ..................................................................... 81
3.10.2. Компонентные системы ..................................................................... 81
3 .1 1 . Р е зю м е ......................... ............................................................................81
Глава 4. Т е хн о л о ги и
параллельны х и распределенны х систем ................83
4.1. С ре д ы д л я па р а л л е л ьн о й о б р а б о тк и ................................................ 83
4.1.1. Мультипрограммная среда ........................ ........................................ 83
4.1.2. Симметричная мультипроцессорная среда ............. ........................ 83
4.1.3. Распределенная среда .........................................................................84
4 .2 . П о д д е р ж к а и с п о л н е н и я
в м у л ь т и п р о гр а м м н о й и м у л ь т и п р о ц е с с о р н о й с р е д а х ............. 85
4.2.1. Сервисы операционной системы ........................................................85
4.2.2. Стандарт POSIX ..................................................................................... 86
4.2.3. Операционные системы реального времени ..................................... 87
4 .3 . П л а н и р о в а н и е задач ................................................................................ 88
4.3.1. Алгоритмы планирования задач ........................................................... 88
4.3.2. Состояния задач ................................................................................... 89
4.3.3. Контекстное переключение задач .........................................................90
4 .4 . В о п р о с ы в в о д а /в ы в о д а в о п е р а ц и о н н о й с и с т е м е ......... ......... 90
4.4.1. Контроллеры устройств ....................................................................... 90
4.4.2. Обработка прерываний .......................................................................... 91
4.4.3. Ввод/вывод с опросом ........................... ............................................... 92
4 .5. Т е х н о л о ги и к л и е н т -с е р в е р н ы х и р а с п р е д е л е н н ы х с и с те м ... 93
4.5.1. Конфигурации клиент-серверных и распределенных систем ..........93
4.5.2. Коммуникационные сетевые протоколы ..............................................95
4 .6 . Т е х н о л о ги я W o rld W ide W eb .................................................................. 97
4.6.1. Язык Java и World Wide Web ................................................................. 98
4 .7 . С е р в и с ы р а с п р е д е л е н н ы х о п е р а ц и о н н ы х с и с те м ..................... 98
4.7.1. Служба имен .......................................................................................... 99
4.7.2. Связывание клиентов и серверов ......................................................... 99
4.7.3. Сервисы распределенного обмена сообщениями .......................... 100
4.7.4. Сервисы сокетов ................................................................................. 101
4.7.5. Обмен сообщениями через порты .................................................... 101
4.7.6. Восстановление после ош ибок.......................................................... 101
4 .8 . ПО п р о м е ж у т о ч н о го с л о я ................................................................... 102
4.8.1. Платформы для распределенных вычислений ................................ 102
4.8.2. Вызовы удаленных процедур ............................................................ 102
4.8.3. Вызов удаленных методов в языке Java ............... ........................... 104
UM L Проектирование систем
4 .9 . С та н д а р т C O R B A .................................................................................... 104
4.9.1. Брокер объектных запросов .............................................................. 104
4.9.2. Язык определения интерфейса в CORBA ........................................ 105
4.9.3. Статическое и динамическое связывание ....................................... 106
4.9.4. Сервисы CORBA ................................................................................. 107
4.9.5. Интеграция унаследованных приложений
в каркас распределенных объектов .................................................. 107
4 .1 0 . Д р у ги е к о м п о н е н тн ы е те х н о л о ги и .............................................. 108
4.10.1. Технология СОМ ............................................................................... 108
4.10.2. Технология JavaBeans ........................................ .......................... 108
4.10.3. Технология Jini ................................................................................. 108
4 .1 1 . С и с те м ы о б р а б о тк и т р а н з а к ц и й ................................................... 109
4.11.1. Характеристики транзакций ........................................................... 109
4.11.2. Мониторы обработки транзакций .................................................. 110
4 .1 2 . Р е зю м е .................................... ................................................................ 111
Г л а ва 5. Ж и з н е н н ы е ц и кл ы и м е то д ы р а з р а б о тк и
п р о г р а м м н о г о о б е с п е ч е н и я ............................................и 2
5.1. О п р е д е л е н и е ж и з н е н н о го цикла П О ............................................. 112
5.1.1. Модель водопада ............................................................................... 112
5.1.2. Недостатки модели водопада .......................................................... 113
5.1.3. Временные прототипы .................................................................... 114
5.1.4. Создание эволюционирующих прототипов
в ходе инкрементной разработки ..................................................... 115
5.1.5. Комбинирование временных прототипов
и инкрементной разработки .............................................................. 116
5.1.6. Спиральная модель ........................................................................... 117
5.1.7. Унифицированный процесс разработки ПО .................................. 118
5 .2 . В е р и ф и к а ц и я и у тв е р ж д е н и е п р о е к та ......................................... 118
5.2.1. Контроль качества ПО .................. ..................................................... 119
5.2.2. Анализ производительности ............................................................. 119
5 .3 . Т е с т и р о в а н и е п р о гр а м м н о го о б е с п е ч е н и я .............................. 119
5.3.1. Автономное тестирование .................. ............................................. 120
5.3.2. Тестирование сопряжений ................................................................ 120
5.3.3. Комплексное тестирование ............................................................... 120
5.3.4. Приемо-сдаточные испытания ......................................................... 121
5 .4 . Э в о л ю ц и я м е то д о в п р о е к т и р о в а н и я ПО .................................... 121
5 .5 . Э в о л ю ц и я м е то д о в
о б ъ е к тн о -о р и е н ти р о в а н н о го ана л и за и п р о е к ти р о в а н и я ..... 123
Содержание
5.6. О б з о р с о в р е м е н н ы х м е то д о в п р о е к т и р о в а н и я
параллельных систем и систем реального времени ............ 125
5.7. Резюме ......................................................................................... 126
Г л а в а 8 . С т а т и ч е с к о е м о д е л и р о в а н и е ......................................... 152
8.1. А с с о ц и а ц и и м е ж д у к л а сса м и .......................................................... 152
8.1.1. Изображение ассоциаций на диаграммах классов ........................ 153
8.1.2. Кратность ассоциаций ...................................................................... 153
8.1.3. Другие ассоциации ........ ...................... ............................................ 155
8.1.4. Атрибуты связи .................................................................................. 155
8.1.5. Классы-ассоциации ........................................................................... 156
8 .2. И е р а р х и и к о м п о з и ц и и и а гр е ги р о в а н и я .................................... 157
8 .3. И е р а р х и я о б о б щ е н и я /с п е ц и а л и з а ц и и ........................................ 159
8.4 . О гр а н и ч е н и я .......................................................................................... 160
8 .5. С та ти ч е с к о е м о д е л и р о в а н и е и язы к U M L .................................. 160
8.5.1. Статическое моделирование предметной области ........................ 161
8 .6 . С та ти ч е с к о е м о д е л и р о в а н и е к о н те к ста с и с т е м ы .................. 162
8.6.1. Внешние классы .............................. ................................................... 163
8.6.2. Пример разработки диаграммы классов контекста системы
с внешними классами ........................................................................ 164
8.6.3. Актеры и внешние классы ........................ .......................................... 165
8.6.4. Пример разработки диаграммы классов контекста системы
на основе рассмотрения актеров ..................................................... 165
8 .7. С та ти ч е с к о е м о д е л и р о в а н и е с у щ н о с тн ы х к л а ссо в .............. 166
8.8. Р е з ю м е ....................................................................................................... 167
Г л а в а 9 . Р а з б и е н и е н а к л а с с ы и о б ъ е к т ы .................................. 168
9.1. К р и те р и и р а зб и е н и я на объ екты .................................................... 168
9.2. К а те го р и и кл а ссо в п р и л о ж е н и я ....................................................... 169
9.3 . С тр у к ту р и р о в а н и е к а т е го р и й об ъ екто в ....................................... 170
9.4 . В н е ш н и е и и н те р ф е й с н ы е классы ............................................... . 171
9.4.1. Категории внешних классов ........................ ....................................... 171
9.4.2. Идентификация интерфейсных классов ........................................... 172
Содержание _ __ - -."Щ
9.5. И н т е р ф е й с н ы е о бъ екты .................................................................... 173
9.5.1. Объекты интерфейса устройства ..................................................... 173
9.5.2. Объекты интерфейса пользователя ................................................. 175
9.5.3. Объекты интерфейса системы ......................................................... 176
9.5.4. Изображение внешних и интерфейсных классов ............................ 177
9.6. С у щ н о с тн ы е объ екты .......................................................................... 178
9.7. У п р а в л я ю щ и е объ екты ....................................................................... 180
9.7.1. Объекты-координаторы .................................................................... 180
9.7.2. Управляющие объекты, зависящие от состояния ......... ................. 181
9.7.3. Объекты-таймеры ............................................................................. 182
9.8. О бъекты п р и кл а д н о й л о ги к и ........................................................... 182
9.8.1, Объекты бизнес-логики .................................................................... 182
9.8.2. Объекты-алгоритмы .......................................................................... 183
9.9. П о д с и с те м ы ............................................................................................ 183
9.9.1. Пакеты для изображения подсистем ....................... ....................... 184
9.9.2. Вопросы, связанные с разбиением на подсистемы ....................... 185
9.10. Р езю м е ................................................................................................... 186
Г л а в а 10. К о н е ч н ы е а в то м а ты
и д и а г р а м м ы с о с т о я н и й ................................. ................ 187
Г л а в а 1 4 . Р а з б и е н и е н а з а д а ч и .........................................................293
14.1. В о п р о с ы р а з б и е н и я на п а р а л л е л ьн ы е задачи .......................294
14.2. К а те го р и и к р и те р и е в р а з б и е н и я на зад ачи ............................294
14.3. К р и те р и и вы д е лен ия задач в в о д а /в ы в о д а .............................295
14.3.1. Характеристики устройств ввода/вывода ..................................... 295
14.3.2. Асинхронные задачи интерфейса
с устройствами ввода/вывода .................................................. . 296
14.3.3. Периодические задачи интерфейса
с устройством ввода/вывода .......................................................... 297
14.3.4. Пассивные задачи интерфейса
с устройствами ввода/вывода ........................................................ 300
14.3.5. Задачи-мониторы ресурсов ............................................................ 302
14.4. К р и те р и и в ы д елен ия в н у тр е н н и х задач ..................................... 302
14.4.1. Периодические задачи ....................... . .......................................... 302
14.4.2. Асинхронные задачи ........................................................................ 304
14.4.3. Управляющие задачи ......................... ............................................ 306
14.4.4. Задачи интерфейса пользователя .................................................. 307
14.4.5. Множественные однотипные задачи ............................................. 308
14.5. К р и те р и и назначения п р и о р и те т о в задачам ................... . 309
14.5.1. Критические по времени задачи .................................................... 309
14.5.2. Некритические по времени расчетные задачи .............................. 310
14.6. К р и те р и и гр у п п и р о в к и задач ..........................................................310
14.6.1. Темпоральная группировка .............................................................. 311
14.6.2. Последовательная группировка ...................................................... 314
Содержание
Г л а в а 1 6 . Д е т а л ь н о е п р о е к т и р о в а н и е П О ................................ 367
16.1. П р о е к т и р о в а н и е с о с т а в н ы х зад ач .................................................367
16.1.1. Отношения между задачами и классами ....................................... 367
16.1.2. Разделение обязанностей между задачами и классами ................ 368
16.1.3. Темпоральная группировка и объекты интерфейса устройств .... 369
16.1.4. Группировка по управлению
и объекты, скрывающие информацию ............................................. 372
16.2. С и н х р о н и з а ц и я д о с ту п а к кл а сса м ....... .............................. . 374
16.2.1. Пример синхронизации доступа к классу ...................................... 374
16.2.2. Операции класса абстрагирования данных ................................... 374
16.2.3. Синхронизация методом взаимного исключения ......................... 375
16.2.4. Синхронизация нескольких читателей и писателей ...................... 376
16.2.5. Синхронизация нескольких читателей и писателей
с помощью монитора ....................................................................... 377
16.2.6. Синхронизация нескольких читателей и писателей
без ущемления писателей ............................................................... 380
16.3. П р о е к ти р о в а н и е разъ ем о в
для м е ж зад ач ны х к о м м ун и ка ц и й .............................................................. 381
16.3.1. Проектирование разъема, реализующего очередь сообщений ..... 382
16.3.2. Проектирование разъема, реализующего буфер сообщений ..... 383
16.3.3. Проектирование разъема,
реализующего буфер сообщений с ответом ..................................................... 384
16.3.4. Проектирование кооперативных задач
с использованием разъемов .......................................................... 385
................. Содержание j 'ШШШШШ
16.4. Логика упорядочения собы тий..............................................386
16.4.1. Пример логики упорядочения событий
для задач отправителя и получателя .............................................. 386
16.5. Резюме ..................................................................................... 387
Глава 17. А н а л и з п р о и з в о д и те л ь н о с ти
п р о е к т а п а р а л л е л ь н о й с и с т е м ы р е а л ь н о г о в р е м е н и ...... 388
17.1. Теория планирования в реальном врем ени........................388
17.1.1. Планирование периодических задач ................ ............................ 389
17.1.2. Теорема о верхней границе коэффициента использования ЦП ..... 389
17.1.3. Теорема о времени завершения .................................................... 391
17.1 А. Строгая формулировки теоремы о времени завершения ............ 392
17.1.5. Планирование периодических и апериодических задач ............. 394
17.1.6. Планирование с синхронизацией задач ............. ......................... 395
17.2. Развитие теории планирования в реальном времени ...... 395
17.2.1. Инверсия приоритетов ................................................................... 396
17.2.2. Обобщенная теорема
о верхней границе коэффициента использования ЦП ................. 397
17.2.3. Обобщенная теорема о времени завершения .............................. 398
17.2.4. Планирование в реальном времени и проектирование ................ 398
17.2.5. Пример применения
обобщенной теории планирования в реальном времени ............ 399
17.3. Анализ производительности
с помощью анализа последовательности событий ............. 400
17.4. Анализ производительности
с помощью теории планирования в реальном времени
и анализа последовательности событий ................................401
17.5. Пример анализа производительности
с помощью анализа последовательности событий ............. 402
17.6. Пример анализа производительности с применением
теории планирования в реальном времени .......................... 406
17.7. Анализ производительности
по теории планирования в реальном времени
и анализа последовательности событий ...............................408
17.7.1. Эквивалентная апериодическая задааа™»^............. ....................... 408
17.7.2. Назначение других n p n o p n T e jp ^ 3 ^ l.WJ’:^ t t 2 ^ ^ - 44 -................... 410
17.7.3. Детальный анализ апериояШЭркйЗГзадач ...*??>», ................... 411
17.8. Пересмотр проекта ........ .тпггтгг.. ................................414
1 7.9. Оценка и измерение параметро^эддаййш^гельности .... 415
17.10. Резюме .....................................................................................416
UM L Проектирование систем
Г л а в а 1 9 . П р и м е р б а н к о в с к о й с и с т е м ы ...... ...............................483
Особенности книги
Существует несколько книг, описывающих концепции и методы объектно-
ориентированного анализа для приложений общего вида. Однако распределенные
системы и системы реального времени имеют специфические особенности, кото
рые в большинстве изданий рассматриваются лишь поверхностно. Здесь вы най
дете исчерпывающие сведения о том, как фундаментальные объектно-ориентиро
ванные концепции применяются к анализу и проектированию распределенных
программ (включая клиент-серверные приложения) и программ реального вре
мени. Помимо таких объектно-ориентированных концепций, как сокрытие инфор
мации, классы и наследование, в этой книге рассказывается о конечных автоматах,
параллельных задачах, технологии распределенных объектов и планировании в ре
жиме реального времени. Подробно описывается метод COMET, представляющий
собой специализацию основанного на UM L подхода к объектно-ориентированно
му анализу и проектированию параллельных и распределенных систем, а также
систем реального времени. Чтобы продемонстрировать применение COM ET на
Структура книги
практике, в издание включено несколько примеров из разных областей: система
реального времени, система клиент-сервер и распределенная система.
Отличительные черты данной книги состоят в следующем:
□ здесь рассказывается о критериях разбиения, призванных помочь програм
мисту выявлять подсистемы, объекты и параллельно выполняемые задачи
на разных стадиях процесса анализа и проектирования;
□ с помощью динамического моделирования взаимодействия объектов и ко
нечных автоматов описываются способы совместного использования диа
грамм кооперации и диаграмм состояний;
□ делается акцент на параллельности - приводятся характеристики активных
и пассивных объектов;
□ рассматриваются проектирование распределенных приложений и методы
взаимодействия распределенных компонентов;
□ анализируется производительность системы реального времени с помощью
теории планирования в реальном времени;
□ приводятся развернутые примеры различных приложений, иллюстрирую
щие применение изложенных концепций и методов.
Структура книги
Книга состоит из трех частей. Первая часть содержит обзор различных концеп
ций, технологий, жизненных циклов и методов проектирования систем реального
времени, параллельных и распределенных систем. Глава 1 начинается с краткого
описания различий между методом и нотацией, за которым следует обсуждение ха
рактеристик распределенных систем и систем реального времени. В главе 2 изла
гаются те аспекты нотации UML, которые задействованы в методе COMET. Далее
рассматриваются важные концепции проектирования (глава 3) и необходимой тех
нологической поддержки (глава 4) для параллельных и распределенных систем. За
тем в главе 5 рассказывается о жизненных циклах ПО и методах проектирования.
Во второй части речь идет о методе COMET. В главе 6 анализируется жизнен
ный цикл ПО, созданного с использованием COMET. В главе 7 говорится об этапе
моделирования требований в COMET и, в частности, о моделировании прецеден
тов. В главах 8-11 описываются этапы аналитического моделирования в COMET.
Главы 12-16 посвящены этану проектного моделирования. Предмет главы 17 -
расчет производительности созданной системы с помощью теории планирования
в реальном времени и метода монотонного анализа частот.
В третьей части метод COM ET демонстрируется на пяти подробных примерах
проектирования распределенных приложений (две системы реального времени,
система клиент-сервер и две распределенные системы). В главе 18 рассматривается
система управления лифтами и предлагаются два решения: одно распределенное,
другое - нет. В главе 19 исследуется банковская клиент-серверная система. Гла
ва 20 посвящена автомобильной системе круиз-контроля, глава 21 - распределен
ной системе автоматизации производства, а глава 22 - распределенной системе
электронной коммерции.
ЕЭДМШг Предисловие
Благодарности
Я очень признателен рецензентам ранних редакций рукописи. Особая благо
дарность Джеффу Мейджи (Jeff Magee), Ларри МакАлистеру (Larry McAlister),
Кевину Миллсу (Kevin Mills), Роберту Дж. Петтиту IV (Robert G. Pettit: IV) и Ма
рии Эрикссон (M aria Ericsson) за проницательные замечания. Хочу также побла
годарить Антуана К. Дина (Antuan Q. Dinh), Гулама Ахмада Фаруха (Ghulam
Ahmad Farukh), Йохана Галле (Johan Galle), Келли Хьюстона (Kelli Houston),
Джишну Мукерджи (Jishnu Mokerji), Лесли Пробаско (Leslee Probasco), Санджи-
ва Сетия (Sanjeev Setia) и Думинду Виджесекера (Duminda Wijesekera) за ценные
рецензии.
Типографские соглашения ■ 1п т т ш
Спасибо Кевину Миллсу за вклад в использование стереотипов в COMET, Ши-
геру Оцуки (Schigeru Otsuki) - за помощь в работе над материалом по паттернам
проектирования, Роджеру Александру (Roger Alexander) - за участие в работе над
одним из примеров главы 15, Ларри МакАлистеру, помогавшему сделать рис. 21.1.
Особая благодарность - Тиррелл Элбо (Tyrrell Albaugh) за самоотверженный труд
по координации процесса выпуска книги, Кристин Эрикссон (Kristin Ericsson) -
за организацию издательского процесса и Мелинде МакКейн (Melinda McCain) -
за тщательную корректуру рукописи.
Я признателен студентам, принимавшим участие в семинаре по проектирова
нию программных систем в Университете Джорджа Мейсона, за энтузиазм, пре
данность и ценные замечания, а также Институту проектирования программных
систем (Software Engineering Institute - SEI) за предоставленный материал по
планированию в реальном времени, частично положенный в основу главы 17.
Необходимо поблагодарить и Консорциум по повышению производительности
разработки ПО (Software Productivity Consortium) за спонсорскую помощь, ока
занную при работе над первой редакцией глав 9-11 этой книги. Спасибо Арману
Анвару (Arman Anwar), Хуа Линь (H ua Lin) и Майклу Ш ину (Michael Shin) за
изготовление ранних версий рисунков.
И, разумеется, я хочу поблагодарить свою жену Д жилл за понимание, ободре
ние и поддержку.
Типографские соглашения
и альтернативная нотация
В этом разделе описываются использованные в книге типографские соглаше
ния. Здесь же приводится альтернативная нотация UML для обозначения стерео
типов и активных объектов.
Принятые обозначения
Для улучшения восприятия соглашения, применяемые для записи имен клас
сов, объектов и т.д. на рисунках, иногда отличаются от записи тех асе имен в тек
сте. На рисунках имена набраны шрифтом Times Roman, а в тексте - шрифтом
Courier (этим же моноширинным шрифтом в книге набраны листинги - фраг
менты программного кода). Основные термины в тексте выделены курсивом, но
тации U ML отмечены полужирным шрифтом. Используемые обозначения во
многом определяются этапом проектирования. Заглавные буквы в названиях
употребляются по-разному в зависимости от того, об аналитической (менее фор
мальной) или проектной (более формальной) моделях идет речь.
Моделированиетребований
Имена прецедентов набраны шрифтом Courier, первые буквы каждого сло
ва в имени - заглавные, например Снять Деньги.
ЕСТИШЙ^-;| , Предисловие
Аналитическая модель
Ниже приведены соглашения, применяемые в аналитических моделях.
Классы
Имена классов набраны шрифтом Courier с начальными заглавными буква
ми. На рисунках отдельные слова в именах классов не разделяются пробелами
(ЧековыйСчет), а в тексте - разделяются для удобства чтения (Чековый Счет).
Имена атрибутов начинаются с маленькой буквы, например баланс. Если
имя атрибута состоит из нескольких слов, то на рисунках они не разделяются про
белами, а в тексте - разделяются. Первое слово имени начинается с маленькой
буквы, остальные - с большой, допустим номер Счета.
Тип атрибута пишется с большой буквы, скажем Boolean, Integer или Real.
Объекты
Имена объектов записываются по-разному. На рисунках, в отличие от текста,
они всегда подчеркиваются. Кроме того, применяются следующие соглашения:
□ отдельный именованный объект. В этом случае первая буква в первом слове
имени - маленькая, а в последующих словах - большая. Н а рисунках имя
объекта выглядит так: чековыйСчет или другойЧ ековы йС чет. В тексте
те же объекты обозначаются иначе: чековый Счет или другой Чековый
Счет;
□ отдельный неименованный объект. Иногда объекты на рисунках показаны
как неименованные экземпляры класса, например : ЧековыйСчет. В тексте
такой объект будет обозначен как Чековый Счет. Д ля удобства восприятия
двоеточие опускается, а между словами в составном имени вставляются
пробелы.
Таким образом, в зависимости от способа изображения объекта на рисунке его
имя в тексте иногда начинается с большой, а иногда с маленькой буквы.
Сообщения
В аналитической модели все сообщения являются простыми (см. рис. 2.11),
поскольку решение об их типе еще не принято. Имена сообщений начинаются
с большой буквы. Если имя состоит из нескольких слов, то они разделяются про
белами, например Имя Простого Сообщения.
Обозначения на диаграммах состояний
Имена состояний, событий, условий, действий и деятельностей начинаются
с большой буквы, слова в составном имени разделяются запятыми, например со
стояние Ожидание ПИН-код а, событие Наличные Выданы и действие Выдать
Наличные.
Проектная модель
Ниже приведены соглашения, применяемые в проектных моделях.
Активные и пассивные классы
Соглашения об именовании активных и пассивных классов такие же, как для
классов в аналитической модели.
Типографские соглашения |>1 1 8 1 Н Н М Е 1]
Активные и пассивные объекты
Соглашения об именовании активных и пассивных объектов такие же, как для
объектов в аналитической модели.
Сообщения
В проектной модели первое слово в имени сообщения начинается с малень
кой буквы, остальные - с большой. На рисунках слова не разделяются пробелами
(тревожноеСообщение), а в тексте пробелы между ними есть (тревожное Со
общение).
Имена параметров сообщений начинаются с маленькой буквы, например ско
рость. Если имя состоит из нескольких слов, то на рисунках оно записывается
без разделительных пробелов, а в тексте - с ними. Первое слово в составном име
ни начинается с маленькой буквы, остальные - с большой, скажем полныйПро-
бег (на рисунке) или полный Пробег (в тексте).
а)
«периодическим»
:ГенераторОтчетов
б)
«периодическая задача»
:ГенераторОтчетов
Нотация UML,
концепции
проектирования,
технологии,
жизненные циклы
и методы
Гла Т тл ш т 4 .
Введение Технологии параллельны х
и распределенных систем
Г лаы л
Обзор нотации UML Глаии* 5;-
Жизненные циклы и методы
Г иевна 3 . разработки программного
Концепции обеспечения
проектирования ПО
и архитектуры
.*1 . L 4 V ," "r -
и реального времени. Издание предназначено для тех, кто хочет научиться проек
тировать и оценивать программное обеспечение параллельных и распределенных
систем и систем реального времени.
В этой главе вводятся объектно-ориентированные концепции и обсуждаются
общие характеристики трех вышеупомянутых категорий программных систем.
Система
реального времени
Узел 2
«локальная сеть»
г ---------- Г
Узел 3 Узел 4
1.6. Резюме
В этой главе описывались характеристики параллельных приложений, в том
числе особенности двух важных классов: распределенных и реального времени.
Было сказано о различии между методом и нотацией и объяснено, как метод
C OM ET соотносится с нотацией языка UML. В главе 2 речь пойдет о тех аспектах
нотации UML, которые применяются в COMET. В главе 3 приведены дополни
тельные сведения о фундаментальных концепциях, лежащих в основе объектно-
ориентированного проектирования параллельных приложений. Более детально
рассматривается концепция параллельно выполняемых задач, в частности механиз
ма обмена сообщениями и синхронизации. Кроме того, параллелизм должен под
держиваться операционной системой или языком программирования (см. главу 4).
I s^ n U v* ? , ;^ Л :< ч Г п :ч г > p г/ \
П рец ед ент^)
Актер
( ^ Прецедент~А^ )
/ \
«extend» , \ «extend»
С Прецедент В J )
/ \
«include» / \ «include»
/ \
( ^ П рецедентУ^ ) (^ П р е ц е д е н т ? ^ )
Объект ы
Суперкласс
# защищенныеАтрибутыКласса
ИмяКласса
- закрытыеАтрибутыКласса ±
+ открытыеОперацииКласса ПодклассА1 ПодклассА1
- закрытыеОперацииКласса
- закрытыеАтрибутыКласса - закрытыеАтрибутыКласса
Обобщение/специализация
1: Входное
Сообщение
2: Внутреннее 1 i
Сообщение 1 1
1
3*: Повторяющееся . 1
Сообщение . 1
!
4 [Условие]: 5
Условное 1
Сообщение 1
V1
т
i l
т
l !
и
Рис. 2.6. Диаграмма последовательности в нотации UML
Конечное Состояние
2 .7. Пакеты
В UML пакетом называется группа элементов модели, используемая, напри
мер, для представления системы или подсистемы. Такая группа изображается
пиктограммой капки - большим прямоугольником, над которым находится пря
моугольник поменьше (рис. 2.9). Пакеты бывают вложенными; между ними мо
гут существовать отношения зависимости и обобщения/специализации. Пакеты
способны содержать классы, объекты или прецеденты.
«система»
ПакетСистемы
4,----------------Зависимость
Вариант 2:
«синхронное сообщение»
имяСообщения (списокаргументов)
1 :входное
Сообщение
£
-folgP 2 : асинхронное j
«задача»
объектА
Сообщение j
3 : синхронное
Сообщение
4: синхронное
Сообщение
В настоящей книге узлом, как правило, является компьютер, при этом макси
мальное число экземпляров узла может быть ограничено (см. раздел 2.10). Для
физического соединения имеется стереотип, задающий тип соединения, например
«локальная сеть» или «глобальная сеть». На рис. 2.13 показаны узлы двух ти
пов: банкомат (каждый такой клиент занимает ровно один узел), соединенный
Рис. 2.13. Нотация UML для диаграммы развертывания
Счет
{версия =1.0, автор = Gii!}
- номерСчета: integer
- баланс: Rea!
{баланс >0}
Класс
Клиент Счет
Объекты
счет :Счет
Счет
номерСчета: Integer
баланс : Real
Объекты со значениями
Счет
номерСчета: Integer
баланс: Real
читатьБаланс(): Real
кредитовать сумма : Real)
дебетовать(сумма; Real)
открыть(номерСчета : Integer)
закрытьО
Объект - это экземпляр класса. В языке Pascal можно определить тип записи,
но которому создаются конкретные экземпляры записей. Языки, основанные на
классах, обобщают концепцию, позволяя определять типы объектов, которые ин
капсулируют данные и выполняемые над ними операции. Индивидуальные объек
ты, являющиеся экземплярами класса, создаются при необходимости во время
выполнения.
Все объекты отличаются друг от друга. Иногда у объектов бывают уникаль
ные идентификаторы (допустим, номер счета или фамилия клиента), но это не
обязательно. Возьмите, к примеру, два синих мячика - они совершенно одинако
вы, но тем не менее это два предмета, а не один.
Сокрытие информации
3.2.2.
в применении к внутренним структурам данных
Одна из проблем, возникающих при разработке прикладного ПО, состоит
в том, что иногда приходится изменять важные структуры данных, к которым
имеют доступ несколько объектов. Если бы не сокрытие информации, то любая
корректировка такой структуры, скорее всего, привела бы к необходимости моди
фицировать все обращающиеся к ней объекты. Подобный подход позволяет
скрыть проектные решения, касающиеся структуры данных, все внутренние свя
зи и детали работающих с ней операций. Решение заключается в том, чтобы ин
капсулировать структуру данных в объекте; тогда напрямую к ней смогут обра
щаться только операции, предоставляемые объектом.
Ш Н И М .... Концепции проектирования ПО и архитектуры
Другие объекты пол\ х о осредоваш тн доступ к инкапсулированной струк
туре данных путем вызова операций объекта. Поэтому, если структура изменится,
это затронет лишь объект, содержащий ее. Внешний интерфейс, поддерживаемый
таким объектом, останется прежним, и объекты, имевшие опосредованный доступ
к структуре, модифицировать не придется. Описанная форма сокрытия инфор
мации называется абстрагированием данных.
Для иллюстрации преимуществ, которые дает сокрытие информации при про
ектировании структур данных, рассмотрим функциональное и объектное решение
следующей задачи. Со стеком работают несколько модулей; при функциональном
подходе модули - это процедуры или функции, а при объектном - объекты. Для
функционального решения стек представляет собой глобальную структуру данных,
к которой каждый модуль обращается напрямую. Поэтому каждый модуль должен
знать о представлении стека (в виде массива или связанного списка), если хочет
манипулировать им (рис. 3,4).
Скрывающий
информацию
объект стека
Прикладная Программа
Программное
Обеспечение
Интерфейс Виртуального
Устройства (Операции)
Интерфейс
Реального Устройства
Аппаратное
Обеспечение
Реальное Устройство
Ввода/Вывода
33. Наследование
Наследование - это полезный механизм абстрагирования, применяемый в ана
лизе и проектировании. С помощью наследования естественно моделируются
объекты, похожие в некоторых отношениях, то есть имеющие ряд общих свойств
и несколько специфичных. Наследование - механизм классификации, широко
используемый и в других областях. Возьмите, например, зоологическую класси
фикацию, в соответствии с которой животные подразделяются на млекопитающих,
рыб, рептилий и т.д. У собак и кошек есть общие свойства, поэтому тех и других
относят к млекопитающим. Однако имеются и различия: например, собака лает,
а кошка мяукает.
Наследование - это механизм разделения и повторного использования одного
и того же кода в разных классах. Класс-нотомок наследует' свойства (инкапсули
рованные данные и операции) от родительского класса. Но он может модифици
ровать структуру (то есть инкапсулированные данные) и поведение (операции)
своего родителя. Родительский класс называется суперклассом или базовым клас
сом, класс-потомок - подклассом или производным классом. Адаптация родитель
ского класса для нужд потомка называется специализацией. Классы-потомки
можно специализировать и дальше, создавая иерархии классов, или иерархии
обобщения/специализации.
Наследование классов - это меха! ним расширения функциональности при
ложения путем повторного использования возможностей, реализованных в роди
тельских классах. Таким образом, новый класс допустимо частично определять
через уже существующий. Класс-потомок способен адаптировать инкапсулиро
ванные данные (переменные экземпляра) и операции своего родителя. Адаптация
инкапсулированных данных достигается путем определения новых переменных
экземпляра. Адаптация операций состоит в добавлении новых или переопреде
лении имеющихся операций. Класс-потомок может также подавить некоторые
Активные и пассивные объекты ..л в м п ш
операции родителя, однако делать это не рекомендуется, поскольку подкласс и су
перкласс в таком случае не будут иметь общего интерфейса.
Концепция наследования очень эффективна в объектно-ориентированном
программировании. Она используется для разделения кода и как механизм адап
тации, при котором новый класс базируется на определении существующего без
необходимости вручную копировать код. Преимущества такого подхода особенно
ясно видны на этапе детального проектирования и кодирования, поскольку имен
но там можно получить максимальный выигрыш от разделения кода [Meyer 1997].
Применение наследования в проектировании подробно рассматривается в главе 15.
детальПодготовлена
«задача»
«задача»
подъемно
ч------ ---- сверлильныйРобот
ТранспортныйРобот
детальОбработана
детальПодготовлена детальОтпущена
л. -------- л
«задача» «задача»
роботА ---------- роботВ
зонаКонфликта детальЗахвачена
сообщение
«задача»
----- Jb «задача»
задачаПроизводитель задачаПотребитель
идентификаторАвтомобиля
I
... «задача»
системаРобота
...............................................................■..
4— ---------- .
Рис. 3.15. Пример Готово
обмена сообщениями
write read
3.8. Мониторы
М онитор объединяет концепции сокрытия информации и синхронизации.
Монитор - это объект, который инкапсулирует данные и имеет взаимно исклю
чающие операции. Критическая секция каждой задачи заменяется вызовом опе
рации монитора. С каждым монитором неявно ассоциируется семафор, который
называется замком монитора. Таким образом, в любой момент времени в монито
ре может находиться не более одной задачи. Обращение к любой операции мони
тора приводит к тому, что вызывающая задача захватывает ассоциированный
с ним замок. Однако, если замок уже захвачен, задача блокируется до тех пор, пока
не сможет получить его. Выход из монитора приводит к освобождению замка,
который может быть захвачен другой задачей. Взаимно исключающие операции
монитора называют еще охраняемыми операциями или синхронизированными ме
тодами (в языке Java).
3.11. Резюме
В этой главе описаны ключевые концепции проектирования параллельных объект-
но-ориентированных систем, а также некоторые важные концепции, относящиеся
82 ! « H № Концепции проектирования ПО и архитектуры
к разработке архитектуры таких систем. Упомянутые здесь объоктно-ориентирован-
ные концепции закладывают основу для нескольких последующих глав. Стати
ческие структурные аспекты классов с точки зрения анализа подробнее рассмотре
ны в главе 8 (статическое моделирование) и в главе 9 (структурирование классов
и объектов); о динамических аспектах взаимодействия объектов говорится в гла
ве 11. Взгляд на классы с точки зрения проектирования представлен в главе 15.
О выделении параллельных задач и проблемах взаимодействия между ними речь
пойдет в главе 13, посвященной архитектуре распределенных приложений. Про
ектирование отдельных задач описано в главах 12 и 13. И наконец, инфраструкту
ра для поддержки параллельных и распределенных приложений рассматривается
в главе 4.
Глава 4 „ Технологии иараяяеяьиыж
и расиредеяеииыж смстеи
В этой главе мы остановимся на инфраструктуре, то есть технологии параллель
ной и распределенной обработки, которая нужна в приложениях реального вре
мени и в распределенных приложениях. Инфраструктуру обеспечивают операци
онная система, вычислительная сеть и ПО промежуточного слоя. Сначала мы
рассмотрим поддержку мультипрограммирования и симметричного мультипро
цессирования со стороны операционной системы и дадим дополнительную ин
формацию о планировании задач и устройствах ввода/вывода. Затем опишем тех
нологию организации сред распределенной обработки. Сюда входят технологии
клиент-сервер и W W W (World Wide Web - Всемирная паутина). В этой главе
рассказывается также о стеках сетевых протоколов ISO и TC P/IP, рассматрива
ются сервисы распределенных операционных систем и технологии создания про
межуточного ПО, в частности RPC, RMI, CORBA и Java Beans. Кроме того, речь
пойдет о системах обработки транзакций.
цп
«системная шина»
Контроллер Устройства
Ввода/Вывода
Буфер Ввода
Буфер Вывода
Регистр Управления
Терминал
Регистр Состояния Ввода/Вывода
Обычно клиенты и серверы работают на разных машинах. Они могут быть реа
лизованы на разных платформах, под разными операционными системами и в раз
личных сетях. Клиент - это, как правило, настольный ПК или рабочая станция.
Часто он поддерживает графический интерфейс пользователя (ГИП). У сервера
94 Параллельные и распределенные системы
обычно имеется большой объем памяти н дисков, мощный процессор и средства
повышения надежности, Помимо управления данными, он предоставляет услуги
прикладного характера, В простейшей системе клиент-сервер имеется один сер
вер и много клиентов. Типичный пример такого рода - приложение, которое об
служивает банкоматы, принадлежащие одному банку. Здесь банкоматы разме
щены на территории одного штата и обмениваются данными с центральным
банковским сервером.
В более сложной системе работает несколько серверов. Клиент может обра
щаться к различным серверам, а сами серверы -- друг к другу (рис. 4.7). Если
продолжить пример с банкоматами, то в качестве многосерверного приложения
допустимо рассмотреть систему федерального уровня, где любой банкомат в со
стоянии общаться с любым банковским сервером, входящим в систему. В много
уровневых клиент-серверных системах сервер иногда выступает в роли клиента
другого сервера.
Клиентское Прикладное
ПО / Графический Интерфейс Серверное Прикладное ПО
Коммуникационное ПО Коммуникационное ПО
У
«сеть»
1Это явное преувеличение. Модель ISO OSI называется эталонной и когда-то претендова
ла па роль стандарта, по в современных сетях практически не используется, будучи вы
теснена стеком протоколов T C P/IP. - Прим. перев.
96 Параллельные и распределенные системы
Транспортный Транспортный
Уровень 4 Уровень 4
(TCP) (TCP)
Узел маршрутизатора
Примечание. Пунктирные стрелки на этом рисунке нарисованы только для иллюстрации и не имеют отношения к нотации UML.
Узел 1 Узел 2
:РаспределенноеЯдро :РаспределенноеЯдро
сообщение •
а)
Клиентский Узел
сервис | t (
(запрос) 1 сервис (запрос)
: клиентская
Заглушка
1ие |
сообщение t сообщение сервер
Запрос =т I Ответ
: сетевой
Интерфейс
(ие I
сообщение
Запрос
= t
сообщение f
Ответ
:сетевои
Интерфейс
сообщение I t сообщение
Запрос 4 Ответ
серверная
Заглушка
сервис
1C ,I t!
(запрос)
)С)| |
Серверный Узел
сервер
Клиентский Узел
сервис
(запрос)
:клиентскии
Заместитель
сообщение
ine | Т с сообщение
Запрос= т I Ответ
:сетевои
Интерфейс
сообщенine I
Запрос
= I
сообщение
Ответ
:сетевои
Интерфейс
сообщение I сообщение
Запрос # Ответ
1”
•.серверный
Заместитель
сервисD I Т
(запрос) Серверный Узел
S> t I
сервер
Интерфейс Интерфейс
Клиентская Серверный
Динамического Динамического
IDL-Заглушка IDL-Каркас
Вызова Вызова
Базовые Средства
I
Базовые Средства Базовые Средства
ORB на Стороне ORB на Стороне ORB на Стороне
Сервера Клиента Сервера
аннулировать, чтобы система пришла в t п и сост >ш т как будто данная транз
акция и не начиналась.
У транзакций выделяются следующие свойства:
□ атомарность. Транзакция - это неделимая единица работы. Она либо вы
полняется полностью (фиксируется), либо не выполняется вовсе (откаты
вается);
□ непротиворечивость. После завершения транзакции система должна ока
заться в непротиворечивом состоянии;
□ изолированность. На поведение транзакции не должны оказывать влияния
другие транзакции;
□ долговечность, или устойчивость. Изменения сохраняются после заверше
ния транзакции, даже если за ним последует сбой системы.
5.7. Резюме
В этой главе рассматривалась проблема разработки ПО с точки зрения жиз
ненных циклов. Мы вкратце описали и сравнили различные модели жизненных
циклов ПО, в частности спиральную модель и унифицированный процесс разра
ботки ПО. Рассказывалось о роли верификации, утверждения и тестирования
ПО. Затем были проанализированы основные этапы развития методов проекти
рования ПО, методов объектно-ориентированного анализа и проектирования
и методов проектирования систем реального времени. В главе 6 речь пойдет
о жизненном цикле объектно-ориентированного ПО для метода COMET.
I
Пользователь
6.5. Резюме
В данной главе был онисан применяемый в методе COM ET жизненный цикл
объектно-ориентированной разработки параллельных приложений, в частности
распределенных и реального времени. Сравнивался жизненный цикл COM ET
с унифицированным процессом разработки ПО и со спиральной моделью, расска
зывалось о способах использования COM ET в сочетании с этими методиками,
а также об основных видах деятельности, выполняемых в методе COMET, и ша
гах его применения.
ирещ '«&е>-№^4
Функциональные требования к системе (или, как их еще называют, внешние тре
бования) определяют, что система должна делать для пользователя. При указа
нии внешних требований систему следует рассматривать как черный ящик, то есть
принимать во внимание лишь ее внешние характеристики.
В этой главе описывается подход к заданию функциональных требований
с помощью прецедентов, объясняются понятия актера и прецедента. Здесь также
будут рассмотрены отношения между прецедентами, в частности отношения рас
ширяет (extend) и включает (include). Приводится несколько примеров.
7.1. Прецеденты
При использовании подхода на основе прецедентов функциональные требо
вания задаются в терминах актеров (actor), в роли которых выступают пользова
тели системы, и прецедентов (use case). Актер участвует в прецеденте. Прецедент
устанавливает последовательность взаимодействий между одним или нескольки
ми актерами и системой. На этапе определения требований модель прецедентов
описывает систему как черный ящик, а взаимодействие между актерами и систе
мой, то есть действия пользователя и реакция на них системы, указываются в сло
весной форме. Прецеденты в данной модели выражают внешние требования
к системе. Каждый прецедент описывает поведение некоторой части системы,
не раскрывая ее внутренней структуры. На следующем этапе аналитического мо
делирования определяются объекты, участвующие в каждом прецеденте.
Рассмотрим простой пример из области банковского дела - банкомат, позво
ляющий клиентам снимать наличные деньги со своего счета. Имеется один актер -
Клиент Банкомата, и один прецедент - Снять Деньги (рис. 7.1). Прецедент
Снять Деньги описывает последовательность взаимодействий между клиентом
и системой, начиная с момента, когда клиент вставляет карточку в банкомат, и за
канчивая выдачей наличных.
7,2. Актеры
Актер представляет одного или нескольких внешних пользователей, взаимо
действующих с системой [Rumbaugh, Booch, and Jacobson 1999]. В модели преце
дентов актеры - это единственные внешние сущности, взаимодействующие с сис
темой.
Есть несколько способов моделирования актеров [Fowler and Scott 1999]. Час
то в роли актера выступает человек. Во многих информационных системах нет
никаких других актеров, кроме людей. Но актером бывает и внешняя система.
В приложениях реального времени и в распределенных приложениях актером мо
жет стать внешнее устройство ввода/вывода или таймер. Такие актеры чаще всего
встречаются во встраиваемых системах реального времени, где система взаимо
действует с внешней средой посредством датчиков и приводов.
Главный актер (primary actor) инициирует прецедент, то есть некоторые дей
ствия в системе. Другие актеры, называемые второстепенными (secondary actors),
также могут участвовать в прецеденте, получая результаты и генерируя исходные
данные. По меньшей мере один актер (обычно главный) должен иметь какой-то
результат от прецедента. Однако в системах реального времени, когда в роли глав
ного актера выступает внешнее устройство ввода/вывода или таймер, бенефици
арием становится второстепенный актер-человек, получающий от системы ту или
иную информацию.
Актер-человек использует для взаимодействия с системой различные внеш
ние устройства ввода/вывода: стандартные (клавиатуру, дисплей или мышь) либо
нестандартные (скажем, различные датчики). В любом случае актером является
человек, а не эти устройства.
Рассмотрим несколько примеров актеров-людей. В банковской системе акте
ром является, например, кассир, который взаимодействует с системой посред
ством стандартной клавиатуры, дисплея и мыши. Другой пример актера - клиент,
общающийся с системой через банкомат. В этом случае клиент применяет для
взаимодействия, помимо клавиатуры и дисплея, и другие устройства ввода/вы
вода: устройство считывания карточки, устройство выдачи наличных, устройство
для печати чеков.
Иногда, впрочем, в роли актера выступает устройство. Так бывает, когда люди
в прецеденте не участвуют, что типично для приложений реального времени. Обыч
но такой актер взаимодействует с системой посредством датчика. Примером мо
жет служить Датчик Прибытия в системе управления лифтами (рис. 7.2). Этот
датчик показывает, что лифт приближается к этажу, на котором следует оста
новиться. Тем самым он инициирует прецедент Остановка Лифта на Этаже.
Другим актером в системе управления лифтами является пассажир, который об
щается с системой с помощью кнопок выбора этажа и управления лифтом. Дей
ствия этою актера фиксируют датчики кнопок.
Актером может быть также таймер, который периодически посылает события
системе. Когда система должна выводить некую информацию на регулярной ос
нове, возникает нужда в регулярных прецедентах. Особенно важно это в системах
ШШШЖЫ; Моделирование прецедентов
Актером может быть также внешняя система, которая либо инициирует пре
цедент (в качестве главного актера), либо участвует в нем (в качестве второсте
пенного). Пример такого рода - Заводской Робот в системе автоматизации про
изводства. Он начинает прецедент Поднять Тревогу и Известить, показанный
на рис. 7.4. Робот генерирует сигнал тревоги, который посылается операторам,
уполномоченным реагировать на этот сигнал. В данном случае Заводской Ро
бот является главным актером, инициирующим прецедент, а Дежурный Опера
тор - второстепенным, принимающим сигналы тревоги.
/ ^ П о д н я т ь Тревогу~'"'ч\и_
Л и Известить Операторау
только при определенных условиях - например, если актер вводит в систему не
корректные данные. В зависимости от особенностей приложения альтернативные
ветви позже могут снова сливаться с главной последовательностью. Альтернатив
ные ветви составляют часть описания прецедента.
В прецеденте Снять Деньги главная последовательность - это цепочка ша
гов, приводящая к получению наличных. Альтернативные ветви соответствуют раз
личным ошибкам. Например, если клиент ввел некорректный ПИН-код (П И Н -
персональный идентификационный номер), система должна потребовать повтор
ного ввода. Банкомат может также не опознать карточку, определить, что она во
рованная, и т.д.
‘extend-
Проверить ПИ!
/ \
/
/
•include» \
'include»
// ч «include»
/ \
( Пере
Перевести fl
7.9. Резюме
В этой главе описывалось формулирование функциональных требований
к системе на основе прецедентов. Рассматривались концепции актера и прецеден-
тн, рассказывалось об отнолюпиях между прецедентами, в частности об от'
-1 т> и г Т I т р _
► Направление ассоциации
«сущность» «сущность»
Покупатель Продавец
«сущность»
Агент
имя : String
ад ре с: String
компания : String
рабочийТелефон: Siring
домашнийТелефон : String
8.1.5. Классы-ассоциации
Альтернативой использованию атрибутов связи служит класс-ассоциация.
Так называется класс, который моделирует ассоциацию между двумя или более
классами. Как правило, эта концепция оказывается полезной для ассоциаций мно-
гие-ко-многим. Атрибутами класса-ассоциации являются атрибуты ассоциации.
Иерархии композиции и агрегирования - й | И В И И В Ш
«сущность»
Счет
номерСчета : Integer
баланс •. Real
типСчета
«сущность» «сущность»
ЧековыйСчет СберегательныйСчет
8.4. Ограничения
Ограничение (constraint) задает условие, которое должно быть выполнено
[Rumbaugh, Booch, and Jacobson 1999]. Ограничение выражается в произволь
ной словесной форме. UM L также включает язык описания ограничений Object
C onstraint Language (О CL) [Warner and Kleppe 1999], использование которого,
впрочем, факультативно.
Один из видов ограничений - ограничения иа атрибуты. Так, в примере с бан
ком можно потребовать, чтобы баланс счета никогда не был отрицательным. Это
выражается в виде ограничения на атрибут баланс класса Счет: [б ал ан с > 0].
На диаграмме классов ограничение на атрибут показывается рядом с соответству
ющим классом (рис. 8.14).
Другой вид ограничений - ограничение иа связь. Обычно объекты со стороны
«многие» не упорядочены. Но в некоторых случаях предметная область предпо
лагает наличие порядка между объектами, и данное требование желательно отра
зить в модели. Рассмотрим, к примеру, такую ассоциацию один-ко-многим:
Счет Модифицирован Транзакцией Банкомата
В подобной ассоциации транзакции упорядочены по времени, и, значит, огра
ничение легко выразить в виде {упорядочены по времени}. Такое ограничение
можно изобразить на диаграмме классов, как показано на рис. 8.15.
«сущность»
Счет
номерСчета: Integer
баланс: Real
_____ ^
М одифицирован
f
{упорядочены
по времени}
«сущность»
ТранзакцияБанкомата
«сущность» идТранзакции: Integer
Счет идКарточки: Integer
номерСчета: Integer ПИН-код: String
баланс : Real д а та : Date
время : Time
статус: Integer
{баланс > 0}
8.8. Резюме
В этой главе описывались некоторые основные аспекты статического модели
рования, в том числе отношения между классами. Были упомянуты три типа от
ношений: ассоциация, композиция/агрегирование и обобщение/специализация.
Кроме того, показывалось, как статическая модель используется для моделирова
ния структурных аспектов предметной области. Сюда относится статическое мо
делирование контекста системы, целью которого является изображение внешних
для системы классов, и статическое моделирование сущностных классов.
Статическое моделирование области решения откладывается до этапа проек
тирования. Хотя в состав статической модели входит характеристика операций
каждого класса, их проще выявить после построения динамической модели, по
этому определение операций переносится на этап проектирования классов, опи
санный в главе 15. Вопросы, касающиеся навигации между классами, также будут
решаться на этапе проектирования, речь об этом пойдет в главе 1 2 .
иа к
После определения прецедентов и построения статической модели делается пер
вая попытка выявить программные объекты, участвующие в системе. На данном
этапе обратить внимание следует, прежде всего, на объекты программы, соответ
ствующие реальным объектам из предметной области.
Программные объекты обычно определяются на базе прецедентов и статичес
кой модели предметной области. В настоящей главе приводятся рекомендации по
поводу того, как это лучше делать. Предлагаются критерии разбиения на объек
ты, а сами объекты классифицируются с помощью стереотипов. Основной инте
рес будут представлять реальные объекты предметной области, а не объекты из
области решения, которые рассматриваются на этапе проектирования.
Описанная в предыдущей главе статическая модель применялась для опреде
ления внешних классов, изображаемых на диаграмме классов контекста системы.
Внешние классы помогают выявить программные классы, описывающие интер
фейс с внешней средой. Во время статического моделирования были также опре
делены сущностные классы и отношения между ними. В этой главе мы выявим
и дадим классификацию объектам и классам, необходимым в программной систе
ме. В частности, речь пойдет о тех дополнительных объектах и классах, которые
не видны на этапе построения статической модели предметной области.
Совокупность статических отношений между классами рассматривае тся в ста
тической модели, описанной в предыдущей главе, а совокупность динамических
отношений между объектами - в динамической модели, о которой рассказывает
ся в двух последующих главах.
температуры температуры
«внешнее устройство
«интерфейс устройства
ввода»
ввода»
физический
датчикТемпературы
ДатчикТемпературы
Данные от устройства
считывания,
I
1 Карточка вставлена,
Входные данные Карточка возвращена,
от устройства Карточка конфискована
«внешнее устройство «интерфейс устройства
ввода/вывода»
— -— » ввода/вывода»
— -— »
:УстройствоСчитывания :ИнтерфейсУстройства
Карточек Выходные данные СчитыванизКарточек Вернуть,
для устройства Конфисковать
Аппаратный
I Программный объект
I
объект в реальном мире I
I
I
f
Граница между программой и аппаратурой
Команды Запрос
Оператора к датчику
---- «интерфейс «сущность»
пользователя» :ХранилищеПоказаний
:ИнтерфейсОператора Датчика
:Актер Данные,
отображаемые
на дисплее
!
I
I
Граница системы
Команда
подъемно
Поднять, транспортному
Переместить роботу
«интерфейс системы» — ___ > «внешняя система»
:ИнтерфейсПодъемно- :ВнешнийПодъемно-
ТранспортногоРобота *■ ТранспортныйРобот
Поднят, Ответ
Перемещен подъемно-
Программный объект транспортного Аппаратный объект
робота в реальном мире
Граница системы
«система»
БанковскаяСистема
I j «внешний
------- пользователь»
Оператор
ГГ
9:
Оператор
Открыть,
Закрыть,
' Баланс,
Кредитовать,
Состояние
«сущность» Дебетовать, ,,
Счет Прочитать
номерСчета: Integer
б аланс: Real
«сущность»
v Текущие
ПоказанияДатчика Прочитать,
Показания
Обновить
Датчика
названиеДатчика; String
значениеДатчика: Real
верхнийПредел: Rea! «сущность»
показания
нижнийПредел: Rea!
Датчика
статусОповещения: Boolean
Температуры
9.7.1. Объекты-координаторы
Объект-координатор задает весь порядок работы набора взаимосвязанных
объектов на основе поступающих входных данных, вне зависимости от состояния.
Он устанавливает, когда и в какой последовательности будут действовать другие
объекты, участвующие в прецеденте. Координатор принимает решение только на
основе поступающих входных данных и не завш-iи от состояния. Иными слова
ми, действие, инициированное координатором, определяется исключительно ин
формацией во входном сообщении, а не тем, что происходило с системой раньше.
Пример объекта-координатора - Банковский Координатор, который полу
чает клиентскую транзакцию от банкомата. В зависимости от типа транзакции
Банковский Координатор посылает ее некоторому объекту для исполнения.
В банковской системе такими объектами являются Менеджер Транзакций Сня
тия, Менеджер Транзакций Перевода, Менеджер Транзакций Получения
Справки и Менеджер Транзакций Проверки ПИН-кода (рис. 9.11).
Транзакция Банкомата
Запрос
на Проверку
■координатор» ПИН-кода
б а н к овский
Ответ Ответ Байка «бизнес-логика»
Координатор
Ответ на Запрос :М А н е л ж тТ п а н з а к ц и й
ПроверкиПИН-кода
О те
Транзакция
«бизнес-логика» на Тран;
Получения
:МенеджерТранзакций Полу-
Справки
Перевода Спр;
«бизнес-логика» «бизнес-логика»
:МенеджерТранз акций :МеиеджерТранзакций
Справки Снятия
^интерфейс устройства
вывода»
Устройств о Печати
Чеков
^интерфейс устройства
вывода»
•.УстройствоВыдачи
Наличных
9.7.3. Объекты-таймеры
Объект-таймер - это управляющий объект, активизируемый внешним тай
мером, например тактовым генератором или часами операционной системы.
Объект-таймер либо сам осуществляет некоторое действие, либо активизирует
другой объект, который выполнит нужное действие.
Пример объекта-таймера приведен на рис. 9.13. Объект Таймер Пути активи
зируется событием, которое генерирует внешний таймер Тактовый Генератор.
Объект-таймер посылает сообщение Вычислить объекту Путь, который вычис
ляет общее пройденное автомобилем расстояние.
Событие
9.8.2. Объекты-алгоритмы
Объект-алгоритм инкапсулирует алгоритм, применяемый в данной предмет
ной области. Такие объекты чаще всего встречаются в приложениях реального
времени, а также научных и инженерных задачах в тех случаях, когда в предмет
ной области имеется нетривиальный алгоритм, который может изменяться неза
висимо от других ее аспектов. Простые алгоритмы обычно реализуются как опе
рации сущностного объекта, работающие с хранящ имися в нем данными. Во
многих научных и инженерных приложениях алгоритмы уточняются итеративно,
поскольку их совершенствование, например с точки зрения производительности
и точности вычислений, не зависит от данных.
Так, iiсистеме круиз-контроля объект-алгоритм Крейсер вычисляет, как надо
изменить тягу путем сравнения текущей скорости автомобиля с требуемой крей
серской скоростью (рис. 9.14). Алгоритм достаточно сложен, поскольку требуется
плавно разгонять или притормаживать автомобиль, чтобы пассажиры не испыты
вали неудобств.
Объект-алгоритм часто инкапсулирует данные, необходимые для выполнения
алгоритма. Это могут быть начальная информация, промежуточные результаты
и /ш пороговые данные, например максимальные и минимальные значения.
Объект-алгоритм обычно взаимодействует с другими объектами. В этом от
ношении он напоминает объект-координатор. Но в отличие от координатора, ко
торый должен управлять другими объектами, назначение объекта-алгоритма со
стоит, прежде всего, в инкапсуляции и выполнении алгоритма.
9.9. Подсистемы
Система разбивается на подсистемы, которые содержат объекты, функциональ
но зависящие друг от друга. Смысл разбиевия заключается в том, чтобы сильно
связанные между собой объекты поместить в одну подсистему, а слабо связанные
Рис. 9.14. Пример объекта -алгоритма
«система»
БанковскаяСистема |
«подсистема» «подсистема»
Подсистема Подсистема
Банкомата БанковскогоСервера
9.10. Резюме
В этой главе было описано, как выявлять в системе программные объекты.
Предлагались критерии разбиения па объекты и классификация объектов с помо
щью стереотипов. Особое внимание уделялось объектам предметной области,
имеющим аналоги в реальном мире, а не объектам области решения, которые вы
являются на этапе проектирования. Критерии разбиения на объекты обычно по
следовательно применяются к каждому прецеденту на этапе создания динамичес
кой модели, как описано в главе 11. Затем определяется порядок взаимодействий.
В главе 12 речь пойдет о критериях разбиения на подсистемы. Вопрос о том, яв
ляется объект активным или пассивным, рассматривается на этапе проектирова
ния; который составляет предмет глав 14-16. Проектирование операций каждого
класса описывается в главе J5.
Глава 10 . К о те ч ты е автоматы
И - ‘^ С Т О Я Н И И
Конечные автоматы используются для моделирования динамических аспектов
системы. Многие системы и, в частности, системы реального времени очень силь
но зависят от состояния. Это означает, что их работа определяется не только по
ступающими на вход данными, но и тем, что происходило с системой раньше.
Д ля описания конечных автоматов применяются диаграммы и таблицы пере
хода состояний. Диаграмма перехода состояний - это представление конечного
автомата в виде графа, вершины которого соответствуют состояниям, а ребра -
переходам между ними. Таблица переходов состояний ~ это табличное представ
ление конечного автомата.
В системах с высокой степенью зависимости от состояния диаграммы или таб
лицы переходов состояний могут оказаться очень полезными для понимания функ
ционирования системы. Такая спецификация конечного автомата зачастую более
точна и понятна, чем словесное описание.
В нотации I) М Г. диаграмму перехода состояхгии называют просто диагрсиммои
состояний (statechart diagram). Эта часть нотации позаимствована из работ Харе-
ла [Harel 1988, 1998j. Традиционную неиерархическую диаграмму состояний мы
будем называть плоской диаграммой, а для обозначения концепции декомпозиции
иерархических состояний употребим термин иерархическая диаграмма состояний.
Чтобы продемонстрировать преимущества иерархических диаграмм, начнем с рас
смотрения простейшей плоской диаграммы состояний и станем совершенствовать
ее, пока не увидим, какие возможности открывают иерархические диаграммы.
Мы также дадим рекомендации по разработке диаграмм состояний, в том чис
ле на основе анализа прецедентов. На протяжении этой главы излагаемые кон
цепции будут сопровождаться примерами конечных автоматов для банковской
системы и для системы круиз-контроля.
10.2.1. События
Событие (его также называют дискретным сигналом или стимулом) - это не
которое явление, происходящее в определенный момент времени. Событие ато
марно (то есть не прерываемо) и концептуально имеет нулевую продолжитель
ность. Примеры событий: Карточка Вставлена в Банкомат, Введен ПИН-код,
Нажат Тормоз, Лифт Уехал.
События могут зависеть друг от друга. Например, событие Карточка Встав
лена в Банкомат всегда предшествует событию Введен ПИН-код. С другой сто
роны, события бывают и совершенно независимыми. Например, событие Карточ
ка Вставлена в Банкомат в Вене не зависит от события Карточка Вставлена
в Банкомат в Ричмонде.
Событие таймера - это особое событие, описываемое ключевым словом after,
которое говорит, что событие происходит по истечении промежутка времени, за
данного выражением в скобках, например: after (10 с) или after (промежу
ток времени). Н а диаграмме состояний событие таймера вызывает выход из дан
ного состояния. Промежуток времени измеряется от момента входа в состояние
до момента выхода из него, обусловленного событием таймера.
10.2.2. С о сто ян и я
Состояние описывает некоторую конкретную ситуацию, характеризуемую
протяженностью во времени. Наступление события обычно приводит к переходу
конечного автомата из одного состояния в другое. Но событие может и не иметь
никаких последствий, то есть после его наступления автомат останется в прежнем
состоянии. Теоретически переход в новое состояние занимает нулевое время. На
практике время, необходимое для перехода в новое состояние, пренебрежимо мало
по сравнению со временем, проведенным в данном состоянии.
Начальное состояние - это то состояние, в котором оказывается диаграмма
состояний сразу после активизации.
Двигатель
Включен
1
Начальное Простаивает
Разогнаться Двигатель
Выключен
/ X Нажат Тормоз
Круиз-Контроль
Разгон
Отключен
ч J Отключить
Возобновить Выход
на Крейсерский
Режим
Возобновление
Режим
Время
Событие Событие
Нажат Тормоз Тормоз Отпущен
10.6. Действия
С переходом состояний может быть ассоциировано действие. Действие (action) -
это некоторое вычисление, осуществляемое в результате перехода в новое состоя
ние. Действие инициируется переходом. Оно производится, а затем закапчивается.
Конечные автоматы и диаграммы состояний
10,6,1. Деятельности
Помимо действий в результате перехода состояния могут выполняться деятель
ности. Деятельность (activities) - это некоторое вычисление, выполняемое, пока
Рис. 10.9. Детальная диаграмма состояний системы круиз-контроля
Двигатель Включен /
Сбросить Значение Требуемой Скорости
Начальное Простаивает
Двигатель Выключен
Разогнаться [Торможения Н ет],/
Enable «Увеличить Скорость»
Круиз / Disable «Увеличить Скорость», Установить Значение Требуемой Скорости, Enable «Поддерживать Скорость»
196 Конечные автоматы и диаграммы состояний
автомат находится в данном состоянии. Поэтому, в отличие от действия, деятель
ность занимает конечное время. Деятельность начинается при входе в состояние
и заканчивается при выходе из него. Причина изменения состояния, приводящего
к прекращению деятельности, обычно состоит в приходе некоторого события из
источника, не связанного с деятельностью. Однако иногда сама деятельность воз
буждает событие, приводящее к изменению состояния.
Один из способов показать деятельность на диаграмме состояний - пометить
переход в состояние, где она протекает: событие / enable деятельность, а также
переход из этого состояния: событие / disable деятельность. Однако, чтобы
сократить запись, можно вместо слов enable и disable ассоциировать деятель
ность с самим состоянием. Д ля этого в прямоугольнике, представляющем состоя
ние, записывают имя состояния и имя деятельности, разделяя их горизонтальной
чертой. Деятельность изображают в виде do / деятельность (здесь do - зарезер
вированное слово). Это означает, что деятельность начинается при входе в состо
яние и завершается при выходе из него.
В качестве примера деятельности опишем переход из состояния Начало в со
стояние Разгон на диаграмме состояний объекта Круиз-Контроль, показанной
на рис. 10.9. Деятельность Увеличить Скорость начинается при входе в состоя
ние Разгон. Она выполняется, пока диаграмма находится в этом состоянии, и за
вершается при выходе из него.
Если при переходе в новое состояние встречается сочетание действий и завер
шенных и начатых деятельностей, то порядок выполнения определяется следую
щими правилами:
1. Прекращается деятельность, начатая в прежнем состоянии.
2. Выполняется действие (или действия).
3. Начинается деятельность в новом состоянии.
Рассмотрим, например, событие Круиз, которое вызывает переход из состоя
ния Разгон в состояние Крейсерский Режим. Сначала прекращается деятель
ность Увеличить Скорость, затем начинается деятельность Поддерживать
Скорость, которая продолжается все время, пока диаграмма находится в состоя
нии Крейсерский Режим. Кроме того, выполняется действие Установить Зна
чение Требуемой Скорости. Семантика этого перехода состояний такова:
1. Деятельность Увеличить Скорость прекращается при выходе из состоя
ния Разгон.
2. Действие Установить Значение Требуемой Скорости выполняется при
переходе из состояния Разгон в состояние Крейсерский Режим.
3. Деятельность Поддерживать Скорость начинается при входе в состояние
Крейсерский Режим.
Более краткая запись тех же деятельностей показана на рис. 10.10. Вместо того
чтобы писать, что деятельность начинается при входе в состояние и завершается при
выходе из него, использована нотация do / деятельность. Это сделано для трех дея
тельностей: Увеличить Скорость, Поддерживать Скорость и Возобновить Кру
из-Контроль. Сравнение рисунков 10.9 и 10.10 показывает, что нотация do / дея
тельность позволяет упростить диаграмму, не загромождая ее лишними словами.
Действия и- Я Н И И 1 Ш
выполняемое При входе в состояние, оболы ыется как entry / действие, а мгно
венное действие, выполняемое при выходе из него, - как ex it / действие.
Обычно в действиях при входе и выходе нужды не возникает, вместо этого
помечаются переходы в данное состояние и из него. Лучше всего применять дей
ствие при входе, когда:
□ есть несколько переходов в данное состояние;
□ при каждом переходе нужно выполнить одно и то же действие;
□ действие связано именно с входом в данное состояние, а не с выходом из
предыдущего.
В этой ситуации действие изображается только в прямоугольнике состояния,
а не на каждом ведущем в него переходе.
Действие при выходе удобно в случаях, когда:
□ есть несколько переходов из данного состояния;
□ при каждом переходе требуется одно и то же действие;
а)
1 Недостаточно Наличных /
Вернуть, Индицировать Останов Системы
Остановлен
After {Промежуток Времени) [Запрошен Останов] /
Индицировать Останов Системы
Запуск/ Отобразить Остановить/ Индицировать
Приветствие Останов Системы
Простаивает
After {Промежуток Времени)
[Останов Не Запрошен] /
Отобразить Приветствие Завершение
Транзакции
Требуемой Скорости
Обработка
Ввода Клиента
Карточка
Ожидание Конфискована
ПИН-кода Завершение
Правильный Обработка
транзакций Отвергнут Чек
ПИН-код Напечатан
Выбран
Перевод
Ожидание Перевод ^ Обработка З а п р о с а ] Выполнен Успешно
Выбора Клиента на Перевод у Печать
состояний
Справка
Обработка Запроса Наличные
Получена Успешно
Выбрано Получение Справки на Получение Справки Выданы
Двигатель Включен /
Сбросить Значение
Требуемой Скорости
Начальное Простаивает
Двигатель Включен /
Сбросить Значение
Требуемой Скорости
Простаивает
Двигатель Выключен
Двигатель
Работает
Начальное
Разогнаться Отключить
[Торможения Нет] Круиз-Контроль
Отключен
Автоматическое Отключить
Управление г ( Л
Разгон Разогнаться Возобновление
do / Увеличить do / Возобновить
Скорость Круиз-Контроль
\ __ _ _
Разогнаться Выход
на Крейсерский
Крейсерский Режим Режим
Круиз / Установить Значение
do / Поддерживать
Требуемой Скорости
Скорость
Круиз-Контроль
Круиз-Контроль Автомобиля
Надсостояние
«Круиз-Контроль
Автомобиля»
Условие Торможения
Торможения Нет
Торможение Есть
10.13. Резюме
В настоящей главе описаны особенности плоских и иерархических диаграмм
состояний. Приведены рекомендации по составлению диаграмм состояний, по
дробно описан процесс построения диаграммы состояний на основе прецедента.
Диаграмма состояний может поддерживать также несколько прецедентов, каждый
из которых отображается на некоторое подмножество диаграммы. Такие случаи
проще моделировать, если рассматривать диаграмму состояний в сочетании с мо
делью взаимодействия объектов, которая описывает, как зависящий от состояния
объект исполняет диаграмму состояний. Об этом речь пойдет в следующей главе.
Дополнительные примеры диаграмм состояний приведены также в части III.
Н а этапе динамического моделирования рассматриваются динамические, или
поведенческие, аспекты системы. Динамическая модель является одновременно
межобъектной (описывающей взаимодействие объектов) и внутриобъектной
(характеризующей, как зависящий от состояния объект определяется конечным
автоматом и изображается на диаграмме состояний). Внутриобъектная сторона
динамического моделирования имеет отношение к конечным автоматам и диа
граммам состояний, о которых шла речь в главе 10. Здесь мы будем говорить о мо
делировании взаимодействий объектов и о том, как использовать диаграммы со
стояний для описания взаимодействий зависящих от состояния объектов.
В основе построения динамической модели лежат ранее разработанные пре
цеденты. Для каждого прецедента надо определить участвующие в нем объекты
и то, как они общаются в этом прецеденте. Взаимодействие графически изобра
жается на диаграмме взаимодействия. Следует применять один из двух видов та
ких диаграмм: диаграммы кооперации или диаграммы последовательности. Не
обходимо также составить словесное описание взаимодействий объектов в виде
описания последовательности сообщений. Если во взаимодействии участвует за
висящий от состояния управляющий объект, то требуется разработать исполняе
мую им диаграмму состояний и показать соответствующие события как на диа
грамме состояний, так и на диаграмме взаимодействий.
Сначала рассмотрим, каким образом моделируется взаимодействие объектов
с помощью диаграмм кооперации и последовательности. Затем мы обратимся
к деталям метода динамического анализа, позволяющего понять кооперацию объек
тов. Анализ зависящей от состояния динамики относится к зависящим от состоя
ния кооперациям, управляемым диаграммой состояния. Анализ не зависящей от
состояния динамики не связан с диаграммами состояний.
В случае больших систем необходимо предварительно выделить подсистемы,
например по географическому признаку (см. главу 9, описание систем клиент-сер-
вер), а затем путем анализа выявить кооперацию объектов в каждой подсистеме.
Более детальное разбиение на подсистемы выполняется на этапе проектирования.