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


Download 1.84 Mb.
Pdf ko'rish
bet110/115
Sana16.06.2023
Hajmi1.84 Mb.
#1489923
1   ...   107   108   109   110   111   112   113   114   115
Bog'liq
ivanov novikov unificirovannii jazik modelirovanija uml 2011

Составной переход (compound transition) — это переход, 
который начинается и/или заканчивается в нескольких состояниях.
Если переход имеет одно исходное и несколько целевых 
состояний, то это соответствует разветвлению потока управления на 
несколько параллельных потоков; при этом целевые состояния 
должны быть вложенными состояниями областей ортогонального 
составного состояния — по одному на каждую область. 
Если переход имеет несколько исходных и одно целевое 
состояние, то это соответствует слиянию нескольких потоков 
управления в один; при этом исходные состояния должны быть 
вложенными состояниями областей ортогонального составного 
состояния — по одному на каждую область. 
Если переход имеет несколько исходных и несколько 
целевых состояний, то это соответствует синхронизации нескольких 
параллельных потоков управления; при этом исходные состояния 
должны 
быть 
вложенными 
состояниями 
областей 
одного 
ортогонального составного состояния — по одному на каждую 
область, и целевые состояния должны быть вложенными состояниями 
областей 
ортогонального 
составного 
состояния 
(возможно, 
другого) — также по одному на каждую область. 
В любом случае составной переход должен переводить машину 
состояний из одной допустимой конфигурации активных состояний в 
другую допустимую конфигурацию активных состояний, в противном 
случае модель синтаксически неправильна. Неформально говоря, это 
значит, что ортогональное составное состояние нельзя покинуть и 
нельзя войти в него "частично" — в составном переходе должны 
участвовать по одному "представителю" (по одному вложенному 
состоянию) от каждой области ортогонального составного состояния, 
участвующего в переходе. 


219
Составной переход может иметь событие и сторожевое условие. 
Как всегда, переход срабатывает, если произошло событие и 
выполнено условие. При этом, для того чтобы сработал переход, 
имеющий несколько исходных состояний, необходимо, чтобы все они 
были активны при наступления события. 
Приведем пример из информационной системы отдела кадров. 
Рассмотрим тот же пример, что был использован при описании 
последовательных простых и составных состояний, а именно 
жизненный цикл сотрудника на предприятии. Диаграмма автомата 
сотрудника в информационной системе отдела кадров приведена на 
рис. 4.46. 
Рис. 4.46. Диаграмма автомата сотрудника ИС ОК 
Рассмотрим состояние "работающий сотрудник" (на диаграммах 
обозначается 
Employed
). Очевидно, 
что 
данное 
составное 
состояние — самое важное для системы и должно быть рассмотрено с 
наибольшей степенью подробности. Мы уже выделили некоторые 
вложенные состояния (см. рис. 4.8): сотрудник может находиться в 
офисе (
In office
), болеть (
Illness
) или быть в отпуске 


220
(
On vacation
). Но параллельно с этим набором состояний, 
описывающим статус сотрудника в смысле присутствия на рабочем 
месте, сотрудник переживает и другие смены состояний, связанные с 
его статусом на предприятии (см. рис. 4.10).
ИЗМЕНЕНИЯ В ТЕХНИЧЕСКОМ ЗАДАНИИ 
 
После успешного выполнения задания на испытательном сроке 
сотрудник либо зачисляется в штат, либо становится внештатным 
сотрудником.
К состояниям On trial (сотрудник проходит испытательный 
срок) и On staff (сотрудник состоит в штате), определенным на 
рис. 4.10, следует добавить еще одно — Contractor, означающее, что 
сотрудник работает по контракту (по трудовому соглашению на 
определенный срок). Ясно, что смена этих состояний не зависит 
(формально) от смены состояний из первого списка и, таким образом, 
образует 
ортогональную 
машину 
состояний. 
На 
рис. 4.47 
представлено составное состояние Employed (пока без внешних 
переходов), а внутренние переходы в каждой машине мы определили 
с помощью нескольких операции: go() и goBack() для первого набора 
состояний и promote() для второго. Для этих операции в качестве 
параметра указывается состояние, в которое нужно перейти.
Рассмотрим теперь переходы. При первом приеме на работу 
сотрудник должен пройти испытательный срок и в первый день 
работы должен быть в офисе. Поэтому переходы из соответствующих 
начальных состояний (1 и 2 на рис. 4.47) областей машины состояний 
ведут в состояния 
In office
и 
On trial
. Таким образом, внешний 
переход из состояния 
Applicant
можно провести в состояние 
Employed
как простой переход (1 на рис. 4.48) по событию 
hire()

С другой стороны, переход из состояния 
Unemployed
, не должен 
приводить к новому испытательному сроку. 


221
Рис. 4.47. Ортогональное составное состояние 
Employed
В таком случае переход по событию 
hire()

Download 1.84 Mb.

Do'stlaringiz bilan baham:
1   ...   107   108   109   110   111   112   113   114   115




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