2. Язык UML. Руководство пользователя. Буч_ Рамбо_ Якобсон (2-е издание) (2006) (1185732), страница 54
Текст из файла (страница 54)
Если необходимо указать временные и пространственныеограничения, снабдить каждое сообщение временной меткойи присоединить нужное временное или пространственноеограничение. Если требуется описать поток управления более формально,присоединить к каждому сообщению предF и постусловие.Как и диаграммы последовательности, диаграмма коммуникации может показать только один поток управления (хотя некоторые простые вариации можно отобразить в нотации взаимодействий и ветвления UML). Обычно приходится иметь делосо множеством таких диаграмм взаимодействия, одни из которыхпервичны, а другие показывают альтернативные пути или исключительные условия. Также вы можете использовать пакеты дляорганизации этих наборов диаграмм коммуникации, присваиваякаждой из них уникальное имя.На рис.
19.7 в качестве примера показана диаграмма коммуникации, описывающая поток управления в процессе регистрациинового студента в учебном заведении, с подчеркиванием структурных связей между этими объектами. Здесь вы видите четыре роли:RegistrarAgent (АгентРегистрации – r), Student (Студент – s), Course(Курс – c) и безымянную роль School (Учебное заведение). Потокуправления явно пронумерован. Действие начинается с того, чтоRegistrarAgent создает объект Student, добавляя его к учебному заведению (сообщение addStudent – добавитьСтудента), а затем извещаяобъект Student о том, что ему нужно зарегистрироваться. Последнийвызывает операцию getSchedule (узнатьРасписание) и получает перечень объектов Course – курсов, на которых он должен зарегистрироваться. Объект Student добавляет себя к каждому объекту Courseв этом наборе.1 : «create»3 : register()3.1 : courses : = getSchedule()3.4 : setRegistered(true){local}3.2 *[c in courses] : add(s)Рис.
19.7. Моделирования потока управления по организацииТипичные приемы моделирования279Прямое и обратное проектированиеПрямое проектирование (создание кода из модели) возможно идля диаграммы последовательности, и для диаграммы коммуникации, особенно если контекстом таковой является операция. Например, применяя предыдущую диаграмму коммуникации, достаточно«умное» инструментальное средство может сгенерировать следующий код операции register (регистрировать), включенной в классStudent на языке Java:public void register() {CourseCollection courses = getSchedule();for(int i = 0; i < courses.size(); i++)courses.item(i).add(this);this.registered = true;}«Достаточно умное средство» – такое, которое может реализовать метод getSchedule, возвращающий объект CourseCollection (СписокКурсов), определяемый на основе сигнатуры операции.
Проходяпо содержимому объекта с применением стандартной идиомы итераций (о которой, безусловно, инструмент должен знать), код затемобобщается для любого количества предложенных курсов.Обратное проектирование (воссоздание модели из кода) также возможно и для диаграмм последовательности, и для диаграммкоммуникации, особенно если речь идет о контексте операции. Сегменты предыдущей диаграммы могли бы быть восстановлены инструментом из прототипа операции register.На заметку. Прямое проектирование просто, обратное сложно.При типичном обратном проектировании иной раз появляетсяслишком много информации, чтобы можно было с легкостьюрешить, какие детали следует сохранить, а какие – отбросить.Однако более интересной, чем обратное проектирование модели из кода, может быть анимация модели на основе работающейсистемы. Например, в случае с предыдущей диаграммой инструмент может анимировать сообщения, показывая, как они передаются в работающей системе.
Более того, имея такой инструментпод управлением отладчика, вы можете управлять скоростью выполнения – возможно, устанавливая точки прерывания, чтобы приостановить процесс в интересных местах и просмотреть значенияатрибутов конкретных объектов.Диаграммы взаимодействия280Советы и подсказкиКогда вы создаете диаграммы взаимодействия в UML, помните, что диаграммы последовательности и коммуникации являютсяпроекциями одной и той же модели динамических аспектов системы.
Ни одна диаграмма взаимодействия в отдельности не можетохватить все динамические аспекты системы, а также ее подсистем,операций, классов, вариантов использования и коопераций.Хорошо структурированная диаграмма взаимодействия наделена следующими свойствами: сосредоточена на передаче лишь одного аспекта динамикисистемы; включает в себя лишь те элементы, которые существенныдля понимания данного аспекта; представляет уровень детализации, соответствующий уровню абстракции, и включает лишь дополнения, существенныедля понимания диаграммы; не настолько лаконична, чтобы создать у читателя неверноепредставление о существенной семантике.Когда вы строите диаграмму взаимодействия: присваивайте ей имя, соответствующее ее назначению; используйте диаграмму последовательности, если нужноподчеркнуть порядок сообщений во времени.
Используйте диаграмму коммуникации, если хотите сделать акцентна организации объектов, участвующих во взаимодействии; размещайте элементы так, чтобы пересекающихся линийбыло как можно меньше; используйте примечания и выделения цветом, чтобы привлечь внимание к важным деталям диаграмм; не злоупотребляйте ветвлением. Вы можете гораздо лучшеизобразить сложные ветвления на диаграммах деятельности.Глава 20. Диаграммы деятельностиПомимодиаграмм деятельности,динамические аспектысистеммоделируютдиаграммыпоследовательности,коммуникации,состоянийи вариантовиспользования.Диаграммыпоследовательностии коммуникации обсуждаютсяв главе 19,диаграммысостояний –в главе 25,диаграммывариантовиспользования –в главе 18.Действиярассматриваютсяв главе 16.В этой главе:Моделирование потока работМоделирование операцииПрямое и обратное проектированиеДиаграммы деятельности – это один из пяти видов диаграмм, применяемых в UML для моделирования динамических аспектов систем.По сути, диаграмма деятельности представляет собой блокFсхему,которая показывает, как поток управления переходит от одной деятельности к другой.
В отличие от традиционной блокFсхемы диаграмма деятельности показывает параллелизм так же хорошо, каки ветвление потока управления.Моделирование динамических аспектов систем при помощидиаграмм деятельности большей частью подразумевает моделирование последовательных (а иногда и параллельных) шагов вычислительного процесса. Кроме того, с помощью диаграмм деятельности можно моделировать поток передачи данных от одного шагапроцесса к другому. Диаграммы деятельности могут использоваться отдельно для визуализации, специфицирования, конструирования и документирования динамики сообщества объектов либо длямоделирования потока управления в операции.
Если в диаграммах взаимодействия акцент делается на переходы потока управления от одного объекта к другому, то диаграммы деятельностиописывают переходы потока управления от одного шага процессак другому. Деятельность – это структурированное описание текущего поведения. Осуществление деятельности в конечном счетераскрывается в виде выполнения отдельных дейст вий, каждоеиз которых может изменять состояние системы или передаватьсообщения.Диаграммы деятельности важны не только для моделирования динамических аспектов системы, но и для конструированияисполняемых систем посредством прямого и обратного проектирования.Диаграммы деятельности282ВведениеРассмотрим поток работ (workflow) при строительстве дома.Сначала выбирается место под застройку. Затем вы нанимаете архитектора, который проектирует дом. После согласования проектазастройщик составляет смету для оценки общих затрат.
Как тольковы принимаете план и цену, начинается строительство. Власти даютразрешение, роется котлован, заливается фундамент, возводитсякаркас и т.д., пока вся работа не будет завершена. Наконец, вамвручают ключи и документы, подтверждающие право проживания,и вы вступаете во владение жильем.Хотя на самом деле процесс строительства намного сложнее,вышеприведенное описание дает представление об основных операциях. В реальных проектах множество разных процессов можновести параллельно: например, электрики работают одновременно с водопроводчиками и столярами.
Кроме того, вы обнаружите в этих процессах условия и ветвление. Скажем, в зависимостиот качества грунта вам придется либо выполнять взрывные работы,либо копать, либо размывать почву. Могут также присутствоватьитерации: например, строительная инспекция обнаружила какоеFтосерьезные нарушения, в результате чего приходится ломать и переделывать часть здания.В строительной промышленности для визуализации, специфицирования, конструирования и документирования рабочего процесса обычно применяются диаграммы (графики) Гантта и Перта.МоделироваПри разработке программных систем возникает сходная пробление струкма: как лучше всего смоделировать такие динамические аспекты систурныхтемы, как поток работ или операцию? И здесь у вас есть два основныхаспектовпути, аналогичных использованию диаграмм Гантта и Перта.системыС одной стороны, вы можете построить раскадровку сценаобсужриев, которые включают взаимодействие ряда интересующих васдаетсяобъектов и передаваемых между ними сообщений.
Эти раскадровв частях IIки в UML можно моделировать двумя способами: подчеркиваяи III, диавременной порядок сообщений на диаграммах последовательносграммы вза- ти либо выделяя структурные связи между взаимодействующимиимодействия объектами на диаграммах коммуникации. Такие диаграммы взаирассматмодействия чемFто сродни графикам Гантта, которые сосредоточериваютсяны на объектах (ресурсах), обеспечивающих некоторую деятельв главе 19.ность в течение определенного времени.ДействияС другой стороны, эти же динамические аспекты можно мообсуждают- делировать с помощью диаграмм деятельности, которые сосредося в главе 16 тачивают внимание в первую очередь на деятельности, в которуювовлечены объекты (см.
рис. 20.1). Такие диаграммы подобны графикам Перта. По сути, диаграмма деятельности – это блокFсхема,Базовые понятия283отображающая деятельность, развертывающуюся во времени. Диаграмму деятельности можно представить как диаграмму взаимодействия, «вывернутую наизнанку». Диаграмма взаимодействиярассматривает объекты, через которые проходят сообщения; диаграмма деятельности рассматривает операции, выполняемые междуобъектами. Семантическое различие весьма тонкое, но в результатемы получаем принципиально различные взгляды на мир.запусклогическое ветвлениепараллельное разделениепараллельноесоединениезавершениепараллельные потокиРис. 20.1.