Что такое UML?
UML (Unified Modeling Language) — унифицированный язык моделирования. UML можно охарактеризовать как формальный искусственный язык. Признаком искусственности служит наличие трех общепризнанных авторов(Грэди Буч, Джеймс Рамбо, Айвар Якобсон). Описание UML по большей части формальное, но содержит и явно неформальные составляющие. Такие особенности UML как точки вариации семантики и стандартные механизмы расширения, заметно отличают UML от языков, которые, по общему мнению, являются образцами формализма.
Модель UML — это, прежде всего, описание объекта или явления.
UML отнюдь не завершена ‒ язык постоянно совершенствуется, обогащается и расширяется.
Назначение UML
UML ‒ это графический язык моделирования общего назначения, предназначенный для спецификации, визуализации, проектирования и документирования всех артефактов, создаваемых при разработке программных систем.
1. Спецификация ‒ это декларативное описание того, как нечто устроено или работает.Необходимо принимать во внимание три толкования спецификаций. Но эти три трактовки спецификаций могут не совпадать
- То, которое имеет в виду действующее лицо, являющееся источником спецификации (например, заказчик).
- То, которое имеет в виду действующее лицо, являющееся потребителем спецификации (например, разработчик).
- То, которое объективно обусловлено природой специфицируемого объекта.
Основное назначение UML ‒ предоставить, с одной стороны, достаточно формальное, с другой стороны, достаточно удобное, и, с третьей стороны, достаточно универсальное средство, позволяющее до некоторой степени снизить риск расхождений в толковании спецификаций.
2. Визуализация. Модели UML допускают представление в форме картинок, причем эти картинки наглядны, интуитивно понятны, практически однозначно интерпретируются и легко составляются. Таким образом, второе по важности назначение UML состоит в том, чтобы служить адекватным средством коммуникации между людьми.
3. Проектирование.
- Автоматический синтез программ
• Алгоритмически неразрешимая массовая проблема
• Известны разрешимые подклассы - Автоматическая (частичная) генерация программного кода по модели
• Генеративное и дегенеративное программирование - Автоматическое построение моделей по коду готового приложения
• Инженерный анализ программ (Reverse engineering)
4. Документирование.
- Все элементы модели могут содержать текстовое описание
- Почти все инструменты могут собирать из них осмысленные документы
- Почти никто из разработчиков этим не пользуется
Чем НЕ является UML?
- Языком программирования
• Генерация кода возможна - Спецификацией инструмент
• Инструменты подразумеваются и имеются - Моделью процесса разработки приложений
• Модель необходима и имеется — Rational Unified Process (RUP)
Способы использования UML
- Рисование картинок
- Обмен информацией
- Спецификация систем
- Повторное использование архитектурных решений
- Генерация кода
- Имитационное моделирование
- Верификация моделей
Определение UML
От определения искусственного языка требуется, чтобы оно было:
- точным
- понятным
- кратким
- полным
Наиболее удачными оказываются компромиссные решения. Авторы UML пошли именно по этому пути.
В основу описания UML положен метод раскрутки, то есть использование определяемого языка для определения этого языка. А именно, основные конструкции UML формально определены с помощью UML.
Семантика: диаграммы классов/пакетов + ограничения (OCL = Object Constraints Language) + текст (plain english).
Нотация: отображение семантики в картинке.
В описании UML используются три языковых уровня.
- Мета-метамодель — описание используемого формализма
• Контекстно-свободная грамматика - Метамодель — описание языка
• Infrastructure + Superstructure - Модель — использование языка
• Примеры
Структура стандарта UML 2.1.2
Без специальной предварительной подготовки читать в этих документах имеет смысл только вводные разделы, примерно соответствующие по задачам этой главе, и последние разделы, в которых собраны толкования основных терминов, примерно соответствующие по задачам последней главе этой книги. Остальное предназначено не для ознакомительного чтения пользователями, а для скрупулезного изучения разработчиками инструментов моделирования. По замыслу авторов языка для пользователей должны быть написаны другие книги, и они написаны, как самими авторами, так и любителями UML.
Терминология
UML — независимый от конкретных языков программирования
- новые термины для исключения совпадений
UML — унифицированный
- разные терминологические традиции
По-русски устоявшейся терминологии нет
- основной критерий: как можно точнее передать смысл
Терминология UML довольно замысловатая и не всегда последовательная
Нотация
При разработке UML были предложены и приняты разумные рекомендации по выбору нотации. Авторы исходили из того, что UML будет использоваться по-разному: начиная от не очень аккуратного рисования от руки на листке бумаги, печати черно-белых изображений в книгах и заканчивая созданием сложных диаграмм с помощью компьютера. Поэтому в качестве основных графических элементов были выбраны такие, которые было бы легко использовать во всех случаях.
Фигуры в UML используются двумерные (т.е. их можно нарисовать на плоскости) и замкнутые (т.е. есть внутренняя и внешняя части). Фигуры могут менять свои размеры и форму, сохраняя при этом свои интуитивные отличительные признаки. Например, среди фигур UML есть прямоугольники и эллипсы. Они могут быть изображены многими способами: разного размера, с разным соотношением длин сторон (или, соответственно, полуосей), по-разному ориентированы относительно границ страницы и т.д., но во всех случаях прямоугольник отличен от эллипса и не может быть с ним спутан. Внутри фигур могут помещаться другие элементы нотации: тексты, линии, значки и даже другие фигуры. Единственное требование: должно быть однозначно понятно, что элемент нотации находится внутри фигуры, в частности, его изображение не должно пересекать границу фигуры.
Линии в UML, естественно, одномерные. Линии всегда присоединяются своими концами к фигурам или значкам, они не могут быть нарисованы сами по себе. Форма линий произвольна: это могут быть прямые, ломаные, плавные кривые ‒ значения это не имеет. Толщина линий также произвольна. А вот стиль линии имеет значение. В UML используется два стиля линий: сплошные и пунктирные линии. К линиям могут быть пририсованы различные дополнительные элементы: стрелки на концах, тексты и т.д. Единственное требование: должно быть ясно, что дополнительный элемент относится именно к данной линии. Линии могут пересекаться, и это ничего не значит, но рекомендуется избегать таких случаев, поскольку это затрудняет восприятие.
Значки в UML похожи на фигуры тем, что они двумерные, а отличаются тем, что не имеют внутренности, в которую можно что-то поместить, и, как правило, не меняют свою форму и размеры. Впрочем, значки в UML используются очень умеренно, а потому сохраняют свою основную функцию однозначно воспринимаемого иероглифа.
Тексты в UML ‒ это последовательности различимых символов некоторого алфавита. Алфавит не фиксирован ‒ он только должен быть понятен читателю модели. Гарнитура, размер и цвет шрифта не имеют значения, а вот начертание шрифта имеет: в UML различаются прямые, курсивные и подчеркнутые тексты. Предполагается, что читатель сумеет их различить.
В общем, нотация UML довольно свободная: рисовать можно как угодно, лишь бы не возникало недоразумений.
Модель и её элементы
Модель UML — это совокупность конечного множества конструкция языка, главные из которых — сущности и отношения.
Сущности и отношения модели являются экземплярами метаклассов метамодели.
Модель UML — это нагруженный мульти-псевдо-гипер-орграф.
Вершины и ребра нагружены информацией и могут иметь сложную внутреннюю структуру. Вершины — сущности, ребра — отношения.
Сущности
Нотация сущностей
В UML используются четыре основных типа отношений:
- зависимость;
- ассоциация;
- обобщение;
- реализация.
1. Зависимость ‒ это наиболее общий тип отношения между двумя сущностями. Отношение зависимости указывает на то, что изменение независимой сущности каким-то образом влияет на зависимую сущность. Графически отношение зависимости изображается в виде пунктирной линии со стрелкой 1, направленной от зависимой сущности 2 к независимой 3.
2. Ассоциация ‒ это наиболее часто используемый тип отношения между сущностями. Отношение ассоциации имеет место, если одна сущность непосредственно связана с другой (или с другими ‒ ассоциация может быть не только бинарной). Графически ассоциация изображается в виде сплошной линии 1 с различными дополнениями, соединяющей связанные сущности.
3. Обобщение‒ это отношение между двумя сущностями, одна их которых является частным (специализированным) случаем другой. Графически обобщение изображается в виде линии с треугольной незакрашенной стрелкой на конце 1, направленной от частного 2 (подкласса) к общему 3 (суперклассу).
4. Отношение реализациии используется несколько реже, чем предыдущие три типа отношений, поскольку часто подразумеваются по умолчанию. Отношение реализации указывает, что одна сущность является реализацией другой. Графически реализация изображается в виде пунктирной линии с треугольной незакрашенной стрелкой на конце 1, направленной от реализующей сущности 2 к реализуемой 3.
2 комментария
Свежинцев Владислав · 10.05.2021 в 23:07
Информативная и крутая статья!
Свежинцев Владислав · 10.05.2021 в 23:07
Продолжай в том же духе!