Knowledge Domain Database - Software Architecture
How does the domain work before writing a line of code? Choose a document from the left tree: each page explains part of the model.
Business Rules - Software Architecture
This document lists the fundamental business rules of the Software Architecture domain, identified with a unique BR-NNN code. Each rule is technology-independent and describes an invariant constraint on the design and evolution of a software system.
---
BR-001 - Every significant architectural decision is recorded in an ADR
Code: BR-001
Name: Significant ArchitecturalDecision are documented as an ADR
Description: Every decision affecting the structure, quality attributes or constraints of the system must be recorded in an Architecture Decision Record with context, options considered, decision and consequences. Undocumented decisions are not admitted as architecture.
Motivation: Preserve the knowledge of "why" beyond "what"; enable informed evolution.
Priority: HIGH
Actors: Software Architect, Tech Lead
Traceability: glossary "Architecture Decision Record (ADR)"; state-machines/adr-lifecycle.md; BC-01.
---
BR-002 - Architecture is driven by quality attributes
Code: BR-002 Name: Structural decisions derive from prioritised quality attributes Description: The choice of architectural styles and patterns must be justified by the required quality attributes (scalability, availability, maintainability, security). A trade-off between attributes is made explicit; no structural decision is taken merely for technology fashion. Motivation: Align structure to the system's real non-functional goals. Priority: HIGH Actors: Software Architect, Business Stakeholder Traceability: glossary "Quality attribute", "Architecture evaluation (ATAM)"; BR-001.
---
BR-003 - Dependency direction respects architectural boundaries
Code: BR-003
Name: Dependency points inward, never from the inside outward
Description: In layered/hexagonal/Clean architectures, the domain does not depend on infrastructure: the dependency arrow goes from the outside toward the domain. A dependency violating this direction is architectural debt to be corrected.
Motivation: Keep the domain pure and testable, independent of frameworks and technical details.
Priority: CRITICAL
Actors: Software Architect, Code Reviewer
Violation: ConstraintViolated; the merge is blocked by the dependency fitness function.
Traceability: glossary "Clean Architecture", "Hexagonal architecture", "Onion Architecture", "Anti-corruption layer".
---
BR-004 - High cohesion and low coupling between components
Code: BR-004
Name: Every Component maximises internal cohesion and minimises external coupling
Description: Responsibilities are grouped by cohesion; interactions between components occur through stable interfaces. A component that changes for many different reasons, or that is too coupled to others, must be redesigned.
Motivation: Allow independent evolution and reduce the impact of change.
Priority: HIGH
Actors: Software Architect, Tech Lead
Traceability: glossary "Cohesion", "Coupling", "Bounded context".
---
BR-005 - Technical debt is made visible and managed
Code: BR-005
Name: Every identified TechnicalDebt is recorded, assessed and planned
Description: Architectural technical debt (structural shortcuts, pattern violations, deprecated components) is made explicit, assessed for impact and interest, and placed in the backlog. No invisible debt accumulates.
Motivation: Avoid the silent erosion of the architecture over time.
Priority: HIGH
Actors: Tech Lead, Software Architect
Traceability: glossary "Fitness function"; events/domain-events.md event TechnicalDebtIdentified; BR-002.
---
BR-006 - Component boundaries follow Conway's Law
Code: BR-006
Name: Component structure is aligned to team structure
Description: Decomposition into Component accounts for Conway's Law: software boundaries tend to mirror organisational communication boundaries. Misalignments produce friction and coupling; the inverse Conway maneuver is applied where needed.
Motivation: Reduce organisational friction and foster team autonomy.
Priority: MEDIUM
Actors: Software Architect, Business Stakeholder
Traceability: glossary "Conway's Law", "Bounded context".
---
BR-007 - A breaking change requires contract versioning
Code: BR-007
Name: The evolution of an architectural contract preserves consumers or introduces a new version
Description: When a Component exposes an API or a contract consumed by others, a breaking change requires a new version and a coexistence period. Deprecation follows an announced path.
Motivation: Protect consumers from regressions; allow orderly migrations.
Priority: HIGH
Actors: Software Architect, Tech Lead
Traceability: glossary "API Gateway", "Idempotency"; events/domain-events.md event APIVersionPublished.
---
BR-008 - Architectural conformance is verified by fitness functions
Code: BR-008
Name: Architectural constraints are expressed as automated fitness functions
Description: Structural constraints (dependency direction, layering, naming, coupling limits) are encoded as fitness functions run in the pipeline. A violation blocks integration, preventing architecture erosion.
Motivation: Make the architecture verifiable and resistant to degradation.
Priority: HIGH
Actors: Code Reviewer, Software Architect
Violation: ConstraintViolated; build failed until the constraint is restored.
Traceability: glossary "Fitness function", "Architecture evaluation (ATAM)"; BR-003.