UML (англ. Unified Modeling Language — унифицированный язык моделирования) — язык графического описания для объектного моделирования в области разработки программного обеспечения, для моделирования бизнес-процессов, системного проектирования и отображения организационных структур.
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 — независимый от конкретных языков программирования новые термины для исключения совпадений
UML — унифицированный разные терминологические традиции
По-русски устоявшейся терминологии нет
Основной критерий: как можно точнее передать смысл
Терминология UML довольно замысловатая и не всегда последовательная
При разработке UML были предложены и приняты разумные рекомендации по выбору нотации. Авторы исходили из того, что UML будет использоваться по-разному: начиная от не очень аккуратного рисования от руки на листке бумаги, печати черно-белых изображений в книгах и заканчивая созданием сложных диаграмм с помощью компьютера. Поэтому в качестве основных графических элементов были выбраны такие, которые было бы легко использовать во всех случаях.
Фигуры в UML используются двумерные (т.е. их можно нарисовать на плоскости) и замкнутые (т.е. есть внутренняя и внешняя части). Фигуры могут менять свои размеры и форму, сохраняя при этом свои интуитивные отличительные признаки. Внутри фигур могут помещаться другие элементы нотации: тексты, линии, значки и даже другие фигуры. Единственное требование: должно быть однозначно понятно, что элемент нотации находится внутри фигуры, в частности, его изображение не должно пересекать границу фигуры.
Линии в UML, естественно, одномерные. Линии всегда присоединяются своими концами к фигурам или значкам, они не могут быть нарисованы сами по себе. Форма линий произвольна: это могут быть прямые, ломаные, плавные кривые ‒ значения это не имеет. Толщина линий также произвольна. А вот стиль линии имеет значение. В UML используется два стиля линий: сплошные и пунктирные линии. Единственное требование: должно быть ясно, что дополнительный элемент относится именно к данной линии. Линии могут пересекаться, и это ничего не значит, но рекомендуется избегать таких случаев, поскольку это затрудняет восприятие.
Значки в UML похожи на фигуры тем, что они двумерные, а отличаются тем, что не имеют внутренности, в которую можно что-то поместить, и, как правило, не меняют свою форму и размеры. Впрочем, значки в UML используются очень умеренно, а потому сохраняют свою основную функцию однозначно воспринимаемого иероглифа.
Тексты в UML ‒ это последовательности различимых символов некоторого алфавита. Алфавит не фиксирован ‒ он только должен быть понятен читателю модели. В UML различаются прямые, курсивные и подчеркнутые тексты.
Модель и её элементы
Модель UML — это совокупность конечного множества конструкция языка, главные из которых — сущности и отношения.
Сущности и отношения модели являются экземплярами метаклассов метамодели.
Модель UML — это нагруженный мульти-псевдо-гипер-орграф.
Вершины и ребра нагружены информацией и могут иметь сложную внутреннюю структуру. Вершины — сущности, ребра — отношения.
Сущности
Нотация сущностей
В UML используются четыре основных типа отношений:
зависимость
ассоциация
обобщение
реализация
Зависимость ‒ это наиболее общий тип отношения между двумя сущностями. Отношение зависимости указывает на то, что изменение независимой сущности каким-то образом влияет на зависимую сущность. Графически отношение зависимости изображается в виде пунктирной линии со стрелкой 1, направленной от зависимой сущности 2 к независимой 3.
Ассоциация ‒ это наиболее часто используемый тип отношения между сущностями. Отношение ассоциации имеет место, если одна сущность непосредственно связана с другой (или с другими ‒ ассоциация может быть не только бинарной). Графически ассоциация изображается в виде сплошной линии 1 с различными дополнениями, соединяющей связанные сущности.
Обобщение‒ это отношение между двумя сущностями, одна их которых является частным случаем другой. Графически обобщение изображается в виде линии с треугольной незакрашенной стрелкой на конце 1, направленной от частного 2 подкласса к общему 3 суперклассу.
Отношение реализациии используется несколько реже, чем предыдущие три типа отношений, поскольку часто подразумеваются по умолчанию. Отношение реализации указывает, что одна сущность является реализацией другой. Графически реализация изображается в виде пунктирной линии с треугольной незакрашенной стрелкой на конце 1, направленной от реализующей сущности 2 к реализуемой 3.
Познавательная статья. Познакомился с новыми терминами. Доступно изложено.