Model C4 zaproponowany przez Simona Browna, pomaga zobrazować kolejne abstrakcyjne poziomy systemu :

  1. System,
  2. Kontener,
  3. Komponent,
  4. Diagram klas.

Cztery powyższe pojęcia tworzą model C4, każdy z tych poziomów jest rozwinięciem poprzedniego.  Rozwiązanie te nie jest zbiorem sztywnych reguł, mamy możliwość dodania, jeżeli jest potrzeba, kolejnych poziomów.

Wstęp

Dla przypomnienia grupa (wsparcia) w składzie:

Te zadanie zrobiłem na podstawie Event Stormingu Proces Level, gdzie wspólnie z kolegami  ustaliliśmy Bonded Contexty. Czy ES jest wymagany do zrobienia C4? 

Nie jest. Dla mnie zrozumienie domeny i przeniesienie na model C4 jest łatwiejsze z poziomu ES

 Łatwiej zrobić je na podstawie ES, ponieważ mamy wyznaczone wszystkie części systemu (bounded contexty i subdomeny). 

W kursie DNA poznaliśmy narzędzie structurizr. Na stronie tego narzędzia dostępne są przykłady pomagające wygenerować diagramy na poszczególne poziomy

Przykładem będzie oczywiście system “sklep z torfem”. Poszczególne poziomy rozdzieliłem na osobne posty. Niniejszy post będzie łączył pozostałe, zajmujące się tematem modelu C4.

Całości nie tworzyłem “od zera”, bazowałem na przykładach dostępnych na stronie z narzędziem structurizr. Są tam zamieszczone przykłady w różnych językach, kod został przeze mnie ubogacony i dostosowany do mojego systemu.

Opis rozwiązania

Do poprawnego działania przykładu należy założyć konto Structurizr, otrzymamy :

Powyższą definicje stałych należy umieścić w kodzie aplikacji.

Zdefiniowanie tagów jest również pomocne, tagi ułatwiają ostylowanie. Podzieliłem je na grupy, jak przystało na „prawdziwego” programistę (pracującego w górnictwie) używam polsko-angielskiego dialektu.

Definicja workspace i modelu, opis dosyć istotny, w końcu chcemy wiedzieć czego dotyczy system .

Kolejny krok dodanie aktorów, tu jeszcze na uwagę zasługuje parametr „Location”, który służy do określenie, który z aktorów ma być wewnątrz organizacji (tego prostokąta w linie przerywane ;-), a który na zewnątrz.

Opcje do wyboru :

  • Location.External
  • Location.Internal
  • Location.Unspecified

Tu także można dodać wcześniej zdefiniowane tagi do aktorów.

Poziomy

Po tym, jakże ciekawym, wstępie uznałem,  że  podzielę poszczególne poziomy na osobne posty (z powodu dużej ilości kodu). Poszczególne poziomy (u mnie w kodzie) nie co się przeplatają ale każdy z postów będzie dedykowany do jednego z poziomów.

  1. Poziom C1,
  2. Poziom C2,
  3. Poziom C3,
  4. Poziom 4 – diagram klas, nie ma kodu nie ma poziomu.

Style pozostaną częścią wspólną, poniżej kod.

Metoda „UploadWorkspaceToStructurizr” kończy zabawę z modelem C4, generuje kod i wysyła moje „wypociny” do mojego konta na structurizr.

Dokumentacja

Można również dodać dokumentacje do poszczególnych poziomów

Powyższy wpis o dokumentacji nie jest wymagany do działania całości, jest dodatkiem, ja nie korzystam z tego kodu.

Pomocne linki:

Dokładny opis Modelu C4 jest w kursie DNA.