Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

UML. Проектирование систем реального времени, параллельных и распределенных приложений

Покупка
Артикул: 616005.01.99
К покупке доступен более свежий выпуск Перейти
Данная книга описывает процесс создания распределенных, параллельных систем и систем реального времени с точки зрения проектирования архитектуры системы. Подробно рассмотрены ключевые вопросы, возникающие в процессе разработки: управление временем отклика, синхронизация, актуальность и непротиворечивость данных. На многочисленных примерах автор показывает, как с помощью одной и той же универсальной нотации UML описать такие, казалось бы, далекие области, как автоматизированная банковская система, бортовой компьютер автомобиля и система управления лифтами в многоэтажном здании - без привязки к какой-либо программной или аппаратной платформе и языку программирования. Издание будет чрезвычайно полезно аналитикам, менеджерам предприятий и информационных систем, руководителям и архитекторам проектов, а также программистам, которые имеют дело с приложениями UML: книга поможет изложить свои идеи так, чтобы можно было реализовать проект, практически не зная той предметной области, для которой пишется система.
Гома, Х. UML. Проектирование систем реального времени, параллельных и распределенных приложений [Электронный ресурс] / Х. Гома; Пер. с англ. - Москва : ДМК Пресс, 2007. - 704 с.: ил. - (Серия «Объектно-ориентированные технологии в программировании»). - ISBN 5-94074-101-0. - Текст : электронный. - URL: https://znanium.com/catalog/product/408264 (дата обращения: 03.05.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
UML
Проектирование систем реального времени,
параллельных и распределенных приложений

Хассан Гома

Designing
 Concurrent,
 Distributed,
and RealTime
 Applications
with UML

Hassan Gomaa

Boston • San Francisco • New York • Toronto • Montreal
London • Munich • Paris • Madrid
Capetown • Sydney • Tokyo • Singapore • Mexico City

UML

Проектирование
систем реального

времени,

параллельных

 и распределенных

 приложений

Хассан Гома

Москва

Серия «Объектноориентированные технологии
в программировании»

УДК 004.415.2
ББК 32.973.26018.1

Г64

Гома Х.
UML. Проектирование систем реального времени, параллельных и распределенных приложений: Пер. с англ. – М.: ДМК Пресс. – 704 с.: ил.
(Серия «Объектноориентированные технологии в программировании»).

ISBN 5940741010

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

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

Г64

Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то

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

Материал, изложенный в данной книге, многократно проверен. Но, поскольку вероятность

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

ISBN 0201657937 (англ.)
Copyright © by Hassan Gomaa

ISBN 5940741010 (рус.)
© Перевод на русский язык, оформление
ДМК Пресс

Translation copyright – by DMK Press
(Designing Concurrent, Distributed, and Realtime Applications with UML, First

Edition by Hassan Gomaa, Copyright, All Rights Reserved)

Публикуется по согласованию с издательством, выпустившим оригинал: ADDISONWESLEY LONGMAN,  Pearson Education Inc.

Содержание

Предисловие ..................................................................................... 25

ЧАСТЬ I. Нотация UML, концепции проектирования,
технологии, жизненные циклы и методы ...... 35

Глава 1. Введение ........................................................................... 36

1.1. Объектноориентированные методы и UML ........................... 37
1.2. Метод и нотация ........................................................................ 38
1.3. Параллельные приложения ...................................................... 38
1.3.1. Последовательные и параллельные программы .......................... 39
1.3.2. Последовательные и параллельные приложения ......................... 39
1.3.3. Параллельные задачи .............................................................. 40
1.4. Системы и приложения реального времени ........................... 40
1.5. Распределенные системы и приложения ............................... 42
1.6. Резюме ....................................................................................... 43

Глава 2. Обзор нотации UML ....................................................... 44

2.1. Диаграммы UML ........................................................................ 44
2.2. Диаграммы прецедентов .......................................................... 45
2.3. Нотация UML для классов и объектов ..................................... 45
2.4. Диаграммы классов ............................................................ 46
2.5. Диаграммы взаимодействия ............................................... 47
2.5.1. Диаграммы кооперации ........................................................... 47
2.5.2. Диаграммы последовательности ............................................... 48
2.6. Диаграммы состояний .............................................................. 48
2.7. Пакеты ........................................................................................ 50
2.8. Диаграммы параллельной кооперации ................................... 51
2.8.1. Обмен сообщениями на диаграммах параллельной кооперации .... 51
2.9. Диаграммы развертывания ...................................................... 51
2.10. Механизмы расширения UML ................................................ 53

UML. Проектирование систем

2.11. UML как стандарт ..................................................................... 54
2.12. Резюме ..................................................................................... 55

Глава 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.11. Резюме ..................................................................................... 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. Технология World Wide Web ...................................................... 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

UML. Проектирование систем

