На этом шаге рассмотрим типичные приемы моделирования потоков управления по организации.
Чтобы смоделировать поток управления, который проходит через эти объекты, существующие в контексте системы, подсистемы, операции или класса, а также объекты и роли, принимающие участие в кооперации, используйте диаграмму взаимодействия; чтобы показать передачу сообщений в контексте структуры, используйте разновидность диаграмм взаимодействия – диаграмму коммуникации.
Чтобы смоделировать поток управления по организации, необходимо:
Как и диаграммы последовательности, диаграмма коммуникации может показать только один поток управления (хотя некоторые простые вариации можно отобразить в нотации взаимодействий и ветвления UML). Обычно приходится иметь дело со множеством таких диаграмм взаимодействия, одни из которых первичны, а другие показывают альтернативные пути или исключительные условия. Также вы можете использовать пакеты для организации этих наборов диаграмм коммуникации, присваивая каждой из них уникальное имя.
На рис. 1 в качестве примера показана диаграмма коммуникации, описывающая поток управления в процессе регистрации нового студента в учебном заведении, с подчеркиванием структурных связей между этими объектами.
Рис.1. Моделирование потока управления по организации
Здесь вы видите четыре роли: RegistrarAgent (АгентРегистрации – r), Student (Студент – s), Course (Курс – c) и безымянную роль School (Учебное заведение). Поток управления явно пронумерован.
Действие начинается с того, что RegistrarAgent создает объект Student, добавляя его к учебному заведению (сообщение addStudent – добавитьСтудента), а затем извещая объект Student о том, что ему нужно зарегистрироваться. Последний вызывает операцию getSchedule(узнатьРасписание) и получает перечень объектов Course – курсов, на которых он должен зарегистрироваться. Объект Student добавляет себя к каждому объекту Course в этом наборе.
На следующем шаге рассмотрим прямое и обратное проектирование диаграмм взаимодействия.