Domain Knowledge Base - Software Architecture
Come funziona il dominio, prima di scrivere una riga di codice? Scegli un documento dall'albero a sinistra: ogni pagina spiega una parte del modello.
Regole di Business - Software Architecture
Questo documento elenca le regole di business fondamentali del dominio Software Architecture, identificate con codice univoco BR-NNN. Ogni regola è technology-independent e descrive un vincolo invariante sulla progettazione e l'evoluzione di un sistema software.
---
BR-001 - Ogni decisione architetturale significativa è registrata in un ADR
Codice: BR-001
Nome: Le ArchitecturalDecision significative sono documentate come ADR
Descrizione: Ogni decisione che influenza la struttura, gli attributi di qualità o i vincoli del sistema deve essere registrata in un Architecture Decision Record con contesto, opzioni considerate, decisione e conseguenze. Le decisioni non documentate non sono ammesse come architettura.
Motivazione: Preservare la conoscenza del "perché" oltre al "cosa"; abilitare l'evoluzione informata.
Priorità: ALTA
Attori: Software Architect, Tech Lead
Tracciabilità: glossary "Architecture Decision Record (ADR)"; state-machines/adr-lifecycle.md; BC-01.
---
BR-002 - L'architettura è guidata dagli attributi di qualità
Codice: BR-002 Nome: Le decisioni strutturali derivano dagli attributi di qualità prioritari Descrizione: La scelta di stili e pattern architetturali deve essere giustificata dagli attributi di qualità richiesti (scalabilità, disponibilità, manutenibilità, sicurezza). Un trade-off tra attributi è esplicitato; nessuna decisione strutturale è presa solo per moda tecnologica. Motivazione: Allineare la struttura agli obiettivi non funzionali reali del sistema. Priorità: ALTA Attori: Software Architect, Stakeholder Business Tracciabilità: glossary "Attributo di qualità", "Valutazione dell'architettura (ATAM)"; BR-001.
---
BR-003 - La direzione delle dipendenze rispetta i confini architetturali
Codice: BR-003
Nome: Le Dipendenza puntano verso l'interno, mai dall'interno verso l'esterno
Descrizione: In architetture a livelli/esagonali/Clean, il dominio non dipende dall'infrastruttura: la freccia di dipendenza va dall'esterno verso il dominio. Una dipendenza che viola questa direzione è un debito architetturale da correggere.
Motivazione: Mantenere il dominio puro e testabile, indipendente da framework e dettagli tecnici.
Priorità: CRITICA
Attori: Software Architect, Code Reviewer
Violazione: VincoloViolato; il merge è bloccato dalla fitness function di dipendenza.
Tracciabilità: glossary "Clean Architecture", "Architettura esagonale", "Onion Architecture", "Anti-corruption layer".
---
BR-004 - Alta coesione e basso accoppiamento tra componenti
Codice: BR-004
Nome: Ogni Componente massimizza la coesione interna e minimizza l'accoppiamento esterno
Descrizione: Le responsabilità sono raggruppate per coesione; le interazioni tra componenti avvengono tramite interfacce stabili. Un componente che cambia per molte ragioni diverse o che è troppo accoppiato ad altri va riprogettato.
Motivazione: Permettere l'evoluzione indipendente e ridurre l'impatto del cambiamento.
Priorità: ALTA
Attori: Software Architect, Tech Lead
Tracciabilità: glossary "Coesione", "Accoppiamento", "Bounded context".
---
BR-005 - Il debito tecnico è reso visibile e gestito
Codice: BR-005
Nome: Ogni TechnicalDebt identificato è registrato, valutato e pianificato
Descrizione: Il debito tecnico architetturale (scorciatoie strutturali, violazioni di pattern, componenti deprecati) è reso esplicito, valutato per impatto e interesse, e inserito nel backlog. Non si accumula debito invisibile.
Motivazione: Evitare l'erosione silenziosa dell'architettura nel tempo.
Priorità: ALTA
Attori: Tech Lead, Software Architect
Tracciabilità: glossary "Fitness function"; events/domain-events.md evento DebitoTecnicoIdentificato; BR-002.
---
BR-006 - I confini dei componenti seguono la Legge di Conway
Codice: BR-006
Nome: La struttura dei componenti è allineata alla struttura dei team
Descrizione: La scomposizione in Componente tiene conto della Legge di Conway: i confini software tendono a rispecchiare i confini di comunicazione organizzativa. Disallineamenti producono attrito e accoppiamento; si applica l'inverse Conway maneuver dove necessario.
Motivazione: Ridurre l'attrito organizzativo e favorire l'autonomia dei team.
Priorità: MEDIA
Attori: Software Architect, Stakeholder Business
Tracciabilità: glossary "Legge di Conway", "Bounded context".
---
BR-007 - Un cambiamento breaking richiede versionamento del contratto
Codice: BR-007
Nome: L'evoluzione di un contratto architetturale preserva i consumatori o introduce una nuova versione
Descrizione: Quando un Componente espone un'API o un contratto consumato da altri, un cambiamento breaking richiede una nuova versione e un periodo di coesistenza. La deprecazione segue un percorso annunciato.
Motivazione: Proteggere i consumatori da regressioni; consentire migrazioni ordinate.
Priorità: ALTA
Attori: Software Architect, Tech Lead
Tracciabilità: glossary "API Gateway", "Idempotenza"; events/domain-events.md evento APIVersionePubblicata.
---
BR-008 - La conformità architetturale è verificata da fitness function
Codice: BR-008
Nome: I vincoli architetturali sono espressi come fitness function automatiche
Descrizione: I vincoli strutturali (direzione delle dipendenze, layering, naming, limiti di accoppiamento) sono codificati come fitness function eseguite nella pipeline. Una violazione blocca l'integrazione, evitando l'erosione dell'architettura.
Motivazione: Rendere l'architettura verificabile e resistente al degrado.
Priorità: ALTA
Attori: Code Reviewer, Software Architect
Violazione: VincoloViolato; build fallita finché il vincolo non è ripristinato.
Tracciabilità: glossary "Fitness function", "Valutazione dell'architettura (ATAM)"; BR-003.