2. Язык UML. Руководство пользователя. Буч_ Рамбо_ Якобсон (2-е издание) (2006) (1185732), страница 60
Текст из файла (страница 60)
Когда происходит событие,в зависимости от текущего состояния объекта наблюдается некоторый эффект. Эффект – это спецификация поведения, реализуемого внутри автомата. В конечном счете эффекты проявляют себяв выполнении действий, изменяющих состояние объекта или возвращающих какоеFлибо значение. Состояние объекта – это периодвремени, в течение которого он удовлетворяет заданным условиям,выполняет некую деятельность или ожидает определенного события.Вы можете визуализировать динамику выполнения некоторогопроцесса двумя способами: подчеркивая поток управления от однойдеятельности к другой (при помощи диаграммы деятельности) илиже выделяя потенциальные состояния объекта и переходы междуними (при помощи диаграммы состояний).Хорошо структурированные автоматы подобны хорошо структурированным алгоритмам: они эффективны, просты, адаптируемыи понятны.Рассмотрим жизненный цикл домашнего термостата в погожийосенний день.
Ранним утром ничто не тревожит его покой. Температура в доме стабильна, а если не налетит ураган и не поднимется сильный ветер, то и температура снаружи не должна меняться.Ближе к рассвету наблюдается иная картина. Солнце встает изFзагоризонта, и температура воздуха на улице слегка повышается.Начинают просыпаться члены семьи; вот ктоFто вылез из кроватии подкрутил регулятор. Оба этих события важны для системы терморегуляции дома. Термостат начинает вести себя, как все порядочные устройства его класса: отдает команду либо обогревателю (чтобы подогреть воздух), либо кондиционеру (чтобы его охладить).После того как обитатели дома ушли на работу или в школу,движение прекращается, и температура вновь становится постоянной.
Но тут может вмешаться автоматика, которая приказываеттермостату понизить температуру, чтобы не расходовать зря электроэнергию и газ. Термостат снова принимается за работу. Ближек концу дня автоматическая программа снова «оживает», но на этотраз велит поднять температуру, потому что скоро семейство окажется в полном сборе, и к этому моменту дом должен стать уютным.Вечером, когда дом наполнен теплом, исходящим от человеческих тел, а на плите готовится еда, у термостата масса работы: он должен включать то обогреватель, то кондиционер. Наконец, ночью всеснова успокаивается.Многие программные системы ведут себя подобно термостату.Сердечный стимулятор работает круглосуточно, но адаптируетсяк изменениям кровяного давления или выполняемой человеком работе.
Сетевой маршрутизатор тоже работает непрерывно, незаметноперенаправляя потоки битов, а иногда изменяя свое поведение в ответ на команды администратора сети. Сотовый телефон работаетпо запросам, отвечая на действия своего владельца и на сообщенияот локальных ретрансляторов сотовой связи.МоделироваВ UML моделирование статических аспектов системы выполние струкняется с помощью диаграмм классов и объектов. Они позволяюттурныхвизуализировать, специфицировать, конструировать и документиаспектовровать те сущности, которые «живут» внутри системы, включаясистемы об- классы, интерфейсы, компоненты, узлы, варианты использованиясуждаетсяи их экземпляры, а также связи между ними.в частях IIДинамические аспекты системы в UML моделируются конечи III.ными автоматами (state machines).
В то время как взаимодействиемоделирует сообщество объектов, совместно работающих для выполнения некоторых действий, автомат моделирует жизненный цикл отдельного объекта – будь то экземпляр класса, варианта использованияКонечные автоматы314Динамические аспектысистемтакжеможно моделироватьпри помощивзаимодействий (см.главу 16);события обсуждаютсяв главе 21.Диаграммыдеятельности обсуждаютсяв главе 20,диаграммысостояний –в главе 25.или даже всей системы. За время жизненного цикла в объекте может происходить множество разнообразных событий, таких какпередача и прием сигналов, вызовы операций, создание и уничтожение объекта, истечение периодов времени, отведенного на некоедействие, либо изменение какихFто условий. В ответ на эти событияобъект выполняет определенное действие, представляющее собойвычисление, а затем изменяет свое состояние на другое.
Поэтомуповедение такого объекта зависит от прошлого, по крайней мерев той степени, в которой оно влияет на его текущее состояние. Объект может принять событие, ответить на него действием, затем изменить свое состояние. Когда же он принимает другое событие, егореакция может быть другой – в зависимости от текущего состояния,которое является результатом предыдущего события.Автоматы используются для моделирования поведения любого элемента – чаще всего класса, варианта использования или всейсистемы. Автоматы могут быть визуализированы на диаграммахсостояний. Вы можете сосредоточиться на поведении объекта, зависящем от последовательности событий, что особенно удобно длямоделирования реактивных систем.Графическое представление состояний, переходов, событийи эффектов в UML продемонстрировано на рис. 22.1.
Эта нотацияпозволяет показать поведение объекта таким образом, чтобы выделить важные элементы его жизненного цикла.триггерПростойТермины и понятияСостояние – ситуация во время жизни объекта, в которойон удовлетворяет заданным условиям, осуществляет некую деятельность либо пребывает в ожидании событий.Событие – это спецификация значимого происшествия, локализованного во времени и пространстве. Применительно к автоматам событие – это воздействие, которое может инициировать переход от одного состояния к другому.Переход – связь между двумя состояниями, указывающая на то,что объект в первом состоянии выполнит определенные действияи перейдет во второе, когда случится определенное событие и заданное условие будет удовлетворено.
Изображается сплошной линией со стрелкой или путем, направленным от исходного состоянияк новому.Деятельность (activity) – происходящий в данный момент неатомарный процесс внутри автомата.Действие (action) – исполняемое вычисление, в результате которого изменяется состояние модели или возвращается некотороезначение. Изображается в виде прямоугольника с закругленнымиуглами.КонтекстОбъектыобсуждаютсяв главе 13,сообщения –в главе 16.тип событияОбогревСигналыобсуждаютсяв главе 21.Рис.
22.1. АвтоматыТермины и понятияАвтомат – это поведение, специфицирующее последовательность состояний, через которые проходит объект за время своегосуществования в ответ на события, а также его реакцию на эти события.315Каждый объект имеет свой жизненный цикл: сначала создается, затем прекращает свое существование. Между этими двумя событиями объект может влиять на другие объекты, посылая им сообщения, а также подвергаться их влиянию, принимая сообщенияот них. Во многих случаях такие сообщения представляют собойпростые синхронные вызовы операций. Например, экземпляр класса Customer (Покупатель) может вызвать операцию getAccountBalance(ЗапроситьБаланс) на экземпляре класса BankAccount (БанковскийСчет).
Подобным объектам не нужен автомат для описания их поведения, поскольку их текущее поведение не зависит от прошлого.В системах других типов можно встретить объекты, которыедолжны отвечать на сигналы, представляющие собой асинхронныесообщения, передаваемые между экземплярами.
Например, сотовый телефон должен отвечать на случайные телефонные вызовыс других телефонов, на события нажатия клавиш пользователем,а также на сигналы из сети, когда телефон перемещается из одной«соты» в другую. Кроме того, можно встретить объекты, текущееповедение которых зависит от прошлого. Например, поведение системы управляемой ракеты «воздухFвоздух» зависит от ее текущегосостояния, такого как NotFlying (НеЛетит) – не слишком хорошаяидея запускать ракету с самолета, стоящего на земле! – или Searching(Поиск): не стоит пускать ракету, пока не выбрана цель.Конечные автоматы316Активныеобъектыобсуждаютсяв главе 23,моделированиереактивныхсистем –в главе 25,вариантыиспользования –в главе 17,взаимодействия –в главе 16,интерфейсы –в главе 11.Поведение объекта, который должен отвечать на асинхронныесообщения либо его текущее поведение зависит от прошлого, лучше всего специфицировать при помощи автоматов.
Это касаетсяэкземпляров классов, которые могут принимать сигналы, включаямногие активные объекты. Фактически объект, который принимает сигнал, но не имеет для него перехода в своем текущем состоянии и не откладывает реакцию на сигнал в этом состоянии, будетпросто его игнорировать. Другими словами, отсутствие переходадля сигнала не является ошибкой; это значит, что в данной точкесигнал не представляет интереса. Вы также будете использоватьавтоматы для моделирования поведения систем в целом, особеннореактивных, которые должны отвечать на сигналы действующихлиц за пределами системы.На заметку. В основном для моделирования поведения вариантов использования применяются взаимодействия, но с тойже целью можно использовать и автоматы.
Также они подходятдля моделирования поведения интерфейсов. Хотя интерфейсможет и не иметь конкретных экземпляров, класс, реализующий его, – может. Такой класс должен соответствовать поведению, специфицированному автоматом для интерфейса.Термины и понятия317 внутренние переходы – переходы, которые обрабатываютсябез смены состояния; подсостояния – вложенные состояния, в том числе неортогональные (последовательно активные) или ортогональные(параллельно активные) подсостояния; отложенные события – список событий, которые не обрабатываются в данном состоянии, но откладываются и помещаются в очередь для обработки объектом в другом состоянии.На заметку.
Имя состояния – это текст, который может состоять из букв и цифр в неограниченном количестве, а также некоторых знаков препинания (за исключением таких, как двоеточие), и записываться в несколько строк. На практике именасостояний представляют собой краткие существительные,взятые из словаря моделируемой системы.