Основные понятия
Диаграмма взаимодействия описывает последовательности событий, происходящих с набором объектов (системой взаимосвязанных компонентов). Дополнительно каждая система рассматривается как открытая, т.е. подразумевается наличие некоторого окружения системы, с которым система взаимодействует. Окружение также может задаваться в виде отдельного объекта.
Основным понятием диаграммы взаимодействий является трасса объекта. Для каждого объекта на диаграмме имеется отдельная вертикальная ось. На этой оси откладываются события, имеющие отношение к данному объекту. Считается, что все объекты существуют одновременно, и последовательности событий объектов развиваются параллельно. При описании объекта используются стартовый (прозрачный прямоугольник) и конечный (черный прямоугольник) символы объекта, обозначающие соответственно начало и конец описания объекта в данной MSC-диаграмме.
Взаимодействие между объектами (а также между объектом и окружением системы) осуществляется только при помощи обмена сообщениями (рис. 10.2).
Сообщение моделирует взаимодействие (т.е. обмен информацией) между двумя объектами системы или между объектом и окружением системы. С точки зрения системы, взаимодействие между двумя объектами разбивается на два сопряженных события: посылка сообщения одним объектом и прием сообщения другим объектом (рис. 10.2). Сообщения, приходящие из окружения системы, моделируются одним событием приема сообщения, а события, посылаемые в окружение, моделируются одним событием посылки сообщения. Сообщение имеет имя. Имя сообщения задает тип взаимодействия. Диаграмма может описывать несколько обменов сообщениями с одинаковым именем. Для уникальной идентификации конкретного обмена предусмотрен так называемый уникальный идентификатор обмена (message instance name), однако он используется только в текстовом представлении для снятия неоднозначности в описании сопряженных событий у различных объектов. В графическом представлении такой проблемы не возникает, так как сопряженные события представляются различными концами одного и того же графического объекта (стрелки от трассы одного объекта к трассе другого).
Рис. 10.2. Пример взаимодействия между объектами в MSC
Дополнительно, язык диаграмм взаимодействия позволяет описывать передачу информации в сообщении (рис. 10.3). С сообщением может быть связан список параметров. Каждый параметр моделирует передачу конкретной информации от одного объекта к другому. Язык диаграмм взаимодействия не определяет семантику параметров сообщения.
Рис. 10.3. Передача параметров сообщений
MSC-диаграммы позволяют создавать более сложные описания поведения системы с помощью специальных операторов. В MSC'96 используется четыре типа операторов: alt - альтернативный оператор, par - параллельный оператор, loop - итерация, opt - опциональная область.
Графически операторные конструкции изображаются в виде прямоугольника с пунктирными линиями в качестве разделителей. Ключевое слово оператора располагается в левом верхнем углу.
Альтернативная композиция (рис. 10.4) позволяет задавать альтернативное выполнение секций MSC-диаграммы. Только одна альтернатива может быть реализована.
Рис. 10.4. Альтернатива
Операция par имеет структуру, аналогичную конструкции alt (рис. 10.3), и определяет параллельное выполнение секций. Это означает, что все события внутри параллельных секций будут выполнены. Единственным ограничением является то, что порядок событий в каждой секции будет сохранен.
Конструкция loop (рис. 10.5) имеет несколько форм. Наиболее общая форма - loop <n, m>, где n и m - натуральные числа. Это означает, что конструкция может быть выполнена от n до m раз. Вместо натурального числа может использоваться ключевое слово inf, обозначающее бесконечность.
Рис. 10.5. Цикл
Оператор opt имеет структуру, аналогичную loop, но без операндов, и обозначает то же, что и оператор alt с пустой MSC в качестве второго операнда.
Одним из важных понятий в MSC является условие или состояние. Состояние - это особое событие на трассе объекта. В отличие от прочих событий, одно и то же состояние может разделяться одним, двумя и более объектами.
По числу объектов на диаграмме, разделяющих некоторое состояние, различают глобальные состояния (общее для всех объектов), разделяемые состояния (разделяемые несколькими, но не всеми объектами) и локальные состояния (разделяемые единственным объектом). Если два объекта разделяют одно и то же состояние, то сопряженные события приема и посылки сообщений должны происходить либо оба до соответствующего состояния, либо оба после соответствующего состояния.
Рис. 10.6. Состояние (условие)
Основной недостаток стандартной MSC - невозможность описать отношения данных в параметрах сообщения. Эта проблема решается с использованием некоторого расширения стандартного MSC - mMSC (macro MSC). Основные из этих расширений включают в себя:
Макроподстановки (рис. 10.7). Они позволяют создавать множество MSC-диаграмм с одинаковой структурой и разными параметрами сообщения, циклами и т. п. Макроподстановки начинаются с символа # и могут быть константами или функциями. Функции, кроме названия, содержат параметры, заключенные в скобки.
Рис. 10.7. Макроподстановки
Типы макроподстановок описываются в определенном файле, и на основе этой информации вместо них подставляются конкретные значения.
Временные ограничения служат для указания времени посылки/приема сообщения, его длительности и типа (синхронное с явно заданным моментом выполнения, асинхронное). Время может задаваться относительно начала работы (абсолютное), относительно предыдущего сообщения (относительное) или относительно метки. На рис. 10.8 сообщение M01 должно отправиться через 5 единиц времени, в течение 5 единиц после получения сообщения M00 (указано с помощью метки).
Рис. 10.8. Использование времени