Unified Process
Specifications-driven development where specs drive code, not the reverse.
Core Principles
- •Traceability via identifiers: G-001 (goals) → REQ-001 (requirements) → UC-001 (use cases) → TC-001 (tests)
- •Cascade principle: Changes flow downward only. Changing a goal may affect everything; changing a test affects only code.
- •Appropriate abstraction: Each document type has a specific level. Don't mix concerns.
- •Requirements describe needs, not solutions: "Data must persist durably" (need) vs "Use PostgreSQL" (solution)
- •Specs drive code, not reverse (AIUP): When reality diverges from specs, update specs first. Code is regenerable.
- •Iterative refinement: Specifications, code, and tests improve together through short cycles. Perfect specs are impossible—iterate.
Document Hierarchy
Vision (G-001, G-002...) ← WHY are we building this?
↓
Requirements (REQ-001, NFR-001...) ← WHAT must the system do?
↓
Use Cases (UC-001, UC-002...) ← HOW do actors achieve goals?
↓
Entity Model + Architecture ← WHAT concepts exist? HOW is it structured?
↓
Acceptance Tests (TC-001...) ← HOW do we verify it works?
↓
Code
Workflows
Creating a new artefact
- •Identify the artefact type needed
- •Read the catalogue definition:
references/<artefact>.md - •Use the template from
assets/templates/if available - •Write the document following "Should contain" guidance
- •Validate against the checklist in the catalogue
- •Verify traceability (IDs link upstream)
Reviewing an artefact
- •Read the catalogue definition for that artefact type
- •Check against "Should NOT contain" list — common mistakes
- •Verify examples match "Good" patterns, not "Bad"
- •Confirm appropriate abstraction level
- •Validate traceability chain
When a document changes (cascade)
- •Identify what changed and its identifier (e.g., REQ-001)
- •Search codebase for that identifier
- •Create tickets for each affected downstream artefact:
- •Requirements change → update use cases, tests, code
- •Use case change → update tests, code
- •Test change → update code only
- •Changes do NOT ripple upward
Setting up UP in a new project
- •Create
docs/unified-process/directory - •Copy templates from
assets/templates/as starting points - •Decide which artefacts to use (see "Minimum Viable Process" below)
- •Link UP work to issue tracker using identifiers
Minimum Viable Process
For simple projects, you may only need:
- •Vision (one paragraph + goals)
- •Requirements (bullet list with IDs)
- •Acceptance Tests (how you know it works)
Add more artefacts as complexity grows. See references/artefact-index.md for the complete catalogue of all possible UP artefacts and when to use each.
When to Suggest Additional Artefacts
Suggest a Business Case when: Justifying budget, competing for resources, need ROI tracking.
Suggest a Stakeholder Map when: Multiple groups with conflicting interests, political complexity.
Suggest a Risk Register when: Significant unknowns, high-stakes project, need to communicate risks.
Suggest a Glossary when: Team uses terms inconsistently, domain is unfamiliar.
Suggest ADRs when: Team turnover, long-lived system, need to explain "why we did it this way."
Suggest API Specification when: Building APIs for consumers, contract-first development.
Suggest Deployment Runbook when: Complex deployment, ops team different from dev team.
For the full decision guide, consult references/artefact-index.md.
Artefact Quick Reference
| Artefact | Purpose | Key Rule |
|---|---|---|
| Vision | Why + what success looks like | Goals are measurable outcomes, not features |
| Requirements | What the system must do | Needs, not solutions. No tech names. |
| Use Cases | How actors achieve goals | Goal-oriented, not function-oriented. No UI details. |
| Entity Model | Core business concepts | NOT a database schema. No PKs, no SQL types. |
| Architecture | System structure + decisions | Components + rationale. No code. |
| Acceptance Tests | Verify requirements met | Business language. Observable behaviour only. |
| Supplementary Specs | NFRs + cross-cutting concerns | Measurable. FURPS+ categories. |
For detailed guidance on any artefact, read references/<artefact>.md.
Common Boundary Violations
Requirements becoming use cases: If you're writing interaction steps, it's a use case.
Use cases becoming UI specs: "User clicks blue button" → wrong. "User initiates checkout" → correct.
Entity model becoming database schema: Primary keys, foreign keys, SQL types → wrong. Business concepts → correct.
Architecture including code: Function definitions → wrong. Component responsibilities → correct.
Requirements prescribing solutions: Technology names in requirements → move to architecture.
Identifier Conventions
| Prefix | Document |
|---|---|
| G- | Vision / Goals |
| REQ- | Functional Requirements |
| NFR- | Non-Functional Requirements |
| UC- | Use Cases |
| TC- | Test Cases |
| ADR- | Architecture Decision Records |
Consistency matters more than convention—use what fits your project.