Динамическая модель системы или подсистемы
Объектная модель представляет статическую структуру проектируемой системы (подсистемы). Однако знания статической структуры недостаточно, чтобы понять и оценить работу подсистемы. Необходимо иметь средства для описания изменений, которые происходят с объектами и их связями во время работы подсистемы. Одним из таких средств является динамическая модель подсистемы. Она строится после того, как объектная модель подсистемы построена и предварительно согласована и отлажена. Динамическая модель подсистемы состоит из диаграмм состояний ее объектов и подсистем. 2.5.1. События, состояния объектов и диаграммы состояний. Текущее состояние объекта характеризуется совокупностью текущих значений его атрибутов и связей. Во время работы системы составляющие ее объекты взаимодействуют друг с другом, в результате чего изменяются их состояния. Единицей влияния является событие: каждое событие приводит к смене состояния одного или нескольких объектов в системе, либо к возникновению новых событий. Работа системы характеризуется последовательностью происходящих в ней событий. События. Событие происходит в некоторый момент времени (нередко оно используется для определения соответствующего момента времени). Примеры событий: старт ракеты, старт забега на 100 м, начало проводки (в банковской сети), выдача денег и т.п. Событие не имеет продолжительности (точнее, оно занимает пренебрежимо малое время). Одно из событий может логически предшествовать другому, либо следовать за другим, либо они могут быть независимыми; примерами логически (причинно) связанных событий являются старт и финиш одного забега, начало проводки и выдача денег клиенту (в результате этой проводки), примерами независимых событий - старт ракеты и финиш забега, проводки, запущенные с разных ATM, и т.п. Если события не имеют причинной связи (т.е. они логически независимы), они называются независимыми (concurrent); такие события не влияют друг на друга. Независимые события не имеет смысла упорядочивать, так как они могут происходить в произвольном порядке. Модель распределенной системы обязательно должна содержать независимые события и активности.
События передают информацию с одного объекта на другой. Существуют классы событий, которые просто сигнализируют о том, что что-то произошло или происходит (примеры: загорание лампочки лифта, гудок в телефонной трубке). В программировании рассматриваются исключительные события (иногда их называют исключениями), которые сигнализируют о нарушениях работы аппаратуры, либо ПО. Сценарии и трассы событий. Сценарием называется последовательность событий, которая может иметь место при конкретном выполнении системы. Сценарии могут иметь разные области влияния: они могут включать все события, происходящие в системе, либо только события, возникающие и влияющие только на определенные объекты системы. На рис. 2.44 приведен пример сценария пользования телефонной линией. Каждое событие в этом сценарии передает информацию с одного объекта на другой; например событие начинается длинный гудок передает сигнал от телефонной линии к вызывающему (пользователю). При анализе динамики работы системы необходимо составить и рассмотреть несколько сценариев, отражающих типичные варианты ее работы. вызывающий снимает трубку начинается длинный гудок вызывающий набирает цифру (9) гудок прекращается вызывающий набирает цифру (3) вызывающий набирает цифру (9) вызывающий набирает цифру () вызывающий набирает цифру () вызывающий набирает цифру () вызывающий набирает цифру () вызванный телефон начинает звонить вызывающий слышит гудки вызванный телефон отвечает гудки прекращаются телефоны соединены вызванный по телефону вешает трубку телефоны разъединены вызывающий вешает трубкуРис. 2.44. Пример сценария: разговор по телефону
Следующим этапом после разработки и анализа сценариев является определение объектов, генерирующих и принимающих каждое событие сценария. Последовательности событий с привязкой к объектам проектируемой системы удобно представлять на диаграммах, называемых трассами событий. Пример трассы событий для разговора по телефону представлен на рис. 2.45. Вертикальные линии изображают на этой диаграмме объекты, а горизонтальные стрелки - события (стрелка начинается в объекте, генерирующем событие, и заканчивается в объекте, принимающем событие). Более поздние события помещены ниже более ранних, одновременные - на одном уровне. Рис. 2.45. Трасса событий для разговора по телефону Состояния. Состояние определяется совокупностью текущих значений атрибутов и связей объекта. Например, банк может иметь состояния платежеспособный и неплатежеспособный (когда большая часть банков одновременно оказывается во втором состоянии, наступает банковский кризис). Состояние определяет реакцию объекта на поступающее в него событие (в том, что реакция различна нетрудно убедиться с помощью банковской карточки: в зависимости от состояния банка обслуживание (реакция банка на предъявление карточки) будет разным). Реакция объекта на событие может включать некоторое действие и/или перевод объекта в новое состояние. Объект сохраняет свое состояние в течение времени между двумя последовательными событиями, которые он принимает: события представляют моменты времени, состояния - отрезки времени; состояние имеет продолжительность, которая обычно равна отрезку времени между двумя последовательными событиями, принимаемыми объектом, но иногда может быть больше. При определении состояний мы не рассматриваем тех атрибутов, которые не влияют на поведение объекта, и объединяем в одно состояние все комбинации значений атрибутов и связей, которые дают одинаковые реакции на события. Диаграммы состояний. Диаграмма состояний связывает события и состояния. При приеме события следующее состояние системы зависит как от ее текущего состояния, так и от события; смена состояния называется переходом. Диаграмма состояний - это граф, узлы которого представляют состояния, а направленные дуги, помеченные именами соответствующих событий, - переходы. Диаграмма состояний позволяет получить последовательность состояний по заданной последовательности событий.
Рис. 2.46. Диаграмма состояний телефонной линии На рис. 2.46 приведена, в качестве примера, диаграмма состояний телефонной линии. Другие примеры диаграмм состояний см. в последующих пунктах. 2.5.2. Условия. Условие - это логическая (булева) функция от значений объектов, как например, карточку удалось прочитать, температура ниже нуля и т.п. Условие может выполняться в течение некоторого отрезка времени; событие, в отличие от условия, происходит мгновенно и не имеет продолжительности во времени. Условия могут использоваться как ограничения на переходы: условный переход выполняется только тогда, когда и произошло соответствующее событие, и выполнено условие этого перехода (диаграмма состояний, представленная на рис. 2.47, демонстрирует это на примере автомобильного движения по магистралям "Север-Юг" и "Запад-Восток"). На диаграммах состояний условия записываются вслед за событиями в квадратных скобках. Рис. 2.47. Диаграмма состояний, на которой указаны условия 2.5.3. Активности и действия. Диаграмма состояний была бы не очень полезной, если бы она содержала только переходы (безусловные и условные), соответствующие генерируемым во время работы системы событиям. Являясь описанием поведения объекта, диаграмма состояний должна описывать, что делает объект в ответ на переход в некоторое состояние или на возникновение некоторого события. Для этого в диаграмму состояний включаются описания активностей и действий. Активностью называется операция, связанная с каким-либо состоянием объекта (она выполняется, когда объект попадает в указанное состояние); выполнение активности требует определенного времени. Примеры активностей: выдача картинки на экран телевизора, телефонный звонок, считывание порции файла в буфер и т.п.; иногда активностью бывает просто приостановка выполнения программы (пауза), чтобы обеспечить необходимое время пребывания в соответствующем состоянии (это бывает особенно важно для параллельной асинхронной программы). Активность связана с состоянием, поэтому на диаграмме состояний она обозначается через "do: имя_активности" в узле, описывающем соответствующее состояние (см. рис. 2.48).
Рис. 2.48. Указание активностей и действий на диаграмме состояний Действием называется мгновенная операция, связанная с событием: при возникновении события происходит не только переход объекта в новое состояние, но и выполняется действие, связанное с этим событием. Например, в телефонной сети событие повесил трубку сопровождается действием разъединить связь (см. рис. 2.49). Действие указывается на диаграмме состояний вслед за событием, которому оно соответствует, и его имя (или описание) отделяется от имени события косой чертой ("/") (см. рис. 2.48). Рис. 2.49. Диаграмма состояний телефонной линии, на которой указаны активности и действия Действия могут также представлять внутренние операции управления объекта, как например, присваивание значений атрибутам или генерация других событий. 2.5.4. Одновременные события. Синхронизация. На рис. 2.50 представлена диаграмма состояний составного объекта: он состоит из четырех параллельно и независимо работающих компонентов (состояние каждого компонента не зависит от состояний остальных компонентов). Состояние такого объекта определяется как кортеж, членами которого являются состояния каждого из составляющих объектов. Диаграмма состояний при этом распадается на четыре независимые диаграммы состояний каждого из компонентов. В системах, состоящих из нескольких параллельно работающих объектов, иногда бывает необходимо согласовать (синхронизировать) работу двух или более объектов. Для этого тоже используются события, так как синхронизация по существу состоит в необходимости задержать переход одного из синхронизируемых объектов в очередное состояние, пока другой объект не придет в некоторое фиксированное состояние, а переходы из состояния в состояние управляются событиями. Синхронизирующее событие может вырабатываться в любом из синхронизируемых объектов, либо в каком-либо третьем объекте. Рис. 2.50. Диаграмма состояний составного объекта (подсистемы) Если синхронизирующее событие вырабатывается вне синхронизируемого объекта, оно может быть передано ему из другого объекта; на диаграмме это обозначается как показано на рис. 2.51.
Рис. 2.51. Передача события из одного объекта другому Если объект получает события из нескольких независимых объектов, то состояние, в которое он перейдет, может зависеть от порядка, в котором будут получены эти события (а этот порядок случаен, так как объекты независимы). Это называется условием конкуренции. Одной из задач проектирования является исключение нежелательных условий конкуренции. Это достигается с помощью синхронизации. Синхронизация используется и в случае, когда в каком-либо состоянии требуется параллельно выполнить несколько активностей. В качестве примера рассмотрим устройство вывода ATM (рис. 2.52). Оно одновременно (параллельно) выдает наличные деньги и карточку; обе эти операции можно рассматривать как составную активность, состоящую из двух параллельно работающих активностей (пунктирная линия на диаграмме состояний делит состояние на две области, в каждой из которых выполняется одна из указанных активностей). Разделение управления на два параллельных потока схематически показано в виде стрелки, которая разделяется на две: событие готов вызывает переход из состояния установка сразу в два параллельных подсостояния состояния выдача; переход в следующее состояние происходит по двум событиям деньги взяты и карточка взята; если какое-либо из этих событий произойдет раньше другого, перехода все равно не будет, пока не произойдет и второе событие (в этом и состоит синхронизация). Рис. 2.52. Синхронизация в подсистеме Из рассмотренного примера видно, что в различных состояниях может параллельно работать разное число процессов (активностей). 2.5.5. Вложенные диаграммы состояний. Диаграмма состояний компонента трансмиссия (рис. 2.50) имеет узел (состояние) вперед, который сам является диаграммой состояний (вложенная диаграмма состояний). Интерпретация этой диаграммы следующая: трансмиссия имеет три состояния: нейтральное, назад и вперед; состояние вперед имеет три подсостояния (они уточняют состояние вперед): первая, вторая и третья. На диаграммах состояний суперсостояние изображается как прямоугольник с закругленными углами, внутрь которого помещаются все его подсостояния. 2.5.6. Динамическая модель банковской сети. В качестве примера применения рассмотренных принципов построения динамической модели построим динамическую модель банковской сети. Начнем с составления и изучения сценариев. ATM просит клиента вставить карточку клиент вставляет карточку ATM принимает карточку и читает ее номер ATM просит ввести пароль клиент вводит "1234." ATM передает номер и пароль в консорциум, консорциум проверяет номер и пароль, определяет код банка - "39" и сообщает ATM, что запрос принят ATM просит клиента (с помощью меню на экране) выбрать вид проводки (снятие, вклад, перевод, запрос) клиент выбирает снятие ATM спрашивает клиента какова требуемая сумма клиент вводит $100 ATM убеждается, что введенная сумма в пределах лимита и просит консорциум выполнить проводку, консорциум передает запрос в банк, банк выполняет проводку и возвращает новое значение баланса счета ATM выдает сумму и просит клиента взять ее клиент берет деньги ATM спрашивает не нужно ли клиенту чего еще клиент вводит нет ATM печатает счет, выдает карточку и просит клиента взять их клиент берет счет и карточку ATM просит (другого) клиента ввести карточкуРис. 2.53. Нормальный сценарий для банковской сети На рис. 2.53 представлен нормальный сценарий обслуживания клиента в банковской сети; один из возможных сценариев, содержащих исключительные ситуации, показан на рис. 2.54. ATM просит клиента вставить карточку клиент вставляет карточку ATM принимает карточку и читает ее номер ATM просит ввести пароль клиент вводит "9999." ATM передает номер и пароль в консорциум; консорциум, проконсультировавшись с соответствующим банком, отвергает запрос ATM сообщает, что пароль введен неверно клиент вводит "1234." ATM передает номер и пароль в консорциум, консорциум проверяет номер и пароль, определяет код банка - "39" и сообщает ATM, что запрос принят ATM просит выбрать вид проводки клиент выбирает снятие ATM спрашивает какова требуемая сумма клиент (раздумав брать деньги) набирает отмену ATM выдает карточку и просит клиента взять ее клиент берет карточку ATM просит (другого) клиента вставить карточкуРис. 2.54. Сценарий для банковской сети, содержащий исключительные ситуации Для каждого сценария можно составить соответствующую трассу событий (рис. 2.55). Для этого выделяем в сценарии имена событий (событиями являются все сигналы, вводы данных, решения, прерывания, переходы и действия, выполняемые клиентом или внешними устройствами), указывая для каждого события объект, порождающий это событие (активный объект). Имея трассы событий, можно построить диаграммы состояний объектов проектируемой системы. Банковская сеть есть агрегация определенного числа параллельно и независимо работающих объектов четырех классов: консорциум, банк, ATM (банкомат) и клиент; поэтому состояние банковской сети определяется как кортеж состояний составляющих ее объектов: 1 объекта класса консорциум, b объектов класса банк, a объектов класса ATM (банкомат) и c объектов класса клиент (a, b, c - количество ATM, банков и клиентов сети соответственно). Классификация объектов, используемая при ОО подходе, позволяет вместо a+b+1 диаграмм состояний построить всего три (диаграммы состояний клиентов строить не нужно, так как их текущее состояние ясно и так). Рис. 2.55. Трасса событий в банковской сети
Рис. 2.56. Привязка событий к объектам банковской сети Построение диаграмм состояний начинается с привязки событий к объектам банковской сети (см. рис. 2.56), являющимся источниками этих событий. Сначала рассматриваются нормальные события, потом исключительные события. Построение диаграммы состояний объекта (класса) может считаться законченным, когда диаграмма охватывает все рассматриваемые сценарии. Диаграммы состояний объектов классов ATM (банкомат), консорциум и банк представлены на рисунках 2.57, 2.58 и 2.59 соответственно. Рис. 2.57. Диаграмма состояний объектов класса ATM (банкомат)
Рис. 2.58. Диаграмма состояний объектов класса консорциум
Рис. 2.59. Диаграмма состояний объектов класса банк
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|