4.9. Стандарт CORBA ...................................................................... 104
4.9.1. Брокер объектных запросов .................................................... 104
4.9.2. Язык определения интерфейса в CORBA .................................. 105
4.9.3. Статическое и динамическое связывание ................................. 106
4.9.4. Сервисы CORBA .................................................................... 107
4.9.5. Интеграция унаследованных приложений
в каркас распределенных объектов .......................................... 107
4.10. Другие компонентные технологии ....................................... 108
4.10.1. Технология COM .................................................................. 108
4.10.2. Технология JavaBeans .......................................................... 108
4.10.3. Технология Jini .................................................................... 108
4.11. Системы обработки транзакций .......................................... 109
4.11.1. Характеристики транзакций .................................................. 109
4.11.2. Мониторы обработки транзакций .......................................... 110
4.12. Резюме ................................................................................... 111

Глава 5. Жизненные циклы и методы разработки
программного обеспечения ..................................... 112

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

ЧАСТЬ II. COMET – метод архитектурного
проектирования и моделирования
параллельных объектов
с применением UML ............................................. 127

Глава 6. Введение в метод COMET ......................................... 128

6.1. Жизненный цикл разработки
объектноориентированного ПО в методе COMET .............. 128
6.1.1. Моделирование требований ................................................... 128
6.1.2. Аналитическое моделирование ............................................... 128
6.1.3. Проектное моделирование ..................................................... 129
6.1.4. Инкрементное конструирование ПО ......................................... 130
6.1.5. Инкрементная интеграция ПО ................................................. 130
6.1.6. Комплексное тестирование .................................................... 130
6.2. Сравнение жизненного цикла COMET
с другими процессами разработки ПО .................................. 131
6.2.1. Сравнение жизненного цикла COMET с USDP ........................... 131
6.2.2. Сравнение жизненного цикла COMET со спиральной моделью .... 131
6.3. Модель требований, аналитическая и проектная модели ... 131
6.3.1. Виды деятельности при моделировании требований .................. 132
6.3.2. Виды деятельности при аналитическом моделировании ............. 132
6.3.3. Виды деятельности при проектном моделировании ................... 133
6.4. Основы COMET ....................................................................... 134
6.4.1. Разработка модели требований .............................................. 134
6.4.2. Разработка аналитической модели .......................................... 134
6.4.3. Разработка проектной модели ................................................ 135
6.5. Резюме ..................................................................................... 137
Глава 7. Моделирование прецедентов ................................. 138
7.1. Прецеденты .............................................................................. 138
7.2. Актеры ...................................................................................... 139
7.3. Актеры, роли и пользователи ................................................. 141
7.4. Выявление прецедентов ......................................................... 141

UML. Проектирование систем

7.5. Документирование прецедентов в модели прецедентов .... 142
7.6. Примеры прецедентов ............................................................ 143
7.6.1. Прецедент «Снять Деньги» ...................................................... 143
7.6.2. Прецедент «Получить Справку» ............................................... 145
7.6.3. Прецедент «Перевести Деньги» ............................................... 146
7.7. Отношения прецедентов ........................................................ 147
7.7.1. Отношение расширения ......................................................... 147
7.7.2. Отношение включения ........................................................... 149
7.7.3. Некоторые рекомендации ...................................................... 150
7.8. Пакеты прецедентов ............................................................... 150
7.9. Резюме ..................................................................................... 151
Глава 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. Статическое моделирование и язык UML ............................. 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

10.1. Конечные автоматы ............................................................... 187
10.2. События и состояния ............................................................ 188
10.2.1. События ............................................................................. 188
10.2.2. Состояния .......................................................................... 188
10.3. Конечные автоматы и объекты ............................................. 188
10.4. Примеры диаграмм состояний ............................................ 189
10.4.1. Пример диаграммы состояний счета ...................................... 189
10.4.2. Пример диаграммы состояний банкомата ............................... 189
10.4.3. Пример диаграммы состояний системы круизконтроля ........... 191
10.5. События и условия ................................................................ 191
10.6. Действия ................................................................................ 193
10.6.1. Деятельности ...................................................................... 194
10.6.2. Действия при входе и выходе ................................................ 197
10.7. Моделирование различных аспектов системы .................. 200
10.8. Иерархические диаграммы состояний ............................... 201
10.8.1. Иерархическая декомпозиция состояний ................................ 201
10.8.2. Агрегирование переходов состояний ..................................... 203
10.9. Параллельные диаграммы состояний ................................. 203
10.10. Рекомендации по разработке диаграмм состояний ........ 205

UML. Проектирование систем

10.11. Построение диаграмм состояний
на основе прецедентов ....................................................... 206
10.12. Пример разработки диаграммы состояний
на основе прецедента ......................................................... 207
10.12.1. Прецедент «Управление Скоростью» .................................... 207
10.12.2. Разработка диаграммы состояний ....................................... 208
10.12.3. Рассмотрение альтернативных внешних событий ................... 210
10.12.4. Разработка иерархической диаграммы состояний .................. 211
10.12.5. Разработка ортогональной диаграммы состояний .................. 213
10.13. Резюме ................................................................................. 214

Глава 11. Динамическое моделирование ............................ 215

