Моделирования uml
Download 1.84 Mb. Pdf ko'rish
|
ivanov novikov unificirovannii jazik modelirovanija uml 2011
- Bu sahifa navigatsiya:
- 4.2.3. Сегментированные переходы
- Сегменты перехода
разделяются запятыми). Поэтому формальные свойства машины состояний 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. Множество простых переходов с одним событием перехода и различными сторожевыми условиями |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling