Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Диаграммы последовательностей
Диаграмма последовательностей (Sequence Diagram) предназначена для отображения временных зависимостей, возникающих в процессе общения между объектами. Диаграмма строится как график и имеет два измерения. По вертикали откладывается время, которое может быть схематичным или иметь реальный масштаб. По горизонтали отображаются объекты. Она состоит из следующих элементов: объект, обозначается прямоугольником с записанным в нем именем объекта; линия жизни объекта, штрих - пунктирная линия, выходящая из объекта и расположенная вдоль оси времени, обозначает время жизни объекта; активация, тонкий вертикальный прямоугольник, расположенный вдоль оси времени объекта, обозначающий период активной жизни объекта, либо выходящий из объекта; вызов метода поведения объекта (сообщение), обозначается стрелкой между активациями объектов с именем действия, направление стрелки задает направление передачи данных; текстовые метки (отметки времени, описание действий и т.п.). Рис. 45. Пример диаграммы последовательностей. На рис. 45 рассмотрена диаграмма для установки PPP - соединения через модем между сервером и клиентом. Такая задача выполняется, например, при подключении персонального компьютера к Intenret через модем. На рисунке изображены четыре объекта: “PPP - соединение”, “Номеронабиратель”, “Телефонная линия”, “Сервер”. В рамках данной задачи объекты “Номеронабиратель” и “Телефонная линия” начинают свою жизнь сразу с активации, тогда как другие объекты имеют неактивную линию жизни (штрих - пунктир). Активация объектов “PPP - соединение” и “Сервер” начинается только с получения соответствующего сообщения. Объект “PPP - соединение” создается только после получения соответствующего сообщения. В этом случае стрелка с сообщением соединяется не с активацией, а непосредственно с объектом. Черный крест в конце активации обозначает, что объект перестает существовать в рамках данной задачи. Линии жизни объектов могут разветвляться для обозначения альтернативных вариантов поведения. На альтернативных линиях жизни могут располагаться различные активации. Альтернативная линия жизни показана для объекта “Номеронабиратель”, она начинается с получения сигнала “занято” от телефонной линии. Линии, обозначающие передачу сообщений (вызовы методов), помечаются именем выполняемого действия или передаваемым сообщением. Могут быть отображены фактические параметры, передаваемые в вызове, или результат, возвращаемый после вызова. Диаграммы сотрудничества Диаграмма сотрудничества (Collaboration diagram) предназначена для описания методов взаимодействия между объектами. Для пояснения смысла и назначения диаграммы необходимо ввести такое понятие как “сотрудничество”. Сотрудничество представляет собой набор объектов, которые взаимодействуют друг с другом (вызывают методы поведения друг друга) для достижения конкретной группы целей. В данном случае в процессе проектирования необходимо сосредоточиться только на тех объектах и их методах поведения, которые необходимы для достижения определенной цели или единой группы целей. Сотрудничество может быть сопоставлено операции, блоку использования (из диаграммы использования) или классу для описания его статической структуры. Важно то, что сотрудничество не предназначено для описания поведения объектов, для этого могут быть использованы диаграммы последовательностей или диаграммы действий. Поведение некоторой части проекта может быть рассмотрено в двух аспектах: статическая структура того, что определяет поведение, и динамические аспекты реализации этого поведения. Диаграмма сотрудничества описывает именно статическую структуру объектов, участвующих в реализации поведения. Сотрудничество может быть параметрическим, и в этом случае оно представляет собой шаблон, который может использоваться в различных частях проекта. Параметрами могут являться участники сотрудничества. Диаграмма сотрудничества (рис. 46) включает в себя объекты и отношения между ними, заключающееся в вызове методов друг друга. Некоторые объекты появляются только в рамках реализации сотрудничества, они помечаются специальным словом “new” (новый). Те объекты, которые уничтожаются во время реализации сотрудничества, помечаются специальным словом “destroy” (уничтожить). На диаграмме могут быть показаны связи между объектами, представляющие: параметры процедур, локальные переменные, self ссылки (ссылки на сам объект). В случае вызова метода одного объекта другим объектом рядом со связью указывается имя метода и задается направление взаимодействия (чей метод вызывается). Так как диаграммы сотрудничества очень часто используются для построения процедурных спецификаций, допускается указывать последовательности вызовов методов путем их нумерации. Рис. 46. Пример диаграммы сотрудничества Диаграммы состояний Диаграмма состояний (State chart diagram) представляет собой конечный автомат и показывает последовательность состояний объекта, через которые он проходит во время своего существования под воздействием внешних событий. Диаграмма представляет собой набор состояний и переходов между ними. Диаграмма состояний назначается классу или методу поведения. Состояния автомата соответствуют состояниям объектов, в которых объект удовлетворяет некоторому условию, выполняет некоторое действие или ожидает некоторого события. Объект может находиться в каждом состоянии в течение конечного времени. Каждому состоянию может соответствовать вложенный автомат. Состояние изображается как прямоугольник со скругленными краями. Каждое состояние имеет две части. В верхней части отображается имя состояния. Имя состояния может быть пустым, это так называемое анонимное состояние. Все анонимные состояния отличаются друг от друга. Нижняя часть состояния предназначена для отображения внутренних действий, выполняемых в ответ на определенные события, возникающие, когда объект находится в данном состоянии, без смены текущего состояния. Описание внутренних действий имеет следующий формат: имя - события список - параметров [ условие ] / действие Каждое имя события должно быть уникальным в пределах одного состояния. Определены зарезервированные имена событий: entry / действие - Действие, выполняемое при входе в состояние. exit / действие - Действие, выполняемое при выходе из состояния. Эти два предопределенных события не имеют списка параметров и условия возникновения, так как и то и другое предопределено. Введено специальное ключевое слово do, обозначающее вызов вложенного автомата: do / имя - автомата (список - параметров) Имя автомата задает конкретный автомат, которому при инициализации может быть передан список параметров, который должен быть совместимым со списком параметров этого автомата. Графические обозначения различных классов состояний автомата приведены в таблице ниже:
Таблица 11.
Событие - это любое действие, имеющее значение с точки зрения смены состояний автомата. Определены следующие виды событий (одно событие может относиться одновременно к нескольким видам): условие становится истинным, прием внешнего сигнала от одного объекта к другому, запрос на выполнение метода объекта, истечение заданного периода времени. Сигналы определяются в следующем формате: имя - события (список - параметров) каждый параметр имеет формат: имя - параметра: тип Сигналы могут образовывать иерархию наследования и, следовательно, изображаться с помощью диаграммы классов. Если на конечном автомате событие Х приводит к переходу из состояния в состояние, то любое производное событие от Х так же приводит к смене этого перехода. На диаграмме классов состояния изображаются с ключевым словом “signal”. Они не имеют методов поведения, могут иметь только атрибуты. Простой переход из состояния 1 в состояние 2 показывает, что объект, находящийся в состоянии 1 перейдет в состояние 2 и выполнит определенные действия, когда произойдет предопределенное для перехода событие и будут истинными специфицированные условия. Такая смена состояний называется срабатыванием перехода. Событие, помечающее переход, может иметь параметры, которые доступны внутри действий, сопоставленных переходу или тому состоянию, в которое ведет переход. События, определяющие выполнение переходов, обрабатываются по одному в один момент времени. Если событие не приводит к выполнению ни одного перехода, то оно игнорируется. Переходы изображаются линией с указанием направления и дополнительной текстовой информации, представленной в следующем виде: имя - события (параметры) [ условие ] / выражение ^ посылка Условие - это логическое выражение с участием параметров события, имен состояний автомата и атрибутов объекта или класса, которым назначен данный автомат. Выражение - это процедурное выражение, которое выполняется при выполнении перехода. Оно может включать в себя параметры события, методы поведения и атрибуты того объекта или класса, которым назначен данный автомат. Посылка описывает ту операцию или сигнал, которые могут быть посланы другим объектам. Она имеет следующий формат: назначение. операция (параметры) Назначение - это имя объекта, для которого выполняется операция или посылается сообщение или сигнал. Операция - это имя вызываемого метода, посылаемого сигнала или сообщения. Примером текста, который может сопоставляться переходу является следующий: нажата левая кнопка мыши (позиция) [ позиция внутри окна ] / выбор = выбрать (позиция) ^ выбор. выделить. Здесь “нажата левая кнопка мыши” - это имя события, “позиция“ - это параметр данного события, показывающий, в какой позиции на экране произошло нажатие. “Позиция внутри окна” - это условие, которое должно быть выполнено для того, что бы переход мог выполниться, т.е. будут обрабатываться не все нажатия кнопки мыши, а только те, которые произошли внутри заданного окна. Выражение “выбор = выбрать (позиция)” представляет собой присвоение переменной “выбор” значения функции “выбрать” с параметром “позиция”. И, наконец “выбор. выделить” - это обращение к методу “выделить” объекта “выбор”. Составные переходы предназначены для отражения операций распараллеливания и синхронизации. Составной переход может иметь несколько входных и несколько выходных состояний. Составной переход может выполниться только тогда, когда все его входные состояния активны. После выполнения составного перехода все его выходные состояния становятся активными, а все входные перестают быть активными. Таким образом, автомат может одновременно находиться в нескольких состояниях. Составной переход изображается как прямоугольник, входные и выходные линии определяют входные и выходные состояния (рис. 47): Рис. 47. Обозначение составного перехода. На рис. 47 изображен один составной переход, имеющий два входных состояния (A, B) и два выходных состояния (C, D). Если состоянию соответствует вложенный автомат, то после выполнения действий entry для этого состояния начинает работать вложенный автомат, начиная со своего начального состояния. Когда достигается одно из конечных состояний вложенного автомата, то состояние считается законченным, выполняются действия по выходу (exit), и автомат готов к смене состояния под воздействием внешних воздействий. Одному состоянию может соответствовать либо один вложенный автомат, либо несколько конкурирующих (взаимно исключающих) вложенных автоматов. Графически это обозначается следующим образом: один вложенный автомат изображается внутри прямоугольника для состояния, несколько вложенных автоматов также изображаются внутри прямоугольника для состояния, но они разделяются пунктирным линиями. Пример вложенного автомата приведен на рис. 48.
Рис. 48 Пример изображения вложенного автомата
На данном рисунке состояние B является составным и содержит внутренний автомат, который состоит из начального, конечного состояний и состояний C и D. Пример конкурирующих вложенных автоматов представлен на рис. 49.
Рис. 49. Пример изображения конкурирующих вложенных автоматов.
Здесь состояние “B” декомпозируется с помощью двух конкурирующих вложенных автоматов. Пример диаграммы состояний представлен на рис. 50. Здесь представлен конечный автомат, описывающий функционирование класса " Диаграммер" графического редактора диаграмм. Рис. 50. Диаграмма состояний для класса " Диаграммер"
Диаграммы действий Диаграммы действий (activity diagrams) показывают выполнение операций. Они являются разновидностью автомата. Предназначение данной диаграммы - показать поток управления, внутренний для операции, в противоположность показу реакции на внешние события (как это делается в диаграмме состояний). Диаграмма действий состоит из следующих элементов (табл. 12):
Таблица 12. Действия показывают выполнение некоторой неделимой операции. Каждое действие имеет имя, определяющее смысл этого действия. Имя может представлять собой текст на естественном языке, псевдокод операции или фрагмент текста на некотором языке программирования. Внутри описания могут использоваться атрибуты того объекта, за которым закреплена диаграмма действий. Условия предназначены для обозначения возможности условной передачи управления в соответствии со значением некоторого логического выражения. Условие может иметь один или более входов и два или более выходов. Каждый выход должен быть помечен условием, истинность которого обеспечивает переход по данной дуге. Переходы имеют тот же смысл, что и в автоматной модели диаграммы состояний. Но здесь они не помечаются никаким событием и имеют условие только для специальных состояний - “условие”, т.е. они просто передают управление от одного действия к другому. Окончание входных действий непосредственно приводит к выполнению перехода. Возможность распараллеливания и синхронизации остается. Диаграмма действий может быть разделена на полосы (swim lanes), которые включают в себя определенный набор действий и переходов. Каждая полоса имеет собственное имя и тем самым позволяет группировать действия в единое целое. Ее можно сравнить с пакетом для классов. Графически каждая полоса представляет собой вертикальное разделение диаграммы действий с помощью сплошной линии. Каждое действие может находиться только в одной полосе, тогда как переходы могут пересекать полосы. На рис. 51 представлен пример, на котором используются практически все возможные элементы диаграммы действий. Здесь обсуждается процедура обслуживания клиента узла Internet, подающего заявку на обслуживание. Заявка может быть двух типов: заявка на регистрацию и заявка на предоставление некоторой услуги. Диаграмма содержит две полосы “клиент” и “отдел обслуживания”. После получения запроса на обслуживание клиент может подготовить платеж, а отдел обслуживания займется одновременно с этим выполнением заказа. В зависимости от типа запроса будет выполнено либо действие “создать услугу”, либо действие “заполнить карточку регистрации”. Далее будет выполнена подготовка документа, и после выполнения платежа он будет учтен и обслуживание закончится. Все действия выполняются над объектами. Целесообразно показать на диаграмме действий отношения между объектами и операциями. Различаются два вида отношений: объект отвечает за выполнение операции, атрибуты объекта используются для выполнения операции. Эти виды отношений показываются соответственно как: действие вызывает метод поведения объекта, объект является входным или выходным для действия. Объекты на диаграмме действий показываются, как обычно, в виде прямоугольников с записанными внутри именами. Если объект является выходным для действия, то от действия к объекту идет штриховая линия, если же объект является входным для действия, то от объекта к действию идет штриховая линия. Вызов метода показывается сплошной линией с указанием имени и параметров операции, а так же может быть указано направление передачи или получения данных (см. диаграмму последовательностей).
Рис. 51. Пример диаграммы действий. Специальные символы могут не использоваться, так как их использование не обязательно, они являются дополнительным средством выражения посылки и получения сигналов. Это можно обозначить указанием имени сигналов непосредственно на переходе. А можно использовать специальные символы, которые должны соединяться с линией перехода. “Получение сигнала” (см. табл. 12) - это символ, предназначенный для обозначения получения сигнала для выполнения перехода, т.е. передачи управления. “Посылка сигнала” - это символ, предназначенный для обозначения посылки сигнала в момент выполнения перехода. Диаграммы реализации Диаграммы реализации предназначены для отображения состава компилируемых и выполняемых модулей системы, а так же связей между ними. Диаграммы реализаций разделяются на два конкретных вида: диаграммы компонентов (component diagrams) и диаграммы развертывания (deployment diagrams). Диаграмма компонентов отражает зависимости составных частей программного обеспечения, в которые включаются файлы исходных текстов, двоичные файлы библиотек объектных модулей и исполняемые файлы. Она состоит из компонентов и отношений между ними. Используются отношения двух типов: зависимость - это зависимость любого типа (использование, совместная компиляция), композиция - это включение одних компонентов в состав других. Компонент изображается в виде прямоугольника с двумя маленькими прямоугольниками у левого края, внутри прямоугольника записывается имя компонента. Зависимость изображается штриховой линией от использующего компонента к используемому. Композиция (или включение) изображается размещением включаемого компонента внутри включающего. Компоненты могут иметь интерфейсы, через которые выражаются зависимости. Интерфейсами могут являться, например, имена вызываемых подпрограмм. Интерфейсы изображаются окружностями, соединенными с компонентой линией без направления, рядом записывается имя интерфейса. Диаграммы развертывания показывают конфигурацию исполняемой программной системы, состоящей из программных компонентов, процессов, объектов. Она состоит из узлов и отношений взаимодействия между узлами и компонентами. Узлы могут включать компоненты и объекты. Узлы представляют собой физические элементы времени выполнения, обозначающие вычислительный ресурс, обладающий как минимум запоминающим устройством и, возможно, вычислительным устройством. Узлы могут обозначать компьютеры, человеческие ресурсы или механические устройства. Внутри узлов могут содержаться компоненты и объекты, что обозначает, что данный компонент или объект существует в рамках данного узла. Узлы изображаются как проекция трехмерного куба. Узел может представлять собой тип узла или конкретный экземпляр узла. В зависимости от этого происходит именование узла. В случае узла - типа его имя выглядит так: имя типа, в случае узла - экземпляра имя выглядит так: имя узла: имя типа. На диаграмме развертывания компоненты могут представлять не только типы, но и конкретные экземпляры, поэтому их имя может быть дополнено именем типа через двоеточие. Отношение взаимодействия между узлами, компонентами или объектами обозначается штриховой линией, направленной от использующего элемента к используемому. На рис. 52 представлен пример, состоящий из трех вычислительных систем, представляющих типичный случай системы доступа к базам данным на основе Internet/Intranet технологии, которая предполагает наличие двух компьютеров, один из которых выполняет функции web - сервера с возможностью исполнения ASP или CGI и готовит данные для отображения на компьютере клиента. Для подготовки отображаемых данных web - сервер, в лице компонента “исполнение ASP программ”, выполняет запросы к SQL - серверу, который хранит данные и обрабатывает их. Все это делается по запросу с клиентского компьютера и на него же посылаются результаты запросов в подготовленном для отображения виде (HTML). Рис. 52. Пример диаграммы развертывания
Источники:
1. Романовский К., Кузнецов С., Кознов Д. Объектно-ориентированный подход и диаграммы классов в UML. Http: //real.tepkom.ru/Real_UML_A.asp 2. Жаков В.И., Путилов В.А., Фильчаков В.В., Янкелевич А.А., Объектно-ориентированная технология разработки программных систем. – Апатиты: КФ етрГУ, 1998, http: //k46.aanet.ru/textbooks/oop Популярное:
|
Последнее изменение этой страницы: 2016-05-30; Просмотров: 1201; Нарушение авторского права страницы