Architecture Tradeoff Analysis
Structured method to expose how architectural decisions affect quality attributes in tension. Based on ATAM (Architecture Tradeoff Analysis Method). Produces a decision matrix with sensitivity points, tradeoff points, and risk catalog.
Complements: architecture (broad modes), design-review (component interface options). This skill operates at system/subsystem level analyzing quality attribute tensions.
When to Use
- Choosing between architectural approaches with competing concerns
- Evaluating an existing architecture against quality requirements
- Stakeholders disagree on priorities (speed vs safety, flexibility vs simplicity)
- Migration decisions with multiple valid paths
- Any "it depends" answer that needs structured decomposition
When NOT to Use
- Single quality attribute dominance (no tension)
- Component-level interface design (use
design-review) - Code-level refactoring (use
code-quality)
Process
1. Establish Quality Attribute Utility Tree
Elicit and prioritize quality attributes relevant to the system. Each leaf is a concrete, testable scenario.
Performance
├── Latency: API response < 50ms p99 under 1k RPS (H,H)
├── Throughput: Handle 10k concurrent connections (H,M)
└── Startup: Cold start < 3s (M,L)
Modifiability
├── Add new output format in < 1 dev-day (H,H)
└── Swap storage backend without API changes (M,M)
Availability
├── Survive single-node failure without data loss (H,H)
└── Graceful degradation under 10x load spike (H,M)
Security
└── Zero trust between internal services (M,H)
(importance, difficulty) — H/M/L for each. Focus analysis on (H,H) and (H,M) scenarios.
Ask: "What quality attributes matter most? For each, give me a concrete scenario with measurable criteria."
2. Map Architectural Approaches
For each major decision point, identify 2-4 candidate approaches. Keep descriptions factual — no advocacy yet.
| Decision Point | Approach A | Approach B | Approach C |
|---|---|---|---|
| Communication | Sync REST | Async messaging | gRPC streaming |
| Data storage | Single SQL DB | Event sourcing | Polyglot persistence |
| Deployment | Monolith | Microservices | Modular monolith |
3. Analyze Each Approach Against Scenarios
For every (approach, scenario) pair, assess impact:
| Scenario | Approach A | Approach B | Approach C |
|---|---|---|---|
| API < 50ms p99 | ++ direct call path | -- queue latency | + streaming amortizes |
| Add output format < 1d | - coupled transform | ++ isolated handler | + plugin interface |
| Survive node failure | -- single point | ++ replicated consumers | + reconnect semantics |
Use ++ (strongly supports), + (supports), o (neutral), - (hinders), -- (strongly hinders).
4. Identify Sensitivity and Tradeoff Points
Sensitivity point: A property of one approach where a small change in the architecture significantly affects one quality attribute.
"If we add connection pooling to Approach A, latency drops from '-' to '++'."
Tradeoff point: A property that affects two or more quality attributes in opposite directions.
"Async messaging improves availability (++) but hinders latency (--). These are in direct tension."
Document each explicitly:
### Sensitivity Points
- S1: Connection pool size in Approach A — small change flips latency from fail to pass
- S2: Message batch size in Approach B — affects both throughput and consistency
### Tradeoff Points
- T1: Sync vs async communication — latency ↔ availability
- T2: Schema coupling — modifiability ↔ type safety
- T3: Replication factor — availability ↔ consistency ↔ cost
5. Catalog Risks
A risk is an architecturally significant decision that may cause problems. A non-risk is a good decision worth documenting.
| ID | Description | Affected Scenarios | Severity |
|---|---|---|---|
| R1 | Single DB = SPOF for all services | Availability scenarios | HIGH |
| R2 | Async retry storm under failure | Throughput, availability | MEDIUM |
| NR1 | Circuit breakers on all external calls | Availability | — |
| NR2 | Schema versioning from day one | Modifiability | — |
6. Decision Matrix
Weight quality attributes, score approaches, produce recommendation.
| Quality Attribute | Weight | Approach A | Approach B | Approach C |
|-------------------|--------|-----------|-----------|-----------|
| Latency (p99) | 0.30 | 8 | 3 | 7 |
| Modifiability | 0.25 | 4 | 9 | 7 |
| Availability | 0.25 | 3 | 8 | 6 |
| Security | 0.10 | 6 | 6 | 6 |
| Ops complexity | 0.10 | 9 | 4 | 6 |
| **Weighted Total**| | **5.65** | **6.15** | **6.60** |
Scores 1-10. Weights must sum to 1.0. Ask user to validate weights before scoring.
7. Recommend with Caveats
State recommendation clearly. Include:
- Which tradeoff points the recommendation accepts
- Which risks it carries and how to mitigate
- Under what changed assumptions the recommendation would flip
- Sensitivity points to monitor post-implementation
Template:
"Recommend Approach C (weighted 6.60). Accepts T1 tradeoff (moderate latency for availability). Carries R2 risk — mitigate with backpressure. If latency weight increases to 0.40+, Approach A wins. Monitor S1 (pool sizing) in production."
Quick Reference
| Step | Output | Key Question |
|---|---|---|
| Utility tree | Prioritized scenarios | "What matters and how much?" |
| Approach map | Candidate table | "What are our options?" |
| Impact analysis | Scenario × approach matrix | "How does each option affect each concern?" |
| Sensitivity/tradeoff | S and T point catalog | "Where are the tensions?" |
| Risk catalog | Risk/non-risk table | "What could go wrong?" |
| Decision matrix | Weighted scores | "Which approach wins given our priorities?" |
| Recommendation | Decision + caveats | "What do we accept and what do we watch?" |
Common Mistakes
| Mistake | Fix |
|---|---|
| Skipping utility tree — jumping to solutions | Quality scenarios must exist before evaluating approaches |
| Equal weights on everything | Force ranking — if everything matters equally, nothing does |
| Missing tradeoff points | Every ++ paired with a -- elsewhere is a tradeoff — find them |
| Scoring without scenarios | Scores must trace to specific quality attribute scenarios |
| Ignoring sensitivity points | These are where small implementation choices swing outcomes |
| Presenting matrix without recommendation | Be opinionated — state which approach and why |
| Forgetting reversal conditions | Always state when the recommendation would change |