Моделирование поведения программного обеспечения. Диаграммы взаимодействия (interaction diagrams) - описывают взаимодействия, состоящие из множества объектов и отношения между ними, включая сообщения, которыми они обмениваются. Диаграммы кооперации в языке UML Кооперация (collaboration) - это спецификация множества объектов отдельных взаимодействующих классов с целью реализации отдельных вариантов использования в общем контексте моделируемой системы. Объект - это сущность с хорошо определёнными границами и индивидуальностью, которая инкапсулирует состояние и поведение. В контексте UML любой объект является экземпляром класса, описанного в модели и изображённого на диаграмме классов. Объект создаётся на этапе реализации модели или выполнения программы: <собственное имя объекта>:<Имя класса>. Вся запись имени объекта подчёркивается, что является визуальным признаком объекта на разных диаграммах UML. _manager:TeamMember_ _:TeamMember_ - анонимный _manager_ - сирота При изображении диаграмм кооперации отношения между объектами описываются с помощью связей, которые являются экземплярами соответствующих ассоциаций. Связь - это любое семантическое отношение между определённой совокупностью объектов. Связь как элемент UML является экземпляром произвольной ассоциации и может иметь место между двумя и более объектами. Бинарная связь на диаграмме кооперации изображается отрезком непрерывной линии, соединяющей два прямоугольника объектов. Связи не имеют собственных имён, поскольку идентичны как экземпляры определённой ассоциации. 1;GetWorkProducts()+---------------+ +-------------+ _:Project_ | | ---|*> +---------------+ +----+---------------------------+--------+- |projectOrganization:Organization| |*2:FormatWorkInfo() +--------------------------------+--------+v | --------> +-------------+ +------------------+ _Report_ | 3:outputInfo() +-------------+ Каждое взаимодействие между множеством объектов описывается совокупностью сообщений, которыми объекты, участвующие в ней, обмениваются между собой. Сообщение - это спецификация передачи информации от одного элемента модели к другому с ожиданием выполнения определённых действий со стороны принимающего элемента. Сообщения на диаграмме кооперации изображаются дополнительными стрелками рядом с соответствующей связью. -------------|*> обозначает вызов процедуры или операции или передачу потока управления. Сообщения этого типа могут быть использованы параллельно активными объектами, когда один из них передаёт сообщения этого типа и ожидает, пока не закончится определённая последовательность действий, выполняемая вторым объектом. Обычно все такие сообщения синхронные, то есть инициируются по завершению деятельности или при выполнении определённого условия. ---------------> обозначает асинхронное сообщение в простом потоке управления. В этом случае клиент передаёт асинхронное сообщение и продолжает выполнять свою деятельность, не ожидая ответа от клиента. - - - - - - - -> обозначает возвращение из вызова процедуры Сообщение - строка текста, в которой указывается порядковый номер сообщения в процедурной последовательности, информация об условия сообщения и имя сообщения. Условие указывается после порядкового номера в []. 31[i>n]: +----------+ +----------+ +----------+ |O1:Class1 | | _O2_ | | :Class2 | +-+--------+ +---+------+ +-----+----+ |1:message() | <> | +-----------|*>++2:message2()++ | |+---------|*>|| || ++ | || <> | ||3:message3()++ | |+---------|*>|| ++ ++ | | | X Диаграмма последовательностей в языке UML - это диаграммы, на которых показаны взаимодействия объектов, упорядоченные по времени их появляения. На диаграмме последовательностей неявно присутствует ось времени, которая позволяет визуализировать временные отношения между переданными сообщениями. С помощью диаграммы последовательности можно представить взаимодействие элементов модели как своеобразный временной график жизни всей совокупности объектов, связанных между собой для реализации варианта использования программной системы, достижения бизнес-целей или выполнения любой задачи. Процесс взаимодействия объектов реализуется с помощью сообщений, которые одни объекты посылают другим. Сообщения изображаются в виде горизонтальных стрелок с именем сообщения, которые образуют опредёлнный порядок своего запуска по времени (инициализации). Масштаб на оси времени не указывается, поскольку диаграмма последовательности моделирует лишь временную упорядоченность взаимодействия типа "раньше - позже". Линия жизни объекта (Object lifeline) - это вертикальная линия на диаграмме последовательности, изображающая существование объекта в течение определённого периода времени. Фокус управления - это специальный символ на диаграмме последовательности, указывающий период времени, в течение которого объект выполняет определённое действие, находясь в активном состоянии. 9 user | ++ || ++ Сообщения изображаются в виде стрелок. Сообщения на диаграмме последовательности упорядочены по времени своей передачи в моделируемой системе, хотя номера в них могут и не указываться. Сообщения обычно изображаются горизонтальными стрелками, которые сочетают линии жизни или фокусы управления двух объектов на диаграмме последовательности. При этом неявно предполагается, что время передачи сообщения достаточно мало по сравнению с процессами выполнения действий объектами. Каждое сообщение на диаграмме последовательности ассоциируется с определённой операцией, которая должна быть выполнена объектом, который его принял. при этом операция может иметь аргументы или параметры, значения которых влияют на получение различных результатов. Также значения параметров отдельных сообщений могут содержать условные выражения, образуя ветвления или альтернативные пути основного потока управления. +------------------------------+ |opt| | +---/ | | | +------------------------------+ Оператор управления - некая прямоугольная рамка с тегом: opt - условие оператора выполняется, если защитное условие истинно на его входе; alt - условное управление; par -параллельное управление; loop - повторяемое управление.