2. Язык UML. Руководство пользователя. Буч_ Рамбо_ Якобсон (2-е издание) (2006) (1185732), страница 56
Текст из файла (страница 56)
рис. 20.7). Дорожки определяют наборы деятельностей, которым присуще некоторое общее организационноесвойство.Рис. 20.7. «Плавательные дорожки»На заметку. Существует некоторая связь между дорожкамии параллельными потоками управления. Концептуально деятельность внутри каждой дорожки обычно (хотя и не всегда)рассматривается отдельно от деятельности в соседних.
Этоне лишено смысла, поскольку в реальном мире подразделения организации, представленные дорожками, как правило,независимы и функционируют параллельно.Диаграммы деятельности290Базовые понятия291Поток объектовОбъекты могут участвовать в потоке управления, ассоциированном с диаграммой деятельности. Например, для последовательности операций обработки заказа, которая изображена на рис.
20.7,словарь проблемной области, вероятно, будет включать классы Order(Заказ) и Bill (Счет). Экземпляры этих двух классов будут созданы в результате некоторой деятельности – например, деятельностьProcess order (Обработать заказ) создаст объект Order), тогда, как другие виды деятельности могут использовать или модифицироватьэти объекты – например, деятельность Ship order (Отгрузить заказ)может изменить состояние Order на filled (выполнен).Как показано на рис. 20.8, вы можете специфицировать сущносСвязизависимости ти, которые имеют отношение к диаграмме деятельности, размесобсуждают- тив их на ней и соединив стрелочками с деятельностями, которыеся в главах 5 их создают или используют.Такое явление называется потоком объектов (object flow), пои 10.тому что здесь действительно имеет место поток значений объектаот одной деятельности к другой.
Поток объектов, по существу, подразумевает наличие потока управления (невозможно выполнитьдеятельность, которая требует значения, не имея этого значения!),поэтому нет необходимости рисовать поток управления между деятельностями, соединенными потоками объектов.ЗначенияПомимо самого потока объекта на диаграмме деятельности выи состояния можете показать, как изменяются его роль, состояние и значенияобъектаатрибутов.
По рис. 20.8 видно, что для изображения состояния объобсужекта имя этого состояния заключается в скобки и помещается поддаютсяименем объекта.Объекты обсуждаютсяв главе 13,моделирование словарясистемы –в главе 4.в главе 13,атрибуты –в главах 4и 9.поток объектовпоток объектовОбласти расширенияЧасто одну и ту же операцию нужно выполнять для всех элементов набора. Например, если заказ включает в себя список позиций,обработчик заказа должен выполнить одну и ту же операцию длякаждой строки этого списка: проверить наличие товара, посмотретьцену, узнать, облагается ли данная позиция налогом и т.д. Операции над списками часто моделируются в виде циклов, но при этомпроектировщик должен предусмотреть проход по всем позициям,извлечь их все одну за другой, выполнить операцию, добавить результат в выходной массив, увеличить индекс и проверить циклна завершенность. Механика выполнения цикла скрывает действительный смысл операции.
Этот весьма часто применяемый образецможно смоделировать, применяя область расширения (expansionregion).Рис. 20.8. Поток объектов292Диаграммы деятельностиОбласть расширения представляет фрагмент модели деятельности, который выполняется для списка или набора элементов. На диаграмме деятельности изображается пунктирной линией, проведеннойвокруг области диаграммы.
Ввод в область расширения и вывод изнее представляют собой наборы значений (таких как строки списка элементов заказа). Входные и выходные наборы изображаютсяв виде ряда маленьких квадратиков, соединенных друг с другом;они символизируют массив значений. Когда значение массива поступает во входную коллекцию области расширения из предшествующей части модели деятельности, оно разбивается на индивидуальные элементы.Затем область расширения исполняется для каждого элементамассива.
Нет необходимости моделировать итерацию, – в области расширения она подразумевается неявно. Притом обработканескольких элементов набора по возможности происходит параллельно. Когда завершается обработка элемента, его выходное значение, если оно есть, помещается в выходной массив в том же порядке,в котором элементы расположены во входном. Другими словами,область расширения выполняет операцию forall (для всех) над элементами существующего массива, чтобы создать новый.В простейшем случае область расширения имеет один входнойи один выходной массив, но в принципе у нее могут быть один илинесколько входных массивов и ноль или несколько выходных.
Всеэти массивы должны быть одного размера, но не обязаны включатьтолько однотипные значения. Значения из соответствующих позиций исполняются вместе для генерации выходных значений в техже позициях. Область расширения может иметь нулевое число выходов, если все ее операции дают некий побочный эффект в отношении каждого элемента массива.Области расширения позволяют изобразить операции над индивидуальными элементами и над их наборами в пределах однойдиаграммы, без необходимости показывать все детали устройствамеханизма итераций.Рис. 20.9 демонстрирует пример области расширения. В основном теле диаграммы принимается заказ.
Это событие генерирует значение типа Order (Заказ), которое состоит из значений типаLineItem (СтрокаЗаказа). Значение Order служит входным для области расширения.Каждое исполнение области расширения работает с одним элементом из набора Order. Поэтому внутри области тип входного значения соответствует одному элементу массива Order, а именно LineItem.Деятельность в пределах области расширения разделяется на две:одна находит Product (Продукт) и включает его в поставку, а другаявычисляет стоимость этой позиции.
Необязательно обрабатыватьБазовые понятия293Receive orderвходной набортип набора:Order:LineItemскалярный типGet itemCompute cost:Product:Money:Shipment:BillShip orderвыходной наборSend billРис. 20.9. Область расширенияэлементы LineItem по порядку; разные выполнения области расширения могут происходить параллельно. После того как все элементыобработаны, из них формируется объект Shipment (Поставка) – наборпродуктов, – а цены формируют Bill (Счет) – набор значений типаMoney (Деньги).
Значение объекта Shipment служит входным параметром деятельности ShipOrder (ОтгрузитьЗаказ), а значение объектаBill – входным для деятельности SendBill (Выслать счет).Общее применениеДиаграммы деятельности применяются для моделирования динамических аспектов поведения системы. Эти динамические аспекты могут включать деятельность на любом уровне абстракции в любом представлении системной архитектуры, включая классы (в томчисле активные), интерфейсы, компоненты и узлы.Использовать диаграммы деятельности для моделирования некоторых динамических аспектов системы вы можете в контексте почтилюбого моделируемого элемента.
Однако чаще вы будете прибегатьк таким диаграммам в контексте всей системы, подсистемы, операции или класса. Диаграмму деятельности можно присоединить294Пять представленийархитектуры обсуждаютсяв главе 2,классы –в главах 4и 9, активныеклассы –в главе 23,интерфейсы – в главе 11,операции – в главах 4 и 9,вариантыиспользования и действующиелица – в главе 17, компоненты –в главе 15,узлы – в главе 27, системы и подсистемы –в главе 32.Диаграммы деятельностик варианту использования, чтобы моделировать сценарий, и к кооперации, чтобы моделировать динамические аспекты поведениясовокупности объектов.При моделировании динамических аспектов системы диаграммы деятельности обычно используются двумя способами:1.
Для моделирования потока работ. Внимание сосредоточенона том, как выглядит деятельность с точки зрения действующих лиц, взаимодействующих с системой. Потоки работ находятся на периферии программных систем и применяютсядля визуализации, спецификации, конструирования и документирования бизнесFпроцессов, которые включает разрабатываемая система. При таком использовании диаграмм деятельности особенное значение приобретает моделированиепотоков объектов.2. Для моделирования операции.
В этом случае диаграммы деятельности выступают в качестве схем, моделирующих подробности вычислительного процесса. При этом особенноважно моделирование ветвления, разделения и соединенияпотоков управления. Контекст используемой таким образом диаграммы деятельности включает параметры операцийи их локальные объекты.Типичные приемы моделированияМоделирование потока работНи одна программная система не существует в изоляции. Всегда существует некоторый контекст, в котором она «живет» и который обязательно включает действующие лица, работающие с системой. Особенно когда речь идет о критически важном программномобеспечении масштаба предприятия, всегда можно обнаружитьавтоматизированные системы, работающие в контексте более высокоуровневых бизнесFпроцессов.