Библиотека программиста.

Дж. Рамбо, М. Блаха » UML 2.0. Объектно-ориентированное моделирование и разработка» Питер, 2007 год, 544 стр. (6,63 мб. djvu)

UML 2.0 — Unified Modeling Language, это спецификация 2.0 языка графического отображения для объектно ориентированного моделирования используемого при разработке ПО. В этом издании рассказывается о стандартах UML 2.0. (вышел в 2005 году), концепциях моделирования и проектирования, углубленном моделировании классов, состояний и взаимодействий, представлены способы реализации этих идей применимых при разработке программного обеспечения на языках C++ и Java. В книге приводятся практические задания выполнение которых позволит эффективно применять ООП концепции при разработке собственных проектов. Также вы сможете получить множество дельных советов и рекомендаций от авторов, для применения объектно-ориентированных технологий.
ISBN 5-469-00814-2
ISBN 0130159204 (англ.)

Оглавление.

Глава 1. Введение 17
1.1. Что такое объектная ориентированность? 17
1.2. Объектно-ориентированная разработка 20
1.2.1. Моделирование концепций, а не реализации 20
1.2.2. Объектно-ориентированная методология 21
1.2.3. Три модели 23
1.3. Объектно-ориентированные концепции 24
1.3.1. Абстракция 24
1.3.2. Инкапсуляция 24
1.3.3. Объединение данных и поведения 24
1.3.4. Совместное использование 25
1.3.5. Выделение сущности объекта 25
1.3.6. Когда целое больше суммы частей 26
1.4. Доводы в пользу объектной ориентированности 26
1.5. История объектно-ориентированного моделирования 27
1.6. Структура книги 28
Библиографические заметки 29
Ссылки 30
Упражнения 30

Часть I. Концепции моделирования

Глава 2. Моделирование как методика проектирования 34
2.1. Моделирование 34
2.2. Абстрагирование 35
2.3. Три модели 36
2.3.1. Модель классов 36
2.3.2. Модель состояний 37
2.3.3. Модель взаимодействия 37
2.3.4. Отношения моделей 37
2.4. Резюме 38
Библиографические замечания 38
Упражнения 39

Глава 3. Моделирование классов 42
3.1. Концепции объекта и класса 42
3.1.1. Объекты 42
3.1.2. Классы 43
3.1.3. Диаграммы классов 44
3.1.4. Значения и атрибуты 45
3.1.5. Операции и методы 46
3.1.6. Резюме системы обозначений классов 48
3.2. Концепции связи и ассоциации 49
3.2.1. Связи и ассоциации 49
3.2.2. Кратность 51
3.2.3. Имена полюсов ассоциации 53
3.2.4. Упорядочение 55
3.2.5. Мультимножества и последовательности 55
3.2.6. Классы ассоциаций 56
3.2.7. Квалифицированные ассоциации 58
3.3. Обобщение и наследование 59
3.3.1. Определения 59
3.3.2. Использование обобщения 62
3.3.3. Подмена составляющих 63
3.4. Пример модели классов 63
3.5. Навигация моделей классов 66
3.5.1. Прослеживание моделей с помощью конструкций OCL 67
3.5.2. Построение выражений OCL 68
3.5.3. Примеры выражений OCL 69
3.6. Практические советы 71
3.7. Резюме по моделям классов 73
Библиографические заметки 74
Ссылки 75
Упражнения 76

Глава 4. Углубленное моделирование классов 86
4.1. Расширенные концепции классов и объектов 86
4.1.1. Перечисление 86
4.1.2. Кратность 87
4.1.3. Область действия 88
4.1.4. Видимость 89
4.2. Полюса ассоциаций 90
4.3. Парные ассоциации 91
4.4. Агрегация 93
4.4.1. Агрегация и ассоциация 93
4.4.2. Агрегация и композиция 94
4.4.3. Распространение операций 95
4.5. Абстрактные классы 95
4.6. Множественное наследование 97
4.6.1. Виды множественного наследования 97
4.6.2. Множественная классификация 99
4.6.3. Обходные маневры 99
4.7. Метаданные 101
4.8. Воплощение 102
4.9. Ограничения 103
4.9.1. Ограничения на объекты 103
4.9.2. Ограничения на наборы обобщений 104
4.9.3. Ограничения на связи 104
4.9.4. Использование ограничений 105
4.10. Производные данные 105
4.11. Пакеты 106
4.12. Практические рекомендации 107
4.13. Резюме 108
Библиографические замечания 110
Ссылки 110
Упражнения 110

