События, состояния объектов и диаграммы состояний

Текущее состояние объекта характеризуется совокупностью текущих значений его атрибутов и связей. Во время работы системы составляющие её объекты взаимодействуют друг с другом, в результате чего изменяются их состояния. Единицей влияния является событие: каждое событие приводит к смене состояния одного или нескольких объектов в системе, либо к возникновению новых событий. Работа системы характеризуется последовательностью происходящих в ней событий.

События

Событие происходит в некоторый момент времени (нередко оно используется для определения соответствующего момента времени). Примеры событий: старт ракеты, старт забега на 100 м, начало проводки (в банковской сети), выдача денег и т.п. Событие не имеет продолжительности (точнее, оно занимает пренебрежимо малое время).

Одно из событий может логически предшествовать другому, либо следовать за другим, либо они могут быть независимыми; примерами логически (причинно) связанных событий являются старт и финиш одного забега, начало проводки и выдача денег клиенту (в результате этой проводки), примерами независимых событий – старт ракеты и финиш забега, проводки, запущенные с разных ATM, и т.п. Если события не имеют причинной связи (т.е. они логически независимы), они называются независимыми (concurrent); такие события не влияют друг на друга. Независимые события не имеет смысла упорядочивать, так как они могут происходить в произвольном порядке. Модель распределённой системы обязательно должна содержать независимые события и активности.

События передают информацию с одного объекта на другой. Существуют классы событий, которые просто сигнализируют о том, что что-то произошло или происходит (примеры: загорание лампочки лифта, гудок в телефонной трубке). В программировании рассматриваются исключительные события (иногда их называют исключениями), которые сигнализируют о нарушениях работы аппаратуры либо программного обеспечения.

Сценарии и трассы событий

Сценарием называется последовательность событий, которая может иметь место при конкретном выполнении системы. Сценарии могут иметь разные области влияния: они могут включать все события, происходящие в системе, либо только события, возникающие и влияющие только на определённые объекты системы.

На рисунке 2.44 приведён пример сценария пользования телефонной линией. Каждое событие в этом сценарии передаёт информацию с одного объекта на другой; например, событие начинается длинный гудок передаёт сигнал от телефонной линии к вызывающему (пользователю). При анализе динамики работы системы необходимо составить и рассмотреть несколько сценариев, отражающих типичные варианты её работы.

вызывающий снимает трубку

начинается длинный гудок

вызывающий набирает цифру (9)

гудок прекращается

вызывающий набирает цифру (3)

вызывающий набирает цифру (9)

вызывающий набирает цифру ( )

вызывающий набирает цифру ( )

вызывающий набирает цифру ( )

вызывающий набирает цифру ( )

вызванный телефон начинает звонить

вызывающий слышит гудки

вызванный телефон отвечает

гудки прекращаются

телефоны соединены

вызванный по телефону вешает трубку

телефоны разъединены

вызывающий вешает трубку

Рис. 2.44. Пример сценария: разговор по телефону

Следующим этапом после разработки и анализа сценариев является определение объектов, генерирующих и принимающих каждое событие сценария. Последовательности событий с привязкой к объектам проектируемой системы удобно представлять на диаграммах, называемых трассами событий. Пример трассы событий для разговора по телефону представлен на рисунке 2.45.

События, состояния объектов и диаграммы состояний - student2.ru

Рис. 2.45. Трасса событий для разговора по телефону

Вертикальные линии изображают на этой диаграмме объекты, а горизонтальные стрелки – события (стрелка начинается в объекте, генерирующем событие, и заканчивается в объекте, принимающем событие). Более поздние события помещены ниже более ранних, одновременные – на одном уровне

Состояния

Состояние определяется совокупностью текущих значений атрибутов и связей объекта. Например, банк может иметь состояния платёжеспособный и неплатёжеспособный (когда большая часть банков одновременно оказывается во втором состоянии, наступает банковский кризис).

