Базові терміни та нотація
UML створена для візуального моделювання систем на основі об’єктно-орієнтованого підходу. Ця мова створювалася для оптимізації процесу розроблення програмних систем, що дозволяє збільшити ефективність їх реалізації у кілька разів і помітно поліпшити якість кінцевого продукту. Вона дозволяє будувати моделі для усіх фаз ЖЦ ПЗ.
Мова була створена як результат «війни методів» моделювання у 1995 р. та увібрала у себе риси нотацій Грейді Буча (Grady Booch), Джеймса Рамбо (James Rumbaugh), Айвара Якобсона (Ivar Jacobson) і багатьох інших (рис.23). З 1997 р. розробленням мови займається консорціум OMG (Object Management Group), створений у 1989 році для розроблення індустріальних стандартів з їх наступним використанням у процесі створення масштабованих неоднорідних розподілених об’єктних середовищ.

Рисунок 22 – Історія розвитку об’єктно-орієнтованих методів
(джерело – http://commons.wikimedia.org/wiki/File:OO- historie.jpg)
Універсальність UML підтверджує її широке застосування, особливо у галузі створення програмних систем та затвердження у 2005 р. версії UML 1.4.2 як стандарту ISO/IEC 19501:2005. Найновіша стабільна версія мови UML
Моделювання за допомогою мови UML грунтується на таких принципах:
абстрагування – у модель необхідно включати тільки ті елементи проектованої системи, які мають безпосереднє відношення до виконання нею своїх функцій;
багатомодельність – ніщо єдина модель не може з достатнім ступенем точності описати різні аспекти системи. Можна описувати систему кількома взаємозалежним уявленнями, кожне з яких відображає певний бік її структури або поведінки;
ієрархічність – при описі системи використовуються різні рівні абстрагування і деталізації у рамках фіксованих уявлень. При цьому перше уявлення системи описує її в найбільш загальних рисах і є представленням концептуального рівня, а наступні рівні розкривають різні сторони системи із зростаючим ступенем деталізації аж до фізичного рівня. Модель фізичного рівня в мові UML відображає компонентний склад проектованої системи з точки зору її реалізації на апаратурній і програмній платформах конкретних виробників.
Елементи (класифікатори) мови UML можна поділити на три групи (рис.23).
Сутності (entity) – абстракції, що є основними об’єкто- орієнтованими елементами мови UML, за допомогою яких будуються моделі. В UML визначено чотири типи сутностей: структурні, поведінкові, сутності групування та сутності- примітки.
- Структурні сутності – це іменники в моделях UML. Як правило, вони є статичними частинами моделей, які відповідають концептуальним або фізичним елементам системи. Існує сім різновидів структурних сутностей: Клас (Class), Інтерфейс (Interface), Кооперація (Collaboration), Варіант використання/Прецедент (Use case), Активний клас (Active class), Компонент (Component), Вузол (Node).

Рисунок 23 – Класифікатори мови UML
- Поведінкові сутності є динамічними складовими моделі UML, які описують поведінку моделі в часі і просторі. Це дієслова мови. Існують два основних типи поведінкових сутностей: Взаємодія (Interaction) та Автомат (State).
- Сутності групування є організуючими частинами моделі UML. Це блоки, на які можна розкласти модель. Первинна сутність групування – пакет (Package).
- Сутності-примітки – пояснювальні частини моделі UML. Це коментарі для додаткового опису, роз’яснення або зауваження до будь-якого елемента моделі. Є тільки один базовий тип анотаційних елементів – примітка (Note).
Для зв’язування сутностей у моделях UML визначено чотири типи відносин (рис.24):
Залежність (dependency) – це семантичне відношення між двома сутностями, при якому зміна однієї з них, незалежної, може вплинути на семантику іншої, залежної.



Рисунок 24 – Нотація відносин мови UML
Асоціація (association) – структурне відношення, що описує сукупність змістовних або логічних зв’язків між об’єктами.
Узагальнення (generalization) – це відношення, при якому об’єкт-нащадок (child) може бути підставлений замість об’єкта-батька (parent). При цьому відповідно до принципів об’єктно-орієнтованого програмування нащадок успадковує структуру і поведінку свого батька.
Реалізація (realization) є семантичним відношенням між класифікаторами, при якому один класифікатор визначає зобов’язання, а інший гарантує його виконання. Відношення реалізації спостерігаються у двох випадках:
між інтерфейсами, реалізують класами або компонентами;
між варіантами використання, реалізують кооперації.
Усі різновиди сутностей та відносини UML в діаграмах мають свій спосіб графічного зображення (рис.25, 26).
В UML використовуються 13 діаграм [29], які поділені на дві основні групи (рис.27):
структурні діаграми (Structure Diagrams) – моделі, призначені для опису статичної структури сутностей або елементів системи, включаючи їх класи, інтерфейси, атрибути та відношення;
діаграми поведінки (Behavior Diagrams) – моделі, призначені для опису процесу функціонування елементів системи, включаючи їх методи та взаємодію між ними, а також процес зміни станів окремих елементів та системи в цілому.
Кожна діаграма уточнює уявлення про систему. При цьому діаграма варіантів використання є концептуальною моделлю системи, початковою для побудови усіх інших діаграм. Діаграма класів є логічною моделлю, що відбиває статичні аспекти структурної побудови системи, а діаграма діяльності, що також є різновидами логічної моделі, відображає динамічні аспекти її функціонування.

Рисунок 25 – Нотація сутностей мови UML

Рисунок 26 – Діаграми мови UML