Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
технология разработки ПО.doc
Скачиваний:
40
Добавлен:
31.03.2015
Размер:
193.54 Кб
Скачать

Диаграммы последовательностей

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

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

- идентифицировать каждое действующее лицо актера и изобразить для него линию жизни.

- из описания варианта использования (из имеющейся диаграммы) определить множество системных событий (операций) и их последовательность

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

Системные события инициализируют выполнение операций, называемых системными.

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

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

Асинхронные сообщения, которые не блокируют работу вызывающего объекта, показывают стрелкой с одним УСИКОМ – рисунок 3а. Такие сообщения могут выполнять одну из трех функций:

- создать новую ветвь процесса

- создать новый объект (рисунок 3 б)

- установить связь с уже выполняющейся ветвью процесса

На линии жизни для параллельных процессов дополнительно показывают активации. Активация обозначается узким длинным прямоугольником, называемым фокусом, наложенным поверх линии жизни рисунок 3 в). Наложенные поверх линии жизни показываются крестом (рисунок 3 г).

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

На рисунке 4 приведен пример диаграммы последовательности действий для сценария решения задач. Эта диаграмма представляет собой фрагмент варианта использования выполнения задания от момента инициализации пользователю процесса решения до его завершения. Анализ варианта использования показывает, что может иметь место три варианта (случая) последовательности действий: нормальный процесс (рисунок 4 а), прерывание процесса пользователем (рисунок 4 б), возникновение исключения при выполнении алгоритма (рисунок 4 в).

Нормальный процесс предполагает, что при выдаче команды создается объект решение, управляющий данным сценарием. Сообщение начать в диаграмме активизирует этот объект. Объект решение запрашивает у объекта класса задание тип объекта алгоритм, далее создает объект требуемого класса и активизирует его. Созданный объект класса «алгоритм», реализующий метод, запрашивает у объекта касса задание данные и начинает обработку, используя вспомогательные объекты. Нормально завершив обработку, объект класса алгоритм, реализующий метод, передает объекту класса Задание результаты и возвращает объекту Решение признак нормального завершения. Объект Решение уничтожает объект класса Алгоритм и возвращает вызвавшему его объекту признак нормального завершения решения.

Вариант Б. Случай прерывания процесса, объект Решение прерывает процесс решения, уничтожает объект Алгоритм и возвращает признак прерванного выполнения.

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

Помимо рассмотренных выше линейных потоков управления можно с помощью ДП моделировать и более сложные формы управления:

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

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

- Ветвление показывается множеством стрелок, идущих от одной точки каждая стрелка отмечается сторожевым условием (рисунок 6).

- Можно на ДП показать вложение фокусов в управление, например, рекурсивный вызов соответствующей операции, для этого второй фокус управления рисуется несколько правее правого (рисунок 7).

- Для отображения итераций используется дополнительное выражение (маркер итераций) изображается он *[i:=1..n]:<имя операции>, а в конкретном случае вместоnставится конкретное число.