2. Язык UML. Руководство пользователя. Буч_ Рамбо_ Якобсон (2-е издание) (2006) (1185732), страница 64
Текст из файла (страница 64)
Если оба состояния неактивны, данное событие не имеет никакого эффекта.Активные объектыАктивныеобъектыобсуждаютсяв главе 23.Другой способ моделирования параллелизма – применение активных объектов. То есть вместо разбиения одного автомата объекта на несколько параллельных областей можно определить дваактивных объекта, каждый из которых реализует поведение однойиз параллельных областей.
Если на поведение одного из этих параллельных потоков влияет состояние другого, это можно смоделировать при помощи ортогональных областей. Если же поведениеодного потока зависит от сообщений, посланных другим или другому, то имеет смысл воспользоваться активными объектами. Еслимежду параллельными потоками происходит лишь минимальноеобщение либо вообще не наблюдается никакого, то в большинствеслучаев применение активных объектов сделает ваш дизайн болеенаглядным.Типичные приемы моделированияМоделирование жизненного цикла объектаНаиболее общее назначение автоматов – моделирование жизненного цикла объекта, в особенности если речь идет об экземплярах классов, вариантов использования и о системе в целом.В то время как взаимодействие моделирует поведение сообществаработающих вместе объектов, автомат моделирует поведение одного объекта в течение его жизненного цикла – например, так, как этоТипичные приемы моделирования333бывает с пользовательскими интерфейсами, контроллерами и различными техническими устройствами.Когда моделируется жизненный цикл объекта, приходится явноспецифицировать три момента: события, на которые объект можетреагировать, непосредственную реакцию на эти события и влияниеболее раннего поведения на текущее.
Кроме того, моделированиежизненного цикла объекта включает в себя принятие решений о порядке, в котором объект может осмысленно реагировать на события,начиная с момента его создания и заканчивая уничтожением.Чтобы смоделировать жизненный цикл объекта, необходимо:Объекты об Определить контекст автомата – будет ли это класс или сиссуждаютсятема в целом:в главе 13,– если речь идет о контексте класса или варианта испольклассы –зования, найти соседние классы, включая всех родителейв главах 4 и 9,данного класса и всех доступных ему по ассоциациям иливариантызависимостям. Эти соседи – потенциальные цели действий,использоа также кандидаты на включение в защитные условия;вания –– если же речь идет о контексте системы в целом, необхов главе 17,димо сосредоточить внимание на какомFто одном аспектесистемы –ее поведения. Теоретически каждый объект системы можетв главе 32,участвовать в моделировании ее жизненного цикла, и за исвзаимодейстключением работы с простейшими системами такие полныевия –модели будут недоступны для понимания.в главе 16, Установить начальное и конечное состояния объекта.
Чтобыкооперации –управлять остальной моделью, возможно, понадобится устав главе 28,новить предF и постусловия начального и конечного состояпредN и посний соответственно.тусловия – Принять решения относительно событий, на которые долв главе 10,жен реагировать объект. Их можно обнаружить в интерфейинтерфейсах объекта (если они уже специфицированы); если же нет,сы – в гласледует рассмотреть, какие объекты могут взаимодействове 11.вать с данным в имеющемся контексте и какие события онимогут передавать и принимать. От начального состояния до конечного выделить те состояния высшего уровня, в которых может находиться объект.Соединить их переходами, инициируемыми соответствующими событиями.
Продолжать работу, добавляя действияк этим переходам. Идентифицировать входные и выходные действия (особенно если обнаружится, что соответствующая идиома используется в автомате). При необходимости расширить выделенные состояния подсостояниями.334Конечные автоматы Проверить, все ли упомянутые события в автомате соответствуют событиям, ожидаемым в интерфейсе объекта. Аналогичным образом проверить, все ли события, ожидаемыеинтерфейсом объекта, обрабатываются в автомате. Наконец,рассмотреть места, где следует явно игнорировать события. Убедиться, что все действия, упомянутые в автомате, поддерживаются связями, методами и операциями включающегообъекта. Провести трассировку автомата (либо вручную, либо с применением инструментальных средств), чтобы проверить егона соответствие ожидаемым последовательностям событийи реакций на них.
Особенно старательно следует поискатьнедостижимые состояния и состояния, в которых автоматможет зациклиться. После реорганизации автомата снова проверить его на предмет того, не изменилась ли семантика объекта.В примере на рис. 22.9 представлен автомат контроллера домашней системы сигнализации, которая отвечает за отслеживаниепоказаний разнообразных датчиков, расположенных по периметрудома.Советы и подсказки335В жизненном цикле этого контроллера имеются четыре основных состояния: Initializing (Инициализация – запуск работы), Idle(Простой – контроллер готов и ожидает сигналов тревоги или команд пользователя), Command (Команда – обработка команд пользователя) и Active (Активен – обработка сигнала тревоги). Впервыесоздаваемый объект контроллера сначала попадает в состояниеInitializing, а затем безусловно переходит в состояние Idle.
Подробности этих двух состояний не показаны, за исключением переходав себя по истечении определенного периода времени (10 с) в состоянии Idle. Временные события подобного рода часто встречаютсяво встроенных системах, где присутствует таймер, вызывающий периодическую проверку работоспособности системы.Управление передается от состояния Idle в состояние Activeпо получении события alarm (тревога). Последнее сопровождаетсяпараметром s, идентифицирующим датчик, который был задет.
Привходе в состояние Active в качестве входного выполняется действиеsetAlarm (поднятьТревогу) и управление передается сначала состоянию Checking (Проверка), затем состоянию Calling (Вызов), обеспечивающему вызов охранной компании для регистрации сигнала тревоги, и, наконец, состоянию Waiting (Ожидание). СостоянияActive и Waiting завершаются только при «очистке» сигнала тревоги(clearAlarm) или же по инициативе пользователя, при посылке события attention (внимание), предположительно предшествующегокоманде.Отметим, что конечного состояния здесь нет. И это опять жетипично для встроенных систем, которые должны работать непрерывно.Советы и подсказкиПри моделировании автоматов на UML следует помнить, чтокаждый из них выражает динамические аспекты отдельного объекта, обычно представляющего экземпляр класса, варианта использования либо систему в целом. Хорошо структурированный автоматдолжен обладать следующими характеристиками:Рис.
22.9. Моделирование жизненного цикла объекта быть достаточно простым и не включать излишних состояний или переходов; благодаря ясному контексту иметь доступ ко всем объектам,видимым его включающему объекту (все эти соседи должныиспользоваться только при необходимости обеспечения поведения, специфицированного автоматом); быть эффективным, то есть реализовывать свое поведениес оптимальным балансом затрат времени и ресурсов.336Моделированиесловаря системы обсуждаетсяв главе 4.Конечные автоматы быть понятным, а потому именовать свои состояния и переходы в терминологии словаря системы; не допускать слишком глубоких уровней вложенности (вложенных подсостояний первогоFвторого уровней вполне хватит для описания самого сложного поведения); умеренно использовать ортогональные области, посколькучасто предпочтительно применение активных классов.При изображении автомата в UML необходимо:Глава 23.
Процессы и потоки избегать пересекающихся переходов; раскрывать составные состояния «по месту» только в томслучае, если это сделает диаграмму более понятной.В этой главе:Представления взаимодействияв контекстеархитектуры программногообеспеченияобсуждаются в главе 2.Активные объекты, процессы и потокиМоделирование множества потоков управленияМоделирование межпроцессной коммуникацииПостроение абстракций защищенных потоковРеальный мир суров и не прощает ошибок; вдобавок к этому в немпостоянно чтоFто случается. Различные события происходят одновременно. Поэтому при моделировании системы, предназначеннойдля работы в реальном мире, следует учитывать ее вид с точки зрения процессов, в котором основное внимание уделяется процессами потокам, лежащим в основе механизмов параллелизма и синхронизации.В UML каждый независимый поток управления моделируетсякак активный объект, описывающий процесс или поток и способныйинициировать некоторое управляющее воздействие.