11.1. Моделирование взаимодействий объектов ....................... 215
11.1.1. Диаграммы кооперации ........................................................ 216
11.1.2. Диаграммы последовательности ........................................... 217
11.1.3. Сравнение диаграмм последовательности и кооперации .......... 218
11.1.4. Прецеденты и сценарии ....................................................... 218
11.1.5. Обобщенные и конкретные формы диаграмм взаимодействия ..... 219
11.2. Сообщенияметки на диаграммах взаимодействия .......... 219
11.2.1. Порядковая нумерация сообщений ........................................ 220
11.2.2. Описание последовательности сообщений ............................. 222

11.3. Динамический анализ ........................................................... 223

11.4. Динамический анализ, не зависящий от состояния .......... 223

11.5. Пример динамического анализа,
не зависящего от состояния ................................................. 225
11.6. Динамический анализ, зависящий от состояния ............... 225
11.6.1. Определение объектов и взаимодействий .............................. 226
11.6.2. Исполнение диаграммы состояний ........................................ 227
11.6.3. Рассмотрение альтернативных последовательностей ............... 229
11.7. Пример динамического анализа,
зависящего от состояния: банковская система ................. 229
11.7.1. Главная последовательность ................................................. 229
11.7.2. Альтернативные последовательности ..................................... 232

11.8. Пример динамического анализа,
зависящего от состояния: система круизконтроля .......... 237

11.9. Резюме ................................................................................... 246

Содержание

Глава 12. Проектирование архитектуры системы ............ 250

12.1. Архитектурные стили ............................................................ 250
12.1.1. Архитектура клиентсервер ................................................... 250
12.1.2. Архитектура с несколькими уровнями абстракции ................... 251
12.1.3. Архитектура взаимодействующих задач .................................. 252
12.1.4. Смешение архитектурных стилей ........................................... 252
12.2. Декомпозиция системы ........................................................ 253
12.3. Рекомендации по выявлению подсистем ........................... 255
12.4. Консолидированные диаграммы кооперации .................... 255
12.5. Архитектура подсистем ........................................................ 256
12.6. Разделение обязанностей
при проектировании подсистем .......................................... 258
12.7. Критерии разбиения на подсистемы .................................. 260
12.8. Примеры разбиения на подсистемы ................................... 263
12.9. Статическое моделирование
на уровне проектирования ................................................... 264
12.10. Резюме ................................................................................. 266

Глава 13. Проектирование
архитектуры распределенных приложений .... 268

13.1. Конфигурируемые архитектуры
и программные компоненты ................................................. 269
13.2. Шаги проектирования распределенного приложения ...... 269
13.3. Декомпозиция системы ........................................................ 270
13.3.1. Проектирование распределенных подсистем .......................... 270
13.3.2. Агрегированные и составные подсистемы в COMET ................. 272
13.3.3. Проектирование
конфигурируемых распределенных подсистем ........................ 274
13.3.4. Критерии конфигурируемости распределенных компонентов .... 274
13.4. Проектирование интерфейсов подсистем ......................... 276
13.4.1. Слабо связанный (асинхронный) обмен сообщениями .............. 276
13.4.2. Сильно связанный (синхронный) обмен сообщениями .............. 277
13.4.3. Обмен сообщениями
между несколькими клиентами и сервером ............................. 277
13.4.4. Коммуникации типа подписка/извещение
и групповой обмен сообщениями .......................................... 278

UML. Проектирование систем

13.4.5. Коммуникации с участием брокера ........................................ 279
13.4.6. Коммуникации с обговариванием условий .............................. 281
13.5. Управление транзакциями ................................................... 283
13.5.1. Протокол двухфазной фиксации
в системах обработки транзакций .......................................... 283
13.5.2. Вопросы проектирования транзакций .................................... 284
13.6. Проектирование серверных подсистем .............................. 285
13.6.1. Последовательная серверная подсистема .............................. 286
13.6.2. Параллельная серверная подсистема ..................................... 287
13.7. Распределение данных ......................................................... 290
13.7.1. Распределенный сервер ....................................................... 290
13.7.2. Репликация данных .............................................................. 290
13.8. Конфигурирование системы ................................................ 290
13.8.1. Вопросы конфигурирования системы ..................................... 290
13.8.2. Пример конфигурирования целевой системы .......................... 291
13.9. Резюме ................................................................................... 292

Глава 14. Разбиение на задачи ................................................ 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

Содержание

