Диаграмма активности (деятельности, activitydiagram)
На уроках информатики рисуют блок-схемы, чтобы наглядно изобразить алгоритм решения некоторой задачи. Действительно, моделируя поведение проектируемой системы, часто недостаточно изобразить процесс смены ее состояний, а нужно также раскрыть детали алгоритмической реализации операций, выполняемых системой. Для этой цели традиционно использовались блок-схемы или структурные схемы алгоритмов. В UML для этого существуют диаграммы деятельности, являющиеся частным случаем диаграмм состояний. Диаграммы деятельности удобно применять для визуализации алгоритмов, по которым работают операции классов.
Алгоритм - последовательность определенных действий или элементарных операций, выполнение которых приводит к получению желаемого результата.
Обозначения на диаграмме активности также напоминают те, которые встречаются на блок-схеме, хотя есть, и некоторые существенные отличия. С другой стороны, нотация диаграмм активности очень похожа на ту, которая используется в диаграммах состояний. Например, их можно увидить на диаграмме, которая представлена на рисунке 1
Рисунок 1 – Диаграмма деятельности
Обратите внимание на то, как изображено параллельное пение и принятие душа, - на обычной блок-схеме это было бы невозможно! А вот еще пример диаграммы, показывающей процесс оформления заказа в интернет-магазине (рисунок 2):
Рисунок 2 - Диаграмма деятельности оформления заказа в интернет-магазине
Рисунок 3 - Диаграмма деятельности доставки заказа
Activitydiagram — это специальная разновидность диаграммы состояний. В этом типе диаграмм большинство используемых знаков — это знаки активности, переходы между которыми вызваны завершением одних действий и началом других.
Главное отличие между Activity и Statechart в том, что в первом случае основное — действия, а во втором — статичное состояние. При этом Activitydiagram больше подходит для моделирования последовательности действий, а Statechart для моделирования дискретных состояний объекта.
Activity (активность) обозначает выполняемые задачи или выполнение определенных действий в течение жизни объекта.
StateTransition — переход из одного состояния в другое или по завершении выполнения определенного действия в начало другого.
Значок Synchronizations позволяет определить независимо выполняемые действия. При этом действия разделяются на несколько выполняемых независимо, и только по завершении всех действий объект продолжает работу. Этот значок представляет собой горизонтальную или вертикальную черту, обозначающую синхронизацию выполняемых работ.
Decision позволяет показать зависимость дальнейшей работы от внешних условий или решений. Этот значок аналогичен командам языка программирования IF или Case и может иметь больше двух выходов, но обычно используют выбор из двух переходов.
Swimlanes позволяет моделировать последовательность действий различных объектов и связи между ними. Swimlanes позволяет показать, кто выполняет те или иные роли в процессе. Для этого необходимо переместить соответствующие значки активности или состояний в зону определенного подразделения, отделенного от остальных Swimlanes.
Построение диаграммы Активности для варианта использования «Выполнить поставку Заказа»
Постановка задачи:Побеседовав с программистом, директор понял, что необходимо согласовать логику реализации еще одного варианта использования «Выполнить поставку заказа». Стало ясно, что здесь возможны несколько альтернативных потоков управления. Для таких ситуаций более удобно использовать не диаграммы взаимодействия, приспособленные для единственного потока, а диаграмму активности.
Описание варианта использования.
При оформлении заказа проверяют каждую содержащуюся в нем позицию, чтобы убедиться в наличии соответствующих товаров на складе. После этого выписываются товары для реализации заказа. Во время выполнения этих процедур одновременно проверяется прохождение платежа. Если платеж прошел, и товары имеются на складе, то осуществляется их поставка. Если платеж прошел, но товары на складе отсутствуют, то заказ ставится в ожидание. Если платеж не прошел, то заказ аннулируется.
Порядок выполнения работы:
1. Найдите в браузере вариант использования «Выполнить поставку заказа»
2. Щелкните на классе правой кнопкой мыши и в открывшемся меню укажите пункт AddDiagram>ActivityDiagram (Создать диаграмму активности).
3. Назовите диаграмму «Выполнить поставку» и откройте ее двукратным щелчком мыши
4. На панели инструментов щелкните мышкой на элементе Swimlаne(Horizontal), затем на поле диаграммы.
5. Откройте окно Properties, измените поле NameнаКлерк.
6. Выполните заново пункты 4-5 и присвойте полю NameБухгалтерская система.
7. Найдите в браузере сплошной черный кружок (начальное состояние). Перенесите его на дорожку Клерк.
8. Выберете из панели инструментов объект ActionState и поместите его на диаграмму в “дорожку” Клерк. Измените имя объекта на ”Получить заказ”.
9. Повторите предыдущий этап, создайте на «дорожке» Клерк 4 новых ActionState и присвойте им именаПроверить позицию заказа,закрепить позицию за заказом,Поставить заказ в ожидание, Скомплектовать заказ
10. Поместите на «дорожку» 2 новых объекта FinalState (конечное состояние). Одному из них измените поле Name на «Выполнить поставку»
11. На дорожку Система поместите новый объект Activity и присвойте полю Name “Проверить платеж”. На эту же дорожку поместите новый объект FinalState и измените его свойство Name на «Отменить заказ».
12. Поместить на «дорожку» Клерк 2 объекта Sinhronization (горизонтальная синхронизация). Присвойте полю Name спецификации одного объекта «1», другого- «2».
13. Поместить на «дорожку» Клерк объект Dicision (выбор), присвойте свойству Name «Позиция имеется?».
Поместить на «дорожку» Система объект Dicision. Присвойте свойству Name «Деньги поступили?»
14. Щелкните мышкой на панели инструментов объекте- стрелке Transition (состояние перехода). Затем щелкните мышкой на диаграмме объекта начальное состояние. Удерживая кнопку мыши перенесите курсор на активность ”Получитьзаказ”и лишь затем отпустить курсор.В результатедваобъектабудутсоединеныстрелкой.
15. Выполните этап 14, соединив стрелкой объект Активность «Получить заказ» с объектом Sinhronization 1.
16. Соедините этими же стрелками объекты 1 и «Проверить платеж», 1 и «Проверить позицию заказа», «Проверить заказ» и «Деньги подступили?», «Деньги поступили?» и «Отменить заказ», «Проверить позицию заказа» и «Позиция имеется», «Позиция имеется» и «Закрепить позицию за заказом», «Деньги получены?» и 2, «Закрепить позицию за заказом» и 2, «Позиция имеется?» и «Поставить заказ в ожидание», 2 и «Скомплектовать заказ», «Скомплектовать заказ» и «Выполнить поставку», «Поставить заказ в ожидание» и объект Конечное состояние (без имени)
17. Присвойте некоторым стрелкам наименование (условие перехода).Для этого, установите курсор на стрелке, соединяющей «Деньги получены?» и «Отменить заказ». Двукратнымщелчкоммышиоткроетеокноинициализации, введите «Нет».
18. Выполните пункт 17 для стрелки, соединяющей «Деньги получены?» и 2 и присвойте значение «Да». Аналогично для стрелки соединяющей «Позиция имеется?» и «Закрепить позицию за заказом» присвоить «Да». Стрелке, соединяющей «Позиция имеется?» и «Поставить заказ в ожидание» - «Нет».
19. Добавить элементарные действия (Actions) к активности “Проверить позицию заказа», В поле Name ввести «Просмотреть спецификацию к заказу». Действие Do - «Найти новую позицию». Действие Exit (выход) - «Передать результаты поиска».
20. Путем перемещения объектов (установить курсор мыши- нажать- тащить-отпустить) привести диаграмму к виду, показанному на рисунке 6.
Рисунок 6 - Диаграмма активности для варианта использования «Выполнить поставку заказа»
Задание 2.Создайте диаграмму активности для процесса управления работой двигателя
1. Создайте диаграмму активности, введите название диаграммы, например «Activity
2. С помощью значков и создайте начало и конец диаграммы соответственно. Назовите их «Начало работы» и «Конец работы». Для этого двойным щелчком левой кнопки мыши откройте спецификацию и в поле Name введите название. Нажмите ОК
3. С помощью значка создайте активность и двойным щелчком левой кнопкой мыши по изображению активности откройте спецификацию и в поле Name введите название «Таймер». Нажмите ОК.
4. Создайте синхронизацию с помощью значка на панели инструментов. Проведите переход значком от изображения таймера до синхронизации
5. Значком добавьте состояние и назовите его «Получение показаний давления масла», проведите состояние перехода от значка синхронизации к этому состоянию
6. Создайте решение «Давление масла в норме» с помощью значка . Проведите состояние перехода от состояния «Получение показаний давления масла» к решению «Давлениемасла в норме»
7. Сохраните диаграмму [File] – [Save] или нажав значок на панели управления
8. Добавьте 2 активности и назовите их «Выдача результатов на бортовой компьютер» и «Выдача сообщения низком давлений масла». Соедините эти активности со значком «Конец работы»
9. Проведите 2 состояние перехода от решения «Давление масла в норме» до активностей созданных в пункте 11. Состояние перехода от решения «Давление масла в норме» до активности «Выдача результатов на бортовой компьютер» назовите «Да», а другое – «Нет»
10. Создайте состояние «Получение показаний напряжения аккумулятора» и проведите состояние перехода от значка синхронизации к этому состоянию
11. Создайте решение и назовите его «Напряжение аккумулятора в норме». Проведите состояние перехода от состояния «Получение показаний напряжения аккумулятора» к созданному решению
12. Добавьте 2 активности «Выдача сообщения о необходимости зарядки аккумулятора» и «Выдача показаний измерений». От решения «Напряжение аккумулятора в норме» проведите 2 состояния перехода к этим активностям. Состояние перехода от решения к активности «Выдача сообщения о необходимости зарядки аккумулятора» назовите «Нет», а другое – «Да»
13. Проведите состояния перехода от активностей «Выдача сообщения о необходимости зарядки аккумулятора» и «Выдача показаний на бортовой компьютер» к значку «Конец работы»
14. Создайте 3 состояния и назовите их «Получение показаний температуры двигателя», «Получение показаний расхода топлива» и «Получение показаний частоты вращения коленчатого вала». Проведите состояния перехода от значка синхронизации к этим состояниям
15. Создайте решение и назовите его «Температура двигателя в норме». Проведите состояние перехода от состояния «Получение показаний температура двигателя» к созданному решению
16. Добавьте 2 активности «Включение вентилятора охлаждения/ повышение частоты вращения коленчатого вала двигателя» и «Выдача показаний температуры двигателя». От решения «Температура двигателя в норме» проведите 2 состояния перехода к этим активностям. Состояние перехода от решения к активности «Включение вентилятора охлаждения/ повышение частоты вращения коленчатого вала двигателя» назовите «Нет», а другое – «Да»
17. Проведите состояния перехода от активностей «Включение вентилятора охлаждения/ повышение частоты вращения коленчатого вала двигателя» и «Выдача показаний температуры двигателя» к значку «Конец работы»
18. Создайте решение и назовите его «Расход топлива в норме». Проведите состояние перехода от состояния «Получение показаний расхода топлива» к созданному решению.
19. Добавьте 2 активности «Выдача сообщения о повышенном расходе топлива» и «Выдача показаний расхода топлива». От решения «Расход топлива в норме» проведите 2 состояния перехода к этим активностям. Состояние перехода от решения к активности «Выдача сообщения о повышенном расходе топлива» назовите «Нет», а другое – «Да»
20. Проведите состояния перехода от активностей «Выдача сообщения о повышенном расходе топлива» и «Выдача показаний расхода топлива» к значку «Конец работы».
21. Создайте решение и назовите его «Частота вращения коленчатого вала в норме». Проведите состояние перехода от состояния «Получение показаний частоты вращения коленчатого вала» к созданному решению.
22. Добавьте 2 активности «Выдача сообщения о повышенной частоте вращения коленчатого вала/ повышение частоты вращения коленчатого вала» и «Выдача показаний частоты вращения коленчатого вала». От решения «Частота вращения коленчатого вала в норме» проведите 2 состояния перехода к этим активностям. Состояние перехода от решения к активности «Выдача сообщения о повышенном расходе топлива» назовите «Нет», а другое – «Да»
23. Проведите состояния перехода от активностей «Выдача сообщения о повышенной частоте вращения коленчатого вала/ повышение частоты вращения коленчатого вала» и «Выдача показаний частоты вращения коленчатого вала» к значку «Конец работы». Диаграмма Activity для процесса управления двигателем готова.
Задание 3.Реализовать примеры из теоретической части
Контрольные вопросы:
1. Для чего может использоваться диаграмма Activity?
2. Для чего больше подходит Activitydiagram?
3. Какой инструмент который обозначает выполняемые задачи или выполнение определенных действий в течение жизни объекта?
4. Какой инструмент позволяет показать зависимость дальнейшей работы от внешних условий или решений?
5. Каково основное назначение (цели создания) диаграмм действий?
6. Почему для моделирования сложных систем необходимо использовать несколько видов диаграмм и моделей?
7. Каково назначение и цели создания языка UML?
8. Чем обусловлено многообразие UML-диаграмм?
9. Чем обусловлена необходимость построения моделей различных видов при описании предметной области?
Дата добавления: 2021-07-22; просмотров: 906;