C4-modellen och Prime Arch

Publicerad den 2020-05-10
Patrik Hallén


C4-modellen är tilltalande i flera avseenden. Den är en bra utgångspunkt för applikationsmodellering med reservation för att det kan bli lite för mycket av en kodbeskrivning på detaljerad nivå snarare än en funktionell beskrivning. //Prime Arch

C4-modellen

Bakgrund och introduktion

C4-modellen skapades av Simon Brown, oberoende consult och författare specialiserad på mjukvaruarkitektur. C4-modellen är en formalisering av Simons sätt att visualisera mjukvaruarkitektur, något som har utvecklats genom åren.

C4-modellen har inspirerats av UML, Unified Modeling Language och kan ses som en förenkling av de underliggande koncepten.

C4-modellen är utformad för att:

  1. göra det enklare för systemutvecklare att beskriva och förstå hur mjukvara fungerar
  2. minska gapet mellan modeller av mjukvarusystem och beskrivningar av källkod.

Diagramtyper

C4-modellen omfattar totalt 7 diagramtyper, varav 4 st är s.k. Core Diagrams och 3 st är s.k. Supplement Diagrams

Core Diagrams



Supplement Diagrams



Metaobjekt och symboler

C4-modellen föreskriver egentligen inga särskilda symboler, men i onlineverktyget Structurizr, som utvecklats av grundaren av C4-modellen Simon Brown, finns följande symboler: 



C4-modellen och Prime Arch

Några observationer utifrån Prime Arch:

  • Modelleringsprinciper: C4 fokuserar på enkla kraftfulla modeller. Målgruppen är främst utvecklare och mjukvaruarkitekter.

  • Nivåer: 4 nivåer, från sammanhang på systemnivå till olika beskrivningar kod, som egentligen avser funktionalitet eller information

  • Metaobjekt: Begreppet ”metaobjekt" förekommer inte utan man talar istället om ”abstraktioner” men det är samma sak som avses. C4 har 4 olika metaobjekt: Person, Software System, Container och Component. Symboler sägs inte vara viktiga men det finns ändå stöd för olika symboler, främst för olika typer Containers.

  • Diagram: Modeller visualiseras på 4 olika nivåer: Context, Container, Component och Code

Mappning av nivåer

C4-modellens  4 nivåer stämer mycket väl överens med Prime Archs 5 nivåer. Skillnaden är att C4 saknar Prime Archs nivå 1 och att övriga nivåer därmed är förskjutna ett steg.



Mappning av beskrivningar på olika nivåer

C4-modellen har beskrivningar på fyra nivåer:

  • System Context (L1)
  • Containers (L2)
  • Components (L3)
  • Code (L4)

Prime Arch har tre olika beskrivningsaspekter för varje nivå, och en snabb titt på varje beskrivning i C4 ger följande mappning:



  • Nivå 1 och 2 i C4 byggger på ett objekt i centrum och relationer till andra objekt. I Prime Arch beskrivs detta med aspekten Omgivning på nivå 2 och 3.
  • Nivå 3 i C4 beskriver flöden mellan olika komponenter. I Prime Arch beskrivs detta med aspekten Samverkan på nivå 4.
  • Nivå 4 i C4 beskriver det strukturella innehållet i en applikation på detaljerad nivå. I Prime Arch beskrivs detta med aspekten Komposition på nivå 5. 
  • Mappning av metaobjektet Software System

C4-modellen och Prime Arch stämmer väl överens sett till definitionerna.



Mappning av metaobjektet Container

C4-modellen och Prime Arch stämmer väl överens sett till definitionerna.



Mappning av metaobjektet Component

C4-modellen och Prime Arch stämmer väl överens men det finns vissa skillnader.

C4-modellen fokuserar på att representera hur systemet är uppbyggt rent tekniskt, medan Prime Arch fokuserar mer på en logisk gruppering av funktionalitet.

Det finns dock inget som hindrar att man använder Prime Arch för att modellera enligt C4-modellens principer - det går tvärtom alldeles utmärkt (se länk till exempel nedan).



Mappning av metaobjekt på nivån för Code 

Det finns inga metaobjekt på nivån för Code utan C4-modellen hänvisar istället till att använda UML-klasser och entiteter. Det gör att C4-modellen och Prime Arch stämemr väl överens på denna nivå.



Mappning av metaobjektet Person

C4-modellen behandlar "Person" högst summariskt och verkar anse att "Actor", "Role", "Person" och "Personas" är synonymer. Prime Arch tar den semantiska skillnaden på större allvar och därför är det sex olika objekt som kan anses matcha, beroende på innebörden som avses.   



Sammanfattning

C4-modellen är utmärkt om man vill skapa enkla kraftfulla applikationsmodeller. Modellens snäva avgränsning till just applikationsdimensionen tvingar dock många verksamheter som använder C4-modellen att försöka kombinera den med andra ramverk modelleringstekniker, t.ex. BPMN för processmodellering och ER-modellering för informationsmodellering.

Prime Arch kan ersätta C4-modellen fullt ut i applikationsdimensionen och det finns flera fördelar:

  • Prime Archs konfiguration i Sparx EA fungerar fullt ut med C4-modellen - men givetvis med Prime Arch-notation.
  • Prime Arch har stöd för många dimensioner som kompletterar applikation - färdigt att använda.
  • Prime Arch har hämtat det bästa från de bästa EA-ramverken och därmed är det enkelt att koppla samman beskrivningar som gjorts med andra ramverk med C4-modeller.