Problem architektury opartej na interfejsie graficznym
Od lat modelowanie C4 utknęło w paradoksie: promujemy ideę „architektury jako kodu”, ale większość zespołów nadal tworzy swoje diagramy C4, przeciągając pudełka w interfejsie graficznym. Prowadzi to do przestarzałej dokumentacji, konfliktów scalania w plikach binarnych oraz rozbieżności między diagramem a rzeczywistym systemem.
Współczesne zespoły deweloperskie potrzebują procesu, w którymrozmowa inspiruje projektowanieakod je podtrzymuje. Łącząc narzędzia Visual Paradigmczat AIzVPasCodemożesz w kilka minut przejść od poleceń w języku naturalnym do gotowego do produkcji kodu C4 PlantUML — bez konieczności używania myszy.

Ten przewodnik pokazuje ten proces na konkretnych przykładach PlantUML.
Faza 1: Projektowanie konwersacyjne z czatem AI
Czat AI w Visual Paradigm działa jak architekturalny współpilot. Zamiast zaczynać od pustego płótna, zaczynasz od intencji.
✅ Skuteczna strategia formułowania poleceń
Nie proś AI o „narysowanie diagramu”. Poproś ją ozamodelowanie systemu przy użyciu semantyki C4. Bądź precyzyjny co do granic, technologii i przepływów danych.
💬 Przykładowe polecenie dla czatu AI:
„Działaj jako architekt oprogramowania. Stwórz diagram kontenerów C4 dla systemu ‘Bankowość Online’. Uwzględnij aplikację webową (React), aplikację mobilną (Flutter), bramkę API (Kong), usługę bankowości głównej (.NET) oraz bazę danych PostgreSQL. Pokaż przepływ uwierzytelniania przez OAuth2 oraz zapytania o stan konta. Wygeneruj poprawny kod C4-PlantUML, używając oficjalnych makr.”
🤖 Oczekiwany wynik AI (po dopracowaniu)
AI wygeneruje model PlantUML w wersji roboczej. Przejrzyj go krytycznie — AI świetnie radzi sobie ze strukturą, ale może zmyślać relacje. Użyj kolejnych poleceń w czacie, aby dopracować:„Dodaj pamięć podręczną Redis między bramką API a usługą bankowości głównej w celu zarządzania sesjami”lub„Oznacz bazę PostgreSQL jako przestarzałą i dodaj nowy klaster MongoDB.”
Faza 2: Modelowanie deterministyczne z użyciem VPasCode i PlantUML
Gdy AI wygeneruje wykonalną wersję roboczą,przestań rozmawiać i zacznij kodować. Skopiuj dopracowany kod PlantUML do.pumlplik zarządzany przez VPasCode. To jest Twoje jedyne źródło prawdy.
Poniżej znajdują się gotowe do produkcji przykłady C4 PlantUML wygenerowane w tym przepływie pracy. Upewnij się, że Twój projekt Visual Paradigm zawiera bibliotekębibliotekę C4-PlantUML.
Przykład 1: Diagram kontekstu systemu (Poziom 1)
To definiuje granice Twojego systemu i jego zewnętrznych aktorów.

@startuml OnlineBanking_Context
!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Context.puml
title Kontekst systemu: Platforma bankowości internetowej
Person(customer, "Klient bankowy", "Przegląda konta, przesyła środki, płaci rachunki")
Person(admin, "Administrator biura", "Zarządza użytkownikami, monitoruje transakcje")
System(banking, "Platforma bankowości internetowej", "Zapewnia usługi bankowości internetowej przez web i mobilnie")
System_Ext(coreLegacy, "Główny mainframe bankowy", "Przetwarza transakcje, przechowuje główną księgę")
System_Ext(email, "Usługa e-mail", "Wysyła powiadomienia i wyciągi")
System_Ext(oauth, "Dostawca OAuth2", "Obsługuje tożsamość i uwierzytelnianie")
Rel(customer, banking, "Używa", "HTTPS/WebSocket")
Rel(admin, banking, "Zarządza", "HTTPS")
Rel(banking, coreLegacy, "Odczytuje/Zapisuje", "REST/SOAP")
Rel(banking, email, "Wysyła alerty", "SMTP/API")
Rel(banking, oauth, "Uwierzytelnia", "OIDC")
@enduml
Przykład 2: Diagram kontenerów (Poziom 2)
Rozkłada system na kontenery czasów wykonania. Zwróć uwagę na użycieContainerDb, ContainerQueue, oraz znaczników technologii — kluczowych dla nowoczesnych systemów natywnych dla chmury.

@startuml OnlineBanking_Containers
!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml
title Diagram kontenerów: Platforma bankowości internetowej
Person(customer, "Klient bankowy")
System_Boundary(banking, "Platforma bankowości internetowej") {
Container(webapp, "Aplikacja webowa", "React + Node.js", "SPA dla bankowości w przeglądarce")
Container(mobile, "Aplikacja mobilna", "Flutter", "Natywne doświadczenie iOS/Android")
Container(api, "Brama API", "Kong", "Przekierowuje żądania, limitowanie, walidacja autoryzacji")
Container(service, "Usługa konta", ".NET 8", "Logika biznesowa dla kont i stanów konta")
Container(cache, "Pamięć podręczna sesji", "Redis", "Przechowuje tokeny JWT i stan sesji")
ContainerDb(db, "Baza danych konta", "PostgreSQL", "Konta klientów, stany konta, transakcje")
ContainerQueue(events, "Szyna zdarzeń", "RabbitMQ", "Asynchroniczne powiadomienia o transakcjach")
}
System_Ext(oauth, "Dostawca OAuth2")
System_Ext(legacy, "Główny mainframe bankowy")
Rel(customer, webapp, "Używa", "HTTPS")
Rel(customer, mobile, "Używa", "HTTPS")
Rel(webapp, api, "Wywołuje", "REST/JSON")
Rel(mobile, api, "Wywołuje", "REST/JSON")
Rel(api, oauth, "Waliduje token", "OIDC")
Rel(api, service, "Przekierowuje do", "gRPC")
Rel(service, cache, "Odczytuje/Zapisuje sesję", "TCP")
Rel(service, db, "Wykonuje zapytania", "SQL/TCP")
Rel(service, events, "Publikuje", "AMQP")
Rel(service, legacy, "Synchronizuje księgę", "SOAP")
@enduml
Przykład 3: Diagram komponentów (Poziom 3) – Usługa konta
Przybliża pojedynczy kontener. To tutaj VPasCode błyszczy: komponenty mapują się bezpośrednio na moduły kodu.

