Panoramica del Modello C4
Il modello C4 è una tecnica di notazione grafica snella per modellare l'architettura dei sistemi software. Creato da Simon Brown, fornisce un modo per comunicare l'architettura software a diversi livelli di astrazione.
Perché C4?
I diagrammi architetturali tradizionali spesso soffrono di:
- Notazione inconsistente: Team diversi usano simboli diversi
- Livello di dettaglio sbagliato: Troppo astratti o troppo dettagliati
- Documentazione obsoleta: I diagrammi non riflettono la realtà
Il modello C4 affronta questi problemi fornendo:
- Livelli di astrazione standardizzati: Quattro livelli chiari dall'alto al basso
- Notazione semplice: Facile da comprendere per pubblici tecnici e non tecnici
- Navigazione gerarchica: Ingrandisci per più dettagli, rimpicciolisci per il contesto
I Quattro Livelli
Livello 1: Contesto di Sistema
Il diagramma di Contesto di Sistema mostra il tuo sistema come un riquadro al centro, circondato dai suoi utenti e dagli altri sistemi con cui interagisce.
Scopo: Mostrare il quadro generale - come il tuo sistema si inserisce nel mondo
Pubblico: Tutti (tecnici e non tecnici)
Contiene:
- Il tuo sistema software (centrale)
- Utenti/personas che usano il sistema
- Sistemi esterni da cui il tuo sistema dipende
Livello 2: Container
Il diagramma Container ingrandisce il tuo sistema per mostrare i blocchi tecnici di alto livello.
Scopo: Mostrare le principali scelte tecnologiche e come sono distribuite le responsabilità
Pubblico: Persone tecniche dentro e fuori dal team di sviluppo
Contiene:
- Container (applicazioni, data store, ecc.)
- Relazioni tra container
- Connessioni a sistemi esterni
Livello 3: Componente
Il diagramma Componente ingrandisce un container per mostrare i suoi componenti interni.
Scopo: Mostrare come un container è composto da componenti e le loro responsabilità
Pubblico: Architetti software e sviluppatori
Contiene:
- Componenti all'interno di un container
- Relazioni tra componenti
- Scelte tecnologiche/implementative
Livello 4: Codice
Il diagramma Codice (opzionale) mostra come un componente è implementato.
Scopo: Mostrare dettagli a livello di codice per componenti complessi o critici
Pubblico: Sviluppatori
Contiene:
- Classi, interfacce, funzioni
- Relazioni di ereditarietà e implementazione
- Design pattern
C4 in Archyl
Archyl implementa il modello C4 con queste funzionalità:
Navigazione
- Doppio click su qualsiasi elemento per ingrandire al livello successivo
- Usa le breadcrumb per navigare verso l'alto
- Scorciatoie da tastiera per navigazione rapida (← → ↑ ↓)
Tipi di Elemento
Ogni livello ha i suoi tipi di elemento:
| Livello | Tipi di Elemento |
|---|---|
| Contesto di Sistema | Sistema, Sistema Esterno, Persona |
| Container | Container, Container Esterno |
| Componente | Componente |
| Codice | Classe, Interfaccia, Funzione |
Relazioni
Le relazioni possono essere create tra elementi a qualsiasi livello:
- Trascina da un elemento all'altro
- Aggiungi etichette che descrivono l'interazione
- Specifica la tecnologia utilizzata
Stile
Personalizza l'aspetto dei tuoi diagrammi:
- Colori per diversi tipi di elemento
- Icone personalizzate
- Raggruppamento con overlay
Best Practice
Parti dall'Alto
Inizia sempre con il diagramma di Contesto di Sistema. Ti costringe a pensare a:
- Chi usa il tuo sistema?
- Da quali sistemi esterni dipendi?
- Qual è l'ambito del tuo sistema?
Mantienilo Semplice
Ogni diagramma dovrebbe stare in una singola pagina/schermo. Se non ci sta:
- Dividi in più diagrammi
- Riduci il livello di dettaglio
- Usa il livello successivo per più dettagli
Usa Nomi Consistenti
- Usa nomi chiari e descrittivi
- Segui le convenzioni di denominazione del tuo team
- Evita abbreviazioni non universalmente comprese
Documenta le Relazioni
Le relazioni sono importanti quanto gli elementi:
- Aggiungi sempre etichette che descrivono l'interazione
- Includi la tecnologia/protocollo quando rilevante
- Mostra la direzione della comunicazione
Prossimi Passi
- Contesto di Sistema - Approfondimento sul Livello 1
- Diagrammi Container - Approfondimento sul Livello 2
- Diagrammi Componente - Approfondimento sul Livello 3
- Relazioni - Scopri come connettere gli elementi