Дж. Рамбо, М. Блаха - UML 2.0 - Объектно-ориентированное моделирование и разработка (1158633), страница 39
Текст из файла (страница 39)
Точный синтаксис ввода может быть описан позднее, на этапе реализации. Начинайте с простейших взаимодействий: никаких повторов, одна основная деятельность, наиболее типичные значения всех параметров. Если основных вариантов несколько и они существенно отличаются друг от друга, напишите сценарий для каждого из них. ° Абстрагируйте сценарии при помощи диаграмм последовательности.
Диаграмма последовательности наглядно показывает участие каждого действующего лица. Очень важно выделить вклад каждого из них, чтобы впоследствии организовать поведение объектов. ° Разбивайте сложные взаимодействия на более простые. Разделяйте крупные последовательности на составляющие задачи, для которых стройте диаграммы последовательности. ° Стройте диаграмму последовательности для каждой исключительной или сбойной ситуации.
Покажите реакцию системы на нестандартное воздействие. 7.3. Модели деятельности Диаграмма деятельности показывает последовательность этапов, образующих сложный процесс, например вычислительный алгоритм или технологический процесс. Диаграмма деятельности показывает поток управления, подобно диаграмме последовательности, но сосредоточивает внимание на операциях, а не на объектах. Диаграммы деятельности особенно полезны на ранних этапах проектирования алгоритмов и технологических процессов. На рис. 7.9 показана диаграмма деятельности обработки заказа на покупку акций, принятого сетевой брокерской системой.
Прямоугольники со скругленными углами — это виды деятельности, порядок которых обозначается стрелками. Ромбик обозначает точку принятия решения, а сплошная полоса показывает разделение или слияние параллельных потоков управления. 172 Глава 7 ° Моделирование взаимодействий Рис. 7.9. Диаграмма деятельности брокерской системы при обработке заказа Сетевая брокерская система начинает с проверки заказа. Затем заказ реализуется на фондовой бирже. Если выполнение заказа проходит успешно, система выполняет три действия одновременно: отправляет клиенту подтверждение, обновляет сетевой портфель ценных бумаг с учетом результатов сделки и заканчивает сделку со второй стороной, снимая средства со счета клиента и перечисляя наличные или ценные бумаги. Когда все три параллельных потока завершаются, система объединяет их в один поток и закрывает заказ.
Если же выполнение заказа оказывается неудачным, система отправляет сообщение об этом клиенту и тоже закрывает заказ. Диаграмма деятельности похожа на обычную блок-схему, потому что тоже показывает поток управления от этапа к этапу. Однако в отличие от блок-схемы, диаграмма деятельности может показывать одновременно параллельную и последовательную деятельность. Это отличие важно для распределенных систем. Диаграммы деятельности часто используются для моделирования организаций, потому что последние состоят из множества объектов (людей и организационных единиц), одновременно выполняющих множество операций. 7.3.1.
Деятельность Элементами диаграммы деятельности являются операции, а именно виды деятельности из модели состояний. Назначение диаграммы деятельности состоит 7.3. Модели деятельности 173 в том, чтобы показать этапы сложного процесса и упорядочивающие ограничения, на них наложенные.
Некоторые виды деятельности выполняются до тех пор, пока не будут прерваны каким-либо внешним событием, однако в большинстве случаев деятельность имеет собственное логическое завершение. Завершение деятельности является событием завершения, которое обычно означает возможность начала выполнения следующей деятельности. Стрелка без надписи, соединяющая две деятельности на диаграмме, означает, что вторая деятельность может начаться только после того, как закончится первая. Деятельность может быть разложена на более мелкие составляющие.
На рис. 7.10 мы показываем внутреннюю структуру деятельности ехесисе огбег (выполнить заказ) с рис. 7.9. Важно, чтобы виды деятельности на одной диаграмме относились к одному и тому же уровню детализации. Например, на рис. 7.9 деятельности ехесиге оп1ег (выполнить заказ) и зегг(е пабе (завершить сделку) относятся к одному уровню детализации: они оба отражают операцию высокого уровня, не уточняя ее механизмы. Если бы один из этих этапов был бы разбит на более мелкие шаги, другие этапгя также следовало бы разбить на мелкие шаги, чтобы все они остались на одинаковых уровнях.
Сохранить уровень детализации можно, если показывать составляюгпие высокоуровневой деятельности на отдельных диаграммах. Рис. 7.10. Диаграмма деятельности для действия ехесоГе огбег 7.3.2. Ветвление Если какая-либо деятельность имеет несколько последующих элементов, около каждой стрелки можно указать условие в квадратных скобках, например Орите)' ((отказ]). Условия проверяются после завершения предшествующей деятельности. Если одно условие оказывается выполненным, стрелка, около которой оно стоит, указывает на деятельность, подлежагпую выполнению. Если не удовлетворено ни 174 Глава 7 ° Моделирование взаимодействий одно из условий, модель можно считать плохо согласованной, потому что система зависнет, если только не получит прерывание на более высоком уровне.
Во избежание подобных ситуаций следует использовать условие (еЬе7' ([иначе)). Если выполнено несколько условий, запущена будет только одна деятельность, причем невозможно определить, какая именно. В некоторых случаях подобная неопределенность закладывается осознанно, но часто она указывает на ошибку разработчика, который должен был учесть возможность перекрытия условий.
Для удобства в качестве обозначения множественного ветвления используется ромб с расходящимися от него стрелками, однако смысл его тот же, что и у стрелок, расходящихся от предшествующего состояния. На рис. 7.9 такой ромб имеет одну входящую стрелку и две исходящие, каждая из которых снабжена условием. При фактическом выполнении системы выбирается только одна из этих стрелок. Если несколько стрелок сходятся у некоторой деятельности, альтернативные пути выполнения сливаются. Здесь снова можно использовать ромб со сходящимися к нему стрелками. 7.3.3. Инициализация и завершение Сплошной кружок с исходящей стрелкой обозначает начало выполнения диаграммы деятельности.
Когда диаграмма деятельности активируется, управление передается на этот кружок, а затем переходит по исходящей из него стрелке к первым этапам деятельности. Завершение диаграммы обозначается символом «бычий глаз» (сплошной кружок с кольцом вокруг него). Этот символ не может иметь исходящих стрелок.
Когда управление достигает вбычьего глаза», деятельность завершается и выполнение диаграммы заканчивается. 7.3М. Параллельная деятельность В отличие от традиционных блок-схем организации и компьютерные системы могут выполнять несколько видов деятельности одновременно. Скорость выполнения деятельности может меняться с течением времени. Например, за одной деятельностью может следовать другая (последовательное управление), после чего может выполниться несколько параллельных видов деятельности (разделение управления), а затем они снова объединятся в одну деятельность (слияние управления).
Развилка и слияние обозначаются толстой линией с одной или несколькими входящими стрелками и одной или несколькими исходягцими стрелками. Для синхронизации необходимо, чтобы управление было передано в точку слияния по всем стрелкам. На развилке управление передается всем параллельным видам деятельности одновременно. На рис. 7.9 показан пример разделения и слияния управления. После выполнения заказа нужно выполнить несколько задач, причем порядок их выполнения может быть произвольным.
Брокерская система должна отправить подтверждение клиенту, снять деньги с его счета и обновить содержимое сетевого портфеля ценных бумаг для данного клиента. Когда три параллельные задачи завершаются и сделка заканчивается, происходит слияние управления и выполняется операция закрытия заказа. 7.3. Модели деятельности 175 7.3.5. Выполняемые диаграммы деятельности Диаграммы деятельности не только полезны для определения этапов сложного процесса. Они могут быть использованы для демонстрации управления выполнением.
Около выполняемого символа деятельности можно поместить маркер делисльностли (асйчйу сокеп). Когда деятельность завершается, маркер помещается около исходящей стрелки. В простейшем случае на следующем шаге маркер оказывается около следующего символа деятельности. Если исходящих стрелок несколько и они снабжены условиями, последуюшая деятельность определяется проверкой этих условий. Маркер может перейти только к одному из последующих видов деятельности, даже если одновременно выполняются условия у нескольких стрелок. Если ни одно условие не выполняется, диаграмма деятельности является плохо согласованной. Параллельное выполнение соответствует появлению нескольких маркеров. Если за выполняемой деятельностью следует разделение управления, завершение деятельности приводит к увеличению количества маркеров: у каждого из параллельно выполняемых видов деятельности помещается свой маркер.