Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Жизненный цикл программного обеспечения. Лабораторный практикум
.pdf
точнике (не путать с начальным состоянием – это разные понятия), а
после его срабатывания объект находится в последующем по отношению к нему состоянии (целевом состоянии).
Переход осуществляется при наступлении некоторого события:
окончания выполнения деятельности (do activity), получения объектом сообщения или приема сигнала. На переходе указывается имя
события. Кроме того, на переходе могут
указываться действия, производимые объектом в ответ на внешние события при переходе из
одного состояния в другое. Срабатывание перехода может зависеть не
только от наступления некоторого события, но и от выполнения определенного условия, называемого сторожевым условием. Объект перейдет из одного состояния в другое в том случае, если произошло
указанное событие и сторожевое условие приняло значение «истина».
На диаграмме состояний переход изображается сплошной линией
со стрелкой, которая направлена в целевое состояние (например,
«выход из строя» на рис. 8.1). Каждый переход может быть помечен
строкой текста, которая имеет следующий общий формат:
<сигнатура события>'['<сторожевое условие>']' <выражение действия>
При этом сигнатура
события описывает некоторое событие с не-
обходимыми аргументами:
<имя события>'('<список параметров, разделенных запятыми>')'
Событие представляет собой спецификацию некоторого факта,
имеющего место в пространстве и во времени. Про события говорят,
что они «происходят», при этом отдельные события должны быть
упорядочены во времени. После наступления некоторого события
нельзя уже вернуться к
предыдущим событиям, если такая возмож-
ность не предусмотрена явно в модели.
В языке UML события играют роль стимулов, которые инициируют переходы из одних состояний в другие. В качестве событий
можно рассматривать сигналы, вызовы, окончание фиксированных
промежутков времени или моменты окончания выполнения определенных действий. Имя события идентифицирует каждый отдельный
переход
на диаграмме состояний и может содержать строку текста,
начинающуюся со строчной буквы. В этом случае принято считать
переход триггерным переходом, т.е. таким, который специфицирует
событие-триггер. Например, переходы на рис. 8.1 являются триггерными, поскольку с каждым из них связано некоторое событие-
81

триггер, происходящее асинхронно в момент выхода из строя технического устройства или в момент окончания его ремонта.
Если рядом со стрелкой перехода не указана никакая строка текста, то соответствующий переход является нетриггерным, и в этом
случае из контекста диаграммы состояний должно быть ясно, после
окончания какой деятельности он срабатывает. После
имени события
могут следовать круглые скобки для явного задания параметров соответствующего события-триггера. Если таких параметров нет, то
список параметров со скобками может отсутствовать.
Сторожевое условие (guard condition), если оно есть, всегда записывается в прямых скобках после события-триггера и представляет
собой некоторое булевское выражение. Сторожевое условие определяется в
свойствах (properties) соответствующего перехода.
Выражение действия (action expression) выполняется в том и
только в том случае, когда переход срабатывает, и представляет собой атомарную операцию (достаточно простое вычисление), выполняемую сразу после срабатывания соответствующего перехода до
начала каких бы то ни было действий в целевом состоянии. Атомарность действия означает, что оно не может
быть прервано никаким
другим действием до тех пор, пока не закончится его выполнение.
Данное действие может оказывать влияние как на сам объект, так и
на его окружение, если это с очевидностью следует из контекста модели. Выражение записывается после знака «/» в строке текста, присоединенной к соответствующему переходу. Выражение действия
записывается в свойстве Effects соответствующего перехода.
8.2. Порядок выполнения работы
5. Запустите StarUML (иконка на рабочем столе). На экране
появится окно среды StarUML – New Project By Approach с требованием указать подход к моделированию. Здесь надо выбрать иконку
Rational Approach и нажать на кнопку OK (см. рис. 6.8).
6. В пункте меню Model выберите подпункт Add и затем Model,
как показано на рис. 6.9.
7. В пункте меню
Statechart Diagram, как показано на рис. 8.5.
8. Создайте диаграмму состояний для системы управления банко-
матом, как показано на рис. 8.6.
Диаграмма состояний системы управления банкоматом содержит
12 состояний и 20 триггерных переходов (рис. 8.6).
82
Model выберите подпункт Add Diagram и затем

Рис. 8.5. Выбор диаграммы состояний
83

