Тема 2. Диаграммы Взаимодействия (продолжение) Цель: - рассмотреть средства языка диаграмм взаимодействия - научить читать диаграммы взаимодействия - научить использованию языка диаграмм взаимодействия Содержание: 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 Иерархическая декомпозиция объектов 6. Структурные средства Основным структурным средством языка диаграмм взаимодействия является композиция и декомпозиция посредством состояний. Композиция диаграмм посредством состояний позволяет разбивать описывать сложное множество допустимых трасс по частям (т.н. горизонтальная композиция). Дополнительным структурным средством является иерархическая декомпозиция объекта (т.н. вертикальная декомпозиция). 6.1. Композиция и декомпозиция диаграмм посредством состояний 6.1.1. Состояния Состояния предназначены того, чтобы объединять несколько диаграмм для описания сложного поведения множества объектов. Состояние - это особое событие на трассе объекта. В отличие от прочих событий, одно и то же состояние может разделяться одним, двумя и более объектами. По числу объектов на диаграмме, разделяющих некоторое состояние, различают глобальные состояния (общее для всех объектов), разделяемые состояния (разделяемые несколькими, но не всеми объектами) и локальные состояния (разделяемое единственным объектом). Состояние называется начальным (для объекта на диаграмме), если данное состояние предшествует всем остальным событиям на трассе данного объекта. Состояние называется завершающим (для объекта на данной диаграмме), если на диаграмме нет событий, которым данное состояние предшествует. Остальные состояния называются промежуточными (для объекта на данной диаграмме). Наибольший интерес для композиции представляют глобальные состояния. Глобальное состояние называется начальным (на некоторой диаграмме), если оно является начальным для всех объектов на данной диаграмме. Глобальное состояние называется завершающим (на диаграмме), если оно является завершающим для всех объектов на диаграмме. Остальные глобальные состояния называются промежуточными глобальными состояниями. Графический синтаксис: ::= | ::= contains ::= ___|___ _/ \_ \_______/ | ::= | | ::= is associated with is connected to { | } ::= __ _/ \__ ::= is connected to { | } ::= | ::= ───┴─── ───┬─── ::= ───┼─── │ ───┼─── ::= ::= __ \_ __/ ::= Дополнительные правила построения диаграмм: Состояния и сообщения: 1) Если два объекта разделяют одно и то же состояние, то сопряженные события приема и посылки сообщений должны происходить либо оба до соответствующего состояния, либо оба после соответствующего состояния (т.е. символы передачи собщений не должны пересекать символы состояний). Семантика: 1) Состояние является событием для объекта. 2) Разделяемые состояния НЕ определяют отношения порядка между событиями различных объектов. 3) Состояния определяют возможные композиции и декомпозиции диаграмм взаимодействия. 4) Семантика диаграммы с состояними ПОЛНОСТЬЮ ЭКВИВАЛЕНТНА семантике данной диаграммы с удаленными состояниями. 6.1.2. Композиция диаграмм посредством состояний Правило композиции для диаграмм взаимодействия определяется следующим образом. Пусть имеется две диаграммы взаимодействия, причем множества объектов у них совпадают. Тогда, если на первой диаграмме имеется завершающее глобальное состояние с некоторым именем, а на второй диаграмме - начальное состояния с тем же именем, то вторая диаграмма может служить ПРОДОЛЖЕНИЕМ первой. Операцию продолжения диаграммы можно уточнить следующим образом: для каждого объекта на новой диаграмме последовательность событий будет состоять из всех событий, описанных на первой диаграмме (в той же последовательности); затем всех событий, описанных на второй диаграмме (в той же последовательности). Заметим, что вместе две диаграммы, одна из которых может быть продолжением другой, описывают НОВОЕ ПОВЕДЕНИЕ соответствующего множества объектов. Правило композиции диаграмм посредством состояний формулируется для более общего случая следующим образом. Пусть две диаграммы описывают некоторое общее множество объектов I (дополнительно, каждая диаграмма может описывать объекты, отсутствующие на другой диаграмме). Тогда, одна диаграмма (MSC1) может служить продолжением другой диаграммы (MSC2), если на MSC1 объекты из множества I оканчивается состояниями с именами Si, и объекты из множества I на MSC2 начинаются с соответствующих состояний. При этом, некоторые (или даже все) состояния Si могут быть разделяемыми. Трассы объектов, не входящие в множество I (на MSC1 и MSC2), добавляются к объединенной диаграмме. Очевидно, что множество взаимодействий между объектами из MSC1 и MSC2 должно быть пусто для объектов, не входящих в общее множество I. Ситуация, когда объект на MSC1 посылает сообщение в окружение, а это сообщение на самом деле предназначается одному из объектов на MSC2 (т.н. "композиция посредством окружения") не выразима средствами языка диаграмм взаимодействия. 6.1.3. Декомпозиция диаграмм посредством состояний Определим секцию как такую диаграмму, у которой имеется начальное и завершающие глобальные состояния и не имеется промежуточных состояний. Глобальные состояния разбивают диаграмму на секции (т.е. участки трассы между глобальными состояними). Декомпозиция диаграмм посредством состояний сформулирована для более общего случая следующим образом. Пусть некоторая диаграмма (MSC) содержит промежуточные состояния Si. Тогда MSC может быть разбита на две диаграммы (MSC1 и MSC2) таким образом, что состояния Si становятся завершающими на MSC1 и начальными на MSC2. 6.1.4. Виды композиции диаграмм Рассмотрим основные способы организации набора диаграмм в целях описания сложного поведения множества объектов. 6.1.4.1. Последовательная композиция По определению, последовательной композицией называется такая организация набора диаграмм, при которой каждая диаграмма набора (кроме первой) является продолжением некоторой другой (т.е. начальные состояния одной диаграммы совпадают с завершающими состояниями другой диаграммы). Последовательная композиция описывает сложное поведение, состоящее из нескольких последовательных этапов. Заметим, что поведение, описываемое последовательной композицией нескольких диаграмм можно, вообще говоря, описать единственной диаграммой без состояний. 6.1.4.2. Альтернативная композиция По определению, альтернативной композицией называется такая организация набора диаграмм, когда все диаграммы набора (кроме первой) имеют одинаковые начальные состояния, совпадающие с завершающими состояниями первой диаграммы. Альтернативная композиция описывает сложное поведение, состоящее их взаимно-исключающих последовательностей событий. Заметим, что поведение, описываемое альтернативной композицией нескольких диаграмм нельзя, вообще говоря, описать единственной диаграммой без состояний. 6.1.4.3. Циклическая композиция По определению, циклической композицией называется такая организация набора диаграмм, когда завершающие состояния одной диаграммы (MSC2) совпадают с начальными состояниями другой диаграммы (MSC1), причем MSC2 является продолжением диаграммы MSC1 (возможно с участием других диаграмм). Частным случаем циклической композиции является одна диаграмма, которая имеет одинаковые начальные и завершающие состояния. Циклическая композиция описывает поведение, состоящее из повторяющейся послеловательности событий. Заметим, что поведение описываемое циклической композицией нескольких диаграмм допускае бесконечное множество конечных последовательностей событий. Такое поведение не может быть описано единственной диаграммой без состояний. 6.1.4.4. Параллельная композиция По определению, параллельной композицией называется такая организация диаграмм, когда события одной диаграммы (без изменения последовательности) могут произвольным образом перемешиваться с событиями другой диаграммы. Параллельная композиция является очень мощным средством описания сложного поведения. Очевидно, что поведение, описываемое параллельной композицией диаграмм нельзя, вообще говоря, описать единственной диаграммой. Параллельная композиция диаграмм не выразима средствами стандарта языка диаграмм взаимодействия 1992 г. (но имеется в стандарте 1996 г.). 6.2. Иерархическая декомпозиция объектов Взаимодействие компонентов составного объекта может быть описано отдельно на дополнительной диаграмме (т.н. диаграмме декомпозиции). Данное средство поддерживает иерархию описаний поведения сложной системы. Диаграмма декомпозиции отличается от (родительской) диаграммы взаимодействия только использованием ключевого слова submsc. Диаграмма декомпозиции связана с с родительской диаграммой, на которой соответствующий объект содержит ключевое слово decomposed (имена объекта с ключевым словом decomposed на родительской диаграмме и имя диаграммы декомпозиции должны совпадать). Заметим, что правила связывания объекта с диаграммой декомпозиции приводит к неоднозначности при наличии одноименных объектов с ключевым словом decomposed на нескольких диаграммах. Считается, что дополнительная привязка может осуществляться инструментальным средством поддержки. Для снятия неоднозначности привязки диаграммы декомпозиции к соответствующей основной диаграмме договоримся на каждой диаграмме декомпозиции обязательно указывать имя основной диаграммы. Для этого будем использовать комментарий при заголовке диаграммы декомпозиции со следующим текстом: /* from */ где есть имя родительской диаграммы (с соответствующим ключевым словом msc или submsc). Графический синтаксис: ::= contains { { | }* } ::= ::= submsc ::= В соответствии с дополнительным соглашением: ::= submsc /* from */ ::= msc | submsc Дополнительные правила построения диаграмм: Связь объекта с ключевым словом decomposed и соответствующей диаграммой декомпозиции: 1) Для каждого объекта, заголовок которого содержит ключевое слово decomposed, должна существовать диаграмма декомпозиции с тем же именем. 2) Для каждого события посылки сообщения на трассе объекта, для которого указано ключевое слово decomposed, на соответствующей диаграмме декомпозиции должно быть задано событие посылки сообщения в окружение диаграммы декомпозиции. 3) Для каждого события приема сообщения на трассе объекта, для которого указано ключевое слово decomposed, на соответствующей диаграмме декомпозиции должно быть задано событие приема сообщения из окружения диаграммы декомпозиции. 4) Должно существовать соответствие между внешним поведением объекта, для которого указана диаграмма декомпозиции, и его внутренним поведением: последовательность событий объекта на основной диаграмме должен сохраняться на диаграмме декомпозиции (с учетом того, что взаимодействие объекта с другими объектами на основной диаграмме представляется взаимодействием объектов с окружением на диаграмме декомпозиции). Семантика: 1) Диаграмма декомпозиции уточняет внутреннее поведение некоторого объекта без изменения его внешнего поведения (т.е. описывает взаимодействие компонентов составного объекта между собой и их окружением - объектами на основной диаграмме). 2) Декомпозиция трассы объекта сохраняет порядок приема и посылки сообщений. 3) Действия и состояния на диаграмме декомпозиции МОГУТ рассматриваться как уточнения действий и состояний на основной диаграмме, однако язык диаграмм взаимодействия НЕ предусматривает никаких формальных правил на этот счет.