4C – zwinne podejście do odkrywania i dokumentowania architektury

4C – zwinne podejście do odkrywania i dokumentowania architektury

Mieliśmy okazję porozmawiać z Kamilem o bardzo ciekawym zagadnieniu, jakim jest dokumentacja architektury systemu. Jak to zrobić tak, aby zawrzeć wszystkie potrzebne informacje i nie przeładować jej szczegółami? Kamil przedstawił podejście do dokumentowania architektury zwane „C4”. Nazwa bierze się z tego, że odbywa się ono na 4 poziomach: Context, Containers, Components, Classes. Podejście „C4” zostało zaprezentowane również na jednym z pierwszych spotkań w ramach CSD+, gdy poszukiwaliśmy łatwiejszych sposobów na przedstawianie architektury systemów. Potrzeba nowego rozwiązania była wynikiem doświadczeń ze spotkań koncepcyjnych z Klientami. Niestety nie wszyscy rozumieją notację UML, co powodowało problemy w ustaleniu kluczowych informacji. „C4” jest uproszczonym sposobem pokazania architektury, gdzie dzielimy wszystko na 4 diagramy:

  1. Context – ogólny kontekst, w jakim będzie pracował system: główni aktorzy/role, inne systemy, główne procesy
  2. Containers – wysokopoziomowe decyzje, „domki” dla komponentów, wysokopoziomowa komunikacja, informacja dla developerów o tym, gdzie należy wykonać pracę
  3. Components – logicznie spójne części funkcjonalności (np. serwisy), działanie systemu na poziomie przepływu pomiędzy komponentami
  4. Classes – struktury dla klas, architektura aplikacji (porządkowanie kodu źródłowego)

Ważne jest także, że w podejściu „C4” na każdym poziomie inaczej podchodzimy do aspektów:

  1. Cel – w jakim celu powstaje ten diagram, co powinien przedstawiać
  2. Struktura – z jakich bloków składa się diagram
  3. Motywacja – co chcemy przekazać odbiorcom dokumentu oraz jakie odkrycia możemy poczynić podczas jego tworzenia
  4. Odbiorcy – kim są odbiorcy i czego mogą potrzebować na danym poziomie szczegółowości

W ramach C4 używamy prostych, często samodefiniujących się diagramów i jednej, określonej notacji. Wdrażając metodykę C4 korzystamy z tego samego zestawu abstrakcji i tej samej notacji na każdym poziomie szczegółowości, w komunikacji z każdym możliwym odbiorcą. Podejście C4 zapewnia nam spójne „skalowanie informacji” bez luk semantycznych. Dzięki temu możemy weryfikować architekturę – w sensie aktualnej jej zbieżności z wymaganiami i kontekstem. Weryfikację ułatwia możliwość płynnego skalowania uwagi od ogółu do szczegółu, co pozwala stopniowo zapoznawać się z kontekstem. Przykład wykorzystania C4 znajduje się w naszym Wiki GitLab pod adresem: https://git.inf.nekken.loc/nekken-public/c4-demo