14.6.3. Группировка по управлению .................................................. 316
14.6.4. Группировка по взаимному исключению ................................. 318
14.7. Пересмотр проекта путем инверсии задач ......................... 319
14.7.1. Инверсия нескольких экземпляров задачи .............................. 319
14.7.2. Инверсия последовательных задач ........................................ 321
14.7.3. Темпоральная инверсия задач ............................................... 321
14.8. Разработка архитектуры задач ............................................ 324
14.8.1. Начальная диаграмма параллельной кооперации ..................... 327
14.9. Коммуникации между задачами и синхронизация ............ 327
14.9.1. Слабо связанный (асинхронный) обмен сообщениями .............. 327
14.9.2. Сильно связанный (синхронный)
обмен сообщениями с ответом .............................................. 329
14.9.3. Сильно связанный (синхронный)
обмен сообщениями без ответа ............................................. 330
14.9.4. Синхронизация по событию .................................................. 331
14.9.5. Взаимодействие задач
с помощью скрывающего информацию объекта ...................... 333
14.9.6. Пересмотренная диаграмма параллельной кооперации ........... 334
14.10. Спецификация поведения задачи ..................................... 334
14.10.1. Пример спецификации поведения
для задачи «Банковский Сервер» .......................................... 336
14.10.2. Пример спецификации поведения
для задачи «Интерфейс Устройства Считывания Карточек» ...... 337
14.11. Резюме ................................................................................. 338

Глава 15. Проектирование классов ........................................ 339

15.1. Проектирование классов, скрывающих информацию ...... 339
15.2. Проектирование операций классов ..................................... 340
15.2.1. Проектирование операций классов
на основе модели взаимодействия ........................................ 341
15.2.2. Проектирование операций классов
на основе конечного автомата ............................................... 342
15.2.3. Проектирование операций классов
на основе статической модели .............................................. 343
15.3. Классы абстрагирования данных ......................................... 343
15.3.1. Пример класса абстрагирования данных ................................ 343
15.4. Классы интерфейса устройства ........................................... 344
15.4.1. Проектирование операций классов интерфейса устройств ........ 346
15.4.2. Классы интерфейса устройства ввода .................................... 346
15.4.3. Классы интерфейса устройства вывода .................................. 348
15.5. Классы, зависящие от состояния ........................................ 350

UML. Проектирование систем

15.6. Классы, скрывающие алгоритмы ......................................... 352
15.7. Классы интерфейса пользователя ...................................... 352
15.8. Классы бизнеслогики .......................................................... 355
15.9. Классыобертки базы данных .............................................. 356
15.10. Внутренние программные классы ..................................... 358
15.11. Применение наследования при проектировании ............ 358
15.11.1. Иерархии классов .............................................................. 358
15.11.2. Абстрактные классы ........................................................... 358
15.11.3. Полиморфизм и динамическое связывание ........................... 359
15.12. Примеры наследования ...................................................... 359
15.12.1. Примеры суперклассов и подклассов ................................... 359
15.12.2. Пример полиморфизма и динамического связывания ............. 362
15.12.3. Пример наследования абстрактному классу .......................... 363
15.13. Спецификация интерфейса класса ................................... 364
15.13.1. Пример спецификации интерфейса класса ............................ 364
15.14. Резюме ................................................................................. 366

Глава 16. Детальное проектирование ПО ............................ 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

Содержание

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.4. Строгая формулировки теоремы о времени завершения ........... 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. Назначение других приоритетов ............................................ 410
17.7.3. Детальный анализ апериодических задач ............................... 411
17.8. Пересмотр проекта ............................................................... 414
17.9. Оценка и измерение параметров производительности .... 415
17.10. Резюме ................................................................................. 416

UML. Проектирование систем

ЧАСТЬ III. Примеры проектирования параллельных
приложений, распределенных
приложений и приложений
реального времени ............................................... 417

Глава 18. Пример системы управления лифтами ............. 418

18.1. Описание задачи ................................................................... 418
18.2. Модель прецедентов ............................................................ 419
18.2.1. Прецедент «Выбор Этажа Назначения» ................................... 419
18.2.2. Прецедент «Вызов Лифта» .................................................... 420
18.2.3. Абстрактные прецеденты ...................................................... 420
18.2.4. Абстрактный прецедент «Остановка Лифта на Этаже» .............. 421
18.2.5. Абстрактный прецедент «Планирование Лифта» ...................... 421
18.2.6. Конкретный прецедент «Выбор Этажа Назначения» .................. 421
18.2.7. Конкретный прецедент «Вызов Лифта» ................................... 422
18.3. Статическая модель предметной области .......................... 422
18.4. Разбиение на объекты .......................................................... 424
18.5. Динамическая модель .......................................................... 424
18.5.1. Диаграмма кооперации
для прецедента «Выбор Этажа Назначения» ............................... 425
18.5.2. Диаграмма кооперации для прецедента «Вызов Лифта» ........... 425
18.5.3. Диаграмма кооперации
для прецедента «Остановка Лифта на Этаже» .......................... 426
18.5.4. Абстрактный прецедент «Отправить Лифт» ............................. 430
18.6. Модель состояний ................................................................. 432
18.7. Консолидация диаграмм кооперации ................................. 434
18.8. Разбиение на подсистемы ................................................... 437
18.9. Разбиение системы на задачи ............................................. 440
18.9.1. Выделение задач в подсистеме лифта .................................... 442
18.9.2. Выделение задач в подсистеме этажа .................................... 444
18.9.3. Выделение задач в подсистеме планировщика ........................ 444
18.9.4. Определение интерфейсов задач .......................................... 444
18.9.5. Проектирование класса абстрагирования данных .................... 446
18.9.6. Обсуждение альтернативных архитектур ................................ 449
18.10. Проект распределенной системы
управления лифтами ........................................................... 449
18.10.1. Структура подсистемы лифта .............................................. 451
18.10.2. Структура подсистемы этажа ............................................... 451

