- •Часть 1. Введение в процесс моделирования 13
 - •Глава 1. Зачем мы моделируем 13
 - •Глава 2. Введение в язык uml 21
 - •Часть 1. Введение в процесс моделирования Глава 1. Зачем мы моделируем
 - •Значение моделирования
 - •Принципы моделирования
 - •Объектное моделирование
 - •Глава 2. Введение в язык uml
 - •Обзор uml
 - •Где используется uml
 - •Концептуальная модель uml
 - •Строительные блоки uml
 - •Правила языка uml
 - •Общие механизмы языка uml
 - •Архитектура
 - •Жизненный цикл разработки по
 - •Глава 3. Здравствуй, мир !
 - •Ключевые абстракции
 - •Механизмы
 - •Компоненты
 - •Часть II. Основы структурного моделирования Глава 4. Классы
 - •Введение
 - •Термины и понятия
 - •Атрибуты
 - •Операции
 - •Организация атрибутов и операций
 - •Обязанности
 - •Другие свойства
 - •Типичные приемы моделирования Словарь системы
 - •Распределение обязанностей в системе
 - •Непрограммные сущности
 - •Примитивные типы
 - •Глава 5. Отношения
 - •Введение
 - •Термины и понятия
 - •Зависимости
 - •Обобщения
 - •Ассоциации
 - •Другие свойства
 - •Типичные приемы моделирования Простые зависимости
 - •Одиночное наследование
 - •Структурные отношения
 - •Глава 6. Общие механизмы
 - •Введение
 - •Термины и понятия
 - •Примечания
 - •Другие дополнения
 - •Стереотипы
 - •Помеченные значения
 - •Ограничения
 - •Стандартные элементы
 - •Типичные приемы моделирования Комментарии
 - •Новые строительные блоки
 - •Новые свойства
 - •Новая семантика
 - •Глава 7. Диаграммы
 - •Введение
 - •Термины и понятия
 - •Структурные диаграммы
 - •Диаграммы поведения
 - •Типичные приемы моделирования
 - •Различные уровни абстракции
 - •Сложные представления
 - •Глава 8. Диаграммы классов
 - •Введение
 - •Термины и понятия
 - •Общие свойства
 - •Содержание
 - •Типичные примеры применения
 - •Типичные приемы моделирования Простые кооперации
 - •Логическая схема базы данных
 - •Прямое и обратное проектирование
 - •Часть III. Изучение структурного моделирования Глава 9. Углубленное изучение классов
 - •Введение
 - •Термины и понятия
 - •Классификаторы
 - •Видимость
 - •Область действия
 - •Абстрактные, корневые, листовые и полиморфные элементы
 - •Кратность
 - •Атрибуты
 - •Операции
 - •Шаблоны классов
 - •Стандартные элементы
 - •Типичные приемы моделирования Семантика класса
 - •Глава 10. Углубленное изучение отношений
 - •Введение
 - •Термины и понятия
 - •Зависимости
 - •Обобщения
 - •Ассоциации
 - •Реализация
 - •Типичные приемы моделирования Сети отношений
 - •Глава 11. Интерфейсы, типы и роли
 - •Введение
 - •Термины и понятия
 - •Операции
 - •Отношения
 - •Как разобраться в интерфейсе
 - •Типы и роли
 - •Типичные приемы моделирования Стыковочные узлы системы
 - •Статические и динамические типы
 - •Глава 12. Пакеты
 - •Введение
 - •Термины и понятия
 - •Элементы, принадлежащие пакету
 - •Видимость
 - •Импорт и экспорт
 - •Обобщения
 - •Стандартные элементы
 - •Типичные приемы моделирования Группы элементов
 - •Архитектурные виды
 - •Глава 13. Экземпляры
 - •Введение
 - •Термины и понятия
 - •Абстракции и экземпляры
 - •Операции
 - •Состояние
 - •Другие особенности
 - •Стандартные элементы
 - •Типичные приемы моделирования Конкретные экземпляры
 - •Экземпляры-прототипы
 - •Глава 14. Диаграммы объектов
 - •Введение
 - •Термины и понятия
 - •Общие свойства
 - •Содержание
 - •Типичные примеры применения
 - •Типичные приемы моделирования Объектные структуры
 - •Прямое и обратное проектирование
 - •Часть IV. Основы моделирования поведения Глава 15. Взаимодействия
 - •Введение
 - •Термины и понятия
 - •Контекст
 - •Объекты и роли
 - •Сообщения
 - •Последовательности
 - •Представление
 - •Типичные приемы моделирования Поток управления
 - •Глава 16. Прецеденты
 - •Введение
 - •Термины и понятия
 - •Прецеденты и актеры
 - •Прецеденты и поток событий
 - •Прецеденты и сценарии
 - •Прецеденты и кооперации
 - •Организация прецедентов
 - •Другие возможности
 - •Типичные приемы моделирования Поведение элемента
 - •Глава 17. Диаграммы прецедентов
 - •Введение
 - •Термины и понятия
 - •Общие свойства
 - •Содержание
 - •Типичные примеры применения
 - •Типичные приемы моделирования Контекст системы
 - •Требования к системе
 - •Прямое и обратное проектирование
 - •Глава 18. Диаграммы взаимодействий
 - •Введение
 - •Термины и понятия
 - •Общие свойства
 - •Содержание
 - •Диаграммы последовательностей
 - •Диаграммы кооперации
 - •Семантическая эквивалентность
 - •Типичные примеры применения
 - •Типичные приемы моделирования Потоки управления во времени
 - •Структура потоков управления
 - •Прямое и обратное проектирование
 - •Глава 19. Диаграммы деятельности
 - •Введение
 - •Термины и понятия
 - •Общие свойства
 - •Наполнение
 - •Состояния действия и состояния деятельности
 - •Переходы
 - •Ветвление
 - •Разделение и слияние
 - •Дорожки
 - •Траектория объекта
 - •Типичные примеры применения
 - •Типичные приемы моделирования Рабочий процесс
 - •Операция
 - •Прямое и обратное проектирование
 - •Часть V. Более сложные аспекты поведения Глава 20. События и сигналы
 - •Введение
 - •Термины и понятия
 - •Виды событий
 - •Сигналы
 - •События вызова
 - •События времени и изменения
 - •Посылка и получение событий
 - •Типичные приемы моделирования Семейства сигналов
 - •Исключения
 - •Глава 21. Автоматы
 - •Введение
 - •Термины и понятия
 - •Контекст
 - •Состояния
 - •Переходы
 - •Более сложные аспекты состояний и переходов
 - •Подсостояния
 - •Типичные приемы моделирования Жизненный цикл объекта
 - •Глава 22. Процессы и нити
 - •Введение
 - •Термины и понятия
 - •Поток управления
 - •Классы и события
 - •Стандартные элементы
 - •Коммуникация
 - •Синхронизация
 - •Представления с точки зрения процессов
 - •Типичные приемы моделирования Несколько потоков управления
 - •Межпроцессная коммуникация
 - •Глава 23. Время и пространство
 - •Введение
 - •Термины и понятия
 - •Местоположение
 - •Типичные приемы моделирования Временные ограничения
 - •Распределение объектов
 - •Мигрирующие объекты
 - •Глава 24. Диаграммы состояний
 - •Введение
 - •Термины и понятия
 - •Общие свойства
 - •Содержание
 - •Типичные примеры использования
 - •Типичные приемы моделирования Реактивные объекты
 - •Прямое и обратное проектирование
 - •Часть VI. Архитектурное моделирование Глава 25. Компоненты
 - •Введение
 - •Термины и понятия
 - •Компоненты и классы
 - •Компоненты и интерфейсы
 - •Заменяемость двоичного кода
 - •Виды компонентов
 - •Организация компонентов
 - •Стандартные элементы
 - •Типичные приемы моделирования Исполняемые программы и библиотеки
 - •Интерфейс прикладного программирования
 - •Исходный код
 - •Глава 26. Развертывание
 - •Введение
 - •Термины и понятия
 - •Узлы и компоненты
 - •Организация узлов
 - •Соединения
 - •Типичные приемы моделирования Процессоры и устройства
 - •Распределение компонентов
 - •Глава 27. Кооперации
 - •Введение
 - •Термины и понятия
 - •Структуры
 - •Поведение
 - •Организация коопераций
 - •Типичные приемы моделирования Реализация прецедента
 - •Реализация операции
 - •Механизм
 - •Глава 28. Образцы и каркасы
 - •Введение
 - •Термины и понятия
 - •Образцы и архитектура
 - •Механизмы
 - •Каркасы
 - •Типичные приемы моделирования Образцы проектирования
 - •Архитектурные образцы
 - •Глава 29. Диаграммы компонентов
 - •Введение
 - •Термины и понятия
 - •Общие свойства
 - •Содержание
 - •Типичные примеры применения
 - •Типичные приемы моделирования Исходный код
 - •Исполняемая версия
 - •Физическая база данных
 - •Адаптивные системы
 - •Прямое и обратное проектирование
 - •Глава 30. Диаграммы развертывания
 - •Введение
 - •Термины и понятия
 - •Общие свойства
 - •Содержание
 - •Типичное применение
 - •Типичные приемы моделирования Встроенная система
 - •Клиент-серверная система
 - •Полностью распределенная система
 - •Прямое и обратное проектирование
 - •Глава 31. Системы и модели
 - •Введение
 - •Термины и понятия
 - •Системы и подсистемы
 - •Модели и представления
 - •Трассировка
 - •Типичные приемы моделирования Архитектура системы
 - •Системы систем
 - •Часть VII. Подведем итоги Глава 32. Применение uml
 - •Переход к uml
 - •Рекомендуемая литература
 - •Диаграммы
 - •Приложение в Стандартные элементы uivil
 - •Стереотипы
 - •Помеченные значения
 - •Ограничения
 - •Приложение с. Рациональный Унифицированный Процесс
 - •Характеристики процесса
 - •Фазы и итерации
 - •Итерации
 - •Циклы разработки
 - •Рабочие процессы
 - •Артефакты
 - •Другие артефакты
 - •Глоссарий
 
