Не то чтобы давно открыл для себя 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
Но если касаться именно архитектуры, то вместо рисования картинок во всяких 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
И уже совсем другая диаграмма.
Самое интересное в этом во всем именно возможность достаточно быстро вносить изменения.