Содержание

18.10.3. Структура подсистемы планировщика .................................. 455
18.10.4. Интерфейсы подсистем ...................................................... 455
18.11. Проектирование скрывающих информацию классов ...... 456
18.11.1. Проектирование классов интерфейса устройств .................... 456
18.11.2. Проектирование класса, зависящего от состояния ................. 459
18.12. Разработка детального проекта программы .................... 459
18.12.1. Проектирование объектовразъемов для лифта ..................... 459
18.12.2. Проектирование составных задач ........................................ 461
18.13. Конфигурирование целевой системы ............................... 463
18.14. Анализ производительности
нераспределенной системы управления лифтами .......... 464
18.14.1. Сценарий для анализа производительности .......................... 464
18.14.2. Последовательности событий .............................................. 464
18.14.3. Назначение приоритетов .................................................... 466
18.14.4. Планирование в реальном времени
для нераспределенной архитектуры ..................................... 468
18.14.5. Последовательность событий «Остановка Лифта на Этаже» ..... 469
18.14.6. Последовательность событий «Выбор Этажа Назначения» ....... 470
18.14.7. Последовательность событий «Вызов Лифта» ........................ 471
18.15. Анализ производительности
распределенной системы управления лифтами .............. 472
18.15.1. Сценарий для анализа производительности .......................... 472
18.15.2. Планирование в реальном времени
для распределенной архитектуры ........................................ 473
18.15.3. Последовательность событий «Остановка Лифта на Этаже» ..... 477
18.15.4. Последовательность событий «Выбор Этажа Назначения» ....... 479
18.15.5. Последовательность событий «Вызов Лифта» ........................ 480

Глава 19. Пример банковской системы ................................ 483

19.1. Описание задачи ................................................................... 483
19.2. Модель прецедентов ............................................................. 484
19.2.1. Абстрактный прецедент «Проверить ПИНкод» ........................ 485
19.2.2. Конкретный прецедент «Снять Деньги» ................................... 485
19.2.3. Конкретный прецедент «Получить Справку» ............................ 486
19.2.4. Прецедент «Перевести Деньги» ............................................. 487
19.3. Статическое моделирование ............................................... 487
19.3.1. Статическое моделирование предметной области ................... 487
19.3.2. Статическое моделирование контекста системы ...................... 488
19.3.3. Статическое моделирование сущностных классов ................... 488

UML. Проектирование систем

19.4. Разбиение на объекты .......................................................... 491
19.4.1. Выделение клиентской и серверной подсистем ....................... 491
19.4.2. Выделение клиентских объектов: интерфейсные объекты ......... 493
19.4.3. Выделение клиентских объектов:
объекты, участвующие в прецедентах .................................... 493
19.4.4. Выделение объектов в серверной подсистеме ......................... 495
19.5. Динамическое моделирование ............................................ 496
19.5.1. Описание последовательности сообщений
для прецедента «Проверить ПИНкод на Клиенте» ................... 497
19.5.2. Описание последовательности сообщений
для прецедента «Проверить ПИНкод на Сервере» ................... 500
19.5.3. Описание последовательности сообщений
для прецедента «Снять Деньги на Клиенте» ............................. 502
19.5.4. Описание последовательности сообщений
для прецедента «Снять Деньги на Сервере» ............................ 506
19.6. Диаграмма состояний банкомата ........................................ 508
19.7. Проектирование банковской системы ................................ 512
19.8. Создание консолидированной
диаграммы кооперации ........................................................ 513
19.9. Разбиение на подсистемы ................................................... 515
19.10. Проект подсистемы банкомата .......................................... 517
19.10.1. Проектирование архитектуры задач
для подсистемы банкомата ................................................. 517
19.10.2. Определение интерфейсов задач в подсистеме банкомата ..... 521
19.10.3. Проектирование скрывающих информацию классов
в подсистеме банкомата .................................................... 523
19.10.4. Разработка детального проекта подсистемы банкомата .......... 524
19.11. Проектирование подсистемы банковского сервера ....... 526
19.11.1. Проектирование архитектуры параллельных задач
в подсистеме банковского сервера ...................................... 527
19.11.2. Проектирование скрывающих информацию классов
в банковском сервере ........................................................ 528
19.11.3. Проектирование интерфейсов банковского сервера ............... 530
19.12. Конфигурирование банковской системы ......................... 534
19.13. Альтернативные варианты .................................................. 534
19.14. Спецификации поведения задач ....................................... 534
19.14.1. Пример логики упорядочения событий
для задачи «Интерфейс Устройства Считывания Карточек» ...... 534
19.14.2. Пример логики упорядочения событий
для задачи «Контроллер Банкомата» ..................................... 536