Структура потоков управления
Рассмотрим объекты, существующие в контексте системы, подсистемы (см. главу 31), операции или класса (см. главы 4 и 9). Рассмотрим также объекты и роли;
принимающие участие в прецеденте (см. главу 16) или кооперации (см. главу 27)1 Для моделирования потока управления, проходящего через эти объекты и роли, применяются диаграммы взаимодействий; при этом, чтобы показать передачу сообщений в контексте данной структуры, используют их разновидность – диаграммы кооперации. Моделирование структурной организации потоков управления состоит из следующих шагов:
1. Установите контекст взаимодействия. Это может быть система, подсистема, операция, класс или один из сценариев прецедента либо кооперации.
2. Определите сцену для взаимодействия, выяснив, какие объекты принимают в нем участие. Разместите их на диаграмме кооперации в виде вершин графа так, чтобы более важные объекты оказались в центре диаграммы, а их соседи - по краям.
3. Определите начальные свойства каждого из этих объектов. Если значения атрибутов, помеченные значения, состояния или роли объектов изменяются во время взаимодействия, поместите на диаграмму дубликаты с новыми значениями и соедините их сообщениями со стереотипами become и copy (см. главу 13), сопроводив их соответствующими порядковыми номерами.
4. Детально опишите связи между объектами, вдоль которых передаются сообщения. Для этого:
- сначала нарисуйте связи-ассоциации. Они наиболее важны, поскольку представляют структурные соединения;
- после этого нарисуйте остальные связи, дополнив их соответствующими стереотипами пути (такими, как global или local, см. главу 15), чтобы явным образом показать, как объекты связаны друг с другом.
5. Начав с сообщения, инициирующего взаимодействие, присоедините все последующие сообщения к соответствующим связям, задав порядковые номера. Вложенность показывайте с помощью нотации Дьюи.
6. Если требуется специфицировать временные или пространственные ограничения, дополните сообщения отметками времени (см. главу 23) и присоедините нужные ограничения.
7. Если требуется описать поток управления более формально, присоедините к каждому сообщению пред- и постусловия (см. главу 4).
Как и в случае диаграмм последовательностей, на одной диаграмме кооперации можно показать только один поток управления (хотя нотация UML для итераций и ветвлений помогает проиллюстрировать простые вариации). Поэтому, как правило, создают несколько диаграмм взаимодействий, одни из которых считаются основными, а другие описывают альтернативные пути и исключительные условия. Такие наборы диаграмм кооперации можно организовать в пакеты (см. главу 12), дав каждой диаграмме подходящее имя, отличающее ее от остальных.
В качестве примера на рис. 18.5 показана диаграмма кооперации, которая описывает поток управления, связанный с регистрацией нового студента, причем внимание акцентируется на структурных отношениях между объектами. На диаграмме представлено пять объектов: RegistrarAgent, r (Регистратура), Student, s (Студент), два объекта Course, cl и с2 (Курс) и безымянный объект School (Вуз). Поток управления пронумерован явно. Действие начинается с того, что RegistrarAgent создает объект Student и добавляет его к School (сообщение addStudent), а затем дает ему указание зарегистрироваться. После этого объект Student посылает себе сообщение get Schedule, предположительно получив сначала Course, на который он хочет записаться. Затем объект Student добавляет себя к каждому объекту Course. В конце опять показан объект s с обновленным значением атрибута registered.
Обратите внимание, что на диаграмме показаны связи между объектом School и двумя объектами Course, а также между объектами School и Student, хотя вдоль этих путей не передаются никакие сообщения. Связи просто поясняют, как Sudent может «видеть» два Course, на которые он записывается. Объекты s, с1 и с2 связаны с School ассоциацией; следовательно, s может найти cl и с2 во время обращения к операции get Schedule (которая может вернуть набор объекта Course) косвенно, через объект School.
