- •4. Объектно-ориентированное проектирование, основы uml
- •4.1 Значение моделирования
- •4.2 Принципы моделирования
- •4.3 Объектное моделирование
- •4.4 Принципы моделирования с использованием uml
- •4.5 Основные диаграммы языка uml
- •4.6 Сущности uml
- •4.7 Отношения uml
- •5. Диаграмма классов и моделирование предметной области
- •5.1 Общие сведения
- •5.2 Класс
- •5.3 Имя класса
- •5.4 Атрибуты класса
- •5.5 Операции класса
- •5.6 Отношения между классами
- •5.7 Отношение зависимости
- •5.8 Зависимость между пакетами
- •5.9 Отношение ассоциации
- •5.10 Отношение агрегации
- •5.11 Отношение композиции
- •5.12 Отношение обобщения
- •5.13 Рекомендации по построению диаграммы классов
- •6. Диаграмма состояний
- •6.1 Общие сведения
- •6.2 Автоматы
- •6.3 Состояние
- •6.4 Начальное и конечное состояния
- •6.5 Переход
- •6.6. Составное состояние и подсостояние
- •6.7. Параллельные подсостояния
- •6.8 Рекомендации
- •7 Диаграмма деятельности
- •7.1 Общие сведения
- •7.2 Состояние действия и состояние деятельности
- •7.3 Переход
- •7.4 Ветвление
- •7.5. Разделение и слияние
- •7.6 Дорожки
- •7.7. Объекты
- •7.8. Рекомендации по построению диаграмм деятельности
- •8. Моделирование взаимодействия объектов. Диаграммы последовательности и кооперации (коммуникации)
- •8.1 Диаграмма последовательности, общие сведения
- •8.2 Объекты
- •8.3 Линия жизни объекта
- •8.4 Фокус управления
- •8.5 Сообщения
- •8.6 Ветвление потока управления
- •8.7 Стереотипы сообщений
- •8.8 Временные ограничения
- •8.9 Пример построения диаграммы последовательности
- •8.10. Рекомендации по построению диаграмм последовательности
- •8.11 Общие сведения о диаграмме кооперации (коммуникации)
- •8.12 Кооперация
- •8.13 Объекты
- •8.14 Мультиобъекты
- •8.15. Активные объекты
6.7. Параллельные подсостояния
Параллельные подсостояния (concurrent substates)позволяют специфицировать два и более подавтомата, которые могут выполняться параллельно внутри составного события. Каждый из подавтоматов занимает некоторую область (регион) внутри составного состояния, которая отделяется от остальных горизонтальной пунктирной линией. Если на диаграмме состояний имеется составное состояние с вложенными параллельными подсостояниями, то объект может одновременно находиться в каждом из этих подсостояний.
Однако отдельные параллельные подсостояния могут, в свою очередь, состоять из нескольких последовательных подсостояний (подавтоматы 1 и 2 на рис. 6.6). В этом случае по определению объект может находиться только в одном из последовательных подсостояний подавтомата.Таким образом, для примера, приведенного на рис. 6.6, допустимо одновременное нахождение объекта в подсостояниях (1, 3, 4), (2, 3, 4), (1, 3, 5), (2, 3, 5). Недопустимо нахождение объекта одновременно в подсостояниях (1, 2, 3) или (3, 4, 5).
Рисунок6.6. Графическое изображение составного состояния с вложенными параллельными подсостояниями
Поскольку каждый регион вложенного состояния специфицирует некоторый подавтомат, то для каждого из вложенных подавтоматов могут быть определены собственные начальное и конечные подсостояния, как показано на рис. 6.6. При переходе в данное составное состояние каждый из подавтоматов оказывается в своем начальном подсостояний. Далее происходит параллельное выполнение каждого из этих подавтоматов, причем выход из составного состояния будет возможен лишь в том случае, когда все подавтоматы будут находиться в своих конечных подсостояниях.
Если какой-либо из подавтоматов пришел в свое конечное состояние раньше других, то он должен ожидать, пока и другие подавтоматы не придут в свои конечные состояния.
В некоторых случаях бывает желательно скрыть внутреннюю структуру составного состояния. Например, отдельный подавтомат, специфицирующий составное состояние, может быть настолько большим по масштабу, что его визуализация затруднит общее представление диаграммы состояний. В подобной ситуации допускается не раскрывать на исходной диаграмме состояний данное составное состояние, а указать в правом нижнем углу специальный символ-пиктограмму, как показано на рис. 6.7.
Рисунок 6.7. Составное состояние со скрытой внутренней структурой и специальной пиктограммой
В последующем диаграмма состояний для соответствующего подавтомата может быть изображена отдельно от основной с необходимыми комментариями.
6.8 Рекомендации
Основные особенности построения диаграмм состояний были рассмотрены при описании соответствующих элементов модели. Сформулируем рекомендации, не нашедшие своего отражения выше.
По своему назначению диаграмма состояний не является обязательным представлением в модели и как бы "присоединяется" к тому элементу, который, по замыслу разработчиков, имеет нетривиальное поведение в течение своего жизненного цикла. Наличие у системы нескольких состояний, отличающихся от простой дихотомии "исправен — неисправен", "активен — неактивен", "ожидание — реакция на внешние действия", может рассматриваться как признак необходимости построения диаграммы состояний.
При выделении состояний и переходов следует помнить, что длительность срабатывания отдельных переходов должна быть существенно меньшей, чем нахождение моделируемого объекта в соответствующих состояниях. Каждое из состояний должно характеризоваться определенной устойчивостью во времени. Другими словами, из каждого состояния на диаграмме не может быть самопроизвольного перехода в какое бы то ни было другое состояние. Все переходы должны быть явно специфицированы, в противном случае построенная диаграмма состояний является либо неполной, либо ошибочной.
При разработке диаграммы состояний нужно постоянно следить, чтобы объект в каждый момент мог находиться только в единственном состоянии. Если это не так, то данное обстоятельство может быть как следствием ошибки, так и неявным признаком наличия параллельности поведения моделируемого объекта. В последнем случае следует явно специфицировать необходимое число подавтоматов, вложив их в то составное состояние, которое характеризуется нарушением условия одновременности.