Проектирование и анализ ПО
Часть 4. UML
-
Введение
-
Классы и объекты
-
Атрибуты и операции
-
Виды диаграмм
Введение
-
Unified Modeling Language - унифицированный язык.
-
Не ориентирован на конкретный язык программирования.
-
Предназначение – улучшение понимания при моделировании.
-
Возможность создавать различные модели.
Авторы UML

-
Grady Booch
-
James Rumbaugh
-
Ivar Jacobson
Визуализация
-
Существуют три типа визуальных обозначений:
-
Связи представляются различными линиями на плоскости;
-
Текст, содержащийся внутри границ отдельных геометрических фигур;
-
Графические символы, изображаемые вблизи визуальных элементов диаграмм.
Моделирование
-
При моделировании используются следующие элементы:
-
Типы
-
Связи, ассоциации
-
Сущности
-
Атрибуты
-
Операции
-
Взаимодействия
-
Объединения
Графические элементы: типы
-
Класс или другая сущность может быть представлена прямоугольником с соответствующим именем.

Графические элементы: связи
-
Связь отражает характер взаимодействия и, возможно, направление.

Связи между сущностями
-
Объединение сущностей и связей может отражать ситуацию, процесс и т.п.



Именованные сущности
-
Для выделения экземпляра можно добавлять префикс.
-
Фактически, это уникальный параметр.

Атрибуты
-
Помимо имени, могут содержать другую информацию.
-
В языке программирования это – поля.

Значения атрибутов
-
Каждый атрибут может принимать значение.

Операции
-
Сущности могут выполнять действия.
-
В ЯП это – методы.

Операции и атрибуты
-
Атрибуты и операции сосуществуют в одной сущности.

Взаимодействие компонентов
-
Компоненты могут воздействовать друг на друга.

Взаимодействие сущностей
-
Сущности могут воздействовать друг на друга (посылка сообщения, исполнение операции, запрос атрибута).

Объединение
-
Различные классы могут иметь одинаковые атрибуты.
-
Возможно выделение их в отдельный класс.


Классы и объекты

-
Класс (class) – множество сущностей, имеющих одинаковые свойства.
-
Объект (object) – конкретная сущность определенного класса.
-
Объект является сущностью (instance) класса, если он ему принадлежит.
Атрибуты и операции
-
Атрибуты – именованные слоты для данных, принадлежащие данному классу.
-
Различные объекты одного класса могут иметь различные значения атрибутов.
-
Операции предоставляют сервисы объекта, изменяющие его состояние и/или поведение.
-
Метод – это реализация операции.
Отношения
-
Зависимость (dependency) - это семантическое отношение между двумя сущностями, при котором изменение одной из них, независимой, может повлиять на семантику другой, зависимой.
-
Ассоциация (association) - структурное отношение, описывающее совокупность смысловых или логических связей между объектами.
Отношения (cont.)
-
Обобщение (generalization) - это отношение, при котором объект специализированного элемента (потомок) может быть подставлен вместо объекта обобщенного элемента (предка).
-
Реализация (realization) является семантическим отношением между классификаторами, при котором один классификатор определяет обязательство, а другой гарантирует его выполнение. Отношение реализации встречаются в двух случаях:
-
между интерфейсами и реализующими их классами или компонентами;
-
между прецедентами и реализующими их кооперациями.
Диаграмма
Диаграмма - это графическое представление множества элементов, обычно изображаемое в виде связного графа из вершин (сущностей) и ребер (отношений).
Виды диаграмм
-
Диаграмма классов (class diagram).
-
Диаграмма компонентов (component diagram).
-
Диаграмма развертывания (deployment diagram).
-
Диаграмма прецедентов (use case diagram).
-
Диаграмма последовательности (sequence diagram).
-
Диаграмма состояний (statechart diagram).
-
Диаграмма деятельности (activity diagram).
-
Диаграмма кооперации.
-
Диаграмма объектов.
Диаграмма классов
Отображает отношения сущностей друг с другом.

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

Диаграмма последовательности
-
Отражает последовательность действий какого-то типового случая.
-
Вертикальная шкала – шкала времени, вызовов методов и сообщений.
-
Горизонтальная шкала содержит сущности, участвующие во взаимодействии.
Пример диаграммы последовательности
Чтение должно начинаться слева сверху.

Диаграмма состояний
Отражает возможные состояния классов и последовательности перехода между ними.
Пример диаграммы состояний
На диаграмме всегда можно выделить начальное состояние.

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

Два участника диаграммы последовательно выполняют шаги до окончания процесса.
Пример диаграммы компонентов
Система состоит из четырех компонентов:

Диаграмма развертывания
-
Моделирует способ, которым система будет развернута на физических компонентах и как они будут взаимодействовать между собой.
-
Похожа на диаграмму компонентов с дополнительным блоком – узлом (node).
-
Используется следующий способ именования:
-
[instance name] : [instance type]
-
Например: "w3reporting.myco.com : Application Server"
Пример диаграммы развертывания
Можно отследить физическое место каждого компонента диаграммы.

Другие элементы: заметка
-
Комментарий, соединенный с элементом диаграммы пунктирной линией.

Другие элементы: секции
-
Разделение атрибутов или операций по группам.
Примеры классов (1/2)
-
Классы задают некий шаблон атрибутов...



Примеры классов (2/2)
-
и операций, которые могут быть использованы приложением-клиентом.

Примеры объектов
-
Объект обладает данными, специфичными только для него.

Ассоциации и связи


Ассоциативный класс (1/2)
-
Двойная ассоциация может характеризоваться набором параметров.

Ассоциативный класс (2/2)
-
Множественная ассоциация может быть составной.

Окончания ассоциаций

-
Роль.
-
Стрелка.
-
Число/интервал
-
Агрегация (has-a) и композиция (contains-a).
-
Квалификатор.




Типы
-
Тип – это класс, который может иметь атрибуты, ассоциации и операции, но не имеет методов.

Интерфейс
-
Это класс, который может иметь операции, но не имеет методов, атрибутов и ассоциаций.

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

Выводы
-
Возможности UML позволяют гибко моделировать систему.
-
Созданная модель проста для понимания.
-
Модель может иметь различные степени детализации.
-
Спектр диаграмм позволяет детализировать каждый аспект проекта.
Ссылки
-
Kendall Scott Fast Track UML 2.0
-
Sinan Si Alhir Learning UML
Q&A
Спасибо!