Джим Арлоу, Айла Нейштадт - UML 2 и Унифицированный процесс. Практический объектно-ориентированный анализ и проектирование (1037782), страница 63
Текст из файла (страница 63)
15.3 показана простая деятельность Войти в систему, имеющаяобласть с прерываемым выполнением действий. Область обозначенаотрисованным пунктирной линией прямоугольником со скругленными углами, включающим действия Получить UserName, Получить Passwordи Отменить. Если принимающее событие действие Отменить получает событие Cancel в тот момент, когда управление находится в этой области,оно выводит маркер на прерывающее ребро и внезапно прекращает область. Все действия – Получить UserName, Получить Password и Отменить –прерываются.Прерывающие ребра изображаются как зигзагообразные стрелки(рис. 15.3) или как обычные стрелки с пиктограммой зигзага над ними(рис.
15.4).340Глава 15. Дополнительные аспекты диаграмм деятельностиВойти в системуПолучитьUserNameUserName [Допустимый]АутентифицироватьUserПолучитьPasswordPassword [Допустимый]Отменитьпрерывающее реброобласть с прерываемымвыполнением действийРис. 15.3. Деятельность Войти в систему имеет область с прерываемымвыполнением действийРис.
15.4. Вариант отображения прерывающего ребра15.4. Обработка исключенийСовременные языки программирования часто обрабатывают ошибкипосредством механизма, называемого обработкой исключений (excep+tion handling). В случае выявления ошибки в защищенной части кодасоздается объект исключения. Поток управления переходит в обработчик исключения, который некоторым образом обрабатывает объектисключения. В этом объекте исключения содержится информация обошибке, которая может использоваться обработчиком исключения.Обработчик исключения может прервать приложение или попытатьсявосстановить нормальное состояние. Часто информация объекта исключения сохраняется в журнале регистрации ошибок.Обработку исключений на диаграммах деятельности можно моделировать с помощью контактов исключений, защищенных узлов и обработчиков исключений.У защищенного узла есть обработчик исключений.На рис. 15.5 представлена обновленная деятельность Войти в систему.Теперь деятельность Аутентифицировать User выдает объект LogOnException (исключение при входе) при неудачной аутентификации пользователя.
Этот объект принимается действием Зарегистрировать ошибку, ко34115.5. Узлы расширенияВойти в системуПолучитьUserNameПолучитьPasswordзащищенный узелUserName [Допустимый]АутентифицироватьUserобработчик исключенийконтакт исключенияLogOnExceptionЗарегистрироватьошибкуPassword [Допустимый]ОтменитьРис.
15.5. Деятельность Войти в систему с обработчиком исключенийторое записывает информацию об ошибке в журнал регистрации ошибок. Для того чтобы показать, что выходной контакт представляет собой объект исключения, его помечают небольшим равностороннимтреугольником (рис. 15.5). Узел Зарегистрировать ошибку выступает в роли обработчика исключений, генерируемых действием Аутентифицировать User. Если с узлом ассоциирован обработчик исключений, узел называют защищенным.Поскольку обработка исключений обычно является задачей проектирования, а не анализа, защищенные узлы чаще используются при проектировании. Однако иногда может быть полезным смоделировать защищенный узел уже на стадии анализа, если он имеет важную бизнессемантику.15.5.
Узлы расширенияУзлы расширения позволяют показать обработку коллекции объектовкак часть диаграммы деятельности, называемую областью расшире+ния (expansion region). Представление процесса обработки коллекцииможет быть довольно сложным и пространным, поэтому данная техника очень полезна как при анализе, так и при проектировании.Узел расширения – коллекция объектов, входящая в или выходящаяиз области расширения, исполняемой один раз для каждого объекта.Узел расширения – это объектный узел, который представляет коллекцию объектов, входящую в или выходящую из области расширения.Область расширения исполняется по одному разу для каждого входногоэлемента.
На рис. 15.6 показан пример области расширения. Она представлена в виде отрисованного пунктиром прямоугольника со скруг342Глава 15. Дополнительные аспекты диаграмм деятельностиПоставить оценки учащимсярежимiterativeОценить результаты экзаменаSet of Studentузел расширенияОценить учащегосяобласть расширенияSet of StudentРис. 15.6. Пример области расширенияленными углами и входящим и исходящим узлами расширения. Узелрасширения выглядит как контакт, но с тремя квадратными ячейками.Это указывает на поступление коллекции, а не одного объекта.На узлы расширения накладываются два ограничения.•Тип выходной коллекции должен соответствовать типу входнойколлекции.•Типы объектов входной и выходной коллекций должны быть одинаковыми.Эти ограничения означают, что области расширения не могут использоваться для преобразования входных объектов одного типа в выходные объекты другого типа.Количество выходных коллекций может не совпадать с количествомвходных, поэтому области расширения могут использоваться для объединения или разделения коллекций.У каждой области расширения есть режим, определяющий порядокобработки элементов входной коллекции.
Режим может быть следующим:•iterative (итеративный) – каждый элемент входной коллекции обрабатывается последовательно;•parallel (параллельный) – элементы входной коллекции обрабатываются параллельно;•stream (потоковый) – элементы входной коллекции обрабатываютсяв порядке поступления в узел.Режим всегда должен быть задан явно, потому что спецификация UMLне определяет применяемого по умолчанию режима.На рис. 15.6 область расширения принимает набор объектов Student(учащийся). Она обрабатывает каждый из этих объектов по очереди(режим = iterative) и выдает набор обработанных объектов Student. Два15.6. Отправка сигналов и прием событий343действия внутри области сначала определяют результаты экзаменаStudent и затем ставят ему оценку.
В данном случае выходная коллекция объектов Student предлагается на выходном узле расширения только после того, как обработаны все объекты Student. Однако если бы былзадан режим stream, объекты Student предлагались бы на выходном узле расширения сразу после обработки.15.6. Отправка сигналов и прием событийСигнал представляет асинхронно передаваемую между объектами информацию. Сигнал моделируется как класс, отмеченный стереотипом«signal» (сигнал). Передаваемая информация хранится в атрибутах сигнала. При анализе сигналы могут использоваться для отображения отправки и получения асинхронных бизнессобытий (таких как OrderReceived (заказ получен)), а при проектировании они могут иллюстрировать асинхронный обмен информацией между разными системами,подсистемами или частями оборудования.Сигналы представляют асинхронно передаваемую между объектами информацию.На рис.
15.7 показаны два сигнала, которые используются в деятельности, представленной на рис. 15.8.Оба этих сигнала имеют тип SecurityEvent (событие системы безопасности). Сигнал AuthorizationRequestEvent (событие запроса авторизации) передает PIN и информацию карты, вероятно, в зашифрованном виде.В сигнале AuthorizationEvent (событие авторизации) хранится логический флаг, указывающий, были ли авторизованы карта и PIN.Узел действия, отправляющий сигнал, представляет отправку сигнала.Сигнал можно послать с помощью узла действия, отвечающего за отправку сигнала.
Он посылает сигнал асинхронно – деятельность, от«signal»SecurityEvent«signal»AuthorizationRequestEventpin : PINcardDetails : CardDetails«signal»AuthorizationEventisAuthorized : BooleanРис. 15.7. Два сигнала, используемые в деятельности Проверить кредитную карту344Глава 15. Дополнительные аспекты диаграмм деятельностиПроверить кредитную картуCardDetailsВвести PINPINAuthorizationRequestEventузел действия,отправляющий сигналAuthorizationEventузел действия,принимающий событие[AuthorizationEvent.isAuthorized]Авторизован[!AuthorizationEvent.isAuthorized]Не авторизованРис.
15.8. Деятельность Проверить кредитную картуправляющая сигнал, не ожидает подтверждения получения сигнала.Посылающая сигнал деятельность имеет следующую семантику:•Посылающая сигнал деятельность инициируется тогда, когда маркер одновременно присутствует на всех ее входных ребрах. Еслиу сигнала имеются входные контакты, он должен получить входнойобъект соответствующего типа для каждого из своих атрибутов.•При выполнении действия создается и посылается объект сигнала.Целевой объект обычно не указывается, но в случае необходимостиего можно передать на входной контакт действия, отправляющегосигнал.•Действие отправки не ожидает подтверждения принятия сигнала –оно асинхронно.•Действие завершается, и маркеры управления предлагаются на еговыходных ребрах.Узел действия, принимающий событие, ожидает получения события соответствующего типа.Узел действия, принимающий событие, не имеет ни одного или имеетодно входное ребро.
Он ожидает асинхронных событий, выявленных15.6. Отправка сигналов и прием событий345его контекстомвладельцем, и предлагает их на своем единственномвыходном ребре. Семантика его следующая.•Действие приема события запускается входящим ребром управления; если входящих ребер нет, оно запускается при вызове деятельностивладельца.•Действие ожидает получения события определенного типа.