Modélisation C4

technique de notation graphique allégée pour la modélisation d'architectures logicielles

La modélisation C4 (de l'anglais « C4 model ») est une technique de notation graphique allégée pour la modélisation d'architectures logicielles[1],[2]. Elle est basée sur la décomposition structurelle d'un système en conteneurs et composants. La décomposition plus détaillée de ces éléments architecturaux peut alors s'appuyer sur des techniques de modélisation existantes telles que le langage de modélisation unifié (UML) ou les diagrammes entité-associations.

Historique modifier

La modélisation C4 a été créée par l'architecte logiciel Simon Brown entre 2006 et 2011 sur la base du langage de modélisation unifié (UML) et de l'approche de visualisation architecturale 4+1 du Kruchten[3]. Le lancement d'un site officiel sous licence créative commune[4] et un article[5] publié en 2018 ont popularisé la technique émergente[1].

Principes modifier

La modélisation C4 documente l'architecture d'un système logiciel en utilisant l'approche des points de vue multiples[6]. Ces points de vue permettent d'expliquer la décomposition d'un système en conteneurs puis en composants, les relations entre ces éléments, et, le cas échéant, les relations avec des éléments avec les utilisateurs[4].

Les points de vue sont groupés selon leur niveau hiérarchique[2],[4]:

  • Diagrammes de contexte (niveau 1): ils montrent le système dont l'architecture est considérée dans son environnement, et présentent ses relations avec les utilisateurs et d'autres systèmes;
  • Diagrammes de conteneurs (niveau 2): ils montrent la décomposition d'un système en conteneurs interdépendants. Un conteneur est à comprendre comme un sous-système exécutable qui peut être déployé de façon indépendante;
  • Diagrammes de composants (niveau 3): ils montrent la décomposition des conteneurs en composants interdépendants et relient au besoin des composants à d'autres conteneurs ou à d'autres systèmes;
  • Diagrammes de code (niveau 4): ils fournissent des détails supplémentaires sur la conception des éléments architecturaux qui peuvent être reliés aux codes source du logiciel. La modélisation C4 s'appuie à ce niveau de détail sur des notations existantes bien établies telles que UML (Unified Modeling Language), les modèles entité-association ou encore des diagrammes générés par environnements de développement intégrés (IDE).

Pour les niveaux 1 à 3, la modélisation C4 fait appel à 5 éléments de base dans les schémas: les personnes, les systèmes logiciels, les conteneurs, les composants et les relations.

La technique de modélisation n'est pas normative ni contraignante en ce qui concerne la représentation graphique, que ce soit pour la forme, la couleur ou le style des éléments. La modélisation C4 recommande d'utiliser des diagrammes simples basés sur des boîtes imbriquées, faciles à comprendre et permettant l'élaboration collaborative et interactive des modèles. La technique encourage également de bonnes pratiques de modélisation, comme par exemple l'indication d'un titre et d'une légende sur chaque diagramme, et le choix d'un vocabulaire clair et sans ambiguïté dans les étiquettes et annotations, afin de faciliter la compréhension par le public visé par chaque diagramme.

La modélisation C4 a été conçue pour permettre non seulement de simplifier la documentation de l'architecture, mais aussi de concevoir et visualiser de façon collaborative une architecture évolutive dans le contexte de projets agiles où des méthodes de documentation plus formelles et une conception architecturale en amont ne sont pas souhaitées[7].

Voir aussi modifier

Références modifier

  1. a et b (en) Richards,Mark et Ford, Neal, Fundamentals of software architecture: an engineering approach, O'REILLY MEDIA, , 293 p. (ISBN 978-1-4920-4342-3, OCLC 1138515057, lire en ligne) :

    « 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 et b (en) Enríquez, René, Software Architecture with Spring 5. 0 : Design and Architect Highly Scalable, Robust, and High-Performance Java Applications., Packt Publishing Ltd, , 41-44 p. (ISBN 978-1-78899-673-0, OCLC 1053798657, lire en ligne)
  3. (en) « Architecture blueprints—the “4+1” view model of software architecture | Tutorial proceedings on TRI-Ada '91: Ada's role in global markets: solutions for a changing complex world », sur dl.acm.org (DOI 10.1145/216591.216611, consulté le )
  4. a b et c (en) Brown, « The C4 model for visualising software architecture », c4model.com (consulté le )
  5. (en) Brown, « The C4 Model for Software Architecture », InfoQ, (consulté le )
  6. (en) Keeling, Michael,, Design it! : from programmer to software architect, Raleigh, North Carolina (ISBN 978-1-68050-345-6, OCLC 1024312521, lire en ligne)
  7. (en) « The Conflict Between Agile and Architecture: Myth or Reality? », SATURN 2013 conference, Software Engineering Institute of Carnegie Mellon University (consulté le )

Liens externes modifier