@startuml AccountService_Components
!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Component.puml
title Diagram komponentów: Usługa konta (.NET 8)
Container(api, "Brama API", "Kong")
ContainerDb(db, "Baza danych konta", "PostgreSQL")
ContainerQueue(events, "Szyna zdarzeń", "RabbitMQ")
Component(auth, "Middleware uwierzytelniania", "Filtr ASP.NET", "Waliduje JWT, wyodrębnia kontekst użytkownika")
Component(controller, "AccountController", "API ASP.NET", "Punkty końcowe REST dla /accounts")
Component(domain, "AccountDomainService", "Biblioteka klas C#", "Obliczanie salda, reguły transferu")
Component(repo, "AccountRepository", "EF Core", "Dostęp do danych, optymalizacja zapytań")
Component(publisher, "EventPublisher", "MassTransit", "Publikuje zdarzenia TransactionCompleted")
Rel(api, auth, "Przekazuje żądanie")
Rel(auth, controller, "Przekierowuje uwierzytelnione żądanie")
Rel(controller, domain, "Wywołuje logikę biznesową")
Rel(domain, repo, "Wykonuje zapytania/zapisuje")
Rel(repo, db, "Wykonuje SQL")
Rel(domain, publisher, "Generuje zdarzenia domenowe")
Rel(publisher, events, "Publikuje", "AMQP")
@enduml
Etap 3: Integracja VPasCode z Twoim procesem deweloperskim
Generowanie PlantUML to tylko połowa sukcesu. Oto jak skutecznie wdrożyć je w nowoczesnym zespole:
Wersjonuj wszystko
Przechowuj wszystkie.puml plików obok kodu aplikacji w tym samym repozytorium. Traktuj diagramy jak infrastrukturę jako kod:
/docs/architecture/c4/
├── 01-kontekst.puml
├── 02-kontenery.puml
├── 03-komponenty-uslugi-konta.puml
└── README.md
Zautomatyzuj renderowanie w CI/CD
Użyj wiersza poleceń Visual Paradigm lub akcji GitHub do renderowania plików PNG/SVG przy każdym pull request. Nigdy nie komituj ręcznie wyrenderowanych obrazów.
# Przykładowy fragment akcji GitHub
- name: Renderuj diagramy C4
run: |
vp-cli render -i docs/architecture/c4/*.puml
-o docs/architecture/output/
-f svg --c4-layout auto
Synchronizacja dwukierunkowa z VPasCode
VPasCode to nie tylko renderer – tosilnik synchronizacji modeli. Gdy aktualizujesz PlantUML:
-
centralny model Visual Paradigm aktualizuje się automatycznie
-
Odwołania wzajemne (np. powiązanie komponentu z epiką w Jira lub repozytorium Git) pozostają nienaruszone
-
Członkowie zespołu korzystający z interfejsu GUI widzą zmiany w czasie rzeczywistym
-
Rozmowy z botem AI mogą odnosić się dobieżący stan modelu, a nie przestarzały zrzut
⚠️ Krytyczne ostrzeżenie: Nigdy nie pozwalaj, aby wygenerowany przez AI PlantUML omijał ludzką recenzję. AI często wymyśla nieistniejące API, błędnie oznacza protokoły lub pomija krytyczne granice bezpieczeństwa. Zawsze weryfikuj wygenerowany kod w odniesieniu do rzeczywistego kodu bazowego i modelu zagrożeń przed zatwierdzeniem.
Lista kontrolna wdrażania dla nowoczesnych zespołów
| Krok | Akcja | Narzędzie |
|---|---|---|
| 1 | Wstępne stworzenie modelu C4 za pomocą konwersacyjnego wywoływania | Czatbot AI |
| 2 | Ulepszanie i korygowanie wyników AI poprzez iteracyjną rozmowę | Czatbot AI |
| 3 | Eksportuj zweryfikowany PlantUML do repozytorium kontrolowanego wersjami | VPasCode |
| 4 | Skonfiguruj potok CI do automatycznego renderowania przy PR | VPasCode CLI |
| 5 | Połącz elementy C4 z repozytoriami kodu, zgłoszeniami i dokumentacją | Visual Paradigm |
| 6 | Zaplanuj kwartalne przeglądy „higieny modelu” przy użyciu krytyki AI | Czatbot AI |
Ostateczne przemyślenie
Modelowanie C4 nie powinno być obciążeniem dla tempa pracy Twojego zespołu. Traktując AI jako iskrę kreatywności i VPasCode jako deterministyczny punkt odniesienia, otrzymujesz najlepsze z obu światów: szybkie badania i trwałą dokumentację. Przestań przeciągać pudełka. Zacznij projektować z prędkością rozmowy.











