UML. Проектирование систем реального времени, параллельных и распределенных приложений
Покупка
Тематика:
Системы автоматического проектирования
Издательство:
ДМК Пресс
Автор:
Гома Хассан
Год издания: 2007
Кол-во страниц: 704
Дополнительно
Вид издания:
Монография
Уровень образования:
ВО - Магистратура
ISBN: 5-94074-101-0
Артикул: 616005.01.99
К покупке доступен более свежий выпуск
Перейти
Данная книга описывает процесс создания распределенных, параллельных систем и систем реального времени с точки зрения проектирования архитектуры системы. Подробно рассмотрены ключевые вопросы, возникающие в процессе разработки: управление временем отклика, синхронизация, актуальность и непротиворечивость данных. На многочисленных примерах автор показывает, как с помощью одной и той же универсальной нотации UML описать такие, казалось бы, далекие области, как автоматизированная банковская система, бортовой компьютер автомобиля и система управления лифтами в многоэтажном здании - без привязки к какой-либо программной или аппаратной платформе и языку программирования. Издание будет чрезвычайно полезно аналитикам, менеджерам предприятий и информационных систем, руководителям и архитекторам проектов, а также программистам, которые имеют дело с приложениями UML: книга поможет изложить свои идеи так, чтобы можно было реализовать проект, практически не зная той предметной области, для которой пишется система.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.03: Прикладная информатика
- 38.03.02: Менеджмент
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов.
Для полноценной работы с документом, пожалуйста, перейдите в
ридер.
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 – распределенной системе электронной коммерции. Структура книги
К покупке доступен более свежий выпуск
Перейти