Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Проектирование автоматизированных информационных систем на основе о..pdf
Скачиваний:
27
Добавлен:
15.11.2022
Размер:
10.45 Mб
Скачать

3. Как на диаграмме сотрудничества отмечается порядок отправ­

ки сообщений объектами?

4. Можно ли на диаграмме сотрудничества отобразить логиче­

ские ветвления?

8.5.Контрольные задачи

1. Для примера с банкоматом, представленного на рис. 8.2, по­ стройте диаграмму сотрудничества в системе Rational Rose.

2. Используя полученную в первой задаче диаграмму сотруд­ ничества, автоматически создайте по ней диаграмму последова­ тельностей и сравните результат с диаграммой, представленной на рис. 7.3.

9.ДИАГРАММА СОСТОЯНИЙ

9.1.Теоретическая часть

Наиболее сложной задачей при описании любой системы являет­ ся определение изменений состояний этой системы с течением вре­ мени. Первое исследование системы легче провести для ее статиче­ ской структуры, т.е. для структуры объектов, ее составляющих, и от­

ношений (связей) между ними в один момент времени.

Те аспекты системы, которые связаны с изменениями во времени,

представляют динамическую модель [3].

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

(state). С течением времени объекты воздействуют друг на друга, приводя к серии изменений их состояний. Отдельно взятое воздейст­ вие (сигнал) от одного объекта к другому является событием (event).

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

Диаграмма состояний (state diagram) есть взаимосвязь событий и состояний. Динамическая модель состоит из множества диаграмм состояний: одна диаграмма для каждого класса с уникальным поведе­ нием. Динамическая модель демонстрирует действие системы в целом.

Событие (event) - это нечто, что происходит в данной точке в данное время [3]. Например, пользователь отпускает левую кнопку манипулятора «мышь», или «рейс № 123» отправляется из Москвы. У события нет длительности. На самом деле ничто не происходит мгновенно, отсутствие длительности у события - это некоторая абст­ ракция, с помощью которой можно проградуировать шкалу времени.

Одно событие может логически предшествовать другому или сле­ довать за ним, или два события могут вообще не иметь отношения друг к другу. Рейс № 123 должен взлететь с аэродрома в Москве, пре­ жде чем он приземлится в Перми, - причинно зависимая связь двух событий. Рейс № 123 может вылететь перед тем или после того, как рейс № 465 вылетит из Санкт-Петербурга, - два события причинно не­ зависимы. Два события, которые не имеют причинной зависимости,

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

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

Некоторые события представляют собой просто сигналы, но большинство событий - это сигналы, имеющие аргументы, которые отображают передаваемую информацию. Например, событие «вылет самолета» будет иметь аргументы авиалиния, номер рейса и город. Время, в которое возникает событие, - подразумеваемый аргумент всех событий. Другими словами, аргумент - это данные, передаваемые событием. Аргументы показываются в скобках после названия класса событий. На рис. 9.1 показаны примеры событий с аргументами.

нажата кнопка манипулятора «мышь» (кнопка, позиция) введена строка (текст)

включен телевизор (программа)

Рис. 9.1. Примеры событий с аргументами

Состояние (state) - это значение атрибутов и связей класса или объ­ екта. Наборы значений вместе группируются в состояние согласно свойствам, определяющим поведение класса или объекта. Состояние определяет ответ объекта на входное событие. Ответ на событие, полу­ ченное объектом, может количественно изменяться в зависимости от конкретных значений его атрибутов, но ответ количественно одина­ ков для всех значений в рамках одного состояния и может быть количе­ ственно разным для значений в различных состояниях. Ответ объекта на событие может включать действие или смену состояния объекта.

Рассмотрим в качестве примера телефонный звонок. Назовем ис­ ходное состояние относительно телефонной линии как «Неактив­ ное». Абонент поднимает трубку (происходит событие «трубка сня­ та»), слышит непрерывный гудок, телефонная линия переходит в со­ стояние «Ожидание». Далее нажимает цифру (происходит событие

«нажата цифра»). В этот момент телефонная линия из состояния «Ожидание» переходит в состояние «Набор номера» (смена состоя­ ния) и выключает гудок (действие) и т.д.

