Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » Дж. Арлоу, А. Нейштадт - UML 2 и Унифицированный процесс - Практический объектно-ориентированный анализ и проектирование

Дж. Арлоу, А. Нейштадт - UML 2 и Унифицированный процесс - Практический объектно-ориентированный анализ и проектирование, страница 60

Описание файла

PDF-файл из архива "Дж. Арлоу, А. Нейштадт - UML 2 и Унифицированный процесс - Практический объектно-ориентированный анализ и проектирование", который расположен в категории "книги и методические указания". Всё это находится в предмете "объектно-ориентированный анализ и проектирование" из седьмого семестра, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст 60 страницы из PDF

14.6. Деятельность с иерархично вложенным множеством разделовДиаграммы деятельности с разделами деятельности превосходно подходят для моделирования подобного процесса.Иногда абсолютно нереально сгруппировать узлы в вертикальные илигоризонтальные разделы, не ухудшив при этом читаемость диаграммы. В этом случае можно создавать разделы неправильной формы с помощью кривых или обозначать разделы с помощью текста. В UML существует текстовая нотация для разделов деятельности. Пример текстовой нотации приведен на рис. 14.8.

Однако обычно к ней прибегаютв самом крайнем случае, потому что графическое представление, какправило, намного нагляднее.Местоположение действия в иерархии раздела можно задать с помощью разделенного двойными двоеточиями пути (pathname); путь указывается в скобках над именем действия. Если действие встречаетсяв нескольких разделах, через запятую перечисляют имена путей каждого из разделов (рис.

14.8).измерениеПодразделениеЦюрихЛондонразделыдеятельностиМаркетингПланированиеРазработкаРис. 14.7. Иерархия разделов в рамках измерения31914.7. Узлы действияиерархия разделанесколько разделов(Location::London::Development)Develop course(A, B)Some actionРис. 14.8. Примеры текстовой нотации для разделов деятельностиРазделы, обозначенные стереотипом «external», не являются частьюсистемы.Порой необходимо показать на диаграмме деятельности поведение,находящееся, строго говоря, вне области действия системы, напримервзаимодействие системы с некоторой внешней системой. Это можнопредставить, указав на диаграмме деятельности стереотип «external»прямо над именем раздела.

Обратите внимание, что внешний разделне является частью системы и, следовательно, не может входить в какуюлибо иерархию разделов модели.Тщательно выбирая измерения и разделы деятельности, можно, безусловно, добавить на диаграмму деятельности массу полезной информации. Однако эти возможности могут и усложнить диаграмму, особеннопри наличии нескольких измерений и сложной иерархии разделов! Напрактике необходимо стремиться к использованию на одной диаграмме не более трех уровней иерархии (включая измерение) и не болеедвух измерений.Всегда опирайтесь на собственное мнение и применяйте разделы деятельности только в случае, если они действительно повышают ценность модели.14.7.

Узлы действияУзлы действия (action node) исполняются в следующих случаях:•маркеры одновременно поступили на все входящие ребра•и входящие маркеры удовлетворяют всем локальным предусловиям узла действия.Это проиллюстрировано на рис. 14.9.Узлы действия осуществляют операцию логическое И над своими входящими маркерами – узел не готов к исполнению до тех пор, пока маркеры не будут присутствовать на всех входящих ребрах. Даже если всенеобходимые маркеры присутствуют, узел будет исполняться толькопосле удовлетворения его локального предусловия.320Глава 14. Диаграммы деятельностивходящий маркерУзел действияузел действия не исполняетсяУзел действияузел действия не исполняетсяУзел действияузел действия исполняетсяисходящий маркерРис. 14.9.

Условия исполнения узлов действияУзлы действия предлагают управляющие маркеры на всех своих исходящих ребрах – неявное ветвление.По завершении выполнения узла действия проверяется локальное постусловие. Если оно удовлетворено, узел одновременно предлагает маркеры на всех своих исходящих ребрах. Это ветвление является неявным, поскольку один узел действия может породить множество потоков. В отличие от обычных блоксхем, диаграммы деятельности по сути своей параллельны.Поскольку в узлах действия производятся некоторые действия, обычно их имена являются глаголами или глагольными группами.

Спецификация UML не дает никаких рекомендаций по присваиванию именузлам действия. Мы пользуемся соглашением, по которому имя узланачинается с большой буквы, все остальные слова, входящие в имя,пишутся с маленькой буквы через пробелы. Единственное исключениеиз этого правила: узел действия содержит ссылку на другой элементмодели. В этом случае имя элемента модели всегда используется какесть, без изменения регистра или добавления пробелов.

На рис. 14.10показано два примера. В верхнем примере происходит ссылка на чтотоСоздать заказ«заказ» ссылается на какой!то заказСоздать Order«Order» ссылается на элементмодели под именем OrderРис. 14.10. Примеры имен узлов действия32114.7. Узлы действияпод названием «заказ», тогда как нижний пример явно ссылается накласс Order, который можно найти гдето в модели.Детали действия фиксируются в описании узла действия. Часто этообычное текстовое описание, такое как «Написать письмо», но на этапепроектирования оно превращается в структурированный текст, псевдокод или реальный код. При моделировании прецедента диаграммадеятельности могла бы опережать поток прецедента на дватри шага.Но это может вызвать трудности, поскольку придется постоянно синхронизировать прецедент и соответствующую диаграмму деятельности.Существует четыре типа узлов действия; они перечислены в табл.