Ожидание
ПИН-кода
отмена транзакции
[ ПИН-код нев ерны й ]
ПИН-код введен
Проверка ПИН-кода
[ ПИН-код верный ]
Ожида ние выбора
клиента
выбор суммы : [ сумма введена ]
отмена транзакции
выбор справки
Обработка
запроса на
получение
справки
карточка вставлена
три неудачи : / Конфискация карточки
отмена транзакции
Справка сформирована
[ кредит не превышен ]
банкомат включен
Ожида ние
карточки
[ прошло 5 секунд ]
карточка возвращена
Возврат
карточки
печа ть закончена
[ выбрана печать чека ]
банкомат выключен
[ печа ть чека не выбрана ]
Печать
Получение
наличны х
Завершение
транзакции
Обработка запроса
на снятие наличных
84
сообщение : [ кредит превышен ]
Рис. 8.6. Диаграмма состояний системы управления банкоматом

Создание состояния осуществляется с помощью иконки State, которая устанавливается в нужном месте в области диаграммы, после
чего указывается имя состояния, например «Ожидание карточки»:
Переход строится с помощью иконки Transition
С помощью свойства Name перехода задается сигнатура события.
С помощью свойства Guard Condition задается сторожевое условие,
с помощью свойства Effects
определяются действия при данном пе-
реходе.
8.3. Задание для самостоятельной работы
Создать диаграммы состояния для систем, указанных преподавателем.
85

Лабораторная работа 9
МОДЕЛИРОВАНИЕ ПОВЕДЕНИЯ БИЗНЕС-
ПРОЦЕССОВ И СИСТЕМ С ИСПОЛЬЗОВАНИЕМ
ДИАГРАММ ДЕЯТЕЛЬНОСТИ С ПОМОЩЬЮ
СРЕДЫ STARUML
Цель работы – изучение средств построения диаграмм деятель-
ности в среде StarUML, построение диаграммы деятельности системы управления банкоматом, разработка диаграмм деятельности для
варианта, предложенного преподавателем.
9.1. Основные понятия и определения
Для моделирования процесса выполнения операций в языке UML
используются так называемые диаграммы деятельности. Применяемая в них графическая нотация во многом похожа на нотацию диаграммы состояний, поскольку на диаграммах деятельности также
присутствуют обозначения состояний и переходов. Отличие заключается в семантике состояний, которые используются для представления не деятельностей, а действий
сигнатуры событий. Каждое состояние на диаграмме деятельности
соответствует выполнению некоторой элементарной операции, а переход в следующее состояние срабатывает только при завершении
этой операции в предыдущем состоянии. Графически диаграмма деятельности представляется в форме графа деятельности, вершинами
которого являются состояния действия, а дугами – переходы от
ного состояния действия к другому. Таким образом, диаграммы деятельности можно считать частным случаем диаграмм состояний.
Основным направлением использования диаграмм деятельности
является визуализация особенностей реализации операций классов,
когда необходимо представить алгоритмы их выполнения. При этом
каждое состояние может являться выполнением операции некоторого класса либо ее части, что позволяет использовать
тельности для описания реакций на внутренние события системы.
В контексте языка UML деятельность (activity) представляет собой некоторую совокупность отдельных вычислений, выполняемых
автоматом. При этом отдельные элементарные вычисления могут приводить к некоторому результату, или действию (action). На диаграмме
деятельности отображается логика, или последовательность, перехода
, и в отсутствии на переходах
од-
диаграммы дея-
86

от одной деятельности к другой, при этом внимание фиксируется на
результате деятельности. Сам же результат может привести к изменению состояния системы или возвращению некоторого значения.
Состояние действия (action state) является специальным случаем состояния с некоторым входным действием и по крайней мере одним выходящим из состояния переходом. Этот переход неявно предполагает
, что
входное действие уже завершилось. Состояние действия не может иметь
внутренних переходов, поскольку оно является элементарным. Обычное
использование состояния действия заключается в моделировании одного
шага выполнения алгоритма (процедуры), или потока управления.
Графически состояние действия изображается фигурой, напоминающей прямоугольник, боковые стороны которого заменены выпуклыми дугами (рис. 9.1). Внутри этой фигуры
записывается выражение действия (action-expression), которое должно быть уникальным в пределах одной диаграммы деятельности.
Activity1
Рис. 9.1. Графическое изображение состояния действия
на диаграмме деятельности
Примеры состояний действия представлены на рис. 9.2. Действие
может быть записано на естественном языке, некотором псевдокоде,
или языке программирования. Никаких дополнительных или неявных ограничений при записи действий не накладывается. Рекомендуется в качестве имени простого действия использовать глагол с пояснительными словами (рис. 9.2, а). Если же действие может быть
представлено в
некотором формальном виде, то целесообразно записать его на том языке программирования, на котором предполагается
реализовывать конкретный проект (рис. 9.2, б).
Разработан план
проекта
а) Простое действ ие
Рис. 9.2. Примеры состояний действия
index:=n
б) Выражение
87

