Не UML-диаграммы на PlantUML. Обзор с примерами

973daadd673f3a10cce2708c3a2c932e.png

Привет Хабр! Меня зовут Татьяна Ошуркова, я разработчик, аналитик и автор телеграм-канала IT Talks. Назначением инструмента PlantUML принято считать построение UML-диаграмм. Но на самом деле у него намного больше возможностей и типов диаграмм, которые можно создать.

В этой статья я расскажу о нескольких диаграммах, которые не относятся к UML, но могут быть построены с помощью PlantUML.

Диаграмма сущностей-связей (ER Diagram)

ER-диаграммы используются для проектирования и визуализации структур баз данных. В PlantUML это можно сделать с помощью встроенных возможностей.

Мне кажется очень быстрым и удобным построением ER-диаграмм таким образом, так как отрисовка графики вручную занимает немало времени. На PlantUML достаточно скопировать наименование полей и их типов из базы данных, дополнив их простым оформлением.

@startuml

entity "User" {
  * user_id : NUMBER
  --
  username : VARCHAR
  email : VARCHAR
  password : VARCHAR
}

entity "Order" {
  * order_id : NUMBER
  --
  user_id : NUMBER
  order_date : DATE
  total : DECIMAL
}

entity "Product" {
  * product_id : NUMBER
  --
  name : VARCHAR
  price : DECIMAL
}

User ||--o{ Order
Order ||--o{ Product
  
@enduml

9db33baf922fc247451ff00997e8a5f2.png

Диаграмма регулярных выражений (RegExp)

Диаграммы регулярных выражений помогают визуализировать и отлаживать шаблоны для работы со строками, что особенно полезно для составления сложных регулярных выражений.

@startregexp

^([A-Za-z0-9]+)\.([A-Za-z]{2,4})$

@endregexp

24d6c2bc76d98e273f5d6da16f717ff1.png

Этот пример иллюстрирует регулярное выражение для валидации доменных имен, например, «example.com» или «site.org». Разберем его по частям:

  • ^ — начало строки.

  • ([A-Za-z0-9]+) — одна или более букв (верхний и нижний регистр) или цифр, которые составляют первую часть домена.

  • \. — точка (специальный символ, поэтому требуется экранирование).

  • ([A-Za-z]{2,4}) — от 2 до 4 букв (например, «com», «org», «net»).

  • $ — конец строки.

Очень удобная функция PlantUML, так как позволяет быстро построить схематичное отображение значений регулярного выражения.

PlantUML использует упрощенную версию регулярных выражений, и не все возможности стандартных регулярных выражений поддерживаются. Например, такие конструкции как обратные ссылки (например, \1 для обращения к первым группам) или жадные и не жадные квантификаторы (например, .*?) могут не поддерживаться.

Ментальные карты (Mindmap)

Mindmap — это диаграмма для визуализации идей и процессов, которая позволяет структурировать информацию, упрощая планирование, принятие решений и мозговые штурмы.

@startmindmap

* План разработки
** Анализ
*** Сбор требований
*** Обсуждение с заказчиком
** Разработка
*** Дизайн интерфейса
*** Написание кода
** Тестирование
*** Модульное тестирование
*** Интеграционное тестирование
** Выпуск
*** Подготовка релиза
*** Документация

@endmindmap

d8ab8705230ec7ab75bce1b2f9ec6662.png

Как и для многих диаграмм на PlantUML здесь хочется отметить простую реализацию и отсутствие затратов времени на создание графика вручную. Несмотря на то, что сейчас существует множество инструментов для работы с mindmap, PlantUML здесь не уступает в удобстве работы.

JSON-диаграмма

JSON (JavaScript Object Notation) — это формат данных, который часто используется для обмена информацией между сервером и клиентом, а также для хранения данных в приложениях.

Преимущества работы PlantUML с json заключается в том, что можно поместить любой, даже очень сложный по структуре json, между ключевыми словами startjson и endjson и получить наглядную структурную схему.

@startjson

{
  "user": {
    "id": 1234,
    "name": "John Doe",
    "email": "john.doe@example.com",
    "roles": ["admin", "user"],
    "preferences": {
      "theme": "dark",
      "notifications": true,
      "language": "en"
    }
  },
  "settings": {
    "privacy": "high",
    "security": "enabled"
  },
  "subscriptions": [
    {
      "service": "Premium Plan",
      "start_date": "2024-01-01",
      "status": "active"
    },
    {
      "service": "Basic Plan",
      "start_date": "2023-06-15",
      "status": "inactive"
    }
  ]
}

@endjson

ef945c6910cc86c9feea0206977c6202.png

YAML-диаграмма

YAML (YAML Ain’t Markup Language) — это формат данных, используемый для хранения и передачи данных. Он часто применяется в конфигурационных файлах.

Аналогично JSON-диаграмме необходимо поместить содержимое yaml между ключевыми словами startyaml и endyaml для создания структурной схемы файла.

@startyaml

project:
  name: "My project"
  version: "1.0"
  description: "A description of the project"
  dependencies:
    - name: "Service A"
      version: "2.3"
      config:
        timeout: 300
        retries: 5
    - name: "Service B"
      version: "1.0"
      config:
        timeout: 100
        retries: 3
  settings:
    logging: true
    debug: false
    apiEndpoint: "https://api.myproject.com/v1"
      
@endyaml

37b44c059b50f424faee14f8a945c346.png

Подведем итоги

В этой статье мы рассмотрели разнообразные способы визуализации данных с использованием PlantUML, включая диаграммы типов Mindmap, JSON, YAML, ER (Entity-Relationship) и регулярных выражений (RegExp). Каждый из этих форматов имеет свои особенности и применения. С помощью диаграмм в PlantUML можно легко представить сложные структуры данных и взаимосвязи.

  • ER-диаграммы дают четкое представление о сущностях и их отношениях, что критически важно для проектирования баз данных и систем.

  • RegExp-диаграммы визуализируют сложные регулярные выражения, делая их более понятными и удобными для анализа и обучения.

  • Mindmap позволяет наглядно представлять идеи и их взаимосвязи, что полезно для планирования, мозговых штурмов и объяснения концепций.

  • JSON и YAML используются для структурированных данных, и их визуализация помогает лучше понять иерархии и зависимости между элементами конфигураций или данных.

В завершение делюсь расширением для Visual Studio Code, которое использую для генерации диаграмм.

Удачи в работе с PlantUML!

IT Talks | Ошуркова Татьяна

t.me

© Habrahabr.ru