Глава 5. Моделирование состояний 116
5.1. События 116
5.1.1. Событие сигнала 117
5.1.2. События изменения 118
5.1.3. События времени 118
5.2. Состояния 119
5.3. Переходы и условия 121
5.4. Диаграммы состояний 122
5.4.1. Пример диаграммы состояний 122
5.4.2. Одноразовые диаграммы состояний 124
5.4.3. Основные обозначения для диаграмм состояний 125
5.5. Поведение на диаграммах состояний 126
5.5.1. Действия и деятельность 126
5.5.2. Текущая деятельность 126
5.5.3. Деятельность при входе и при выходе 127
5.5.4. Переход по завершении 128
5.5.5. Отправка сигналов 129
5.5.6. Пример диаграммы состояний с деятельностью 129
5.6. Практические рекомендации 129
5.7. Резюме 131
Библиографические замечания 132
Ссылки 133
Упражнения 133

Глава 6. Углубленное моделирование состояний 138
6.1. Вложенные диаграммы состояний 138
6.1.1. Задачи с одноуровневыми диаграммами состояний 138
6.1.2. Разложение состояний 138
6.2. Вложенные состояния 139
6.3. Обобщение сигналов 142
6.4. Параллелизм 143
6.4.1. Параллелизм в агрегации 143
6.4.2. Параллелизм в объекте 144
6.4.3. Синхронизация параллельной деятельности 145
6.5. Пример модели состояний 147
6.6. Модель состояний и модель классов 152
6.7. Практические рекомендации 153
6.8. Резюме 154
Библиографические замечания 155
Ссылки 156
Упражнения 156

Глава 7. Моделирование взаимодействий 161
7.1. Модели вариантов использования 162
7.1.1. Действующие лица 162
7.1.2. Варианты использования 162
7.1.3. Диаграммы вариантов использования 165
7.1.4. Руководство к вариантам использования 166
7.2. Модели последовательности 167
7.2.1. Сценарии 167
7.2.2. Диаграммы последовательности 168
7.2.3. Руководство к диаграммам последовательности 171
7.3. Модели деятельности 171
7.3.1. Деятельность 172
7.3.2. Ветвление 173
7.3.3. Инициализация и завершение 174
7.3.4. Параллельная деятельность 174
7.3.5. Выполняемые диаграммы деятельности 175
7.3.6. Руководство к моделям деятельности 175
7.4. Резюме 176
Библиографические замечания 176
Ссылки 177
Упражнения 177

Глава 8. Дополнительные вопросы моделирования взаимодействий 180
8.1. Отношения вариантов использования 180
8.1.1. Отношение включения 180
8.1.2. Отношение расширения 181
8.1.3. Обобщение 182
8.1.4. Комбинации отношений вариантов использования 183
8.1.5. Руководство по применению отношений к вариантам использования 185
8.2. Процедурные модели последовательности 185
8.2.1. Диаграммы последовательности с пассивными объектами 186
8.2.2. Диаграммы последовательности с временными объектами 187
8.2.3. Руководство к процедурным моделям последовательности 188
8.3. Специальные конструкции для моделей деятельности 189
8.3.1. Отправка и получение сигналов 189
8.3.2. Плавательные дорожки 189
8.3.3. Потоки объектов 190
8.4. Резюме 191
Ссылки 192
Упражнения 192

Глава 9. Обзор концепций 197
9.1. Модель классов 197
9.2. Модель состояний 197
9.3. Модель взаимодействия 198
9.4. Отношения между моделями 198
9.4.1. Обобщение 199
9.4.2. Агрегация 200

Часть II. Анализ и проектирование