Состояние соответствует интервалу между двумя событиями, по­ лученными объектом. События - это точки во времени; состояния - интервалы времени. Например, после того, как абонент поднял труб­ ку, и до того, как он набрал первую цифру, телефонная линия нахо­ дится в состоянии «Ожидание».

Состояние имеет длительность: оно занимает определенный ин­ тервал времени. Состояние часто ассоциируется с деятельностью (ак­ тивностью), такой как сигнал телефона, полет из Москвы в Пермь. События и состояния неразрывно связаны друг с другом; событие разделяет два состояния, а состояние разделяет два события.

Состояние также часто ассоциируется со значением объекта, удов­ летворяющим некоторым условиям. Например, утверждение «вода жидкая» эквивалентно утверждению «температура воды больше чем О °С, но меньше чем 100 °С». В простейшем случае численное значе­ ние атрибута может определять отдельное состояние. Например, авто­ мобильная трансмиссия может быть в состояниях: «Задняя передача», «Нейтральная», «Первая», «Вторая», «Третья» или «Четвертая».

Все комбинации значений атрибутов и связей, которые имеют один и тот же ответ на события, объединяются в одно состояние. В описании состояний игнорируются те атрибуты, которые не оказы­ вают влияния на поведение объекта. Конечно, каждый атрибут в ка­ кой-то мере воздействует на поведение, в противном случае он был бы бессмысленным, но некоторые атрибуты не оказывают влияния на модель управления и могут рассматриваться как простые параметры в данном состоянии.

Состояние может быть охарактеризовано различными способами. На рис. 9.2 представлены различные характеристики состояния «Звон будильника».

Последовательность событий, ведущих в состояние «Звон будиль­ ника», состоит из установки назначенного времени будильника, лю­ бых действий, исключающих сброс установки, и наступления назна­ ченного времени. Декларативное условие этого состояния задано с помощью таких параметров, как «будильник установлен» и «назна­ ченное время»; будильник перестает звонить после 20 сек. И, наконец, таблица реакции состояния на события «текущее время = назначенное

время» и «кнопка нажата», показывает возникающие действия и сле­

дующие за ними состояния.

Состояние: Звон будильника Описание: будильник часов звонит, чтобы отметить назначенное время

Последовательность событий, приводящих к этому состоянию: установка назначенного времени будильника любая последовательность, исключая сброс установки текущее время = назначенное время

Условие, описывающее состояние:

будильник установлен = да, и назначенное время < текущее время < назначен­ ное время + 20 с, и кнопка выключения не была нажата с момента наступления назначенного времени

событие

действие

следующее состояние

текущее время = назначенное время + 20 с

выключение

регулярное

кнопка нажата

выключение

регулярное

Рис. 9.2. Характеристики состояния

Состояние имеет название, которое отражает основные процессы, происходящие с объектом в этом состоянии.

В нотации UML состояние изображается в виде прямоугольника со скругленными вершинами (рис. 9.3).

/----------------------

\

Название

Ч_____________________________ 4

Рис. 9.3. Изображение состояния в нотации UML

Смена состояния, вызванная событием, называется переходом

состояния. Диаграмма состояний - это граф, вершины которого есть состояния, а ребрами являются переходы, отмеченные назва­ ниями событий. Переход изображается в виде стрелки, направлен­ ной от одного состояния к другому (рис. 9.4). Метка над стрелкой есть название события, вызвавшего данный переход. Все перехо­ ды, выходящие из одного состояния, должны соответствовать раз­ ным событиям.

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

На рис. 9.5 представлен пример работы телефонной линии [3].

ДраипрйййШй ©шчгяиий описывает поведение одного класса объ­ ектов тщ ш м у 1вос экземпляры этого класса наследуют одну и ту же даэддошму аж гош ий, так же как они наследуют все характери­

