Диаграммы UML

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

Чем UML не является

  1. не является языком программирования, хотя генерация кода не возбраняется
  2. не навязывает спецификации, которая говорила бы о том, как программы должны рисовать UML-схемы
  3. не диктует модель процесса разработки приложения

Частые способы применения

  1. рисование картинок/схем для обмена информацией (общением) с другими людьми
  2. спецификация систем - возможность как-то стандартизировать знания о работе компании (полезно для быстрого понимания)
  3. моделирование объектов - описание объектов участвующих в спецификации системы (например модель Клиент имеет поля Имя, адрес и т.д.)

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

Типы элементов нотации

  1. фигура (shape) - прямоугольники и эллипсы, внутри фигур могут помещаться другие элементы нотации: тексты, линии, значки и даже другие фигуры. Единственное требование: должно быть однозначно понятно, что элемент нотации находится внутри фигуры, в частности, его изображение не должно пересекать границу фигуры.
  2. линия (line)могут быть прямые, ломаные, плавные кривые, сплошные и пунктирные. Всегда присоединяются своими концами к фигурам или значкам, они не могут быть нарисованы сами по себе. К линиям могут быть пририсованы дополнительные элементы: стрелки на концах, тексты и т.д. Единственное требование: должно быть ясно, что дополнительный элемент относится именно к данной линии. Линии могут пересекаться, и это ничего не значит, но рекомендуется избегать таких случаев, поскольку это затрудняет восприятие.
  3. значок (icon) - не имеют внутренности, в которую можно что-то поместить.
  4. текст (text)различаются прямые, курсивные и подчеркнутые тексты
  5. рамка (frame) - используется исключительно как контейнер для других фигур, линий, значков и текстов

Нотация UML довольно свободная: рисовать можно как угодно, лишь бы не возникало недоразумений. Например рассмотрим пример "Четыре способа представления ребер" из книги Фаулер М. UML. Основы (3-е издание, 2005):

Диаграммы UML

 

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

Взаимосвязи

Много в UML касается программирования, поэтому UML как язык для общения с бизнесом, применяется очень скудно, но я попробую привести пример на основе компьютера.

Взаимосвязь Пример Описание
Ассоциация наличие обязательных деталей Диаграммы UML Компьютер Если у сложного устройства есть в наличии обязательные детали (материнская плата, процессор, озу) значит это компьютер
Наследование сложное устройство Диаграммы UML Компьютер Любое сложное устройство (ноутбук, планшет, умные часы и т.д.) является представителем компьютера
Реализация/Имплементация компьютер Диаграммы UML Стандарты сборки Чтобы правильно собрать компьютер, нужно следовать неким стандартам сборки (размеры, виды разъемов, версии протоколов взаимодействия и т.д.)
Зависимость компьютер Диаграммы UML Электричество Работа компьютера зависит от электричества, но электричество не зависит от компьютера
Агрегация дополнительные детали Диаграммы UML Компьютер В компьютере могут быть дополнительные детали (точпад, веб-камера и т.д), но их может и не быть
Композиция обязательные детали Диаграммы UML Компьютер Без обязательных деталей компьюетр не может быть собран (материнская плата, процессор, озу)

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

Конечно, чтобы построить диаграмму, нужно ознакомиться вкратце с каждым из 13 официальных типов диаграмм, которые описаны UML 2.

Диаграмма

Цель

Происхождение

Деятельности

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

В UML 1

Классов

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

В UML 1

Взаимодействия

Взаимодействие между объектами; акцент на связях

Диаграмма коопераций в UML 1

Компонентов

Структура и взаимосвязи между компонентами

В UML 1

Составных структур

Декомпозиция класса во время выполнения

Новое в UML 2

Развертывания

Развертывание артефактов в узлы

В UML 1

Обзора взаимодействий

Комбинация диаграммы после довательности и диаграммы деятельности

Новое в UML 2

Объектов

Вариант конфигурации экземпляров

Неофициально в UML 1

Пакетов

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

