Сайт Информационных Технологий

4.2. Динамическая модель системы

4.2.1. События системы
4.2.2. Состояния и диаграммы состояний системы


4.2. Динамическая модель системы

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

4.2.1. События системы

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

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

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

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

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

При анализе динамики работы системы необходимо составить и рассмотреть несколько сценариев, отражающих типичные варианты ее работы. Ниже приводятся основные сценарии работы Proxy сервера:

    1. Запрашиваемый клиентом документ есть в кэше:
    2. Клиент посылает запрос.

      Поиск документа в кэше.

      Proxy берёт документ из кэша.

      Proxy посылает ответ клиенту.

      Обновление статистики Proxy.

      Обновление статистики по документу.

    3. Запрашиваемого клиентом документа нет в кэше, но он есть на удалённом Web сервере:
    4. Клиент посылает запрос.

      Поиск документа в кэше.

      Обновление статистики Proxy.

      Proxy посылает запрос удалённому Web серверу.

      Proxy получает ответ от удалённого Web сервера.

      Proxy посылает ответ клиенту.

      Proxy добавляет документ в кэш.

      Обновление статистики по документу.

      Обновление статистики по удалённому Web серверу

    5. Запрашиваемого клиентом документа нет в кэше и при этом его нет на удалённом Web сервере:
    6. Клиент посылает запрос.

      Поиск документа в кэше.

      Обновление статистики Proxy.

      Proxy посылает запрос удалённому Web серверу.

      Proxy получает ответ от удалённого Web сервера.

      Proxy посылает ответ клиенту.

    7. Запрашиваемого клиентом документа нет в кэше, при этом используется каскадирование proxy серверов и результат поиска документа на удалённом Web сервере положителен:

Клиент посылает запрос.

Поиск документа в кэше.

Обновление статистики Proxy.

Proxy посылает запрос альтернативному proxy серверу.

Proxy получает ответ от альтернативного proxy сервера.

Proxy посылает ответ клиенту.

Proxy добавляет документ в кэш.

Обновление статистики по документу.

Обновление статистики по удалённому Web серверу.

5. Запрашиваемого клиентом документа нет в кэше, при этом используется каскадирование proxy серверов и результат поиска документа на удалённом Web сервере отрицателен:

Клиент посылает запрос.

Поиск документа в кэше.

Обновление статистики Proxy.

Proxy посылает запрос альтернативному proxy серверу.

Proxy получает ответ от альтернативного proxy сервера.

Proxy посылает ответ клиенту.

Следующим этапом после разработки и анализа сценариев является определение объектов, генерирующих и принимающих каждое событие сценария. Последовательности событий с привязкой к объектам проектируемой системы удобно представлять на диаграммах, называемых трассами событий. Вертикальные линии изображают на этой диаграмме объекты, а горизонтальные стрелки - события (стрелка начинается в объекте, генерирующем событие, и заканчивается в объекте, принимающем событие). Более поздние события помещены ниже более ранних, одновременные - на одном уровне. Ниже на рисунках 4.4, 4.5, 4.6, 4.7, 4.8 приводятся трассы событий для соответствующих сценариев:

Рис. 4.4. Трасса событий для работы proxy сервера, если искомый документ имеется в кэше.

Рис. 4.5. Трасса событий для работы proxy сервера, если искомого документа нет в кэше, но он есть на удалённом Web сервере.

Рис. 4.6. Трасса событий для работы proxy сервера, если запрашиваемого клиентом документа нет в кэше и при этом его нет на удалённом Web сервере.

Рис. 4.7. Трасса событий для работы proxy сервера, когда используется каскадирование proxy серверов и результат поиска документа на удалённом Web сервере положителен.

Рис. 4.8. Трасса событий для работы proxy сервера, когда используется каскадирование proxy серверов и результат поиска документа на удалённом Web сервере отрицателен.

 

4.2.2. Состояния и диаграммы состояний системы

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

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

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

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

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

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

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

Условия могут использоваться как ограничения на переходы: условный переход выполняется только тогда, когда и произошло соответствующее событие, и выполнено условие этого перехода.

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

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

В соответствии с этими правилами отобразим диаграммы состояний для объектов основных классов. Так рисунке 4.9 изображена диаграмма состояний объектов класса proxy, а на рисунке 4.10 изображена диаграмма состояний объектов класса кэш.

 

Рис. 4.10. Диаграмма состояний объектов класса кэш.


Site of Information Technologies
Designed by  inftech@webservis.ru.