Rendered from the source repository. Headings, examples, code, tables, links, and referenced images are preserved.
OOAD Architect — Design
Transforms validated RE into architecture: C4/UML, RDD→GRASP responsibility assignment, data model, GoF selection, Clean 4 Layers layout with ADR-MADR. See references/ooad-vocabulary.md.
Preconditions
docs/02-requirements/baselined (SRS or backlog).docs/agents/workflow.md+docs/agents/architecture.md.CONTEXT.md+conceptual-model.pumlexist.
Process
1. Review RE
Read docs/02-requirements/SRS.md or backlog/US-*.md + UC-*.md + RTM.csv + conceptual-model.puml + context.puml.
Done when: every FR/UC/US is mapped to a conceptual class in RTM.csv and all NFRs that drive architecture are highlighted.
2. Propose architecture — do not proceed without human approval
Propose:
- Style: Clean 4 Layers (
Entities → Use Cases → Interface Adapters → Frameworks) default; alternativesMVC (Reenskaug)orHexagonal (Cockburn)perdocs/agents/architecture.md. - C4 (Simon Brown): L1 Context, L2 Container, L3 Component (per size).
- UML (OMG):
class-diagram.puml,sequence-diagram.pumlper critical UC,state-diagram.pumlif applicable. - Data model: ER → relational schema + normalization.
- GoF (Gamma et al.): selection matrix
Factory/Singleton | Adapter/Decorator/Proxy/Composite | Observer/Strategy/State/Command— justify each (problem solved, discarded alternative, and the tradeoff accepted — GoF's Mission is named solutions with evaluated consequences, not fashion). - Responsibility assignment — RDD → GRASP (Wirfs-Brock → Larman): start from
docs/02-requirements/crc-cards.md; map every sequence message to a class operation and cite one GRASP pattern per mapping (default: Information Expert; creation: Creator; system events: Controller = UseCase, never UI/Framework; variation points: Protected Variations + the GoF that implements it; no-fit helpers: Pure Fabrication with cohesion rationale). Each mapping states the pattern'sMission:fromreferences/ooad-vocabulary.md(one line — why this owner, not another). Reject God-controllers and feature-envy assignments (Low Coupling / High Cohesion check). - Modules/packages: responsibility per package.
- Dependency Rule (Martin): imports point inward (
Frameworks → Adapters → UseCases → Entities); flag violations.
Done when: user explicitly approves style, C4 levels, responsibility assignment (CRC→GRASP map), and GoF choices (ask: architecture OK? preferred pattern? add/remove?).
3. Produce artifacts (after approval)
docs/03-architecture/
├── c4-context.puml / c4-container.puml
├── class-diagram.puml (→ .svg)
├── sequence-diagram-UC-001.puml
├── data-model-er.puml
├── adrs/
│ ├── 0001-clean-4-layer-architecture.md (MADR — Starke)
│ ├── 0002-strategy-for-rules.md
│ └── 0003-orm-vs-sql.md
└── README.mdMADR format: Context → Decision → Consequences → Alternatives. Templates: templates/adr-madr.md, templates/c4.puml, templates/class-diagram.puml. Pre-render plantuml -tsvg docs/03-architecture/*.puml.
Done when: all PUML render to SVG; each ADR has Context/Decision/Consequences/Alternatives and references a motivating NFR-xxx; every sequence message cites its GRASP pattern; RTM.csv updated with FR→Class→ADR.
4. Update scaffold README
Create/update docs/03-architecture/README.md embedding SVGs:

Done when: README.md renders both SVGs and explains layer responsibilities in 3 lines per layer.
Reference
Verify
- [ ] C4/UML in PlantUML and SVGs rendered (
plantuml -tsvggreen) - [ ] Every ADR has context/decision/consequences/alternatives; justified GoF matrix
- [ ] Every sequence-message → operation mapping cites a GRASP pattern plus its one-line
Mission:; Controller is a UseCase; Protected Variations names its GoF - [ ] No God-controller / feature envy (Low Coupling + High Cohesion reviewed against CRC cards)
- [ ] Dependency Rule respected; no
EntitiesimportsFrameworks - [ ] Every class/module traced
FR/UC/US → RTM.csv; NFR → ADR - [ ] Human approval recorded
Gates by profile
- RUP (Jacobson): Elaboration delivers executable architectural baseline.
- Waterfall (Royce): Complete heavy SDD, detailed UML, signed.
- Agile: Just-enough C4 + ADR per significant decision, UML only as needed.
Rules
Do not invent a layer outside docs/agents/architecture.md without new ADR.
