Автор: Олександр Марголін, CTO

Матеріали статті підготовлені в рамках внутрішньої програми менторства і навчання фахівців команди Evergreen.

Що таке UML-діаграми?

Unified Modeling Language (UML) — уніфікована мова моделювання. Розшифруємо: modeling передбачає створення моделі, що описує об'єкт. Unified (універсальний, єдиний) — підходить для широкого класу проектованих програмних систем, різних областей додатків, типів організацій, рівнів компетентності, розмірів проектів. UML описує об'єкт в єдиному заданому синтаксисі, тому де б ви не намалювали діаграму, її правила будуть зрозумілими для всіх, хто знайомий з цією графічною мовою — навіть в іншій країні.

Для чого використовується UML?

Одне із завдань UML — служити засобом комунікації всередині команди та при спілкуванні з замовником. Давайте розгляднемо можливі варіанти використання дігарам. 

  • Проектування. UML-діаграми стануть у пригоді при моделюванні архітектури великих проектів, в якій можна зібрати як великі, так і дрібніші деталі і намалювати каркас (схему) програми. По ньому пізніше буде будуватись код.  

  • Реверс-інжиніринг — створення UML-моделі з існуючого коду додатку, зворотна побудова. Может застосовуватися, наприклад, на проектах підтримки, де є написаний код, але документація неповна або відсутня. 

  • З моделей можна витягувати текстову інформацію і генерувати відносто читабельні тексти — документувати. Текст і графіка будуть доповнювати один одного.

Нотація UML для опису логіки проекту

Як будь-яка інша мова, UML має власні правила оформлення моделей і синтаксис. За допомогою графічної нотації UML можна візуалізувати систему, об'єднати всі компоненти в єдину структуру, уточнювати і покращувати модель у процесі роботи. На загальному рівні графічна нотація UML містить 4 основні типи елементів:

  • фігури;
  • лінії;
  • значки;
  • написи.

UML-нотація де-факто є галузевим стандартом у сфері розробки програмного забезпечення, ІТ-інфраструктури і бізнес-систем.

Популярні програми для створення діаграм

  • Diagrams.net — зручний сервіс для створення блок-схем, UML-діаграм, моделей бізнес-процесів онлайн. Сумісний з більшістю популярних інструментів, включаючи Google Docs, Git, Dropbox, OneDrive та інші.

діаграма diagrams.net

Джерело: diagrams.net

  • Dbdiagram.io — додаток для побудови діаграм зв'язків для баз даних. Хороший інструмент для розробників і аналітиків.

діаграма dbdiagrams.io

  • Google Drawings — безкоштовний інструмент для створення блок-схем і діаграм в складі Google Drive (менш зручний порівняно з diagrams.net);

  • xmind.net — програма для побудови інтелектуальних карт (mind map), логічних схем, складних структур, проведення брейнстормів і не тільки.

Види UML-діаграм

В мові UML є 12 типів діаграм:

  • 4 типи діаграм представляють статичну структуру додатку;
  • 5 типів представляють поведінкові аспекти системи;
  • 3 представляють фізичні аспекти функціонування системи (діаграми реалізацїі).

Деякі з видів діаграм специфічні для певної системи і додатку. Найбільш доступними з них є:

  • Діаграма прецедентів (Use-case diagram); 
  • Діаграма класів (Class diagram);
  • Діаграма активностей (Activity diagram); 
  • Діаграма послідовності (Sequence diagram);
  • Діаграма розгортання (Deployment diagram);
  • Діаграма співробітництва (Collaboration diagram); 
  • Діаграма об'єктів (Object diagram); 
  • Діаграма станів (Statechart diagram).

Діаграма прецедентів — Use-case diagram

Діаграма прецедентів використовує 2 основних елементи: 

1) Actor (учасник) — множина логічно пов'язаних ролей, виконуваних при взаємодії з прецедентами або сутностями (система, підсистема або клас). Учасником може бути людина, роль людини в системі чи інша система, підсистема або клас, які представляють щось поза сутністю. 

2) Use case (прецедент) — опис окремого аспекту поведінки системи з точки зору користувача. Прецедент не показує, "як" досягається певний результат, а тільки "що" саме виконується.

