Найти тему

PlantUML. То ли рисунки, то ли код.

Не то чтобы давно открыл для себя PlantUML. Но так чтобы по-настоящему - начал интересоваться только сейчас.

И действительно заинтересовался. Вроде бы как рисуешь, но пишешь кодом (для тех, кто пришел в аналитику или проектирование архитектуры из разработчиков - очень удобное средство). Можно быстро менять конфигурацию объектов в рисунке и нет необходимости в сложных графических редакторах. Никакие MS Visio точно не нужны.

Странно, но на данный момент из всего UML набора самым "модным" стала именно диаграмма последовательностей. Хотя думаю что это просто "веяние времени" (раньше популярной была диаграмма классов, потом useCase). Следующим "модным инструментом" будет диаграмма компонентов (во всяком случае мне так кажется).

Можно быстренько "набросать" диаграмму активностей (именно "быстренько", не вдаваясь в подробности).

@startuml
start
:Пользователь открыл личный кабинет;
group <b>1. Проверка уровня доступа пользователя </b>
:Пользователю выдалось окно авторизации;
:Сервис отправил запрос на \nполучение данных по клиенту;
end group
group <b>2. Проверка клиента </b>
:Система проверяет уровень доступа пользователя;
end group
if (Клиент проходит проверку?) then (нет)
:Отправляем клиенту ошибку;
else (да)
group <b>3. Предоставление доступа к функции</b>
:Описание функции в экранной форме;
end group
endif
stop
@enduml

(глупенько, но просто так - для описания)
(глупенько, но просто так - для описания)

Можно и sequence какой-нибудь быстренько:

@startuml

actor "Пользователь" as front

participant "Сервис" as report
database "База данных" as db

front -> report++: Получение справки
report -> db++: Получение списска справок из бд
db --> report--: Список справок
report -> front--: Список справок

@enduml

-2

Но если касаться именно архитектуры, то вместо рисования картинок во всяких visio и draw.io конечно удобнее (если привыкнуть) писать кодом.

Пишешь

@startuml
skin rose
title Корпоративная информационная система

node "ИС" as IS {
node "Бизнес логика" as BusIS {
[Модуль действий] as BDAct
[Интерфейс] as IF
}
node "Администрирование" as AdmIS {
[Модуль администрирования] as Admin
}
}
database "База данных\n" as BD {
[База пользователей] as BDUs
[База организаций] as BDCorp
}
cloud Internet as IW {
[Внешние ИС] as ISS
[Облако] as Obl
}

BDUs -down-> BDCorp
Admin -down-> BDUs
Obl <-> ISS
BDAct -down-> Obl
IF -> ISS
@enduml

И прекрасно получаешь

Начальное описание приложения
Начальное описание приложения

Да простенько. Но зато можно довольно быстро модифицировать. И нет надобности громоздко как-то рисовать.

А потом начинаешь редактировать (но уже кодом, а не рисованием).

Думаешь - надо бы вот так.

@startuml

skin rose

title Корпоративная информационная система

node "Бизнес логика" as BusIS {
[Модуль действий] as BDAct
[Моделирование процессов] as BP
}

node "Интерфейс"{
[Интерфейс ИС] as IF
}
node "Администрирование" as AdmIS {
[Модуль администрирования] as Admin
}
database "База данных\n" as BD {
[База пользователей] as BDUs
[База организаций] as BDCorp
}
cloud Internet as IW {
[Внешние ИС] as ISS
[Облако] as Obl
[Обеспечение доступа] as USAct
}
BDUs -down-> BDCorp
Admin -down-> BDUs
Obl <-> ISS
BDAct -down-> Obl
IF -> ISS
BP -> BDAct
ISS -down-> USAct
AdmIS -> USAct

@enduml

Смотришь на полученное:

Изменил и добавил
Изменил и добавил

Но что-то все равно не нравится.

И снова вносишь изменения.

@startuml

skin rose