Содержание

19.14.3. Пример логики упорядочения событий
для задачи «Банковский Сервер» ......................................... 538

Глава 20. Пример системы
круизконтроля и мониторинга ............................ 540

20.1. Описание задачи ................................................................... 540
20.1.1. Круизконтроль как задача управления процессами ................. 541
20.2. Модель прецедентов ............................................................ 542
20.2.1. Прецеденты круизконтроля ................................................. 543
20.2.2. Прецеденты мониторинга ..................................................... 544
20.3. Описание прецедентов ......................................................... 544
20.3.1. Прецеденты, инициируемые водителем .................................. 544
20.3.2. Прецеденты, инициируемые таймером ................................... 546
20.3.3. Прецеденты, инициируемые механиком ................................. 548
20.4. Статическое моделирование предметной области ........... 548
20.5. Динамическое моделирование ............................................ 549
20.5.1. Начальное разбиение на подсистемы ..................................... 550
20.5.2. Динамическое моделирование
не зависящих от состояния аспектов подсистемы
круизконтроля ................................................................... 551
20.5.3. Динамическое моделирование
зависящих от состояния аспектов подсистемы
круизконтроля ................................................................... 553
20.5.4. Зависящее от состояния динамическое моделирование:
управление калибровкой ...................................................... 554
20.5.5. Динамическое моделирование подсистемы мониторинга:
прецеденты, связанные со средней скоростью ........................ 558
20.5.6. Динамическое моделирование подсистемы мониторинга:
прецеденты, связанные с расходом топлива ........................... 560
20.5.7. Динамическое моделирование
прецедентов технического обслуживания ............................... 562
20.6. Разбиение на подсистемы ................................................... 564
20.6.1. Разбиение подсистемы круизконтроля
на более мелкие подсистемы ................................................ 564
20.6.2. Разбиение подсистемы мониторинга
на более мелкие подсистемы ................................................ 565
20.6.3. Зависимости между подсистемами ........................................ 566
20.7. Уточненная статическая модель .......................................... 571
20.8. Разбиение системы на задачи ............................................. 572
20.8.1. Определение характеристик устройств ввода/вывода .............. 575
20.8.2. Определение задач в подсистеме вала ................................... 575

UML. Проектирование систем

20.8.3. Определение задач в подсистеме калибровки ......................... 575
20.8.4. Определение задач в подсистеме пути и скорости ................... 577
20.8.5. Определение задач
в подсистеме автоматического управления ............................. 580
20.8.6. Определение задач в подсистеме круизконтроля ................... 583
20.8.7. Проектирование классов абстрагирования данных .................. 585
20.8.8. Проектирование интерфейсов
между задачами и объектами абстрагирования данных ............ 587
20.8.9. Определение задач в подсистеме мониторинга ....................... 587
20.8.10. Разработка архитектуры и интерфейсов
задач подсистемы мониторинга ........................................... 592
20.9. Проектирование скрывающих информацию классов ........ 592
20.9.1. Определение классов интерфейса устройств .......................... 596
20.9.2. Определение зависящих от состояния классов ........................ 598
20.9.3. Определение классовалгоритмов ......................................... 600
20.10. Разработка детального проекта программы .................... 602
20.10.1. Проектирование сгруппированных задач .............................. 602
20.10.2. Проектирование объектовразъемов .................................... 606
20.11. Проектирование архитектуры
распределенной автомобильной системы ....................... 607
Глава 21. Пример распределенной системы
автоматизации производства .............................. 609

21.1. Описание задачи ................................................................... 609
21.2. Модель прецедентов ............................................................ 611
21.3. Концептуальная статическая модель
предметной области ............................................................. 613
21.4. Разбиение на объекты .......................................................... 614
21.5. Динамическая модель .......................................................... 617
21.5.1. Диаграммы кооперации
для клиентсерверных прецедентов дежурного оператора ........ 617
21.5.2. Диаграммы кооперации
для прецедентов подписки на извещения ............................... 618
21.5.3. Диаграммы кооперации
для клиентсерверных прецедентов управления
производством ................................................................... 620
21.5.4. Прецеденты распределенного управления .............................. 623
21.5.5. Диаграмма состояний
контроллера линейной рабочей станции ................................ 624
21.5.6. Прецеденты изготовления детали .......................................... 626
21.6. Разбиение на подсистемы ................................................... 630

Содержание

21.7. Архитектура распределенной программы .......................... 634
21.7.1. Применение критериев конфигурируемости компонентов ........ 635
21.7.2. Обмен сообщениями между подсистемами ............................. 638
21.8. Конфигурирование системы ................................................ 641

Глава 22. Пример системы электронной коммерции ..... 644