Глава 10. Обзор процесса разработки 202
10.1. Этапы разработки 202
10.1.1. Концептуализация системы 203
10.1.2. Анализ 203
10.1.3. Проектирование системы 204
10.1.4. Проектирование классов 205
10.1.5. Реализация 205
10.1.6. Тестирование 205
10.1.7. Обучение 206
10.1.8. Развертывание 206
10.1.9. Поддержка 206
10.2. Жизненный цикл разработки 206
10.2.1. Водопадная разработка 207
10.2.2. Итерационная разработка 207
10.3. Резюме 207
Библиографические заметки 208
Упражнения 208

Глава 11. Концептуализация системы 209
11.1. Изобретение концепции системы 209
11.2. Проработка концепции 210
11.3. Подготовка задачи к постановке 213
11.4. Резюме 215
Упражнения 216

Глава 12. Анализ предметной области 218
12.1. Обзор этапа анализа 218
12.2. Модель классов предметной области 220
12.2.1. Выделение классов 221
12.2.2. Удаление лишних классов 222
12.2.3. Подготовка словаря данных 224
12.2.4. Выделение ассоциаций 225
12.2.5. Удаление лишних ассоциаций 225
12.2.6. Выделение атрибутов 231
12.2.7. Удаление лишних атрибутов 232
12.2.8. Реструктурирование при помощи наследования 235
12.2.9. Проверка маршрутов 236
12.2.10. Итерационная разработка модели классов 237
12.2.11. Смещение уровня абстрагирования 240
12.2.12. Группировка классов в пакеты 241
12.3. Модель состояний предметной области 242
12.3.1. Выявление классов с разными состояниями 242
12.3.2. Выделение состояний 243
12.3.3. Выделение событий 243
12.3.4. Построение диаграмм состояний 244
12.3.5. Проверка диаграмм состояния 244
12.4. Модель взаимодействия предметной области 245
12.5. Итерационный анализ 245
12.5.1. Уточнение аналитической модели 246
12.5.2. Корректировка требований 246
12.5.3. Анализ и проектирование 247
12.6. Резюме 247
Библиографические замечания 248
Ссылки 248
Упражнения 248

Глава 13. Анализ приложения 259
13.1. Модель взаимодействия приложения 259
13.1.1. Определение границы системы 260
13.1.2. Идентификация действующих лиц 260
13.1.3. Идентификация вариантов использования 261
13.1.4. Идентификация начальных и конечных событий 262
13.1.5. Подготовка типовых сценариев 263
13.1.6. Нетипичные сценарии и исключительные ситуации 265
13.1.7. Выделение внешних событий 265
13.1.8. Подготовка диаграмм деятельности для сложных вариантов использования 267
13.1.9. Структурирование действующих лиц и вариантов использования 267
13.1.10. Проверка по модели классов предметной области 269
13.2. Модель классов приложения 269
13.2.1. Определение интерфейсов пользователя 269
13.2.2. Определение пограничных классов 270
13.2.3. Определение управляющих объектов 271
13.2.4. Проверка по модели взаимодействия 271
13.3. Модель состояний приложения 272
13.3.1. Выделение классов приложения 273
13.3.2. Поиск событий 273
13.3.3. Построение диаграмм состояний 273
13.3.4. Проверка по другим диаграммам состояний 275
13.3.5. Проверка по модели классов 277
13.3.6. Проверка по модели взаимодействия 278
13.4. Добавление операций 278
13.4.1. Операции из модели классов 278
13.4.2. Операции из вариантов использования 278
13.4.3. Операции «по списку» 279
13.4.4. Упрощение операций 279
13.5. Резюме 279
Библиографические замечания 281
Техническая литература 281
Упражнения 282

