💀 Когда диаграмма - источник истины, архитектура умирает первой.
📝 Аналитики, использующие PlantUML, Miro, Draw.io, Visio, Structurizer и прочее, забывают что знания в диаграммах - всё равно что код в скриншотах.
Знания должны храниться в виде взаимосвязанных элементов Модели, а диаграммы должны быть лишь их Проекциями. Разработчики ArchiVision.org это прекрасно понимают. Именно это делает систему ArchiVision значительно более эффективным инструментом для хранения знаний об ИТ системах чем все вышеназванные сервисы. При этом, генерируемые ею диаграммы живые, интерактивные и редактируемые. Система также поддерживает горячие клавиши для эффективной работы с моделью и диаграммами. Горячие клавиши позволяют рисовать быстрее, чем большинство перечисленных сервисов, тем более чем писать в PlantUML, Structurizer и аналогичных.
⚡ Ключевое отличия:
- 👎 в названных выше инструментах вы редактируете диаграммы;
- 👍 в ArchiVision вы работаете с моделью, а диаграммы - это её визуальная проекция, через которую тоже можно развивать модель.
🔄 За счет этого:
- 🧠 модель становится единственным источником истины;
- 🧱 диаграммы перестают быть хрупким артефактом;
- 🧩 структура модели позволяет устранять разночтения, дублирование и рассинхронизацию;
- ✅ система способна контролировать ввод и проверять полноту данных;
- 🧼 архитектура перестаёт расползаться по версиям и интерпретациям;
- ⌨️ навигация и горячие клавиши — это часть работы с моделью, а не удобство интерфейса.
🎥 Это видео - пример того, как сочетание модели, интерактивных диаграмм и горячих клавиш меняет процесс проектирования.
Ну а вот сам канал с видеоинструкциями находится здесь.

UML Design *
Унифицированный язык моделирования
Многоуровневая группировка участников на sequence-диаграмме (в plantUML)

Последнее время часто замечаю, что многие системные аналитики не выделяют на sequence диаграмме (в plantUML) границы Систем и сервисов, а также не выделяют внешние сервисы. В результате, открывая чужие Sequence, приходится тратить много времени чтобы понять, что-же к чему относится.
Поэтому сейчас расскажу как это сделать быстро и без воды
Чтобы создать вложенные группы — группы внутри групп, используйте Архитектуру teoz, путем ее подключения в коде: c помощью строки !pragma teoz true, добавляемой сразу после @startuml после чего box и end box можно вкладывать друг в друга генерируя несколько уровней вложенности:
Код диаграммы:
@startuml
!pragma teoz true
box "Группы" #LightBlue
box "Первая подгруппа"
participant Bob
end box
box "Вторая подгруппа"
participant Alice
participant John
end box
end box
box "Внешняя группа" #lightgreen
participant Lector
box "Слушатели первой подгруппы"
participant Marina
end box
end box
Bob -> Alice : hello
Alice -> John : hello
John -> Marina: Hello
Lector -> Marina: Hello
@endumlЕсли Вам было полезно и интересно, поддержите кармой или комментарием
----
Также я веду TG-канал: @sa_chulan

Бесплатный гайд с шаблонами диаграмм на PlantUML
В моем канале IT Talks можно скачать бесплатный методический материал, где ты найдешь шаблоны пяти основных диаграмм на PlantUML в практических кейсах с описанием.
Для каждого шаблона подробно описан процесс, для которого построена диаграмма, а также есть сама диаграмма и исходный код на PlantUML. В гайде можно найти диаграмму активности, последовательности, прецедентов, состояний и компонентов.
Ещё вчера у меня вышла новая статья Диаграмма последовательности на практике в реальном кейсе, где я подробно по шагам рассказала про построение диаграммы последовательности на примере реальной задачи.
PlantUML | Шаблон для описания таблиц БД
Делюсь с Вами разработанным мною шаблоном, для описания таблицы БД в PlantUML, c элементами автоматизации, описание которых указанно в комментариях.

