Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Proektirovanie_1.doc
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
601.6 Кб
Скачать

6Иерархические диаграммы состояний

Одним из недостатков плоских диаграмм состояний является чрезмерно большое число состояний и переходов, в результате диаграммы становятся громоздкими и их трудно читать. Применение условий, действий при входе и выходе и деятельностей позволяет сделать диаграмму менее громоздкой, но этого часто недостаточно. Принципиально иной способ упростить диаграммы и одновременно повысить степень их выразительности связан с введением в рассмотрение надсостояний и иерархической декомпозиции диаграмм. При таком подходе надсостояние на некотором уровне диаграммы раскладывается на несколько подсостояний, принадлежащих более низким уровням.

6.1 Иерархическая декомпозиция состояний

Существенного упрощения диаграмм состояний можно достичь за счет использования иерархической декомпозиции состояний, когда надсостояние раскладывается на одно или несколько взаимосвязанных подсостояний. Иногда такую операцию называют декомпозицией ИЛИ, так как пребывание в некотором надсостояний означает, что диаграмма находится в одном и только одном из его подсостояний. Нотация позволяет показать надсостояние и подсостояния на одной или нескольких диаграммах в зависимости от уровня сложности.

В иерархической диаграмме надсостояние изображается в виде внешнего прямоугольника с закругленными углами, в левом верхнем углу которого записывается имя надсостояния. Подсостояния изображаются внутренними прямоугольниками с закругленными углами

6.2 Агрегирование переходов состояний

Нотация иерархических диаграмм состояний позволяет также агрегировать переходы из всех подсостояний в переход из надсостояния. Разумное применение этой возможности способствует значительному уменьшению числа переходов в диаграмме.

7 Параллельные диаграммы состояний

Поддерживается также еще один вид иерархических диаграмм состояний -декомпозиция И, позволяющая разложить одно состояние на два или более параллельных подсостояний. Два параллельных подсостояния отделяются друг от друга пунктирной линией. Рассмотрим случай надсостояния на диаграмме, разложенной на две параллельные Диаграммы более низкого уровня. Когда диаграмма верхнего уровня находится в надсостоянии, она одновременно находится в некотором подсостояний первой диаграммы нижнего уровня и в некотором подсостояний второй диаграммы нижнего уровня.

Название «параллельные диаграммы» наводит на мысль о том, что в объекте, описываемом диаграммой состояний, протекает некая параллельная деятельность, Но это необязательно: декомпозиция И удобна для показа различных аспектов одного объекта, которые могут и не быть параллельными. Для обозначения параллельной диаграммы, на которой изображены состояния, относящиеся к различным сторонам функционирования объекта, применяется термин ортогональная диаграмма состояний. В методе COMET термин параллельная диаграмма состояний зарезервирован для случаев, когда в объекте действительно имеет место какая-то форма параллелизма Проектирование объектов с одним потоком управления проще, для отражения параллелизма следует использовать несколько параллельно исполняемых объектов. Поэтому нотация параллельных диаграмм рекомендуется для изображения ортогональных диаграмм, показывающих различные аспекты объекта, но не параллелизм внутри него. Если же необходимо отразить именно параллелизм, удобнее взять два отдельных объекта и для каждого определить собственную диаграмму состояний.

8 Рекомендации по разработке диаграмм состояний

Следующие рекомендации относятся и к плоским, и к иерархическим диаграммам, если не оговорено

противное:

- имя состояния должно отражать такую ситуацию или такой промежуток времени, когда в системе что-то происходит. Поэтому имя часто бывает существительным или прилагательным (например, Начало или Начальное) либо глаголом в третьем лице (Лифт Движется). Не следует употреблять для именования состояний глаголы в неопределенной форме (например, Двигать Лифт);

- в пределах одной диаграммы имена всех состояний должны различаться. Наличие двух состояний с одним и тем же именем приводит к неоднозначности. Теоретически подсостояния разных надсостоянии могут иметь одинаковые имена, но на практике это влечет за собой недоразумения, которых лучше избегать;

-из каждого состояния должен быть выход. Очень часто встречаются диаграммы, в которых нет конечного состояния;

- плоская диаграмма в любой момент времени находится только в одном состоянии. Два состояния, например Лифт Движется и Лифт на Этаже, не могут быть активными одновременно. Одно состояние должно следовать за другим;

-для иерархических диаграмм применимы следующие правила:

-если речь идет о последовательной иерархической диаграмме (декомпозиция ИЛИ), то пребывание в некотором надсостоянии означает пребывание в одном и только одном из его подсостояний;

-если используется параллельная иерархическая диаграмма (декомпозиция И), то пребывание в некотором надсостоянии означает пребывание в одном из подсостояний каждой диаграммы нижнего уровня; а не следует путать события и действия. Событие - это причина перехода состояний, а действие - его следствие;

  • событие происходит в некоторый момент времени. Имя события должно пояснять, что именно произошло, например: Вызов Вверх, Дверь Закрылась;

  • действие - это команда, допустим: Остановить, Закрыть Дверь, Поддерживать Скорость; -действие выполняется мгновенно. Деятельность продолжается все время, пока диаграмма находится в данном состоянии;

-с одним переходом состояний может быть ассоциировано несколько действий. Концептуально все эти действия выполняются одновременно, поэтому нельзя говорить о порядке их выполнения. Следовательно, между действиями не может быть никаких зависимостей. Если же зависимость существует, то необходимо ввести промежуточное со стояние;

-условие - это булевское значение. Если переход помечен конструкцией событие [условие], то он происходит только тогда, когда в момент возникновения события условие истинно. Условие остается истинным на протяжении конечного промежутка времени. Переход Разогнаться [Торможения Нет] предназначен специально для того, чтобы предотвратить смену состояния в случае, если в момент возникновения события Разогнаться нажата педаль тормоза; действия, деятельности и условия необязательны. Используйте их только при необходимости.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]