Тема 2. Диаграммы Взаимодействия Цель: - рассмотреть средства языка диаграмм взаимодействия - научить читать диаграммы взаимодействия - научить использованию языка диаграмм взаимодействия Побочные цели: - описание аппарата графических грамматик Содержание: Блок 1: Введение Блок 2: Нотация: описание графического синтаксиса Блок 3: Базовые диаграммы Блок 4: Структурные средства Блок 5: Пример 1. Назначение 2. История 3. Нотация 4. Основные понятия 4.1 Диаграмма 4.2 Объект 4.3 Семантика диаграмм взаимодействия 5. События 5.1 Взаимодействие 5.2 Действие 5.3 Создание объекта 5.4 Уничтожение объекта 5.5 Контролируемый интервал 5.6 Неупорядоченная область 6. Структурные средства 6.1 Композиция и декомпозиция диаграмм посредством состояний 6.1.1. События 6.1.2. Композиция диаграмм посредством состояний 6.1.3. Декомпозиция диаграмм посредством состояний 6.1.4. Виды композиции диаграмм 6.1.4.1. Последовательная композиция 6.1.4.2. Альтернативная композиция 6.1.4.3. Циклическая композиция 6.1.4.4. Параллельная композиция 6.2 Иерархическая декомпозиция объекта 7. Пример "Дипломная Работа" Приложение 1. Диаграммы примера "Дипломная работа" Приложение 2. Текстовое представление примера "Дипломная Работа" Приложение 3. Основные понятия языка диаграмм взаимодействия Приложение 4. Соотвествие между анаглийскими и русскими названиями нетерминальных символов графического синтаксиса Приложение 5. Синтаксис текстового представления диаграмм взаимодействия 1. Назначение Язык диаграмм взаимодействия (Message Sequence Charts, MSC) это язык описания трасс. На трассах представляются последовательности событий. События могут относиться к отдельным элементам системы, к взаимодействиям между элементами системы либо к взаимодействию между системой и ее окружением. Основное назначение диаграмм взаимодействия - описание последовательностей допустимых взаимодействий между элементами системы и системой и ее окружением. Аппарат диаграмм взаимодействия очень удобен для описания внешнего (наблюдаемого) поведения системы. 2. История Разновидности диаграмм взаимодействия используются при разработке систем реального времени с 60х годов. Особое распространение диаграммы взаимодействия получили в области разработки телекоммуникационных систем. Собственно язык диаграмм взаимодействия стандартизован в 1992 г. Международным Телекоммуникационным Союзом (Рекоммендация Z.120 1992). В настоящее время принята новая, значительно расширенная версия стандарта (Рекоммендация Z.120 1996). В лекциях язык диаграмм взаимодействия описывается в рамках стандарта 1992 г. Некоторые уточнения семантики диаграмм взаимодействия предлагаются нами. 3. Нотация Язык диаграмм взаимодействия имеет текстовый и графический синтаксис. Графический синтаксис особенно удобен и дает интуитивное и прозрачное описание поведения системы. Текстовый синтаксис обычно используется для обмена спецификациями, сохранения спецификаций в системах управления версиями, а также различными инструментальными средствами. Описание графического синтаксиса Проблема: описание пространственных отношений между символами. Для описания структуры линейного текста, порожденного операцией конкатенации, используется аппарат (контекстно-свободных) грамматик. Диаграмма имеет пространственную структуру. Структура диаграммы порождается операцией размещения графических символов на плоскости. Аналогом операции конкатенации является связывание графических символов, т.е. соприкосновение двух графических символов своими границами на плоскости. Для описания графического синтаксиса будем использовать аппарат графических грамматик. Графическая грамматика состоит из следующих семи частей: 1) набор примитивных графических символов; 2) описание текстовой лексики для атрибутов примитивных графических символов; 3) набор составных графических символов; 4) описание атрибутов примитивных графических символов; 5) описание составных графических символов; 6) описание пространственных связей между графическими символами; 7) начальный символ графической грамматики; Части 1) и 2) соотвествуют алфавиту терминальных символов в текстовых грамматиках. Часть 2) описывает правила построения надписей на диаграмме. Часть 3) соответствует алфавиту нетерминальных символов в текстовых грамматиках. Условимся заключать нетерминальные символы в угловые скобки < > Части 4), 5) и 6) графической грамматики соответствуют правилам текстовых грамматик. Часть 4) описание атрибутов примитивных графических символов используется для привязки текстовых надписей к графическим символам на диаграмме. По определению, атрибут представляет собой обязательный элемент некоторого нетерминального символа. Обычно, атрибут лишен собственной внутренней структуры, т.е. является терминальным символом. Заметим, что разделение структуры нетерминальных символов на атрибуты и прочие (необязательные) элементы приближает аппарат грамматик к аппарату описания классов в объектно-ориентированном подходе. Часть 6) описание пространственных связей отсутствует в текстовых грамматиках. Часть 7) начальный графический символ соответствует начальному нетерминальному символу в текстовых грамматиках. Для описания правил построения составных графических символов будем использовать расширенные формы Бэкуса-Наура. Например, правило вида: ::= { | }+ { }* [ ] Означает, что составной символ состоит следующих четырех частей: - символа , - непустой последовательности символов и , - последовательности символов (которая может быть пустой), - символа (который не является обязательным и может опускаться). Для описания аттрубутов графических символов и пространственных связей между графическими символами расширим (расширенные) формы Бэкуса-Наура следующими ключевыми словами: X is associated with Y X привязан к Y символ Y является атрибутом символа X X contains Y X содержит Y символ Y расположен внутри символа X X is connected to Y X соединен с Y символы X и Y соприкасаются (обычно боковыми) границами X is followed by Y X предшествует Y специальный случай соединения символов; X и Y - символы, находящиеся на одной вертикальной оси, причем верхняя граница символа Y соприкасается с нижней границей символа X 4. Основные понятия Диаграмма взаимодействия описывает последовательности событий, происходящих с набором объектов (системой взаимосвязанных элементов). Дополнительно, каждая система рассматривается как открытая, т.е. подразумевается наличие некоторого "окружения системы", с которым система связана. Основное понятие диаграммы взаимодействий - "трасса" объекта. Для каждого объекта на диаграмме имеется отдельная вертикальная ось. На этой оси откладываются события, имеющие отношение к данному объекту. Считается, что все объекты существуют одновременно и последовательности событий объектов развиваются параллельно. Основная разновидность события - это взаимодействие двух объектов, либо взаимодействие объекта и окружения системы. Взаимодействие между объектами (а также между объектом и окружением системы) осуществляется только при помощи обмена сообщениями. 5.1. Диаграмма Диаграмма описывает последовательность событий для некотрого множества объектов и его окружения. Окружение системы представляется рамкой диаграммы. Заметим, что иногда (в качестве некоторого соглашения) окружение системы моделируют при помощи дополнительного объекта с именем ENV ( от "environment", т.е. "окружение", "внешняя среда"). Графический синтаксис: ::= contains { { | } * } ::= ::= ┌───────────────────────┐ │ │ │ │ │ │ │ │ └───────────────────────┘ ::= msc 5.2. Объект Каждый объект на диаграмме имеет уникальное имя. Дополнительно, для каждого объекта может быть указано, что он является экземпляром некоторого типа объектов. Для соотнесения диаграмм взаимодействия с яыком ЯСО имеется возможность дальнейшего уточнения типа объекта: различаются тип систем (ключевое слово system), типы блоков (ключевое слово block), типы процессов (ключевое слово process) и типы сервисов (ключевое слово service). Уточнение типа объекта имеет смысл только при соотнесении диаграмм взаимодействия с ЯСО-спецификациями. Ключевое слово decomposed используется для обозначения того, что имеется иерархическая декомпозиция данного объекта (диаграмма декомпозиции), на которой трасса данного объекта представлена как диаграмма взаимодействия внутренних компонентов данного объекта. Графический синтаксис: ::= is followed by ::= is associated with ::= [ : ] [ decomposed ] ::= ┌───────┐ └───┬───┘ ::= ::= [ ] ::= system | block | process | service ::= ::= { is followed by is followed by }* is followed by { | } ::= │ │ │ ::= | | | | | | ::= │ █████████ Заметим, что 1) Символ заголовка объекта описывает начало нашего наблюдения над объектом. Символ заголовка объекта НЕ описывает создание объекта. См. раздел "уничтожение объекта". 2) Символ окончания трассы описывает выход объекта из-под нашего наблюдения. Символ окончания трассы объекта НЕ описывает уничтожения объекта. См. раздел "создание объекта". 4.3. Семантика диаграмм взаимодействия В диаграммах взаимодействия не подразумевается наличие глобальной оси времени. Считается, что на оси каждого объекта время движется сверху вниз. Предположений о наличии шкалы времени для каждого объекта также нет. События на оси объекта полностью упорядочены (за исключением случая специальной конструкции - неупорядоченной области). События различных объектов упорядочены только за счет обменов сообщениями: сообщение должно быть послано раньше, чем принято. Больше никаких предположений об упорядоченности событий не делается. Таким образом, диаграмма взаимодействия задает отношение частичной упорядоченности на множестве сообщений всей системы (всех объектов, присутствующих на диаграмме, и соответствующего окружения). Отношение частичной упорядоченности - транзитивное, антисимметричное, рефлексивное бинарное отношение. Каждая диаграмма взаимодействия задает МНОЖЕСТВО допустимых последовательностей событий. По определению, допустимой последовательностью событий является линейная последовательность проекций событий на глобальную ось времени (с определенной шкалой). Заметим, что допустимая последовательность событий также может быть описана при помощи диаграммы взаимодейстия (с усиленной семантикой, предполагающей наличие глобальной оси времени с определенной шкалой). Рассмотрим пример диаграммы взаимодействия с именем ordering, на которой имеется система из трех объекта с именами a, b и c. Типы объектов на диаграмме не указаны. Объект a принимает сообщение с именем m1 из окружения системы; затем посылает сообщение с именем m2 объекту b; затем посылает сообщение с именем m3 объекту c; затем принимает сообщение с именем m4 от объекта b. Объект b принимает сообщение с именем m2 от объекта a; затем посылает сообщение m4 объекту a. Объект с принимает сообщение m3 от объекта a. Это единственное событие объекта с именем c на данной диаграмме. Ниже приводится графическое представление диаграммы ordering: ┌────────────────────────────────────┐ │ MSC ordering │ │ │ │ ┌───────┐ ┌───────┐ ┌───────┐ │ │ │ a │ │ b │ │ c │ │ │ └───┬───┘ └───┬───┘ └───┬───┘ │ │ m1 │ │ │ │ ├─────>│ │ │ │ │ │ m2 │ │ │ │ ├─────────>│ │ │ │ │ m3 │ │ │ │ ├──────────┼─────────>│ │ │ │ m4 │ │ │ │ │<─────────┤ │ │ │ │ │ │ │ │ █████████ █████████ █████████ │ │ │ │ │ └────────────────────────────────────┘ Рассмотрим текстовое представление диаграммы ordering: MSC ordering; INST a, b, c; INSTANCE a; IN m1 FROM ENV; OUT m2 TO b; OUT m3 TO c; IN m4 FROM b; ENDINSTANCE; INSTANCE b; IN m2 FROM a; OUT m4 TO a; ENDINSTANCE; INSTANCE c; IN m3 FROM a; ENDINSTANCE; ENDMSC; Обозначим событие приема сообщения m через in(m), а событие посылки сообщения m через out(m). Множество событий системы на диаграмме ordering: E = { in(m1), out(m2), in(m2), out(m3), in(m3), out(m4), in(m4) } Вхаимодействия (обмены сообщениями), описанные на диаграмме ordering, задают следующие частичные отношения порядка на множестве событий E: in(m2) < out(m2) in(m3) < out(m3) in(m4) < out(m4) Трасса объекта A задает следующее отношение порядка на множестве событий E: out(m1) < out(m2) < out(m3) < in(m4) Трасса объекта B задает следующее отношение порядка на множестве событий E: in(m2) < out(m4) Соответствующее отношение частичного порядка на множестве E можно описать, задав граф предшествования (компактная форма представления транзитивного замыкания отношения порядка на множестве E): in(m1) │ │ V out(m2) ───────────────> in(m2) │ │ │ │ V │ out(m3) ──────> in(m3) │ │ │ │ │ V V in(m4) <────────────── out(m4) Заметим, что любая диаграмма взаимодействия допускает наличие дополнительных наблюдаемых событий МЕЖДУ событиями, описанными на диаграмме (в том, числе, наличие дополнительных взаимодействий между объектами). 5. События 5.1. Сообщение Сообщение моделирует взаимодействие (т.е. обмен информацией) между двумя объектами системы или между объектом и окружением системы. С точки зрения системы, взаимодействие между двумя объектами разбивается на два сопряженных события: посылка сообщения одним объектом и прием сообщения другим объектом. Сообщения, приходящие из окружения системы, моделируются одним событием приема сообщения, а события посылаемые в окружение, моделируются одним событием посылки сообщения. Сообщение характеризуется именем. Имя сообщения моделирует тип взаимодействия. Диаграмма может описывать несколько обменов сообщениями с одинаковым именем. Для уникальной идентификации конкретного обмена предусмотрен т.н. уникальный идентификатор обмена (message instance name), однако он используется преимущественно в текстовом представлении для снятия неоднозначности в описании сопряженных событий у различных объектов. В графическом представлении такой проблемы не возникает, так как сопряженные события представляются различными концами одного и того же графического объекта (стрелки от трассы одного объекта к трассе другого). Дополнительно, язык диаграмм взаимодействия позволяет описывать передачу информации в сообщении. С сообщением может быть связан список параметров. Каждый параметр моделирует передачу конкретной информации от одного объекта к другому. Графический синтаксис: ::= ::= ────────── ::= is associated with is connected to { | | } [ is followed by ] ::= ──────────> ::= is associated with is connected to { { | }} ::= [, ] [ ( ) ] ::= [ , ] ::= ::= ::= Дополнительные правила построения диаграмм: Ограничения на взаимодействие: 1) Событие приема сообщения не должно предшествовать сопряженному с ним событию посылки сообщения (т.е. граф предшествования должен быть ациклическим); 2) Объект не должен посылать сообщений самому себе; 3) Для каждого события посылки сообщения должно быть задано сопряженное с ним событие приема сообщения и наоборот; Если на трассе объекта область приема некоторого сообщения находится совпадает с областью посылки другого сообщения (т.е. конец одной стрелки и начало другой находятся в одной точке), то считается, что событие приема сообщения предшествует событию посылки сообщения. Семантика: 1) Взаимодействие задает частичное отношение порядка на множестве событий всей системы: для данного обмена событие посылки сообщения одного объекта предшествует сопряженному событию приема сообщения другого объекта. 2) События с одинаковыми именами задают взаимодействия одного и того же типа 3) Семантика параметров сообщения не определяется в языке диаграмм взаимодействия. 5.2. Действие Дополнительно к описанию взаимодействия объектов, язык диаграмм взаимодействия позволяет описывать действий, выполняемых объектом (например, как реакция на получение некоторого сообщения). Графический синтаксис: ::= contains ::= ┌─────┴─────┐ │ │ └─────┬─────┘ ::= Семантика: 1) Действия локальны по отношению к объекту, который их выполняет. 2) Семантика действия не определяется в рамках диаграмм взаимодействия. 3) Действие происходит "мнгновенно". 5.3. Создание объекта Язык диаграмм взаимодействия позволяет описывать динамическое создание одних объектов другими объектами. Очевидно, что объект не может взаимодействовать с другими объектами ДО момента своего создания. При создании объекта ему можно передать некоторую информацию в виде списка параметров. Графический синтаксис: ::= [ is associated with ] is connected to ::= ─ ─ ─ ─ ─ > Дополнительные правила построения диаграмм: Создание объектов: 1) На данной диаграмме каждый объект может быть создан единственный раз (т.е. к символу заголовка объекта может быть присоединена единственная линия создания объекта (createline). Семантика: 1) Создание объекта разделяется на два события: одно для создающего объекта и другое для создаваемого объекта. 2) Создание объекта задает отношение порядка между событиями двух объектов: считается, что оба события ("создание" и "рождение") происходят одновременно. 3) Создание объекта означает начало его трассы, т.е. никакие события для данного объекта не могут происходить до его создания. 4) Семантика параметров создания объекта не определяется в языке диаграмм взаимодействия. 5.4. Уничтожение объекта Уничтожение объекта является обратным событием по отношению к созданию. Графический синтаксис: ::= \_/ / \ Семантика: 1) Уничтожение объекта означает окончательное завершение трассы данного объекта, т.е. никакие события для данного объекта не могут происходить после его уничтожения. 5.5. Контролируемый интервал времени Контролируемый интервал является единственным средством задания времени между отдельными событиями на трассе объекта. Контролируемый интервал может содержать несколько событий. Контролируемый интервал имеет имя и, возможно дительность). Каждому контролируемому интервалу соответствует два события: начало контролируемого интервала времени и завершение контролируемого интервала времени. Вместо события завершения интервала имеется возможность указать событие досрочное завершение контролируемого интервала (сброс отсчета времени). При соотнесении диаграмм взаимодействия с языком ЯСО, контролируемым интервалам соответствует специальный объект - таймер. Таймер может быть установлен на определенный промежуток времени, после истечения которого таймер срабатывает и посылает сообщение своему владельцу. Дополнительно, имеется возможность сбросить установленный таймер. Графический синтаксис: ::= | | ::= ::= ┌─┴─┐ │ ├─ └─┬─┘ ::= is associated with [ ( ) ] is connected to ::= | ::= ───┐ │ │ <─ ─ ─┘ ::= GP ::= is associated with [ ( ) ] is connected to ::= | ::= ───┐ │ │ <─────┘ ::= GP ::= ::= Дополнительные правила построения диаграмм: Связь границ контролируемого интервала времени: 1) Для каждого символа начала контролируемого интервала должен быть задан символ завершения контролируемого интервала, либо символ сброса контролируемого интервала. Семантика: 1) Время между началом и завершением контролируемого интервала не меньше длительности интервала времени, указанной в символе начала интервала. 2) В случае сброса контролируемого интервала, время между началом и сбросом меньше длительности интервала времени, указанной в символе начала интервала. 3) Семантика длительности интервала не определяется в языке диаграмм взаимодействия. 5.6. Неупорядоченная область Неупорядоченная область служит для описания недетерминированных событий. Например, неупорядоченная область может быть использована для описания приема двух или более сообщений в произвольном порядке. В языке диаграмм взаимодействия существуют области неупорядоченного приема сообщений и области неупорядоченной посылки сообщений. Графический синтаксис: ::= is followed by { | } is followed by ::= ──┬── ::= { is followed by }+ ::= { is followed by }+ ::= │ │ │ ::= ──┴── Семантика: 1) События внутри области неупорядоченных событий не связаны между собой отношением порядка.