Неофициально в UML 1

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

Взаимодействие между объектами; акцент на последовательности

В UML 1

Конечных автоматов

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

В UML 1

Временная

Взаимодействие между объектами; акцент на синхронизации

Новое в UML 2

Прецедентов

Как пользователи взаимодействуют с системой

В UML 1

Авторы UML считают, что диаграммы определены не очень строго. Часто вполне допустимо присутствие элементов диаграммы одного типа в другой диаграмме.

Стоит добавить, что иерархия UML диаграмм и полное описание каждого типа хорошо продемонстрированы в википедии.

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

Диаграмма классов

Диаграммы UML

Кратность

  • 1 Заказ может представить только один клиент.
  • 0..1 (Корпоративный клиент может иметь, а может и не иметь единственного торгового представителя.)
  • * Клиент не обязан размещать заказ, и количество заказов не ограничено. Он может разместить ноль или более заказов.

Атрибут

Пример: + String [1] = "Без имени" {readOnly}

Обязательно только имя.

  • слева от имени отображается метка видимости, которая может быть + (public) или - (private). Если не указано, значит +
  • справа от знака равно = показано значение по умолчанию (значение для вновь создаваемых объектов, если атрибут не определен в процессе создания)
  • Элемент {строка свойств} позволяет указывать дополнительные свойства атрибута. В примере он равен {readOnly}, то есть клиенты не могут изменять атрибут. Если он пропущен, то, как правило, атрибут можно модифицировать

Шарово-гнездовая нотация:

Рассмотрим пример нотации называемом леденц на палочке:

Диаграммы UML

  • ArrayList реализует List и Collection
  • Order требует интерфейс List

Параметризованный класс:

Диаграммы UML

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

Пример демонстрирующий, как вызов функции calculatePrice порождает цепочку действий.

Диаграммы UML

Обратите внимание на следующие нюансы:

  • возвращающие стрелки не отображены, но подразумеваются (кроме последней стрелки пунктиром)
  • объект Order сделав вызов getDiscountedValue породил обратный вызов к себе getBaseValue от объекта Customer

Диаграмма деятельности

Диаграммы UML

Обратите внимание выше, как завершается слияние у решения.

Часто, можно встретить такие обозначения:

Диаграммы UML

Иногда полезно разбить диаграмму деятельности на разделы (partitions):

Диаграммы UML

Временный сигнал:

Диаграммы UML

Как видите, до моего отлета остается два часа (Two hours before flight), и мне пора собирать багаж. Если я упакую его раньше времени, то все равно не смогу уехать, пока не прибудет такси. Если такси приходит (Taxi Arrives) до того, как я успею собрать багаж (Pack Bags), то оно должно ждать меня, пока я не закончу.

Диаграммы компонентов

Диаграммы UML

Пример вложенности:

Диаграммы UML

Временные диаграммы

Акцентирует внимание на временных ограничениях.

Пример из жизни основанный на использовании насоса (Pump) и нагревательного элемента (Hotplate) в кофеварке (coffee pot).

Представим себе правило, которое гласит, что между включением насоса и включением нагревательного элемента должно пройти по крайней мере 10 секунд. Когда емкость с водой становится пустой (waterEmpty), насос выключается, а нагревательный элемент не может оставаться включенным более 15 минут.

Временная диаграмма, на которой состояния представлены в виде линий:

Диаграммы UML

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

Диаграммы UML

 

Источники: 1 - 2 - 3 - 4 - 5

Оцени публикацию:
  • 0,0
Оценили: 0


Предложения и пожелания:

 

youtube.com/watch?v=7hFivbgIEqk

При полном или частичном использовании материалов данного сайта, ссылка на сайт "yapro.ru" обязательна как на источник информации.
Автоматический импорт материалов и информации с сайта запрещен.
Copyrights © 2007 - 2019 YaPro.Ru

Лебеденко Николай Николаевич
Ошибка в тексте? Выделите её мышкой и нажмите: Ctrl + Enter