Get the FREE Ultimate OpenClaw Setup Guide →

adr-decision-drivers

Scanned
npx machina-cli add skill zircote/adr/adr-decision-drivers --openclaw
Files (1)
SKILL.md
7.8 KB

ADR Decision Drivers

Decision drivers are the forces, concerns, and requirements that influence architectural decisions. Identifying and documenting these drivers clearly is essential for creating ADRs that explain not just what was decided, but why.

What Are Decision Drivers?

Decision drivers are factors that:

  • Constrain the solution space
  • Prioritize certain qualities over others
  • Represent stakeholder concerns
  • Create tension requiring trade-offs

Categories of Decision Drivers

CategoryDescriptionExamples
FunctionalWhat the system must doFeatures, capabilities, integrations
Quality AttributesHow well system must performPerformance, security, reliability
ConstraintsFixed limitationsBudget, timeline, technology mandates
BusinessOrganizational factorsCost, time-to-market, compliance
TechnicalEngineering considerationsMaintainability, testability, complexity
TeamHuman factorsSkills, capacity, preferences

Identifying Decision Drivers

Discovery Questions

Ask these questions to uncover drivers:

Functional Drivers

  • What must this system do?
  • What capabilities are essential vs nice-to-have?
  • What integrations are required?

Quality Attribute Drivers

  • What are the performance requirements?
  • How critical is availability?
  • What are the security requirements?
  • How important is scalability?

Constraint Drivers

  • What is the budget?
  • What is the timeline?
  • What technologies are mandated?
  • What regulations apply?

Business Drivers

  • What is the cost sensitivity?
  • How important is time-to-market?
  • What is the risk tolerance?
  • What competitive factors matter?

Technical Drivers

  • How complex can the solution be?
  • What is the expected maintenance burden?
  • How important is extensibility?
  • What testing requirements exist?

Team Drivers

  • What skills does the team have?
  • What capacity is available?
  • What are team preferences?
  • What training would be needed?

Quality Attributes (The "-ilities")

Core Quality Attributes

AttributeDefinitionMeasures
PerformanceResponse time, throughputLatency (ms), requests/sec
ScalabilityHandle increased loadConcurrent users, data volume
AvailabilitySystem uptimePercentage uptime, MTBF
ReliabilityCorrect operationError rate, MTTR
SecurityProtection from threatsVulnerabilities, compliance
MaintainabilityEase of changesChange effort, code complexity
TestabilityEase of testingTest coverage, test time
UsabilityUser experienceTask completion time, errors

Extended Quality Attributes

AttributeDefinitionMeasures
PortabilityRun on different platformsPlatform support, migration effort
InteroperabilityWork with other systemsIntegration points, standards
ModifiabilitySupport changesChange impact, coupling
ObservabilityMonitor system stateMetrics, logs, traces
DeployabilityEase of deploymentDeployment frequency, time
RecoverabilityRecovery from failureRTO, RPO

Documenting Decision Drivers

Format for Driver Documentation

## Decision Drivers

* **{Driver Name}** - {Brief description of the driver and why it matters}
* **{Driver Name}** - {Brief description}

Good Driver Documentation

## Decision Drivers

* **High availability required** - System must maintain 99.9% uptime as per SLA
* **Limited budget** - Total solution cost must not exceed $50K/year
* **Team lacks Kubernetes expertise** - Any container orchestration must be learnable quickly
* **Compliance with GDPR** - User data must be stored in EU region
* **Sub-100ms response time** - API latency critical for user experience

Poor Driver Documentation

## Decision Drivers

* Performance
* Cost
* Easy to use

Problems: Too vague, no specifics, no prioritization

Prioritizing Drivers

MoSCoW Method

PriorityMeaningTreatment
MustNon-negotiableSolution must satisfy
ShouldImportantSatisfy if possible
CouldNice to haveInclude if easy
Won'tOut of scopeExplicitly excluded

Ranking Approach

List drivers in order of importance:

  1. {Most critical driver}
  2. {Second most important}
  3. {Third priority} ...

Weighted Scoring

Assign weights to drivers:

DriverWeight (1-5)
Availability5
Performance4
Cost3
Maintainability2

Trade-off Analysis

Identifying Trade-offs

Common quality attribute trade-offs:

Trade-offDescription
Performance vs MaintainabilityOptimized code harder to maintain
Security vs UsabilityMore security often means more friction
Scalability vs CostScaling often increases infrastructure cost
Flexibility vs SimplicityConfigurable systems are more complex
Speed vs QualityFaster delivery may reduce quality

