PlantUML diagramy zapisane tekstem
Żeby być modnym trzeba teraz być w DNA :D
Modna nie jestem, ale DNA to ciekawa inicjatywa dla mnie, poskładać wiedzę, uzupełnić braki.
Jeszcze lepiej, że akurat mam żywy projekt na którym mogę się uczyć.
Pierwsza praca domowa to stworzenie diagramów C4.
Idealnie, pierwsze dwa poziomy to bardzo proste diagramy, łatwo je stworzyć.
Panowie z kursu polecają narzędzie: Structurizr
Srsly, próbowałam. Niby jest darmowa wersja, są nawet przykładowe diagramy, ale nie ma do nich kodu. Jak już znalazłam, gdzie możne edytować diagram okazało się, że w ogóle nie znam języka, ani narzędzia i chce tym rzucić w kont i nie wrócić nigdy.
I właściwie to tak zrobiłam.
Jest natomiast inne narzędzie, które uwielbiam. PlantUML.
UMLa znam od studiów, ale nie tak, że coś o tym słyszałam. Gang czworga to bohaterowie mojej pracy dyplomowej. Dlatego jest mi łatwo czasem narysować jakiś diagram, aby coś sobie w głowie poukładać. Ostatnio robiłam sporo diagramów sekwencji. I przy tej okazji znalazłam PlantUML.
PlantUml to niezależne narzędzie, które potrafi generować diagramy na podstawie zapisu w dość prostym języku. Ale najlepsze zaczyna się gdy podepniemy PlantUml do Visual Studio Code Visual Studio Code extension PlantUML.
Teraz ten prosty język i zapis w plikach tekstowych w połączeniu z repozytorium git, stają się idealnym zestawem do generowania często zmieniającej się dokumentacji.
PlantUml można też osadzać w plikach MD i obrazki do naszej wiki generują się same z zawsze aktualnego diagramu.
A tutaj diagram sekwencji dla rejestracji urządzenia przez Device Provisioning Service.
Niestety gist nie obsługuje tej składni dlatego bezpośreni skrypt do powyższego diagramu:
Mamy do dyspozycji:
Person, Person_Ext, System, System_Ext, Container, Relationship, Boundary, System_Boundary, ContainerDb, Container_Boundary
Oraz kod diagramu
Zdecydowanie wolę tworzyć C4 w VSCode, jako plik, który mogę edytować i ciągle generować nowe widoki. Być może to zbyt duże przywiązanie do narzędzi programistycznych jak na architekta. Ale w końcu ja jestem tylko skromnym ogrodnikiem.
Modna nie jestem, ale DNA to ciekawa inicjatywa dla mnie, poskładać wiedzę, uzupełnić braki.
Jeszcze lepiej, że akurat mam żywy projekt na którym mogę się uczyć.
Pierwsza praca domowa to stworzenie diagramów C4.
Idealnie, pierwsze dwa poziomy to bardzo proste diagramy, łatwo je stworzyć.
Panowie z kursu polecają narzędzie: Structurizr
Srsly, próbowałam. Niby jest darmowa wersja, są nawet przykładowe diagramy, ale nie ma do nich kodu. Jak już znalazłam, gdzie możne edytować diagram okazało się, że w ogóle nie znam języka, ani narzędzia i chce tym rzucić w kont i nie wrócić nigdy.
I właściwie to tak zrobiłam.
PlantUML
UMLa znam od studiów, ale nie tak, że coś o tym słyszałam. Gang czworga to bohaterowie mojej pracy dyplomowej. Dlatego jest mi łatwo czasem narysować jakiś diagram, aby coś sobie w głowie poukładać. Ostatnio robiłam sporo diagramów sekwencji. I przy tej okazji znalazłam PlantUML.
PlantUml to niezależne narzędzie, które potrafi generować diagramy na podstawie zapisu w dość prostym języku. Ale najlepsze zaczyna się gdy podepniemy PlantUml do Visual Studio Code Visual Studio Code extension PlantUML.
Teraz ten prosty język i zapis w plikach tekstowych w połączeniu z repozytorium git, stają się idealnym zestawem do generowania często zmieniającej się dokumentacji.
PlantUml można też osadzać w plikach MD i obrazki do naszej wiki generują się same z zawsze aktualnego diagramu.
A tutaj diagram sekwencji dla rejestracji urządzenia przez Device Provisioning Service.
Niestety gist nie obsługuje tej składni dlatego bezpośreni skrypt do powyższego diagramu:
@startuml register device
skinparam participant {
FontColor black
AttributeFontColor black
FontSize 17
AttributeFontSize 15
AttributeFontname Droid Sans Mono
BackgroundColor #b9e1fa
BorderColor black
ArrowColor #222266
}
participant DeviceManufacture
participant Device
participant IoTHub
participant DeviceProvisioningService
== Manufacturing Device ==
activate DeviceManufacture
activate Device
DeviceManufacture -> Device: 'Device manufacturing, install software'
DeviceManufacture -> Device: 'create & install device specific certificate'
DeviceManufacture -> Device : Set DPS indentity & registration URL
deactivate DeviceManufacture
== Device first connection ==
Device -> Device : turn on: online
activate DeviceProvisioningService
Device -> DeviceProvisioningService: get online, connect to registration ULR
DeviceProvisioningService -> DeviceProvisioningService: validate device with enrollment list
DeviceProvisioningService -> IoTHub: auto-provision Device
activate IoTHub
DeviceProvisioningService -> Device: set Device settings
deactivate DeviceProvisioningService
Device -> IoTHub: Send lifecycle events
Device -> IoTHub: Send telemetry
Device <-> IoTHub: Update Device Twin settings
@enduml
PlantUml to nie tylko diagramy UML
Piękne w PlantUML jest jego otwartość i rozszerzalność. Dzięki temu mamy dużo nowych elementów do dyspozycji. Np. elementy diagramów C4 czyli C4-PlantUMLMamy do dyspozycji:
Person, Person_Ext, System, System_Ext, Container, Relationship, Boundary, System_Boundary, ContainerDb, Container_Boundary
Oraz kod diagramu
@startuml C4_Elements
!includeurl https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/release/1-0/C4_Container.puml
' left to right direction
Person(personAlias, "Label", "Optional Description")
System_Boundary(systemBoundryAlias, "Label"){
System(systemAlias, "Label", "Optional Description")
Container_Boundary(containerBoundryAlias, "Label"){
Container(containerAlias, "Label", "Technology", "Optional Description")
ContainerDb(containerDbAlias, "Label", "Technology", "Optional Description")
}
}
Rel_Back_Neighbor(personAlias, containerAlias, "Label", "Optional Technology")
System_Ext(systemExtAlias,"Label", "Optional Description")
Rel(systemAlias,systemExtAlias,"Label")
' Still we can use normal relations like this
containerAlias <-> containerDbAlias
@enduml
Zdecydowanie wolę tworzyć C4 w VSCode, jako plik, który mogę edytować i ciągle generować nowe widoki. Być może to zbyt duże przywiązanie do narzędzi programistycznych jak na architekta. Ale w końcu ja jestem tylko skromnym ogrodnikiem.
Dziękuję za radę. Świetny ten PlantUML! JZa
OdpowiedzUsuń