- •Часть 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
- •Стереотипы
- •Помеченные значения
- •Ограничения
- •Приложение с. Рациональный Унифицированный Процесс
- •Характеристики процесса
- •Фазы и итерации
- •Итерации
- •Циклы разработки
- •Рабочие процессы
- •Артефакты
- •Другие артефакты
- •Глоссарий
Глава 21. Автоматы
С помощью взаимодействий (см. главу 15) можно моделировать поведение сообщества совместно работающих объектов (см. главу 13). Автомат же позволяет моделировать поведение отдельного объекта. Автомат (State machine) описывает поведение в терминах последовательности состояний, через которые проходит объект в течение своей жизни, отвечая на события, а также его реакций на эти события.
Автоматы используются для моделирования динамических аспектов системы. По большей части под этим понимается описание жизни экземпляров класса (см. главы 4 и 9), прецедентов (см. главу 16) и системы (см. главу 31) в целом. Экземпляры могут реагировать на такие события, как сигналы, операции или истечение промежутка времени. Когда происходит событие, в зависимости от текущего состояния объекта имеет место та или иная деятельность. Деятельность (Activity) -это занимающее некоторое время неатомарное вычисление внутри автомата. Результатом деятельности является некоторое действие, составленное из атомарных вычислений, которое приводит к изменению состояния модели или возврату значения. Состояние (State) объекта - это ситуация в его жизни, на протяжении которой он удовлетворяет некоторому условию, осуществляет определенную деятельность или ожидает какого-то события.
Визуализировать автомат можно двумя способами: выделяя передачу потока управления от одной деятельности к другой (с помощью диаграммы деятельности, см. главу 19) или выделяя потенциальные состояния объектов и переходы между ними (с помощью диаграммы состояний, см. главу 24).
Хорошо структурированные автоматы подобны хорошо структурированным алгоритмам - они эффективны, просты, адаптируемы к разным ситуациям и просты для понимания.
Введение
Рассмотрим «жизнь» домашнего термостата в прохладный осенний день. Ранним утром ничто не тревожит его покой. Температура в доме стабильная;
если не задует сильный ветер и не налетит ураган, то снаружи температура меняться тоже не будет. Ближе к рассвету картина меняется. Над горизонтом встает солнце, и наружная температура слегка поднимается. Начинают просыпаться домочадцы; вот кто-то вылез из кровати и подкрутил регулятор. Оба этих события существенны для домашней климатической системы. Наш термостат начинает вести себя как все порядочные термостаты и отдает команду либо обогревателю (чтобы подогреть воздух), либо кондиционеру (чтобы его охладить).
После того как обитатели дома ушли на работу или в школу, движение прекращается, и температура снова становится постоянной. Но тут может вмешаться автоматическая программа и приказать термостату понизить температуру, чтобы не расходовать зря электричество и газ. Термостат снова принимается за работу. Ближе к концу дня автоматическая программа снова «оживает», но на этот раз велит поднять температуру, поскольку вот-вот семейство начнет собираться, и дом к этому моменту должен стать уютным.
Вечером, когда дом наполнен теплом, исходящим от человеческих тел, а на плите готовится еда, у термостата полно работы - он должен включать то обогреватель, то кондиционер, чтобы температура оставалась постоянной. Наконец, ночью все снова успокаивается,
Многие программные системы ведут себя аналогично термостату. Сердечный стимулятор работает круглосуточно, но адаптируется к изменениям кровяного давления или выполняемой человеком работе. Сетевой маршрутизатор тоже работает непрерывно, незаметно перенаправляя потоки битов, а иногда модифицируя свое поведение в ответ на команды администратора сети. Сотовый телефон работает по запросам, отвечая на действия своего владельца и на сообщения из локальных ячеек сотовой сети связи.
В UML статические аспекты системы моделируются с использованием таких элементов, как диаграммы классов и диаграммы объектов (моделирование структурных аспектов системы рассматривается в частях 2 и 3 данной книги). Они позволяют визуализировать, специфицировать и документировать все, что существует внутри системы, включая классы, интерфейсы, компоненты, узлы, прецеденты, отдельные экземпляры всех перечисленных сущностей, а также их отношения друг с другом.
Динамические аспекты системы в UML моделируются с помощью автоматов и взаимодействий (см. главу 15). Если взаимодействие моделирует сообщество объектов, которые совместно работают для выполнения некоторого действия, то автомат моделирует жизненный цикл отдельного объекта, будь то экземпляр класса, прецедент или даже система в целом. На протяжении своей жизни объект может столкнуться с различными событиями (см. главу 20), такими как сигнал, запрос на выполнение операции, создание или уничтожение объекта, истечение промежутка времени или изменение некоторого условия. В ответ на событие объект выполняет некоторое действие, то есть атомарное вычисление, приводящее к изменению состояния объекта или возврату значения. Таким образом, на поведение объекта оказывает влияние его прошлое. Объект может «получить» событие, отреагировать на него выполнением действия, а затем изменить свое состояние. Если после этого он получит другое событие, то реакция на него в общем случае может быть иной, в зависимости от состояния, в которое он пришел после предыдущего события.
Автоматы применяются для моделирования поведения любого элемента мс ли, но чаще всего - классов, прецедентов или системы в целом. Автоматы можно визуализировать двумя способами. Во-первых, с помощью диаграммы действий (см. главу 19) можно сконцентрировать внимание на действиях, происходят внутри объекта. Во-вторых, с помощью диаграмм состояний (см. главу 24) можно сосредоточиться на поведении объекта при упорядоченном поступлении событий, что особенно полезно при моделировании реактивных систем.
В UML имеются средства для графического представления состояний, переходов, событий и действий, как показано на рис. 21.1. Эта нотация позволят визуализировать поведение объекта так, чтобы подчеркнуть наиболее важные элементы его жизненного цикла.