22.1. Задача электронной коммерции .......................................... 644
22.2. Модель прецедентов ............................................................ 644
22.3. Агенты, поддерживающие систему
электронной коммерции ....................................................... 645
22.4. Поддержка системы электронной коммерции
со стороны брокеров объектов ............................................ 647
22.5. Статическое моделирование предметной области ........... 648
22.6. Модель кооперации .............................................................. 648
22.6.1. Модель кооперации для просмотра каталога ........................... 649
22.6.2. Модель кооперации для размещения заявки ........................... 649
22.6.3. Модель кооперации для обработки заказа .............................. 651
22.6.4. Модель кооперации для подтверждения отгрузки .................... 651
22.6.5. Модель кооперации для подтверждения доставки .................... 652
22.6.6. Модель кооперации для отправки счетафактуры .................... 653
22.7. Архитектура распределенной программы .......................... 655

Глоссарий ......................................................................................... 663

Библиография ................................................................................ 675

Предметный указатель ................................................................ 684

Посвящается Джилл, Уильяму, Александру,
Аманде, Эдуарду и моей матери Джоанне

Предисловие

Предисловие Питера Фримена

Недавние успехи в области разработки аппаратного обеспечения и средств
связи привели к лавинообразному росту числа параллельных и распределенных
систем, а также систем реального времени. Это, в свою очередь, способствовало
изменению требований, предъявляемых к программному обеспечению. Широкое
распространение объектноориентированных методов, а теперь еще и применение
языка UML, разумеется, влияют на сложившуюся практику, однако темпы, к сожалению, отстают от требований времени.
Одна из причин такого отставания – отсутствие добротных практических руководств по объектноориентированному анализу и проектированию параллельных приложений (в особенности таких, которые одновременно являются распределенными и/или должны работать в режиме реального времени). Книга, которую
вы держите в руках, призвана восполнить этот пробел.
Я не знаю человека, который мог бы написать авторитетный учебник по данному предмету лучше, чем Хассан Гома. Более 20 лет Хассан изучал природу систем реального времени, параллельных и распределенных, работая проектировщиком, проводя исследования в области новых методов проектирования подобных
систем и преподавая в университете. Результаты его деятельности перед вами.
Книга прекрасно организована, поскольку написал ее опытный преподаватель.
В ней продемонстрирована такая глубина понимания технологии, которая появляется только в результате длительных исследований в данной области. А рисунки и практические рекомендации свидетельствуют о наличии у автора непосредственного опыта проектирования программных систем.
Надеюсь, что вы получите от чтения этой книги такое же удовольствие, как
и я, и будете пользоваться ею еще много лет.

Предисловие Брана Селика

В условиях недостаточности данных
допускается куда меньше ошибок,
чем при полном отсутствии данных.

Чарльз Бэббидж

Недавно, произведя поиск на Webсайте, специализирующемся в области книготорговли, я обнаружил 1188 названий в категории «проектирование программного обеспечения», и число книг на эту тему постоянно растет. Несмотря на такое

Предисловие

изобилие, в большинстве подобных изданий почти ничего не говорится собственно о теории и практике проектирования, а потому огромное количество программ
в наши дни создается людьми, плохо знакомыми с предметом.
В традиционных инженерных дисциплинах всегда использовались последние
достижения прикладной математики, гарантирующие, что проект будет отвечать
поставленным требованиям при приемлемых затратах. Основываясь на оценках,
полученных с помощью математической модели, можно достаточно уверенно приступать, например, к конструированию моста. Однако применительно к программному обеспечению проектирование оказывается преимущественно неформальным процессом, для которого зачастую нет моделей и методов прогнозирования
результата. С этой точки зрения весьма поучительно было бы сравнить эволюцию
программного и аппаратного обеспечения на протяжении нескольких последних
десятилетий. Если аппаратные устройства со временем становились миниатюрнее, быстрее и дешевле, то программы, напротив, оказывались все более объемными, медленными, дорогими и менее надежными. Одна из основных причин такого
положения состоит в том, что в основе проектирования современной аппаратуры
лежит использование прогностических моделей.
Отсутствие фундаментальных инженерных принципов в практике разработки ПО можно отчасти объяснить изменчивой, в чемто даже хаотичной природой
программ, что сильно затрудняет математическое моделирование. Тем не менее
имеется немало весьма полезных аналитических методик. Особенно активно такие методики развивались в области создания систем реального времени: здесь
надежное предсказание временных характеристик программы часто оказывается
критически важным, поскольку от этого зависит человеческая жизнь. И все же,
вопреки доказанной на опыте эффективности, подобные методы распространены
не очень широко. По сути дела, многие разработчики систем реального времени
даже не подозревают об их существовании.
Написание программы – это в основном интеллектуальное упражнение, не
ограниченное такими физическими факторами, как необходимость обрабатывать
сырье и затрачивать много энергии. У большинства практикующих программистов, соблазненных кажущимся отсутствием сопротивления, создается впечатление, что важен только сам код, а потому они не разделяют процессы проектирования и кодирования. Как это ни странно, те же самые люди прекрасно понимают
разницу между проектированием и сборкой авиалайнера.
Дополнительным препятствием к внедрению вышеупомянутых методик в практику создания ПО служит то, что некоторые из них ориентированы на традиционное процедурное программирование. Хотя никаких фундаментальных зависимостей от такой модели не имеется, проблема привязки к более современной
объектноориентированной модели все же существует, и тем, кто ценит преимущества, заложенные в новой парадигме, это мешает пользоваться старыми методами проектирования.
Книга Хассана Гома – первая из известных мне, в которой эти вопросы рассматриваются систематически и всесторонне. Она представляет собой не собрание разнородных паттернов и методик, а ясное и подробное изложение способов

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