14.1.Подробное обсуждение типов узлов действия можно найти в разделах,указанных в таблице.Таблица 14.1СинтаксисНекотороедействиеИмяСемантикаУзелвызовадействияИнициирует деятельность,или операцию.ПосылкасигналаДействие посылки сигнала – посылает 15.6сигнал асинхронно (отправитель не ожидает подтверждения получения сигнала).Для создания сигнала может приниматьвходные параметры.Узел действия, принимающийсобытиеПринимает событие – ожидает события, 15.6установленного объектомвладельцем,и выдает событие на выходе.Активируется при получении маркерапо входящему ребру.Если нет входящего ребра, запускаетсяпри запуске включающей его деятельности и всегда является активированным.ИмяСигналаПринятьСобытиеУзел действия, приниВыражениемающийдля описания времени событиевремениРазделповедение 14.7.1Принимает событие времени – отвечает 14.7.2на определенное значение времени.Генерирует события времени соответственно своему временному выражению.14.7.1.

Узел вызова действияСамыми распространенными узлами действий являются узлы вызовадействия (call action node). Этот тип узлов может инициировать:• деятельность;• поведение;• операцию.322Глава 14. Диаграммы деятельностиУзел вызова действия может инициировать деятельность, поведениеили операцию.Некоторые примеры синтаксиса узла вызова действия приведенына рис. 14.11.

Как видно из рисунка, синтаксис очень гибок!•Посредством специального символа «грабли» в нижнем правом углу пиктограммы узла можно указать, что действие вызывает другоедействие. Имя узла соответствует имени вызываемой им деятельности.•Можно вызвать поведение – это прямой вызов поведения контекстадеятельности без указания какойлибо конкретной операции.•Можно вызвать операцию, используя стандартный синтаксис операции, описанный в разделе 7.5.3.•Можно вызвать операцию, описывая ее детали на конкретном языке программирования.

Это может быть особенно полезным при использовании инструментального средства UML, позволяющего генерировать код из диаграмм деятельности (например, iUML от компании Kennedy Carter, www.kc.com).•С помощью ключевого слова self можно использовать возможностиконтекста деятельности.Узлы вызова действия, используемые в диаграммах деятельности науровне анализа, обычно вызывают поведение. Узлы вызова действия,инициирующие конкретные операции, как правило, используются дляболее детального моделирования деятельности при проектировании.Создать Orderвызов деятельностиЗакрыть Orderвызов поведенияgetBalance():double(Account::)имя операцииимя класса (необязательное)Получить баланс(Account::getBalance():double)if self.balance <= 0:self.status = 'INCREDIT'elseself.status = 'OVERDRAWN'имя узлаимя операции(необязательное)вызовоперацииязык программирования(например, Python)Рис.

14.11. Примеры синтаксиса узла вызова действия32314.8. Узлы управления14.7.2. Узел действия, принимающий событие времениУзел действия, принимающий события времени, реагирует на время.Узел действия, принимающий события времени, реагирует на время.Этот тип узла имеет временное выражение и генерирует событие времени, когда это выражение становится истинным. Поведение такогоузла зависит от наличия входящего ребра.Например, на рис. 14.12 показан узел действия, принимающий события времени, без входящего ребра.

Этот узел станет активным и будетгенерировать событие времени после запуска его деятельностивладельца, когда его временное выражение становится истинным. В приведенном примере событие времени генерируется в конце каждого финансового года и инициирует деятельность Отправить налоговую декларацию компании.Отправить налоговую декларацию компаниинаступил конецфинансового годавременное выражениеРис. 14.12. Узел действия, принимающий событие времени,без входящего ребраОднако в примере на рис.

14.13 действие, принимающее событие времени, имеет входящее ребро и станет активным только после получения маркера по этому ребру. Этот пример является фрагментом системы управления лифтом. Первое действие открывает дверь лифта и запускает действие, принимающее событие времени. Это действие ожидает десять секунд и затем передает маркер действию Закрыть дверь.Открыть дверьЗакрыть дверьожидаем 10 секундвременное выражениеРис. 14.13.

Узел действия, принимающий событие времени,с входящим ребромОбратите внимание, что временное выражение может указывать на:• некоторое событие (например, конец финансового года);• конкретный момент времени (например, 11/03/1960);• временной интервал (например, ожидать 10 секунд).14.8. Узлы управленияУзлы управления контролируют поток управления деятельности.В табл. 14.2 представлены все узлы управления UML 2; их подробноеобсуждение см. в следующих разделах.324Глава 14. Диаграммы деятельностиТаблица 14.2СинтаксисИмяСемантикаНачальный узелУказывает, где начинается поток при 14.8.1вызове деятельности.Конечный Завершает определенный потокузел пото деятельности – другие потокикане затрагиваются.«decisionInput» условиепринятия решенияКонечные узлыКонечный Завершает деятельность.узел деятельностиРаздел14.8.114.8.1УзелрешенияПоток проходит по исходящему ребру, 14.8.2сторожевое условие которого истинно.Может иметь входные данные (необязательно).УзелслиянияКопирует входные маркеры в единст 14.8.2венное выходное ребро.УзелРазделяет поток на несколько парал 14.8.3ветвления лельных потоков.{описаниеобъединения}Узел объ Синхронизирует несколько парал 14.8.3единения лельных потоков.Может иметь описание объединения(не обязательно) для изменения его семантики.14.8.1.

Свежие статьи
Популярно сейчас