Глава 14. Проектирование системы 286
14.1. Обзор проектирования систем 286
14.2. Оценка производительности 287
14.3. Планирование повторного использования 288
14.3.1. Библиотеки 288
14.3.2. Каркасы 290
14.3.3. Образцы 290
14.4. Разбиение системы на подсистемы 291
14.4.1. Уровни 292
14.4.2. Разделы 293
14.4.3. Сочетание уровней и разделов 293
14.5. Выделение параллелизма 294
14.5.1. Выделение неотъемлемой параллельности 294
14.5.2. Определение параллельных задач 295
14.6. Распределение подсистем 295
14.6.1. Оценка требований к аппаратным ресурсам 296
14.6.2. Выбор между аппаратным и программным обеспечением 296
14.6.3. Распределение задач по процессорам 297
14.6.4. Определение физической связности 298
14.7. Управление хранилищами данных 299
14.8. Распределение глобальных ресурсов 300
14.9. Выбор стратегии управления программным обеспечением 301
14.9.1. Процедурное управление 302
14.9.2. Событийное управление 302
14.9.3. Параллельное управление 303
14.9.4. Внутреннее управление 303
14.9.5. Другие парадигмы 304
14.10. Учет граничных условий 304
14.11. Установка приоритетов 305
14.12. Распространенные архитектурные стили 306
14.12.1. Пакетное преобразование 306
14.12.2. Непрерывное преобразование 307
14.12.3. Интерактивный интерфейс 308
14.12.4. Динамическое моделирование 309
14.12.5. Системы реального времени 310
14.12.6. Администратор транзакций 311
14.13. Архитектура сети банкоматов 311
14.14. Резюме 312
Библиографические замечания 314
Техническая литература 315
Упражнения 315

Глава 15. Проектирование классов 323
15.1. Обзор этапа проектирования классов 323
15.2. Наведение мостов 324
15.3. Реализация вариантов использования 326
15.4. Проектирование алгоритмов 328
15.4.1. Выбор алгоритмов 328
15.4.2. Выбор структур данных 330
15.4.3. Определение внутренних классов и операций 330
15.4.4. Назначение операций классам 331
15.5. Рекурсия вниз 333
15.5.1. Уровни функциональности 334
15.5.2. Уровни механизмов 334
15.6. Реорганизация 335
15.7. Оптимизация проекта 336
15.7.1. Добавление избыточных ассоциаций для повышения эффективности доступа 336
15.7.2. Изменение порядка выполнения для повышения эффективности 338
15.7.3. Сохранение промежуточных результатов 339
15.8. Воплощение поведения 340
15.9. Корректировка иерархии наследования 341
15.9.1. Реорганизация классов и операций 341
15.9.2. Абстрагирование общего поведения 342
15.9.3. Делегирование 344
15.10. Организация проекта модели классов 345
15.10.1. Сокрытие информации 345
15.10.2. Согласованность сущностей 346
15.10.3. Коррекция определений пакетов 347
15.12. Резюме 349
Библиографические замечания 350
Техническая литература 350
Упражнения 351

Глава 16. Резюме процесса разработки 356
16.1. Концептуализация системы 357
16.2. Анализ 357
16.2.1. Анализ предметной области 357
16.2.2. Анализ приложения 357
16.3. Проектирование 358
16.3.1. Проектирование системы 358
16.3.2. Проектирование классов 358

Часть III. Реализация

Глава 17. Моделирование реализации 360
17.1. Обзор реализации 360
17.2. Уточнение классов 361
17.3. Уточнение обобщений 362
17.4. Реализация ассоциаций 363
17.4.1. Анализ прослеживания ассоциаций 365
17.4.2. Односторонние ассоциации 365
17.4.3. Двусторонние ассоциации 365
17.4.4. Сложные ассоциации 367
17.5. Тестирование 367
17.5.1. Модульное тестирование 368
17.5.2. Системное тестирование 369
17.6. Резюме 369
Библиографические замечания 370
Техническая литература 370
Упражнения 370

Глава 18. Объектно-ориентированные языки 372
18.1. Введение 372
18.1.1. Введение в C 372
18.1.2. Введение в Java 374
18.1.3. Сравнение C++ и Java 376
18.2. Сокращенная модель банкомата 377
18.3. Реализация структуры 378
18.3.1. Типы данных 378
18.3.2. Классы 381
18.3.3. Управление доступом 381
18.3.4. Обобщение 384
18.3.5. Ассоциации 388
18.4. Реализация функциональности 391
18.4.1. Создание объекта 392
18.4.2. Существование объекта 395
18.4.3. Уничтожение объекта 396
18.4.4. Создание связи 397
18.4.5. Удаление связи 399
18.4.6. Производные атрибуты 400
18.5. Практические рекомендации 401
18.6. Резюме 402
Библиографические замечания 403
Техническая литература 403
Упражнения 404

