agentleFS
ROCmROCm/rocprofiler-systems-skills/skills/architecture-tradeoff/SKILL.md

architecture-tradeoff

Skill5 starsChanged 18 days agoMITView on GitHub

Use when architectural decisions involve competing quality attributes (performance vs modifiability, availability vs consistency, security vs usability), when the user says "tradeoff analysis", "ATAM", "quality attributes", "what are we giving up", or when a design choice affects multiple non-functional requirements in tension.

1 other project uses a version of this.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

1 rule. About 0 are common, 0 are distinctive, and 1 is very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈0

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Use ++ (strongly supports), + (supports), o (neutral), - (hinders), -- (strongly hinders).

    line 76

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

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 PointApproach AApproach BApproach C
CommunicationSync RESTAsync messaginggRPC streaming
Data storageSingle SQL DBEvent sourcingPolyglot persistence
DeploymentMonolithMicroservicesModular monolith

3. Analyze Each Approach Against Scenarios

For every (approach, scenario) pair, assess impact:

ScenarioApproach AApproach BApproach 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.

IDDescriptionAffected ScenariosSeverity
R1Single DB = SPOF for all servicesAvailability scenariosHIGH
R2Async retry storm under failureThroughput, availabilityMEDIUM
NR1Circuit breakers on all external callsAvailability—
NR2Schema versioning from day oneModifiability—

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

StepOutputKey Question
Utility treePrioritized scenarios"What matters and how much?"
Approach mapCandidate table"What are our options?"
Impact analysisScenario × approach matrix"How does each option affect each concern?"
Sensitivity/tradeoffS and T point catalog"Where are the tensions?"
Risk catalogRisk/non-risk table"What could go wrong?"
Decision matrixWeighted scores"Which approach wins given our priorities?"
RecommendationDecision + caveats"What do we accept and what do we watch?"

Common Mistakes

MistakeFix
Skipping utility tree — jumping to solutionsQuality scenarios must exist before evaluating approaches
Equal weights on everythingForce ranking — if everything matters equally, nothing does
Missing tradeoff pointsEvery ++ paired with a -- elsewhere is a tradeoff — find them
Scoring without scenariosScores must trace to specific quality attribute scenarios
Ignoring sensitivity pointsThese are where small implementation choices swing outcomes
Presenting matrix without recommendationBe opinionated — state which approach and why
Forgetting reversal conditionsAlways state when the recommendation would change

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.