Автор: Олександр Марголін, 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
- Dbdiagram.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 учасники: студент і бібліотекар. Прецеденти для студента: шукає в каталозі, замовляє, працює в читальному залі. Роль бібліотекаря: видача замовлення, консультації (рекомендації книг по темі, навчання використанню пошукової системи і заповнення бланків замовлення).
Джерело: slide-share.ru
Другий приклад дещо складніший. Бачимо, що одна і та сама особа може виступати в декількох ролях. Наприклад, product manager у нас працює над стратегією і більше нічим не займається, архітектор працює над стратегією і займається впровадженням, build master займається трьома речами одночасно, і так далі. За такою схемою ми можемо простежити, як пов'язані між собою ролі і прецеденти.
Джерело: slide-share.ru
Діаграма класів — Class diagram
Класс (class) — категорія речей, що мають загальні атрибути та операції. Сама діаграма класів являє собою набір статичних, декларативних елементів моделі. Вона дає нам найбільш повне і розгорнуте уявлення про зв'язки в програмному коді, функціональність та інформацію про окремі класи. Додатки генеруються часто саме з діаграми класів. Розглянемо на простому прикладі нижче:
Джерело: slide-share.ru
Для класу "студент" є таблиця, що містить атрибути: ім'я, адреса, телефон, e-mail, номер заліковки, середня успішність. І також показані зв'язки даної сутності з іншими: проходженням курсу, який курс слухає, хто професор. У цьому прикладі також додаються функції, які можуть бути застосовані до сутності "студент".
Діаграма активностей — Activity diagram
Теж крута штука, яка дуже часто використовується на практиці. Діаграма активностей описує динамічні аспекти поведінки системи у вигляді блок-схеми, яка відображає бізнес-процеси, логіку процедур і потоки робіт — переходи від однієї діяльності до іншої. По суті, ми малюємо алгоритм дій (логіку поведінки) системи або взаємодії кількох систем. Нижче — приклад подібної діаграми для інтернет-магазину.
Діаграма активностей для сайту магазину максимально доступно пояснює, які є інтеграції в системі. Актор (в нашому випадку — покупець), що зайшов на сайт, робить замовлення. Далі у нас відбувається розгалуження: перевіряємо, чи є користувач оптовиком (Так/Ні). Якщо він не зареєстрований в системі і не оптовик, замовлення відправляється в retailCRM. Якщо користувач зареєстрований, його замовлення потрапляє в Navision. При цьому між retailCRM і Navision відбувається синхронізація залишку і статусів.
Цю базову діаграму ми можемо доповнити, розширити, вона може виступити частиною документації і дає загальне уявлення про роботу системи.
Діаграма послідовності — Sequence Diagram
Використовується для уточнення діаграм прецедентів — описує поведінкові аспекти системи. Діаграма послідовності відображає взаємодію об'єктів в динаміці, в часі. При цьому інформація набуває вигляду повідомлень, а взаємодія об'єктів передбачає обмін цими повідомленнями в рамках сценарію.
Джерело: slide-share.ru
Діаграма розгортання — Deployment Diagram
Діаграма розгортання відображає графічне представлення інфраструктури, на яку буде розгорнуто додаток: топологію системи і розподіл компонентів по її вузлах, а також з'єднання — маршрути передачі даних між вузлами. Діаграма допомагає раціональніше організувати компоненти, від чого залежить в числі іншого і продуктивність системи, а також вирішити допоміжні завдання, наприклад, пов'язані з безпекою.
Джерело: slide-share.ru
Висновок
Як бачимо, на перший погляд банальний набір фігур і стрілок може значно спростити вирішення складних завдань в програмуванні, допомогти при виборі оптимального рішення і розробці технічної документації. Які ще висновки можемо зробити:
- будувати діаграми нескладно;
- діаграми легко читаються і прості розуміння;
- вони — чудовий інструмент для проектування архітектури і поведінки;
- необхідні для документування будь-якої нетривіальної системи. Дозволяють легко зрозуміти зв'язки між модулями та інтеграціями в системі.
Залишились запитання, хочете обговорити з нами ваш проект чи замовити розробку? Пишіть!