Основы программирования

Основы UML - Заключительные рекомендации по построению диаграмм состояний
Индекс материала
Основы UML
Класс
Имя класса
Атрибуты класса
Операция
Отношения между классами
Отношение ассоциации
Отношение агрегации
Отношение композиции
Отношение обобщения
Интерфейсы .
Шаблоны или параметризованные классы
Рекомендации по построению диаграмм классов
Диаграмма состояний (statechart diagram)
Автоматы
Состояние
Список внутренних действий
Начальное состояние
Переход
Сторожевое условие
Выражение действия
Составное состояние и подсостояние
Параллельные подсостояния
Историческое состояние
Сложные переходы
Переходы между составными состояниями
Синхронизирующие состояния
Заключительные рекомендации по построению диаграмм состояний
Диаграмма деятельности (activity diagram)
Состояние действия
Переходы
Дорожки
Объекты
Рекомендации по построению диаграмм деятельности
Диаграмма последовательности (sequence diagram)
Объекты
Линия жизни объекта
Фокус управления
Сообщения
Ветвление потока управления
Стереотипы сообщений
Комментарии или примечания
Заключительные рекомендации по построению диаграмм последовательности
Диаграмма кооперации (collaboration diagram)
Кооперация
Диаграмма кооперации уровня спецификации
Объекты
Мультиобъект
Составной объект
Стереотипы связей
Формат записи сообщений
Заключительные рекомендации по построению диаграмм кооперации
Диаграмма компонентов (component diagram)
Компоненты
Интерфейсы
Зависимости
Рекомендации по построению диаграммы компонентов
Диаграмма развертывания (deployment diagram)
Узел
Соединения
Рекомендации по построению диаграммы развертывания
Особенности реализации языка UML
характеристика CASE-средства Rational Rose 98/2000
Особенности рабочего интерфейса Rational Rose
Стандартная панель инструментов
Специальная панель инструментов
Окно диаграммы
Окно документации
Окно журнала
Начало работы над проектом в среде Rational Rose
Разработка диаграммы вариантов использования в среде Rational Rose
Разработка диаграммы классов в среде Rational Rose
Разработка диаграммы состояний в среде Rational Rose
Разработка диаграммы последовательности в среде Rational Rose
Разработка диаграммы кооперации в среде Rational Rose
Разработка диаграммы компонентов в среде Rational Rose
Разработка диаграммы развертывания в среде Rational Rose
Заключение
Все страницы


6.7. Заключительные рекомендации по построению диаграмм состояний

Основные особенности построения диаграмм состояний были рассмотрены при описании соответствующих модельных элементов, входящих в пакет Автоматы. Однако некоторые моменты не нашли отражения, о чем необходимо сказать в заключение этой главы.
По своему назначению диаграмма состояний не является обязательным представлением в модели и как бы «присоединяется» к тому элементу, который, по замыслу разработчиков, имеет нетривиальное поведение в течение своего жизненного цикла. Наличие у системы нескольких состояний, отличающихся от простой дихотомии «исправен – неисправен», «активен – неактивен», «ожидание – реакция на внешние действия», уже служит признаком необходимости построения диаграммы состояний. В качестве начального варианта диаграммы состояний, если нет очевидных соображений по поводу состояний объекта, можно воспользоваться этими суперсостояниями, рассматривая их как составные и уточняя их (детализируя их внутреннюю структуру) по мере рассмотрения логики поведения объекта.
При выделении состояний и переходов следует помнить, что длительность срабатывания отдельных переходов должна быть существенно меньшей, чем нахождение моделируемого объекта в соответствующих состояниях. Каждое из состояний должно характеризоваться определенной устойчивостью во времени. Другими словами, из каждого состояния на диаграмме не может быть самопроизвольного перехода в какое бы то ни было другое состояние. Все переходы должны быть явно специфицированы, в противном случае построенная диаграмма состояний является либо неполной, либо ошибочной.
При разработке диаграммы состояний нужно постоянно следить, чтобы объект в каждый момент мог находиться только в единственном состоянии. Если это не так, то данное обстоятельство может быть как следствием ошибки, так и неявным признаком наличия параллельности у поведения моделируемого объекта. В последнем случае следует явно специфицировать необходимое число подавтоматов, вложив их в то составное состояние, которое характеризуется нарушением условия одновременности.
Следует обязательно проверять, что никакие два перехода из одного состояния не могут сработать одновременно (требование отсутствия конфликтов у переходов). Наличие такого конфликта может служить признаком ошибки либо неявной параллельности типа ветвления рассматриваемого процесса на два и более подавтомата. Если параллельность по замыслу разработчика отсутствует, то необходимо ввести дополнительные сторожевые условия либо изменить существующие, чтобы исключить конфликт переходов. При наличии параллельности следует заменить конфликтующие переходы одним параллельным переходом типа ветвления.
Использование исторических состояний оправдано в том случае, когда необходимо организовать обработку исключительных ситуаций (прерываний) без потери данных или выполненной работы. При этом применять исторические состояния, особенно глубокие, надо с известной долей осторожности. Нужно помнить, что каждый из подавтоматов может иметь только одно историческое состояние. В противном случае возможны ошибки, особенно когда подавтоматы изображаются на отдельных диаграммах состояний.
И, наконец, следует отметить, что некоторые дополнительные конструкции автоматов, такие как точки динамического выбора (dynamic choice points) или точки соединения (junction points), в книге не нашли отражения. Это сделано по той причине, что данные модельные элементы хотя и позволяют моделировать более сложные аспекты динамического управления поведением объекта, не являются базовыми. Соответствующая информация содержится в оригинальной документации по языку UML.