стики кшюга..

Диаграмм® шетоший может представлять однократные либо не­ прерывные жизненные циклы класса объектов [3]. Диаграмма для телефонной линии является непрерывным циклом. В описании ис­ пользования телефонной линии мы не знаем или нас не волнует, от­ куда и каким образом начался цикл. Однократные диаграммы пред­ ставляют объекты с «конечными» жизнями. Такие диаграммы имеют начальное и конечное состояние. Вход в начальное состояние, как

правило, означает создание объекта, а вход в конечное - разрушение

объекта. Начальное состояние изображается как закрашенный круг. Рядом с кругом могут быть записаны различные начальные условия. Конечное состояние изображается как два круга с разными радиуса­ ми, но с одним центром. Внутренний круг закрашивается. Конечное состояние также может быть отмечено различными условиями. Рис. 9.6 показывает жизненный цикл шахматной игры в упрощенном варианте [3].

Черные выиграли

Ничья

Белые выиграли

игры

Условие (condition) - булево выражение значений объекта. С по­ мощью условий можно описать состояние объекта.

Сторожевыми условиями (guard condition) называются условия, от выполнения которых зависит, совершится ли переход из одного состояния в другое. Условие изображается на переходе в квадратных скобках после названия события. Рис. 9.7 показывает диаграмму со­ стояний с переходами, содержащими сторожевые условия. Диаграм­ ма построена для описания случая поломки некоторого оборудования предприятия.

Рис. 9.7. Диаграмма описания поломки оборудования со сторожевыми переходами

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

Действие (action) - мгновенный ответ на событие [3]. Действия ассоциируются с событиями. Действие представляет некоторую опе­ рацию, длительность которой незначительна по сравнению с «мас­ штабом» диаграммы состояний.

Действия могут устанавливать значения атрибутов объекта, гене­ рировать новые события и т.п. Например, внутренний счетчик может увеличивать свое значение на единицу каждый раз, когда возникает некоторое событие.

Нотация для действия представляет собой слеш («/») и название (или описание) действия, которое следует за именем события, его вы­ звавшего. Если на переход наложено условие, то действие записыва­ ется после условия. Рис. 9.8 демонстрирует диаграмму состояний для контекстного меню, которое повсеместно используется в операцион­ ной системе Windows.

курсор сместился / выделить пункт

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

Альтернативой изображению действий на переходах может быть ассоциирование действий с входом (entry) в состояние или выходом (exit) из него. Нет никакой разницы между двумя этими вариантами, но очень часто все переходы, ведущие в одно состояние, порождают одинаковые действия. В этом случае «присоединение» действия к со­ стоянию отбрасывает необходимость отображать одно и то же дейст­ вие над каждым переходом. На рис. 9.9 приведен пример, описы­ вающий работу лифта. Состояние «Движение» является конечным пунктом трех переходов. В случае отсутствия конструкции entry

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

Рис. 9.9. Диаграмма работы лифта

Операция, для завершения которой требуется время, называются

деятельностью (activity). В UML деятельность представляет собой внутренние операции состояния. Деятельность стартует при входе в соответствующее состояние сразу после действий на входе и вы­ полняется до тех пор, пока объект находится в этом состоянии, либо до момента своего завершения. Деятельности могут включать как не­ прерывные операции, например, отображение графических элемен­ тов на экране монитора, так и последовательности действий, которые

прекращаются через определенный момент времени, например, за­ крытие клапана или расчет некоторого параметра.

Суть деятельности записывается внутри состояния после ключе­ вого слова «do» (рис. 9.9-9.10).

Если событие вызывает переход из состояния до того, как завер­ шилась деятельность, то деятельность прекращается преждевремен­ но. На рис. 9.10 представлена диаграмма состояний, описывающая процесс установки времени на электронных часах. Часы имеют кноп­ ки: «Установка», «+», «-». При нажатии на кнопку «Установка» сис­ тема переходит в режим установки часов, если текущим был режим установки минут, и наоборот. Нажатие кнопки «+» является событи­ ем, которое вызывает увеличение минут либо часов в зависимости от текущего режима, назовем его «время вперед»; и, соответственно, нажатие кнопки «-», вызывающее уменьшение часов либо минут, на­ зовем «время назад».

Рис. 9.10. Диаграмма состояний для электронных часов

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

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

На рис. 9.11 представлена диаграмма состояний для автоматиче­

ской коробки передач [3].

Рис. 9.11. Диаграмма состояний для автоматической коробки

передач с обобщенным состоянием

Рычаг коробки передач может быть в заднем, нейтральном, перед­ нем положении. Если положение переднее, то включена первая, вторая либо третья передача. Передачи «Первая», «Вторая» и «Третья» явля­ ются подсостояниями состояния «Передняя передача». Обобщенное состояние, как правило, изображается в виде прямоугольника с закруг­ ленными углами, охватывающего все подсостояния.

Включение нейтральной передачи в любом подсостоянии состоя­ ния «Передняя передача» вызывает переход в состояние «Нейтраль­ ная передача». Состояния «Первая», «Вторая», «Третья» наследуют переходы состояния «Передняя передача», которое называется со­ ставным состоянием.

Если коробка передач находилась в состоянии «Нейтральная пе­ редача» и произошло событие «рычаг в П», т.е. переключение на пе­ реднюю передачу, тогда система переходит в состояние «Первая», так как это состояние является начальным по умолчанию. Этот факт обозначен на диаграмме как стрелка, ведущая из закрашенного круга в состояние «Первая». Переход на событие «стоп» (изображен стрел­ кой, идущей от контура состояния «Передняя передача» к состоянию «Первая») означает, что в случае если автомобиль двигался на неко­ торой передней передаче и произошла его остановка, то всегда будет включена первая передача.

Рассмотрим пример построения диаграммы состояний для класса «Предложение дисциплины» [4].

Жизнь предложения дисциплины начинается с создания его в системе сотрудником деканата. В момент создания предложение дисциплины ассоциировано только с самой дисциплиной. Назовем это состояние предложения дисциплины «Новое».

После того как один из преподавателей выберет это предложе­ ние, состояние предложения изменится. Будем называть состояние предложения после ассоциирования с ним преподавателя «Готовое». Причиной перехода предложения дисциплины из состояния «Новое» в «Готовое» является событие - назначение преподавателя.

Предложение дисциплины будет находиться в состоянии «Гото­ вое» до тех пор, пока сотрудник деканата не объявит о начале реги­ страции. После открытия регистрации предложение дисциплины пе­ рейдет в состояние «Действующее».

Мы знаем, что на каждую элективную дисциплину может запи­ саться не более 20 студентов. Поэтому предложение дисциплины бу­ дет находиться в состоянии «Действующее», пока число поданных заявок не достигнет 20.

В случае если поданы все 20 заявок, предложение переходит в состояние «Закрытое» и дальнейшая регистрация прекращается.

Если совет кафедры по каким-то причинам решит исключить элективную дисциплину из учебного плана, то предложение данной дисциплины перейдет в состояние «Отмененное».

Создадим диаграмму состояний. Для этого в окне браузера рас­ положим курсор над классом «DisciplineOffer» (предложение дисци­ плины) и вызовем контекстное меню. В появившемся меню выберем пункт «New», а затем «Statechart Diagram». В результате этого будет создана диаграмма состояний. Назовем диаграмму «Диаграмма со­ стояний предложения дисциплины» (рис. 9.12).

Дважды щелкнув на вновь созданном элементе, открываем рабо­ чее окно диаграммы. Далее создаем вышеописанные состояния. Для того чтобы создать состояние, необходимо щелкнуть на пиктограмму «State» панели инструментов, а затем щелкнуть на область диаграммы. Получив пять состояний: «Новое», «Готовое», «Действующее», «За­ крытое» и «Отмененное» - создаем еще два стандартных: начальное

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