Всем привет!
Делюсь с Вами разработанным мною шаблоном, для описания таблицы БД в PlantUML, c элементами автоматизации, описание которых указанно в комментариях.
Протестировать можете тут, а сам код шаблона указан ниже:
' Шаблон описания таблицы БД (в PlantUML)
@startuml
skinparam {
' Параметры для управления нижним колонтитулом
FooterFontColor #blue
FooterFontSize 12
' Параметры для управления легендой
LegendBackgroundColor #lightblue
LegendBorderThickness 0
}
' Переменные для ускорения описания таблицы
' - PRIMARY KEY можно указывать как: "$PK"
!$PK=" <size:11><#DarkKhaki:key:></size> (PK) "
' - FOREIGN KEY можно указывать как: "$FK"
!$FK=" <size:11><#DeepPink:key:></size> (FK) "
' - NOT NULL (N-N) можно указывать как: "$NN"
!$NN=" <#LightGreen> **N-N** "
' - NULL можно указывать как: "$N"
!$N = " <#LightCoral> **NULL** "
' Переменные для ускорения добавления информации о таблице
' - Наименование таблицы БД (латинское)
!$table_name="Наимнование_таблицы_БД"
' - Краткое описание таблицы (на русском)
!$description="Краткое описание таблицы (на русском)"
' - Ссылка на описание таблицы (на русском)
!$doc_url="Ссылка"
' Контакты, отображаемые в нижнем колонтитуле
!$autor ="Зимин Антон"
!$email ="antzim_in@ya.ru"
!$telegram="antzim_in"
' Заголовок документа, формируется автоматически из заполненных выше параметров (при необходимости можно удалить)
title $table_name | $description
' Легенда (может быть заполнена любыми необходимыми данными)
' - "right" говорит о том, что легенда будет расположена справа
legend right
**Легенда:**
| Версия документа: | 1.0.0 |
end legend
' Описание таблицы
' - заголовок таблицы, с кликабельной ссылкой (если выгружать в SVG) формируется автоматически
class "[[$doc_url $table_name]] ($description)" as $table_name << (T,#FF5722) >>{
|= PK,FK |= Поле |= Тип |= Обязательность |= Значение\n по умолчанию |= Описание |
| $PK | id | serial | $NN | | Идентификатор записи в таблице |
| $FK | subscriber_id | integer | $NN | | Идентификатор записи в таблице subscriber |
| | electronic_address | varchar(255) | $N | | Электронный адрес \n клиента |
| | created_at | timestampz | $NN | now() | Дата и время создания записи в БД |
| | updated_at | timestampz | $NN | now() | Дата и время обновления записи в БД |
}
' Нижний колонтитул (формируется автоматически из введенных параметров)
footer © $autor | tg: [[https://t.me/$telegram @$telegram]] | email: $email
@enduml
Буду рад Вашим комментариям, отзывам, а если еще и поднимите карму то буду крайне благодарен.
Всем спасибо.
----
Пообщаться со мной можно в telegram: @antzim_in
P.S. Также, если Вам интересно, я веду telegram канал @sa_chulan и буду очень рад Вашей подписке.

💠 PlantUML: полезные материалы
Подборка для тех, кто давно хотел начать применять PlantUML, но никак не доходили руки. К счастью, это не займёт много времени.
PlantUML (https://plantuml.com/ru/) — это крайне полезный инструмент для аналитика, который превращает псевдокод в диаграммы. Это значительно быстрее и удобнее, чем вечно тыкаться со стрелочками и ручным выравниванием в draw.io или Visio.
Синтаксис очень простой, пугаться кода не нужно. По примерам становится всё понятно.
✏️ Редакторы и расширения
Для начала выберете место, где вам будет удобнее писать диаграмму: это может быть
💻 Онлайн:
1️⃣ https://plantuml-editor.kkeisuke.com/
2️⃣ https://www.planttext.com/
3️⃣ https://plantuml.com/ru/running
👣 Расширения, для:
1️⃣ Notepad++ (https://github.com/Fruchtzwerg94/PlantUmlViewer)
2️⃣IDEA (https://plugins.jetbrains.com/plugin/7017-plantuml-integration/),
3️⃣ PyCharm (https://plugins.jetbrains.com/plugin/7017-plantuml-integration),
4️⃣ VScode (https://marketplace.visualstudio.com/items?itemName=jebbs.plantuml)
😎 Все расширения можно посмотреть по ссылке: https://plantuml.com/ru/running
📝 Документация
1️⃣ Официальная документация (https://plantuml.com/ru/) (почти всё на русском)
2️⃣ Гайд на русском в pdf (https://plantuml.com/ru/guide)
🖥 Полезные репозитории:
1️⃣ Unofficial PlantUML Standard Library Repositories (https://github.com/plantuml-stdlib)
🎓 Бесплатный курс, по PlantUML
1️⃣ https://stepik.org/course/Plantuml-Основы-212663/
📹 Видео
1️⃣PlantUML с нуля до гуру: учимся «кодить» sequence-диаграммы (https://www.youtube.com/watch?v=ScbZL5RX84E) — доклад Никиты Харичкина с Flow 2022 (скачать презентацию (https://t.me/Analyst_Boost/37))
2️⃣PlantUML на всю катушку: Автоматизация и лайфхаки для диаграмм последовательности (https://www.youtube.com/watch?v=RYEJEIF7htE) — доклад всё того же Никиты, но с Analyst Days #14 (скачать презентацию (https://t.me/plant_uml/108))
3️⃣ Бери и делай PlantUML, VS Code и Git 2 (https://www.youtube.com/watch?v=mdzRsewZtnY)
☺️ Канал про PlantUML
1️⃣https://t.me/plant_uml
📰 Статьи
1️⃣ Диаграммы без боли и страданий: PlantUML (https://habr.com/ru/companies/alfa/articles/740518/) — хороший гайд с примерами
2️⃣Пишу диаграммы последовательностей текстом (кодом). Вы тоже можете (https://habr.com/ru/companies/rostelecom/articles/701970/) — тут только про sequence
3️⃣PlantUML — все, что нужно бизнес-аналитику для создания диаграмм в программной документации (https://habr.com/ru/articles/416077/)
4️⃣Как рисовать Sequence без боли и страданий в PlantUML (https://habr.com/ru/companies/X5Tech/articles/821687/)
----
Подписывайтесь на @sa_chulan
Architectural Decision Records (ADR)
Architectural Decision Records (ADR) - Документ описывающий архитектурное решение.
архитектурное решение - это выбор технологии, подхода и т.п.
архитектурное решение оказывает значительное влияние на архитектуру
нефункциональные требования являются причиной появления архитектурного решения
ADR содержит (описывает) только одно архитектурное решение
коллекция решений (ADR) - это журнал принятия решений описывающий проект, систему, компонент