Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Жизненный цикл программного обеспечения. Лабораторный практикум

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
точнике (не путать с начальным состоянием – это разные понятия), а после его срабатывания объект находится в последующем по отно­шению к нему состоянии (целевом состоянии).
Переход осуществляется при наступлении некоторого события: окончания выполнения деятельности (do activity), получения объек­том сообщения или приема сигнала. На переходе указывается имя события. Кроме того, на переходе могут
указываться действия, про­изводимые объектом в ответ на внешние события при переходе из одного состояния в другое. Срабатывание перехода может зависеть не только от наступления некоторого события, но и от выполнения опре­деленного условия, называемого сторожевым условием. Объект пе­рейдет из одного состояния в другое в том случае, если произошло указанное событие и сторожевое условие приняло значение «истина».
На диаграмме состояний переход изображается сплошной линией со стрелкой, которая направлена в целевое состояние (например, «выход из строя» на рис. 8.1). Каждый переход может быть помечен строкой текста, которая имеет следующий общий формат:
<сигнатура события>'['<сторожевое условие>']' <выражение дей­ствия>
При этом сигнатура
события описывает некоторое событие с не-
обходимыми аргументами:
<имя события>'('<список параметров, разделенных запятыми>')'
Событие представляет собой спецификацию некоторого факта, имеющего место в пространстве и во времени. Про события говорят, что они «происходят», при этом отдельные события должны быть упорядочены во времени. После наступления некоторого события нельзя уже вернуться к
предыдущим событиям, если такая возмож-
ность не предусмотрена явно в модели.
В языке UML события играют роль стимулов, которые иниции­руют переходы из одних состояний в другие. В качестве событий можно рассматривать сигналы, вызовы, окончание фиксированных промежутков времени или моменты окончания выполнения опреде­ленных действий. Имя события идентифицирует каждый отдельный переход
на диаграмме состояний и может содержать строку текста, начинающуюся со строчной буквы. В этом случае принято считать переход триггерным переходом, т.е. таким, который специфицирует событие-триггер. Например, переходы на рис. 8.1 являются триггер­ными, поскольку с каждым из них связано некоторое событие-
81
триггер, происходящее асинхронно в момент выхода из строя техни­ческого устройства или в момент окончания его ремонта.
Если рядом со стрелкой перехода не указана никакая строка тек­ста, то соответствующий переход является нетриггерным, и в этом случае из контекста диаграммы состояний должно быть ясно, после окончания какой деятельности он срабатывает. После
имени события могут следовать круглые скобки для явного задания параметров со­ответствующего события-триггера. Если таких параметров нет, то список параметров со скобками может отсутствовать.
Сторожевое условие (guard condition), если оно есть, всегда запи­сывается в прямых скобках после события-триггера и представляет собой некоторое булевское выражение. Сторожевое условие опреде­ляется в
свойствах (properties) соответствующего перехода.
Выражение действия (action expression) выполняется в том и только в том случае, когда переход срабатывает, и представляет со­бой атомарную операцию (достаточно простое вычисление), выпол­няемую сразу после срабатывания соответствующего перехода до начала каких бы то ни было действий в целевом состоянии. Атомар­ность действия означает, что оно не может
быть прервано никаким другим действием до тех пор, пока не закончится его выполнение. Данное действие может оказывать влияние как на сам объект, так и на его окружение, если это с очевидностью следует из контекста мо­дели. Выражение записывается после знака «/» в строке текста, при­соединенной к соответствующему переходу. Выражение действия записывается в свойстве Effects соответствующего перехода.
8.2. Порядок выполнения работы
5. Запустите StarUML (иконка на рабочем столе). На экране появится окно среды StarUMLNew 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
-