Software Architecture Documentation
Document system architecture using a root ARCHITECTURE.md with detailed component docs in docs/*.md.
Structure
project/
├── ARCHITECTURE.md # High-level system overview
└── docs/
├── <component>.md # Detailed component documentation
└── ...
Proactive Usage
When ARCHITECTURE.md exists in project root:
- •Before major changes: Read
ARCHITECTURE.mdto understand system structure - •After structural changes: Update diagrams and entry points
- •When adding components: Create new
docs/*.mdfile and link fromARCHITECTURE.md - •During refactoring: Update affected diagrams and file references
Creating Architecture Documentation
Initial Setup Workflow
- •
Analyze codebase structure
- •Identify entry points (main, CLI, API handlers)
- •Map major components and their responsibilities
- •Trace key data flows
- •
Create
ARCHITECTURE.md- •Write system overview (1-2 paragraphs)
- •Add C4 Context diagram showing system boundaries
- •Document entry points table
- •List key abstractions
- •Add testing overview
- •Link to detail docs (create
docs/section even if empty initially)
- •
Create detail docs for major components
- •One file per logical component in
docs/ - •Name files to match component names (flexible convention)
- •Include component-level diagrams
- •One file per logical component in
See references/document-templates.md for complete templates.
ARCHITECTURE.md Sections
Required Sections
| Section | Content |
|---|---|
| Overview | 1-2 paragraphs on system purpose |
| System Diagram | C4 Context or Container diagram |
| Key Entry Points | Table of primary files with descriptions |
| Key Abstractions | Table of important classes/interfaces/functions |
| Testing | Overview of test strategy and key test locations |
| Detail Docs | Links to docs/*.md files |
Optional Sections
| Section | Include When |
|---|---|
| Data Flow | Complex pipelines or transformations |
| Code Organization | Non-obvious directory structure |
| Configuration | Significant config or environment setup |
Detail Documents (docs/*.md)
Create a detail doc when a component:
- •Has 3+ key files or abstractions
- •Contains complex internal logic
- •Interacts with multiple other components
- •Needs sequence diagrams to explain flows
Naming Convention
Flexible. Match the component's identity:
- •
docs/auth.mdfor authentication component - •
docs/data-pipeline.mdfor data pipeline - •
docs/cli.mdfor CLI handling
Required Content
| Section | Content |
|---|---|
| Purpose | What this component does |
| Key Files | Table of important files |
| Key Abstractions | Classes, interfaces, functions |
Optional Content
| Section | Include When |
|---|---|
| Architecture Diagram | Multiple internal subcomponents |
| Sequence Diagram | Multi-step interactions |
| Dependencies | Non-obvious dependencies |
| Testing | Component-specific test patterns |
| Configuration | Component-specific config |
Diagram Selection
| Diagram Type | Use For |
|---|---|
| C4 Context | ARCHITECTURE.md - system boundaries and external actors |
| C4 Container | ARCHITECTURE.md - deployable units (services, databases) |
| C4 Component | docs/*.md - internal structure of a component |
| Flowchart | Control flow, pipelines, decision logic |
| Sequence | Request flows, API interactions, multi-step processes |
| ER Diagram | Data models, entity relationships |
| Class Diagram | Object hierarchies, interface implementations |
Start minimal (3-5 nodes). Add detail only when it improves clarity.
See references/mermaid-patterns.md for diagram templates.
Entry Points and Abstractions
Entry Points Table
Document files that serve as starting points for understanding the codebase:
| File | Description | |------|-------------| | `src/main.py` | Application entry point | | `src/core/engine.py` | Core processing engine | | `tests/conftest.py` | Test fixtures and setup |
Include:
- •Application entry points (main, CLI, handlers)
- •Core domain logic locations
- •Configuration files
- •Test setup and fixtures
Key Abstractions Table
Document important classes, interfaces, and functions:
| Abstraction | Location | Purpose | |-------------|----------|---------| | `Engine` | `src/core/engine.py` | Orchestrates processing | | `Handler` | `src/api/base.py` | Request handling interface |
Focus on:
- •Base classes and interfaces
- •Core domain objects
- •Public API surfaces
- •Extension points
Maintaining Documentation
When to Update
| Trigger | Action |
|---|---|
| New component added | Create docs/<component>.md, add link to ARCHITECTURE.md |
| Entry point changed | Update entry points table |
| Major refactoring | Update affected diagrams and file references |
| New external dependency | Update C4 Context diagram |
| Component removed | Remove or archive corresponding detail doc |
Update Checklist
After structural changes:
- •Verify entry points table is accurate
- •Check diagram nodes match actual components
- •Confirm file paths in tables are valid
- •Update any affected detail docs