Глава 19. Базы данных 409
19.1. Введение 409
19.1.1. Концепции баз данных 409
19.1.2. Концепции реляционных баз данных 410
19.1.3. Нормальные формы 412
19.1.4. Выбор СУБД 413
19.2. Сокращенная модель банкомата 413
19.3. Реализация структуры — основы 414
19.3.1. Классы 414
19.3.2. Ассоциации 416
19.3.3. Обобщения 418
19.3.4. Индивидуальность 419
19.3.5. Основные правила реализации РСУБД 420
19.4. Реализация структуры — дополнительные вопросы 421
19.4.1. Внешние ключи 421
19.4.2. Проверка ограничений 423
19.4.3. Индексы 423
19.4.4. Представления 423
19.4.5. Дополнительные правила реализации моделей UML в РСУБД 424
19.5. Реализация структуры из примера с банкоматом 424
19.6. Реализация функциональности 428
19.6.1. Связь языка программирования с базой данных 428
19.6.2. Преобразование данных 430
19.6.3. Инкапсуляция и оптимизация запросов 431
19.6.4. Использование кода SQL 432
19.7. Объектно-ориентированные базы данных 432
19.8. Практические рекомендации 433
19.9. Резюме 434
Библиографические замечания 435
Техническая литература 435
Упражнения 436

Глава 20. Стиль программирования 440
20.1. Объектно-ориентированный стиль 440
20.2. Повторное использование 441
20.2.1. Виды повторного использования 441
20.2.2. Правила хорошего стиля для повторного использования 441
20.2.3. Использование наследования 443
20.3. Возможность расширения 445
20.4. Устойчивость 446
20.5. Программирование крупных систем 448
20.6. Резюме 451
Библиографические замечания 452
Техническая литература 452
Упражнения 453

Часть IV. Разработка программного обеспечения

Глава 21. Итерационная разработка 456
21.1. Обзор итерационной разработки 456
21.2. Итерационная и водопадная модели 456
21.3. Итерационная разработка и быстрое прототипирование 457
21.4. Масштаб итераций 458
21.5. Выполнение итерации 459
21.6. Планирование следующей итерации 460
21.7. Моделирование и итерационная разработка 461
21.8. Идентификация рисков 462
21.9. Резюме 463
Библиографические замечания 464
Техническая литература 464

Глава 22. Управление моделированием 465
22.1. Обзор управления моделированием 465
22.2. Виды моделей 465
22.3. Ловушки моделирования 466
22.4. Сеансы моделирования 468
22.4.1. Скрытое моделирование 469
22.4.2. Циклическое моделирование 469
22.4.3. Моделирование на месте 470
22.5. Организация персонала 472
22.6. Методики изучения 473
22.7. Методики обучения 474
22.8. Средства 475
22.8.1. Средства моделирования 475
22.8.2. Средства управления конфигурациями 476
22.8.3. Генераторы кода 476
22.8.4. Средства интерпретации моделей 477
22.8.5. Репозиторий 477
22.9. Оценка затрат на моделирование 477
22.10. Резюме 478
Библиографические замечания 478
Техническая литература 479

Глава 23. Унаследованные системы 480
23.1. Инженерный анализ 480
23.1.1. Инженерный анализ и разработка 481
23.1.2. Входные данные для инженерного анализа 481
23.1.3. Выходные данные инженерного анализа 482
23.2. Построение модели классов 482
23.2.1. Восстановление реализации 483
23.2.2. Восстановление проекта 483
23.2.3. Восстановление анализа 483
23.3. Построение модели взаимодействия 484
23.4. Построение модели состояний 484
23.5. Рекомендации по проведению инженерного анализа 485
23.6. Обертка 486
23.7. Обслуживание 487
23.8. Резюме 487
Библиографические замечания 488
Техническая литература 488
Приложение А. Система графических обозначений UML 490
Приложение Б. Краткий словарь 491
Ответы к избранным упражнениям 508
Алфавитный указатель 538

Скачать книгу бесплатно6,63 мб. djvu

Похожая литература