Нотация UML и методы проектирования программ

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

COMET – метод архитектурного проектирования
и моделирования параллельных объектов

COMET (Concurrent Object Modeling and Architectural Design Method) – это
метод разработки параллельных приложений, в частности распределенных систем и систем реального времени. В основе создания объектноориентированного
ПО по методу COMET лежит концепция прецедентов, а его жизненный цикл характеризуется большим числом итераций. На этапе моделирования требований

Метод COMET

Предисловие

(Requirements Modeling) система рассматривается как черный ящик. Формируется модель прецедентов, где определяются функциональные требования к системе
в терминах актеров и прецедентов.
На этапе аналитического моделирования (Analysis Modeling) строятся статическая и динамическая модели системы. Статическая модель описывает структурные отношения между классами предметной области. Для выявления объектов,
рассматриваемых в аналитической модели, применяется критерий разбиения на
объекты. После этого разрабатывается динамическая модель и уточняются описанные в модели требований прецеденты с целью представить объекты, участвующие в каждом прецеденте, и взаимодействия между ними. В динамической модели
с помощью диаграмм состояний определяются объекты, зависящие от состояния.
На этапе проектного моделирования (Design Modeling) продумывается архитектура системы. Аналитическая модель, в которой основное внимание уделялось
предметной области, соотносится со средой, где будет эксплуатироваться программа, и с проектной моделью, где акцент ставится на область решения. Формулируются критерии разбиения системы на подсистемы. В случае распределенной
системы наиболее важным является разделение ответственности между клиентами и серверами, в том числе с точки зрения централизации и распределения данных и управления. Кроме того, проектируются интерфейсы для обмена сообщениями, рассматриваются синхронные, асинхронные, групповые коммуникации
и брокерские сервисы. Затем наступает черед проектирования отдельных подсистем. Проектирование параллельных приложений, в том числе и систем реального
времени, сводится в основном к выделению параллельно выполняемых объектноориентированных задач. Создаются интерфейсы для обмена данными между задачами и синхронизации. При анализе производительности новой системы реального времени используется метод монотонного анализа частот, предложенный
Институтом проектирования программных систем (Software Engineering Institute).

Особенности книги

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

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

здесь рассказывается о критериях разбиения, призванных помочь программисту выявлять подсистемы, объекты и параллельно выполняемые задачи
на разных стадиях процесса анализа и проектирования;

с помощью динамического моделирования взаимодействия объектов и конечных автоматов описываются способы совместного использования диаграмм кооперации и диаграмм состояний;

делается акцент на параллельности – приводятся характеристики активных
и пассивных объектов;

рассматриваются проектирование распределенных приложений и методы
взаимодействия распределенных компонентов;

анализируется производительность системы реального времени с помощью
теории планирования в реальном времени;

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

Структура книги

Книга состоит из трех частей. Первая часть содержит обзор различных концепций, технологий, жизненных циклов и методов проектирования систем реального
времени, параллельных и распределенных систем. Глава 1 начинается с краткого
описания различий между методом и нотацией, за которым следует обсуждение характеристик распределенных систем и систем реального времени. В главе 2 излагаются те аспекты нотации UML, которые задействованы в методе COMET. Далее
рассматриваются важные концепции проектирования (глава 3) и необходимой технологической поддержки (глава 4) для параллельных и распределенных систем. Затем в главе 5 рассказывается о жизненных циклах ПО и методах проектирования.
Во второй части речь идет о методе COMET. В главе 6 анализируется жизненный цикл ПО, созданного с использованием COMET. В главе 7 говорится об этапе
моделирования требований в COMET и, в частности, о моделировании прецедентов. В главах 8–11 описываются этапы аналитического моделирования в COMET.
Главы 12–16 посвящены этапу проектного моделирования. Предмет главы 17 –
расчет производительности созданной системы с помощью теории планирования
в реальном времени и метода монотонного анализа частот.
В третьей части метод COMET демонстрируется на пяти подробных примерах
проектирования распределенных приложений (две системы реального времени,
система клиентсервер и две распределенные системы). В главе 18 рассматривается
система управления лифтами и предлагаются два решения: одно распределенное,
другое – нет. В главе 19 исследуется банковская клиентсерверная система. Глава 20 посвящена автомобильной системе круизконтроля, глава 21 – распределенной системе автоматизации производства, а глава 22 – распределенной системе
электронной коммерции.

Структура книги

К покупке доступен более свежий выпуск Перейти