Иногда возникает необходимость представить на диаграмме деятельности некоторое сложное действие, которое, в свою очередь, состоит из нескольких более простых действий. В этом случае можно
использовать специальное обозначение так называемого состояния
поддеятельности (subactivity state). Такое состояние является графом
деятельности и обозначается специальной пиктограммой в правом
нижнем углу символа состояния действия (рис. 9.3). Эта
конструкция
может быть применена к любому элементу языка UML, который поддерживает «вложенность» своей структуры. При этом пиктограмма
может быть дополнительно помечена типом вложенной структуры.
Изготовить продукт
Оформить заказ
Символ состояния поддеятельности
Рис. 9.3. Графическое изображение состояния поддеятельности
Каждая диаграмма деятельности должна иметь единственное начальное и единственное конечное состояния. Они имеют такие же
обозначения, как и на диаграмме состояний (см. рис. 8.4). При этом
каждая деятельность начинается в начальном состоянии и заканчивается в конечном состоянии. Саму диаграмму деятельности принято
располагать таким образом, чтобы действия следовали сверху вниз. В
этом случае начальное состояние будет изображаться в верхней части диаграммы, а конечное – в ее нижней части.
Переход как элемент языка UML был рассмотрен в лабораторной
работе 8. При построении диаграммы деятельности используются
только нетригерные переходы, т.е. такие, которые срабатывают сразу
после завершения деятельности или выполнения соответствующего
действия. Этот переход переводит
деятельность в последующее состояние сразу, как только закончится действие в предыдущем состоянии. На диаграмме такой переход изображается сплошной линией со стрелкой (рис. 9.4), создается он с помощью иконки Transition.
Если из состояния действия выходит единственный переход, то он
может быть не помечен. Если же таких переходов несколько, то сра
ботать может только один из них. В этом случае для каждого из таких переходов должно быть явно записано сторожевое условие
(Свойство GuardCondition для перехода) в квадратных скобках.
88
-

к
Действие 1
Действие 2
Рис. 9.4. Графическое изображение перехода
При этом для всех выходящих из некоторого состояния переходов
должно выполняться требование истинности только одного из них.
Подобный случай встречается тогда, когда последовательно выполняемая деятельность должна быть разделена на альтернативные ветви в зависимости от значения некоторого промежуточного результата. Такая ситуация получила название ветвления, а для ее обозначения
применяется специальный символ.
Графически ветвление на диаграмме деятельности обозначается
небольшим ромбом, внутри которого нет никакого текста (рис. 9.5).
Преобразоватьуравнение
каноническому виду
Вычислить дискриминант
Символ решения
[ дискриминант>=0 ]
GuardCondition
[ дискриминант<0 ]
Символ соединения
Вычислить корни
квадратного уравнения
Рис. 9.5. Фрагмент диаграммы деятельности для алгоритма нахождения
корней квадратного уравнения с использованием разветвления
89

В другом примере (рис. 9.6) рассчитывается общая стоимость товаров, покупаемых по кредитной карточке в супермаркете. Если эта
стоимость превышает $50, то выполняется аутентификация личности
владельца карточки. В случае положительной проверки (карточка
действительная) или если стоимость товаров не превышает $50, происходит снятие суммы со счета и оплата стоимости товаров. При отрицательном результате
(карточка недействительная) оплата не про-
изводится и товар остается у продавца.
Вычислить
общую
стоимость
това ров
[ стоимость >$50 ]
[ стоимость <=$50 ]
[ карточка дейст в ите льна ]
Оплатить
стоимость товара
кредитной
карточкой
Аутент ифиц иров а ть
личн ость владельца
кредитной карточки
[ карточка недействительна ]
Рис. 9.6. Различные варианты ветвлений на диаграмме деятельности
Один из наиболее значимых недостатков обычных блок-схем или
структурных схем алгоритмов связан с проблемой изображения параллельных ветвей отдельных вычислений. Поскольку распараллеливание вычислений существенно повышает общее быстродействие
программных систем, необходимы графические примитивы для
представления параллельных процессов. В языке UML для этой цели
используется специальный символ для разделения и слияния парал
лельных вычислений, или потоков управления. Таким символом является прямая черточка, аналогично обозначению перехода в формализме сетей Петри.
90
-
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
