2. Язык UML. Руководство пользователя. Буч_ Рамбо_ Якобсон (2-е издание) (2006) (1185732), страница 53
Текст из файла (страница 53)
На диаграммах последовательности связи междуобъектами не показываются явно. Также на них не отображаются порядковые номера сообщений; они заданы неявнофизическим упорядочением сообщений на диаграмме сверхувниз. Однако допускается отображение итераций и ветвленияс использованием управляющих структур диаграмм последовательности.Семантическая эквивалентностьПоскольку и диаграммы последовательности, и диаграммы коммуникации наследуют одну и ту же информацию метамодели UML,они семантически эквивалентны.
В результате вы можете взять однудиаграмму и преобразовать ее в другую без каких бы то ни было потерь информации, как можно заметить по рис. 19.2 и 19.5, которыесемантически эквивалентны. Однако это не значит, что обе диаграммы явно визуализируют одну и ту же информацию. Например, диаграмма коммуникации на рис. 19.5 показывает, как связаны объекты(обратите внимание на аннотации {local} и {global}), а соответствующая диаграмма последовательности (рис. 19.2) – нет. Зато диаграммапоследовательности показывает возврат сообщения (отметим возвращаемое значение committed), а соответствующая диаграмма коммуникации – нет. В основе обеих диаграмм лежит одна и та же модель,но представлена она несколько поFразному. Поскольку модель, описанная в одном формате, не содержит информацию, которая присутствует в другом, можно сказать, что диаграммы последовательностии коммуникации все же создают две принципиально разные модели,хотя и используют одну общую в качестве базовой.Общее применениеДиаграммы взаимодействия применяются для моделированиядинамических аспектов системы.
Эти аспекты могут подразумеватьвзаимодействие экземпляров любого рода на любом представлении274Пять представленийархитектуры обсуждаютсяв главе 2,экземпляры –в главе 13,классы –в главах 4 и 9,активныеклассы –в главе 23,интерфейсы – в главе 11,компоненты – в главе 15, узлы –в главе 27,системыи подсистемы –в главе 32,операции –в главах 4 и 9,вариантыиспользования –в главе 17,кооперации –в главе 28.Диаграммы взаимодействияархитектуры системы, включая классы (в том числе активные), интерфейсы, компоненты и узлы.Когда диаграммы взаимодействия используются для моделирования некоторых динамических аспектов системы, это делаетсяв контексте системы в целом, подсистемы, операции либо класса.Можно также присоединить диаграммы взаимодействия к вариантам использования, чтобы моделировать сценарии, и к кооперациям, чтобы моделировать динамические аспекты сообществобъектов.Диаграммы взаимодействия обычно используются двумя способами:1.
Чтобы моделировать потоки управления, упорядоченные повремени. Для этого применяются диаграммы последовательности. Моделирование потока управления, упорядоченногопо времени, выделяет передачи сообщений в хронологическом порядке, что, в частности, удобно для визуализациидинамического поведения в контексте сценариев вариантовиспользования.
Диаграммы последовательности лучше выполняют задачу визуализации простых итераций и ветвления, чем диаграммы коммуникаций.2. Чтобы моделировать потоки управления по организации.Для этого применяются диаграммы коммуникации. Моделирование потока управления по организации выделяетструктурные связи между экземплярами во взаимодействиинаряду с сообщениями, которые могут между ними передаваться.Типичные приемы моделированияМоделирование потоков управления,упорядоченных по времениРассмотрите объекты, которые находятся в контексте системы,подсистемы, операции или класса, а также объекты и роли, которые участвуют в варианте использования или кооперации.
Чтобысмоделировать поток управления, проходящий через эти объекты ироли, используйте диаграммы взаимодействия; чтобы подчеркнутьвременной порядок сообщений, применяйте разновидность диаграмм взаимодействий – диаграмму последовательности.Чтобы смоделировать поток управления во времени, необходимо:Типичные приемы моделированияСистемыи подсистемы обсуждаютсяв главе 32,операциии классы –в главах 4 и 9,вариантыиспользования –в главе 17,кооперации – в главе 28.Временныеметкиобсуждаютсяв главе 24,предNи постусловия – в главе 9,пакеты –в главе 12.275 Установить контекст взаимодействия (то есть определить,идет ли речь о контексте системы, подсистемы, операцииили класса, либо одного из сценариев варианта использования, либо кооперации). Установить основу взаимодействия, идентифицировав объекты, которые играют роль во взаимодействии.
Расположитьих на диаграмме последовательности слева направо – от более важных к зависимым. Изобразить линию жизни каждого объекта. Большинствоиз них существует на протяжении всего взаимодействия.Для тех же, которые создаются и уничтожаются во времявзаимодействия, установите линии жизни соответствующимобразом, явно обозначив «рождение» и «смерть» объекта сообщениями со стереотипами.
Начиная с сообщения, которое инициирует взаимодействие,расположите все последующие сверху вниз между линиямижизни, показывая свойства каждого сообщения (в частности, его параметры), насколько это необходимо для объяснения семантики взаимодействия. Если вам нужно визуализировать вложенность сообщенийили момента времени, в который выполняется конкретноевычисление, снабдите линию жизни каждого объекта его фокусом управления.
Если требуется специфицировать временные или пространственные ограничения, снабдите каждое сообщение временнойметкой и присоедините соответствующие ограничения времени и пространства. Если необходимо специфицировать поток управления болееформально, подключите к каждому сообщению предF и постусловия.Отдельная диаграмма последовательности может показать только один поток управления (хотя допускается выражение структурной параллельности средствами управляющих структурных операторов).
Обычно приходится иметь дело со множеством диаграммвзаимодействия; некоторые из них первичны, а другие показываютальтернативные пути или исключительные условия. Для организации этих наборов диаграмм последовательностей можно использовать пакеты, присваивая каждой диаграмме соответствующее уникальное имя.В качестве примера на рис. 19.6 показана диаграмма последовательности, описывающая поток управления, который инициируетпростой телефонный звонок.
На этом уровне абстракции существуют четыре роли, вовлеченные в процесс: два абонента (Callers) – sи r, безымянный телефон Switch и экземпляр с класса ConversationДиаграммы взаимодействия276Типичные приемы моделирования(Разговор) между двумя абонентами. При том что диаграмма моделирует четыре роли, каждый экземпляр диаграммы имеет конкретные объекты, связанные с каждой из ролей.
Один и тот же образецвзаимодействия применяется к каждому экземпляру диаграммы.tone277Switch, чтобы тот вызвал операцию connect (соединить), и сообщаетобоим абонентам, что нужно выполнить connect, после чего они смогут обмениваться информацией, как показано в примечании.Диаграмма взаимодействия может начинаться или заканчиваться в любой точке последовательности. Полная трассировка потокауправления может быть чрезвычайно сложной, поэтому разумновыделить объемные потоки в отдельные диаграммы.Моделирование потоков управленияпо организации{dialed - tone < 30 sec}dialed«create»После соединенияабоненты s и rмогут обмениватьсяинформациейРис.
19.6. Моделирование потока управления во времениПоследовательность начинается с того, что один Caller (абонент s)посылает сигнал (liftReceiver – снятиеТрубки) объекту Switch. В своюочередь, Switch посылает setDialTone (длинныйГудок) объекту Caller,который начинает итерацию сообщений dialDigit (наборНомера).Ограничение показывает, что эта последовательность должна занимать не дольше 30 с. Диаграмма ничего не сообщает о том, что случится, если временное ограничение будет нарушено.
Чтобы показатьпоследствия этого события, можно включить ветвь или же отдельнуюдиаграмму последовательности. Затем объект Switch вызывает самого себя для выполнения операции routeCall (передатьВызов). Далееон создает объект Conversation (с), которому поручает всю остальнуюработу. Хотя здесь это и не показано, объект c должен выполнятьдополнительные обязанности как часть механизма, учитывающегостоимость разговоров и выставляющего счета абонентам (данныймеханизм должен быть описан в другой диаграмме взаимодействия).
Объект Conversation (с) звонит Caller (r), который асинхроннопосылает сообщение liftReceiver. Затем объект Conversation говоритРассмотрите объекты, существующие в контексте системы, подсистемы, операции или класса, а также объекты и роли, принимающие участие в кооперации. Чтобы смоделировать поток управления, который проходит через эти объекты и роли, используйтедиаграмму взаимодействия; чтобы показать передачу сообщенийв контексте структуры, используйте разновидность диаграмм взаимодействия – диаграмму коммуникации.Чтобы смоделировать поток управления по организации, необходимо: Установить контекст взаимодействия (то есть определить,идет ли речь о контексте системы, подсистемы, операцииили класса, либо одного из сценариев варианта использования, либо кооперации).
Установить основу взаимодействия, идентифицировав объекты, которые играют роль во взаимодействии. Расположить ихна диаграмме коммуникации в вершинах графа, помещая наиболее важные объекты в центре диаграммы, а вторичные –ближе к краям.Специфицировать ссылки между объектами наряду с переСвязисылаемыми по ним сообщениями:зависимостиобсуждают– сначала расположить ссылки ассоциаций – они наиболееся в главах 5важны, потому что представляют структурные соединения;и 10, ограни– потом изобразить остальные связи и снабдить их соотчения, свяветствующими путевыми аннотациями (такими как globalзанныеили local), чтобы явно показать, как эти объекты относятсяс путями, –друг к другу.в главе 16.
Начиная с сообщения, инициирующего взаимодействие,присоединить каждое последующее сообщение к соответствующей ссылке, указывая соответствующий порядковыйномер. Вложенность сообщений показать в нотации десятичной системы классификации Дьюи.Системыи подсистемы обсуждаютсяв главе 32,операциии классы –в главах 4и 9, варианты использования –в главе 17,кооперации –в главе 28.Диаграммы взаимодействия278Временныеметкиобсуждаютсяв главе 24,предN и постусловия –в главе 4,пакеты –в главе 12.