Моделирования uml


Download 1.84 Mb.
Pdf ko'rish
bet74/115
Sana16.06.2023
Hajmi1.84 Mb.
#1489923
1   ...   70   71   72   73   74   75   76   77   ...   115
Bog'liq
ivanov novikov unificirovannii jazik modelirovanija uml 2011


разделяются 
запятыми). Поэтому формальные свойства машины состояний UML 
трудно проверить автоматически (в отличие от абстрактных конечных 
автоматов). 
С 
другой 
стороны, 
машины 
состояний 
UML 
выразительны 
и 
наглядны — многочисленные 
синтаксические 
добавления позволяют моделировать сложное поведение компактно и 
красиво. 


138
4.2.3. Сегментированные переходы 
В UML предусмотрены синтаксические средства, до некоторой 
степени, 
облегчающие 
семантически 
правильное 
построение 
сторожевых условий за счет более наглядного их изображения. 
Таковыми являются: 
- сегментированные 
переходы, 
реализуемые 
с 
помощью 
переходных состояний и состояний выбора; 
- предикат 
else

Сегменты перехода (transition segment) — это части, на 
которые может быть разбита линия перехода.
Разбивающими элементами являются следующие фигуры: 
- переходное состояние (junction state) (изображается в виде 
небольшого кружка); 
состояние выбора (choice) (изображается в виде ромба); 
действия посылки и приема сигнала, изображаются в виде 
флажков. 
Сегментирование перехода применяется в UML в нескольких 
ситуациях. Здесь мы рассматриваем их в связи со сторожевыми 
условиями, а прочие случаи опишем в соответствующем контексте. 
Несколько переходов, исходящих из данного состояния и 
имеющих общее событие перехода, можно объединить в дерево 
сегментированных переходов следующим образом. Имеется один 
сегмент перехода, который начинается в исходном состоянии и 
заканчивается в переходном состоянии или состоянии выбора. Далее 
из этого переходного состояния или состояния выбора начинаются 
другие сегменты, которые заканчиваются в целевых состояниях или 
новых переходных состояниях или состояниях выбора. Сегмент 
перехода, начинающийся в исходном состоянии, называется 
корневым, сегменты, заканчивающиеся в целевых состояниях, 
называются листовыми. Событие перехода может быть указано 
только для корневого сегмента, действия на переходе могут быть 


139
указаны только для листовых сегментов, а сторожевые условия могут 
быть указаны для любых сегментов. Такое дерево сегментированных 
переходов семантически эквивалентно множеству простых переходов, 
которое получится, если рассмотреть все пути из исходного 
состояния в целевые состояния, считая встречающиеся на пути 
сторожевые 
условия 
соединенными 
конъюнкцией 
(то 
есть, 
соединенными логической связкой "И").
Замысловатое определение предыдущего абзаца не таит в себе 
ничего необычного или нового. Покажем это на примере из 
информационной системы отдела кадров.
ИЗМЕНЕНИЯ В ТЕХНИЧЕСКОМ ЗАДАНИИ 
При увольнении сотрудника с предприятия, в зависимости от 
причины, следует разделять три случая:
1) увольнение сотрудника по собственному желанию, 
2) увольнение сотрудника по инициативе администрации в 
связи с нарушением сотрудником условий договора между ним и 
предприятием, 
3) вынужденное увольнение сотрудника в связи с проблемами, 
от сотрудника не зависящими. При этом подразумевается обратное 
зачисление в штат при первой возможности. 
Для реализации этих требований введем три различных 
состояния для уволенных с предприятия:
1. Unemployed
— работник, уволившийся по собственному 
желанию, повторный прием которого должен проходить на общих 
основаниях.
2. Non grata
— скандалист, 
бездельник 
и 
нарушитель 
трудовой дисциплины, уволенный по инициативе администрации, 
которого ни при каких обстоятельствах нельзя нанимать на работу; 
3. Welcome back
— хороший 
работник, 
с 
которым 
администрации пришлось расстаться ввиду временных трудностей, 


140
переживаемых предприятием, и которого при первой возможности 
следует пригласить обратно. 
На рис. 4.3 представлен соответствующий фрагмент диаграммы 
состояний, в котором дерево сегментированных переходов построено 
с использованием переходных состояний (1). 
Рис. 4.3. Дерево сегментированных переходов 
Продолжим рассмотрение данного примера. Известно, что 
условия увольнения 
adm
и 
self
взаимно исключают друг друга, и 
одно из них при увольнении обязательно имеет место. Для этого 
используется ключевое слово 
else
, которое обозначает условие, 
считающееся истинным во всех случаях, когда ложны все другие 
условия, 
приписанные 
к 
альтернативным 
сегментам. 
Чтобы 
подчеркнуть альтернативность условий, мы использовали состояния 
выбора (1 на рис. 4.4). В результате описание сложной системы 
условий становится нагляднее и надежное. Таким образом, фрагмент 
диаграммы состояний на рис. 4.3 семантически эквивалентен 
фрагменту на рис. 4.4. При этом совершенно ясно (и это нетрудно 
проверить автоматически), что система условий на рис. 4.4 полна и 
дизъюнктивна.


141
Рис. 4.4. Использование предиката else 
Подводя итог обсуждению сторожевых условий, еще раз 
подчеркнем, что сегментированные переходы, реализованные через 
переходные состояния или состояния выбора, ничего не добавляют 
(и не убавляют) в семантике модели: это просто синтаксические 
обозначения, введенные для удобства и наглядности. Ту же самую 
семантику, которую имеют фрагменты диаграмм состояний на 
рис. 4.3 и рис. 4.4, можно передать с помощью фрагмента, 
приведенного на рис. 4.5. 
Рис. 4.5. Множество простых переходов с одним событием перехода и 
различными сторожевыми условиями 


142

Download 1.84 Mb.

Do'stlaringiz bilan baham:
1   ...   70   71   72   73   74   75   76   77   ...   115




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling