Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги / Проектирование автоматизированных информационных систем на основе объектно-ориентированного подхода

..pdf
Скачиваний:
0
Добавлен:
12.11.2023
Размер:
10.56 Mб
Скачать

7.ДИАГРАММА ПОСЛЕДОВАТЕЛЬНОСТЕЙ

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

Диаграмма последовательностей (sequence diagram) отображает динамику взаимодействия объектов во времени.

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

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

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

имя объекта: имя класса

объект

линия жизни

Рис. 7.1. Объект и линия жизни диаграммы последовательностей

Линия жизни объекта (object lifeline) изображается пунктирной вертикальной линией, ассоциированной с единственным объектом на диаграмме последовательностей. Линия жизни служит для обозна­ чения периода, в течение которого объект существует в системе и, следовательно, может потенциально участвовать во всех ее взаи­ модействиях. Если объект существует в системе постоянно, то и его линия жизни должна продолжаться по всей плоскости диаграммы по­ следовательностей - от самой верхней ее части до самой нижней [2].

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

Взаимодействие объектов происходит с помощью сообщений, ко­ торые отображаются стрелкой, соединяющей объект-источник с объ­ ектом-приемником (табл. 7.1).

 

 

Т аблица. 7.1

------------>

Каждая такая стрелка означает просто следующий шаг в после­

 

 

довательности.

------------►

Процедурная передача управления. Все вложенные операции

завершаются до того, как будет продолжена последователь­

 

 

 

 

ность действий внешнего уровня. В частном случае может быть

 

 

простой вызов процедуры.

________^

Асинхронное взаимодействие между двумя объектами.

- >

Возврат из вызова процедуры.

Сообщение (message) представляет собой законченный блок ин­ формации, передаваемый одним объектом другому; при получении сообщения инициируется выполнение определенных действий, на­ правленных на решение отдельной задачи объектом-получателем.

Если есть необходимость подчеркнуть, что для доставки сообще­ ния требуется некоторое время, можно изобразить стрелку с накло­ ном вниз [5].

Для сообщений выделяют следующие стереотипы [2]:

-«call» (вызвать) - сообщение, требующее вызова операции или процедуры принимающего объекта;

-«return» (возвратить) - сообщение, возвращающее значение выполненной операции или процедуры вызвавшему ее объекту. Зна­ чение результата может инициировать ветвление потока управления;

-«create» (создать) - сообщение, требующее создания другого объекта для выполнения определенных действий. Созданный объект может получить фокус управления, а может и не получить его;

-«destroy» (уничтожить) - сообщение с явным требованием уничтожить соответствующий объект. Посылается в том случае, ко­ гда необходимо прекратить нежелательные действия со стороны су­ ществующего в системе объекта либо когда объект больше не нужен

идолжен освободить задействованные им системные ресурсы;

-«send» (послать) - обозначает посылку другому объекту неко­ торого сигнала, который асинхронно инициируется одним объектом

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

Объект также может посылать сообщения самому себе. Такие со­ общения называются рефлексивными и изображаются прямоугольни­ ком со стрелкой, которая начинается с границы прямоугольника и воз­ вращается в этот же прямоугольник (рис. 7.2). В качестве примера можно привести ситуацию набора номера на телефонном аппарате.

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

Он изображается в виде вытянутого прямоугольника, верхняя грань которого выравнивается по временной оси с моментом начала дейст­ вия, нижняя - с моментом его завершения (см. рис. 7.2).

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

объекты

>

линия жизни

линия жизни

символ уничтожения объекта

Рис. 7.2. Элементы диаграммы последовательностей

В ряде случаев выполнение тех или иных действий ограничива­ ется по времени. Ограничивающие условие может быть записано на основе абсолютного или относительного значении времени [5]. На­ пример, ограничение {b.SendTime - a.ReceiveTime < 1 с} означает, что между получением сообщением а и отправкой сообщения b должно пройти менее одной секунды. Ограничение по времени всегда запи­ сывается в фигурных скобках.

На рис. 7.2 показано, что отдельные объекты в системе могут создаваться по мере необходимости. Таковым объектом является «объектЗ». Данный подход в большинстве случаев позволяет эконо­ мить ресурсы системы и в результате приводит к повышению ее про­ изводительности. Символом «X» обозначается конец жизни (уничто­ жение) объекта.

Рассмотрим пример построения диаграммы последовательностей для описания работы клиента с банком посредством банкомата,

аточнее, процесса снятия денег со счета.

Вдиаграмме последовательностей будут взаимодействовать три объекта: «Клиент», «Банкомат» и «Банк».

Инициатором взаимодействия является клиент, вставивший карту

вбанкомат. Поэтому размещаем объекты на диаграмме слева направо

впоследовательности «Клиент», «Банкомат», «Банк».

Сценарий взаимодействия следующий:

-клиент вставляет карту в банкомат;

-банкомат запрашивает PIN-код;

-клиент вводит РШ-код;

-банкомат запрашивает сумму;

-клиент вводит сумму;

-банкомат отсылает запрос компьютеру банка на открытие транзакции;

-компьютер банка отправляет ответ банкомату;

-банкомат выдает деньги;

-банкомат ждет, когда клиент заберет деньги;

-клиент забирает деньги;

-банкомат отсылает запрос компьютеру банка на завершение транзакции;

-компьютер банка завершает транзакцию и отправляет уведом­ ление банкомату.

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

Рис. 7.3. Пример диаграммы последовательностей

7.2. Реализация в Rational Rose

Диаграммы последовательностей обычно ассоциируются с реали­ зациями прецедентов. Реализация прецедента (use case realization),

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

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

Создадим диаграмму последовательностей для реализации «Вы­ бор дисциплин преподавателем». Для этого над элементом, пред­ ставляющим реализацию «Выбор дисциплин преподавателем», вы­ зываем контекстное меню и выбираем пункт «New» > «Sequence Diagram». Назовем вновь созданную диаграмму «Внесение предло­ жения дисциплины». Двойным щелчком на элементе «Внесение предложения дисциплины» откроем рабочую область диаграммы последовательностей.

Диаграмма строится в соответствии со спецификацией прецеден­ та «Выбор дисциплин преподавателем», указанной в табл. 4.1.

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

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

Последовательно переносим на рабочую область диаграммы классы, участвующие в сценарии «Внесение предложения дисципли­ ны», рассмотренном в разд. 5.2. Для акцентирования внимания на том, что актеры также могут присутствовать на диаграмме взаимо­ действия, поместим актера «Преподаватель» на диаграмму взаимо­ действия. Далее переносим классы «ChoosingDisciplineOption» (оп­ ция выбора дисциплины), «AddingOffer» (внесение предложения), «DisciplineOfferControl» (контроль предложения), «Discipline» (дис­ циплина) и «DisciplineOffer» (предложение дисциплины) (рис. 7.7).

Теперь необходимо показать, как объекты взаимодействуют друг с другом, посылая и принимая сообщения. Для создания сообщения используется пиктограмма «Object Message» панели инструментов. Инициатором взаимодействия в нашем случае является «Преподава­ тель», и первое его сообщение представляет собой выбор номера се­ местра. Создадим его. Для этого щелкаем на пиктограмму «Object Message», а затем на линию жизни объекта «Преподаватель» и, не отпуская кнопки мыши, проводим стрелку до линии жизни объекта «ChoosingDisciplineOption». Дважды щелкнув на линию сообщения, вызываем окно «Message Specification» и в поле «пате» заносим на­ звание сообщения - «chooseTerm» (выбрать семестр).

Соседние файлы в папке книги