title Корпоративная ИС
node "Бизнес логика" as BusIS {
[Модуль действий] as BDAct
[Модуль процессов] as BP
[Взаимодействие с пользователями] as UsActiviti
}
node "Интерфейс"{
[Интерфейс ИС] as IF
[Интерфейс пользователя] as USIf
}
node "Администрирование" as AdmIS {
[Модуль администрирования] as Admin
}
database "База данных\n" as BD {
[База пользователей] as BDUs
[База организаций] as BDCorp
}
cloud Internet as IW {
[Внешние ИС] as ISS
[Облако] as Obl
[Обеспечение доступа] as USAct
}
BDUs -down-> BDCorp
Admin -down-> BDUs
Obl <-> ISS
BDAct -down-> Obl
IF -> ISS
ISS -down-> USAct
AdmIS -> USAct
BP -down-> UsActiviti
BDAct <-> UsActiviti
BP <-> BDAct
USIf <-> UsActiviti

@enduml

Получаешь

Вроде бы стало более понятно
Вроде бы стало более понятно

И опять что-то не нравится ("некрасиво" и "не полностью").

И снова пробуешь корректировать.

@startuml

skin rose

title Корпоративная ИС
node "Бизнес логика" as BusIS {
[Модуль действий] as BDAct
[Модуль процессов] as BP
[Взаимодействие с пользователями] as UsActiviti
[Интерфейс пользователя] as USIf
}
node "Интерфейс"{
[Интерфейс ИС] as IF
}
node "Администрирование" as AdmIS {
[Модуль администрирования] as Admin
}
database "База данных\n" as BD {
[База пользователей] as BDUs
[База организаций] as BDCorp
}
cloud Internet as IW {
[Внешние ИС] as ISS
[Облако] as Obl
[Обеспечение доступа] as USAct
}
BDUs -down-> BDCorp
Admin -down-> BDUs
Obl <-> ISS
BDAct -down-> Obl
IF -> ISS
ISS -down-> USAct
AdmIS -> USAct
BP -down-> UsActiviti
BDAct <-> UsActiviti
BP <-> BDAct
UsActiviti -down-> USIf
USIf <-> Obl

@enduml
И уже получаешь некоторую другую схему построения

Дополнения и изменения
Дополнения и изменения

И снова вносишь изменения и меняешь структуру

@startuml

skin rose

title Корпоративная ИС

node "Бизнес логика" as BusIS {
[Модуль действий] as BDAct
[Модуль процессов] as BP
[Модуль администрирования] as Admin
node "Документирование" {
}
}
node "Интерфейс"{
[Интерфейс ИС] as IF
[Интерфейс пользователя] as USIf
}

database "База данных\n" as BD {
[База пользователей] as BDUs
[База организаций] as BDCorp
}
cloud Internet as IW {
[Внешние ИС] as ISS
[Облако] as Obl
[Обеспечение доступа] as USAct
}
BDUs -down-> BDCorp
Admin -down-> BDUs
Obl <-> ISS
IF -> ISS
ISS -down-> USAct
BP <-> BDAct
USIf -down-> Obl

@enduml

Уже упрощаем
Уже упрощаем

Больше всего нравится именно возможность быстро вносить изменения.

Немного совсем переписал кусочек кода

@startuml
skin rose
title Корпоративная ИС
database "База данных\n" as BD {
[База пользователей] as BDUs
[База организаций] as BDCorp
}
cloud Internet as IW {
[Внешние ИС] as ISS
[Облако] as Obl
}
node "Администрирование" {
[Модуль администрирования] as Admin
}
node "Интерфейс"{
[Интерфейс ИС] as IF
[Интерфейс пользователя] as USIf
}
node "Бизнес логика" as BusIS {
[Модуль действий] as BDAct
[Модуль процессов] as BP
[Документирование] as DocUS

BDUs -down-> BDCorp
Admin -down-> BDUs
Obl <-> ISS
IF -> ISS
BP <-> BDAct
USIf -down-> Obl
BP -down-> DocUS

@enduml
И уже совсем другая диаграмма.

И снова упрощаем
И снова упрощаем

Самое интересное в этом во всем именно возможность достаточно быстро вносить изменения.