Розглянемо класичний студентський приклад, в якому є 2 учасники: студент і бібліотекар. Прецеденти для студента: шукає в каталозі, замовляє, працює в читальному залі. Роль бібліотекаря: видача замовлення, консультації (рекомендації книг по темі, навчання використанню пошукової системи і заповнення бланків замовлення).

use case diagram

Джерело: slide-share.ru

Другий приклад дещо складніший. Бачимо, що одна і та сама особа може виступати в декількох ролях. Наприклад, product manager у нас працює над стратегією і більше нічим не займається, архітектор працює над стратегією і займається впровадженням, build master займається трьома речами одночасно, і так далі. За такою схемою ми можемо простежити, як  пов'язані між собою ролі і прецеденти.

 use case diagram

Джерело: slide-share.ru

Діаграма класів — Class diagram

Класс (class) — категорія речей, що мають загальні атрибути та операції. Сама діаграма класів являє собою набір статичних, декларативних елементів моделі. Вона дає нам найбільш повне і розгорнуте уявлення про зв'язки в програмному коді, функціональність та інформацію про окремі класи. Додатки генеруються часто саме з діаграми класів. Розглянемо на простому прикладі нижче: class diagram

Джерело: slide-share.ru

Для класу "студент" є таблиця, що містить атрибути: ім'я, адреса, телефон, e-mail, номер заліковки, середня успішність. І також показані зв'язки даної сутності з іншими: проходженням курсу, який курс слухає, хто професор. У цьому прикладі також додаються функції, які можуть бути застосовані до сутності "студент". 

Діаграма активностей — Activity diagram

Теж крута штука, яка дуже часто використовується на практиці. Діаграма активностей описує динамічні аспекти поведінки системи у вигляді блок-схеми, яка відображає бізнес-процеси, логіку процедур і потоки робіт — переходи від однієї діяльності до іншої. По суті, ми малюємо алгоритм дій (логіку поведінки) системи або взаємодії кількох систем. Нижче — приклад подібної діаграми для інтернет-магазину.діаграма активностей

Діаграма активностей для сайту магазину максимально доступно пояснює, які є інтеграції в системі. Актор (в нашому випадку — покупець), що зайшов на сайт, робить замовлення. Далі у нас відбувається розгалуження: перевіряємо, чи є користувач оптовиком (Так/Ні). Якщо він не зареєстрований в системі і не оптовик, замовлення відправляється в retailCRM. Якщо користувач зареєстрований, його замовлення потрапляє в Navision. При цьому між retailCRM і Navision відбувається синхронізація залишку і статусів.

Цю базову діаграму ми можемо доповнити, розширити, вона може виступити частиною документації і дає загальне уявлення про роботу системи.

Діаграма послідовності — Sequence Diagram

Використовується для уточнення діаграм прецедентів — описує поведінкові аспекти системи. Діаграма послідовності відображає взаємодію об'єктів в динаміці, в часі. При цьому інформація набуває вигляду повідомлень, а взаємодія об'єктів передбачає обмін цими повідомленнями в рамках сценарію. 

sequence diagram

 Джерело: slide-share.ru

Діаграма розгортання — Deployment Diagram

Діаграма розгортання відображає графічне представлення інфраструктури, на яку буде розгорнуто додаток: топологію системи і розподіл компонентів по її вузлах, а також з'єднання — маршрути передачі даних між вузлами. Діаграма допомагає раціональніше організувати компоненти, від чого залежить в числі іншого і продуктивність системи, а також вирішити допоміжні завдання, наприклад, пов'язані з безпекою.

діаграма розгортанняДжерело: slide-share.ru

Висновок

Як бачимо, на перший погляд банальний набір фігур і стрілок може значно спростити вирішення складних завдань в програмуванні, допомогти при виборі оптимального рішення і розробці технічної документації. Які ще висновки можемо зробити:

  • будувати діаграми нескладно;
  • діаграми легко читаються і прості розуміння;
  • вони — чудовий інструмент для проектування архітектури і поведінки;
  • необхідні для документування будь-якої нетривіальної системи. Дозволяють легко зрозуміти зв'язки між модулями та інтеграціями в системі. 

Залишились запитання, хочете обговорити з нами ваш проект чи замовити розробку? Пишіть!

06.02.2021
Зображення, використані в статті, були взяті з відкритих джерел і використовуються як ілюстрації.