Состояние определяет реакцию объекта на поступающее в него событие (в том, что реакция различна, нетрудно убедиться с помощью банковской карточки: в зависимости от состояния банка обслуживание (реакция банка на предъявление карточки) будет разным). Реакция объекта на событие может включать некоторое действие и/или перевод объекта в новое состояние.

Объект сохраняет своё состояние в течение времени между двумя последовательными событиями, которые он принимает: события представляют моменты времени, состояния – отрезки времени; состояние имеет продолжительность, которая обычно равна отрезку времени между двумя последовательными событиями, принимаемыми объектом, но иногда может быть больше.

При определении состояний мы не рассматриваем тех атрибутов, которые не влияют на поведение объекта, и объединяем в одно состояние все комбинации значений атрибутов и связей, которые дают одинаковые реакции на события.

Диаграммы состояний

Диаграмма состояний связывает события и состояния. При приёме события следующее состояние системы зависит как от её текущего состояния, так и от события; смена состояния называется переходом. Диаграмма состояний – это граф, узлы которого представляют состояния, а направленные деги, помеченные именами соответствующих событий, – переходы. Диаграмма состояний позволяет получить последовательность состояний по заданной последовательности событий.

События, состояния объектов и диаграммы состояний - student2.ru

Рис. 2.46. Диаграмма состояний телефонной линии

На рисунке 2.46 приведена в качестве примера диаграмма состояний телефонной линии. Другие примеры диаграмм состояний смотрите в последующих пунктах.

Условия

Условие – это логическая (булева) функция от значений объектов, как, например, карточку удалось прочитать, температура ниже нуля и т.п. Условие может выполняться в течение некоторого отрезка времени; событие, в отличие от условия, происходит мгновенно и не имеет продолжительности во времени.

Условия могут использоваться как ограничения на переходы: условный переход выполняется только тогда, когда и произошло соответствующее событие, и выполнено условие этого перехода (диаграмма состояний, представленная на рисунке 2.47, демонстрирует это на примере автомобильного движения по магистралям «Север-Юг» и «Запад-Восток»). На диаграммах состояний условия записываются вслед за событиями в квадратных скобках.

События, состояния объектов и диаграммы состояний - student2.ru

Рис. 2.47. Диаграмма состояний, на которой указаны условия

Активности и действия

Диаграмма состояний была бы не очень полезной, если бы она содержала только переходы (безусловные и условные), соответствующие генерируемым во время работы системы событиям. Являясь описанием поведения объекта, диаграмма состояний должна описывать, что делает объект в ответ на переход в некоторое состояние или на возникновение некоторого события. Для этого в диаграмму состояний включаются описания активностей и действий.

Действием называется мгновенная операция, связанная с событием: при возникновении события происходит не только переход объекта в новое состояние, но и выполняется действие, связанное с этим событием. Например, в телефонной сети событие повесил трубку сопровождается действием разъединить связь (см. рис. 2.49). Действие указывается на диаграмме состояний вслед за событием, которому оно соответствует, и его имя (или описание) отделяется от имени события косой чертой («/») (рис. 2.48).

События, состояния объектов и диаграммы состояний - student2.ru

Рис. 2.48. Диаграмма состояний телефонной линии,

на которой указаны активности и действия

Действия могут также представлять внутренние операции управления объекта, как, например, присваивание значений атрибутам или генерация других событий.

Активностью называется операция, связанная с каким-либо состоянием объекта (она выполняется, когда объект попадает в указанное состояние); выполнение активности требует определённого времени. Примеры активностей: выдача картинки на экран телевизора, телефонный звонок, считывание порции файла в буфер и т.п.; иногда активностью бывает просто приостановка выполнения программы (пауза), чтобы обеспечить необходимое время пребывания в соответствующем состоянии (это бывает особенно важно для параллельной асинхронной программы).

События, состояния объектов и диаграммы состояний - student2.ru

Рис. 2.49. Указание активностей и действий на диаграмме состояний

Активность связана с состоянием, поэтому на диаграмме состояний она обозначается через «do: имя активности» в узле, описывающем соответствующее состояние (см. рис. 2.48).

Наши рекомендации