C4-modellen

strømlinjeformet grafisk notasjonsteknikk for modellering av arkitektur til programvaresystemer

C4-modellen er en strømlinjeformet grafisk notasjonsteknikk for modellering av arkitektur til programvaresystemer.[1][2] Den er basert på strukturell dekomposisjon (en hierarkisk trestruktur) av et system til konteinere og komponenter, og bygger på eksisterende modelleringsteknikker som Unified Modeling Language (UML) eller entitet–relasjonsmodell-diagrammer (ERD-er) for mer detaljert dekomponering av arkitekturblokkene.

Abstraksjoner i C4-modellen: Et programvaresystem består av en eller flere konteinere (webapplikasjoner, databaser, osv.), som hver inneholder en eller flere komponenter, som igjen er implementert av ett eller flere kodeelementer (klasser, grensesnitt, objekter, funksjoner osv.)

Historie rediger

C4-modellen ble skapt av programvarearkitekten Simon Brown mellom 2006 og 2011 basert på Unified Modeling Language og 4+1 visningsmodellen. Teknikken ble popularisert gjennom lanseringen av en offisiell nettside med Creative Commons-lisens[3]

Oversikt rediger

C4-modellen dokumenterer arkitekturen til et programvaresystem gjennom å ha flere visninger[4] som forklarer dekomponeringen av et system i konteinere og komponenter, relasjonene mellom disse elementene, og (der det er relevant) relasjonen til brukerne.[3]

Visningene er organisert i henhold til deres hierarkiske nivå:[2][3]

  • Kontekstdiagrammer (nivå 1): Viser systemet som skal studeres og dets relasjon til brukere og andre systemer
  • Konteinerdiagrammer (nivå 2): Dekomponerer et system til innbyrdes relaterte konteinere. En container representerer en applikasjon eller et datalager.
  • Komponentsdiagrammer (nivå 3): Dekomponerer konteinere til innbyrdes relaterte komponenter, og knytter komponentene til andre konteinere eller andre systemer.
  • Kodediagrammer (nivå 4): Gir ytterligere detaljer om utformingen av arkitekturelementer som kan avbildes til kode. På dette nivået er C4-modellen basert på eksisterende notasjoner som Unified Modeling Language (UML), entitet–relasjonsmodell-diagrammer (ERD-er) eller diagrammer generert det integrerte utviklingsmiljøet (IDE).

For nivå 1 til 3 bruker C4-modellen 5 grunnleggende diagramelementer: Personer, programvaresystemer, konteinere, komponenter og relasjoner. Teknikken angir ikke utforming, form, farge og stil for disse elementene. I stedet anbefaler C4-modellen å bruke enkle diagrammer basert på nøstede bokser for å lette interaktiv tegning. Teknikken fremmer også gode modelleringspraksis som å angi tittel og forklaring på hvert diagram, og klar og utvetydig merking for å lette forståelsen hos tiltenkt publikum.

C4-modellen legger til rette for visuelt arkitektursamarbeid og evolusjonær arkitektur i kontekst av smidige lag der mer formelle dokumentasjonsmetoder og forhåndsplanlagt («up-front») arkitekturdesign ikke er ønsket.[5]

Referanser rediger

  1. ^ Richards,Mark; Ford, Neal (2019). Fundamentals of software architecture: an engineering approach. O'REILLY MEDIA. ISBN 978-1-4920-4342-3. OCLC 1138515057. «some standard are emerging for diagramming software architecture (such as software architect Simon Brown's C4 model or The Open Group Archimate standard)» 
  2. ^ a b Enríquez, René (2018). Software Architecture with Spring 5. 0 : Design and Architect Highly Scalable, Robust, and High-Performance Java Applications. Salazar, Alberto. Packt Publishing Ltd. ISBN 978-1-78899-673-0. OCLC 1053798657. Enríquez, René (2018). Software Architecture with Spring 5. 0 : Design and Architect Highly Scalable, Robust, and High-Performance Java Applications. Salazar, Alberto. Packt Publishing Ltd. pp. 41–44. ISBN 978-1-78899-673-0. OCLC 1053798657.
  3. ^ a b c Brown, Simon. «The C4 model for visualising software architecture» (Official site of the modelling technique). Arkivert fra originalen 25. februar 2010. Besøkt 22. august 2020. Brown, Simon. "The C4 model for visualising software architecture". c4model.com (Official site of the modelling technique). Archived from the original on 2010-02-25. Retrieved 2020-08-22.
  4. ^ Keeling, Michael. Design it! : from programmer to software architect. Raleigh, North Carolina. ISBN 978-1-68050-345-6. OCLC 1024312521. 
  5. ^ «The Conflict Between Agile and Architecture: Myth or Reality?». Software Engineering Institute of Carnegie Mellon University. Arkivert fra originalen 19. april 2021. Besøkt 22. august 2020.