Documenting Trade-offs

### Trade-offs Accepted

We accept:
- **Higher infrastructure cost** for improved availability
- **Increased complexity** for better extensibility
- **Longer initial development** for lower maintenance burden

Using Drivers in Options Evaluation

Evaluation Matrix

OptionDriver 1Driver 2Driver 3Score
Option A+++-4
Option B++++5
Option C-+++4

Scoring: ++ (2), + (1), 0 (0), - (-1), -- (-2)

Qualitative Evaluation

For each option, evaluate against each driver:

### Option 1: PostgreSQL

* **High availability**: Good - supports replication, mature tooling
* **Limited budget**: Moderate - open source but requires expertise
* **Team expertise**: Good - team has SQL experience

Common Pitfalls

Avoid These Mistakes

  1. Missing drivers - Failing to identify all relevant factors
  2. Vague drivers - "Performance" instead of "sub-100ms response time"
  3. No prioritization - Treating all drivers as equal
  4. Ignoring constraints - Forgetting budget, timeline, compliance
  5. Technology bias - Letting preferred tech drive requirements
  6. Single perspective - Not gathering input from all stakeholders

Driver Discovery Workshops

Stakeholder Input

Gather drivers from:

  • Product owners (business requirements)
  • Architects (technical requirements)
  • Operations (operational requirements)
  • Security team (security requirements)
  • Users (usability requirements)

Workshop Questions

  1. What would make this decision successful?
  2. What would make it fail?
  3. What constraints must we work within?
  4. What quality attributes matter most?
  5. What trade-offs are acceptable?
  6. What risks concern you?

Additional Resources

Reference Files

For comprehensive guidance on specific aspects:

  • references/quality-attributes.md - Detailed quality attribute definitions
  • references/trade-off-patterns.md - Common trade-off patterns and resolutions

Related Skills

  • adr-fundamentals - ADR basics and lifecycle
  • adr-quality - Quality review criteria
  • adr-format-madr - MADR format with decision drivers section
  • adr-compliance - Auditing code against ADR decisions

Source

git clone https://github.com/zircote/adr/blob/main/skills/adr-decision-drivers/SKILL.mdView on GitHub

Overview

Decision drivers are the forces, concerns, and requirements that influence architectural decisions. This skill helps you identify, document, and weigh drivers across functional, quality attributes, constraints, business, technical, and team factors so ADRs explain not just what was decided, but why.

How This Skill Works

Identify drivers by category (Functional, Quality Attributes, Constraints, Business, Technical, Team), uncover them with targeted discovery questions, and document them in a clear Decision Drivers section. Link each driver to measurable measures such as latency, availability, cost, and time-to-market to anchor trade-offs in evidence.

When to Use It

  • When you are building an ADR and need to justify why a particular choice was made, not just what was chosen.
  • When weighing trade-offs among qualities like performance and security or scalability and maintainability.
  • When constraining design options with budgets, timelines, or mandated technologies.
  • When capturing business concerns such as cost sensitivity, compliance, and time-to-market pressures.
  • When considering team factors like skills, capacity, and training needs to influence architecture.

Quick Start

  1. Step 1: Identify drivers by category — Functional, Quality Attributes, Constraints, Business, Technical, Team.
  2. Step 2: Ask discovery questions to uncover each driver and capture the answers clearly.
  3. Step 3: Document drivers in a Decision Drivers section and link each to measurable criteria.

Best Practices

  • List drivers in clear categories: Functional, Quality Attributes, Constraints, Business, Technical, and Team.
  • Use discovery questions to uncover drivers for each category and avoid assuming what matters.
  • Document drivers in a concise Decision Drivers section, using bullet points and direct descriptions.
  • Tie each driver to concrete measures or metrics to support trade-offs.
  • Review and update drivers as constraints or stakeholder priorities change during ADR revisions.

Example Use Cases

  • High availability required to meet uptime targets drives redundancy and failover architecture.
  • Security requirements drive encryption, access controls, and threat modeling considerations.
  • Budget constraints steer choices toward cost-effective components and simpler designs.
  • Time-to-market pressure favors reusing existing services and minimizing custom implementations.
  • Maintainability and extensibility drive modularization, clear interfaces, and testability goals.

Frequently Asked Questions

Add this skill to your agents
Sponsor this space

Reach thousands of developers