Дж. Рамбо, М. Блаха - UML 2.0 - Объектно-ориентированное моделирование и разработка (1158633), страница 29
Текст из файла (страница 29)
Ситуация гонок не обязательно бывает ошибкой проектирования, но в параллельных системах часто возникают нежелательные ситуации гонок, которых следует избегать аккуратным проектированием. Требование одновременного получения двух сигналов никогда не может быть выполнено в реальном мире, потому что небольшие отклонения скорости передачи неотъемлемо присуши распределенным системам.
5.5.6. Пример диаграммы состояний с деятельностью На рис. 5.17 изображена диаграмма состояний с рис. 5.8, на которую была добав- лема деятельность. 5.6. Практические рекомендации Содержимое любой модели всегда зависит от потребностей приложения. Все перечисленные ниже советы уже упоминались в тексте главы, но мы решили повторить их здесь еше раз для вашего удобства. 5 3««ббб 130 Глава 5 ° Моделирование состояний Рпопеьгпе опНооя / бисоппеса)пе опНооя 1 61зсоппес!Гбгпе !бнв Тйпеоиг бо/заипбьоибввер оИНооа 01а1Топе бо / зоипб0!а)Топе !/твои/ УУагп1пд бо / р)ауМеззаде 61дИ/и) Итвои! 6/дИ(п) несо«баб Мввва 0)адпд д /пуаубмитЬег бо/Р)ауМеззадд питЬвгВизу ивубмитЬвг ВизуТопе «1о / з1ожвизуТопв Соппвснпд бо)япбСоппесбоп Рав1ВизуТопв бо / 1аз! ВизуТопе теззвдепопе ти!вб Зип/«Визу Н)пд)пд бо / ппдВез свввбРЬопвдпзи«вгз / соппес«Ь1пе Сопиев!во свувбРЬопвНвпдзор / бмсоппес1ыпе 01всоппвс1еб Рис.
5.17. Диаграмма состояний с указанием деятельности ° Абстрагируйте значения до состояний. При определении состояния учитывайте только важные атрибуты. На диаграммах состояний не обязательно использовать все атрибуты, показанные в модели классов (раздел 5.2). ° Параметры. Параметризуйте события вспомогательными данными, которые не влияют на поток управления (раздел 5.2). ° Уровень детализации событий и состояний. Выбирая уровень детализации событий и состояний в модели, учитывайте в первую очередь потребности приложения (раздел 5.2). ° Когда использовать диаграммы состояний? Диаграммы следует строить только для классов, поведение которых изменяется с течением времени.
Так можно сказать о классе, который по-разному реагирует на разные события или обладает несколькими состояниями. Не для всех классов требуются диаграммы состояний (раздел 5А). ° Деятельность при входе и при выходе. Если все входяпгие переходы приводят к выполнению одной н той же деятельности, используйте деятель- 5.7. Резюме 131 ность при входе в состояние, вместо того чтобы указывать одну и ту же деятельность для каждого из входящих переходов. То же касается деятельности при выходе (раздел 5.5.3).
° Сторожевые условия. Аккуратно формулируйте сторожевые условия, чтобы объект не застрял в каком-нибудь состоянии навсегда (раздел 5.5А). ° Ситуации гонок. Опасайтесь нежелательных ситуаций гонок на диаграммах состояний. Ситуации гонок возможны в том случае, когда состояние может получать сигналы (события) от нескольких объектов (раздел 5.5.5). 5.7.
Резюме Событие и состояние — две основополагающие концепции моделирования состояний. Событие — это происшествие, связанное с конкретным моментом времени. Состояние — это абстракция значений и связей объекта. События соответствуют точкам на временной оси, а состояния — промежуткам между ними. Объект может реагировать на некоторые события, находясь в некоторых состояниях. В конкретном состоянии игнорируются все события, за исключением тех, поведение для которых прописано явно. Одно и то же событие в разных состояниях может вызывать разные действия.
Существует несколько видов событий: событие сигнала, событие изменения и событие времени. Событие сигнала состоит в отправке или получении информации, передаваемой между объектами. Событие изменения вызывается выполнением логического выражения. Временное событие вызывается достижением момента абсолютного времени или истечением интервала относительного времени. Переход — это мгновенная смена одного состояния на другое. Переход вызывается осуществлением события. Игнорированием событий управляют необязательные сторожевые условия. Сторожевое условие — это логическое выражение, которое должно быть выполнено, чтобы переход мог быть осуществлен. Действие — это ссылка на поведение, которое выполняется объектами в ответ на получение события.
Деятельность — это фактическое поведение, которое может вызываться различными действиями. Деятельность может выполняться при переходе или при осуществлении события внутри состояния. Текущая деятельность — это прерываемая деятельность, которая продолжается в течение некоторого времени. Поэтому текущая деятельность может осуществляться только в некотором состоянии и не может быть прикреплена к переходу.
Диаграмма состояний — это граф, узлами которого являются состояния, а направленными дугами — переходы между состояниями. Диаграмма состояний описывает возможные состояния, разрешенные переходы между состояниями, события, вызывающие запуск переходов, и выполняемую в ответ на события деятельность. Диаграмма состояний описывает поведение, общее для всех объектов некоторого класса. Каждый объект имеет свои собственные значения и связи, а потому обладает своим собственным состоянием (положением на диаграмме состояний).
Модель состояний состоит из множества диаграмм состояний, по одной диаграмме на каждый класс, поведение которого во времени важно для 132 Глава 5 ° Моделирование состояний приложения. Диаграммы состояний согласовываются друг с другом по интер- фейсам (событиям и сторожевым условиям). Таблица 5.1. Ключевые понятия главы текущая деятельность ситуация гонок модель состояний деятельность событие изменения событие времени действие сигнал переход по завершении событие событие сигнала переход запустить фактически состояние параллелизм управление сторожевое условие диаграмма состояний Библиографические замечания Подробное сравнение различных методов спецификации программного обеспечения, а в том числе и динамического поведения систем приводится в [Ж1ег1пйа-98].
Конечные автоматы — это базовая концепция информатики, они описываются в любом учебнике по теории автоматов, например в [Норсгогс-Ог]. Часто они описываются как распознаватели или генераторы формальных языков. Обычные конечные автоматы ограничены в возможностях выражения сложных концепций. Они были расширены добавлением локальных переменных и рекурсии и получили название «расширенная сеть переходов» или «рекурсивная сеть переходов» ['йгоодз-70]. Эти расширения позволили выразить при помощи конечных автоматов более широкий диапазон формальных языков, но не решили проблему комбинаторного взрыва, мешающую их использованию в практических целях (см. главу 6).
Традиционные конечные автоматы рассматривались и с точки зрения синхронизации. Сети Петри [Ке1зг8-92] формэлизуют параллельность и синхронизацию в системах с распределенной деятельностью без привязки к глобальному времени. Они оказались удачными в качестве абстрактных моделей, но для описания больших систем их уровень оказался недостаточно высоким. Необходимость описания интерактивных пользовательских интерфейсов привела к созданию нескольких методик спецификации управления. Эта работа направлена на поиск систем обозначения, которые ясно выражали бы мощные средства взаимодействия и при этом были бы простыми в реализации. Сравнение нескольких методик приводится в [Огееп-86]. В первом издании этой книги мы проводили разделение между действиями (мгновенным поведением) и деятельностью (длительным поведением).
ПМ12 переопределяет оба термина, и нам тоже пришлось изменить изложение. УМЕ 2 определяет деятельность как спецификацию выполняемого поведения, а действие — как предопределенную примитивную деятельность. По сути дела, новое определение деятельности включает в себя старые определения действия и деятельности. Упражнения 133 Ссылки ]Огееп-86] Магй Сгееп. А япчеу о( гЬгее йа!ойпе пюг]е!з. АСМ Тгапзасг!опз оп СгарЬ!сз 5, 3 (]п1у 1986), 244 — 275. 1Норсго(г-01] ]. Е.
Норсго(г, Ке]ееч Могший апг] ]. 1). 1)1!лап, 1пггос]осгюп со Аигошага ТЬеогу, 1апйцайез, апг] Согпригагюп., Бесопд Ейгюп, Воз!оп: АдйзопЪЧез!еу, 2001. ]Ке1яй-92] Ъ'о118апй Ве(з!8. А РПшег ш Регг! Хе! Оеяйп. Хею Ъ'ог1с 5рппйегУег!ай, 1992. ]ЪПег1пйа-98] Кое! чч'!ег(пйа. А зцгчеу о( зггисгцгед апс] оЪ)есс-оь(епгег1 зо(гааге зрес(йсаг1оп шегЬог]з апд сесЬп19цез.
АСМ Сотриг]пй 5цгчеуз 30, 4 (ОесетЪег 1998), 459 — 527. ]Ъ'оосЬ-70] Ж. А. %'оосЬ. Тгапягюп пегтчог1с йгапппагз 1ог патлата! 1апйцайе апа!уяз. Сошпшшсагюпз о( АСМ 13, 10 (ОсгоЪег 1970), 591 — 606. Упражнения 5.1. (6) Раздвижная лестница снабжена веревкой, шкивом и защелкой для подъема, опускания и фиксирования. Когда защелка зафиксирована, можно смело лезть по лестнице вверх.
Чтобы отцепить защелку, нужно слегка поднять раздвижной сегмент веревкой. После этого его можно свободно поднимать или опускать. Защелка щелкает при прохождении по ступеням лестницы. Защелка может быть зафиксирована при подъеме лестницы изменением направления сразу после того, как она прошла очередную ступень. Нарисуйте диаграмму состояний раздвижной лестницы. 5.2. (4) Простейшие цифровые часы состоят из дисплея и двух кнопок А и В. Часы могут работать в двух режимах: отображения и настройки.