Software & TechnicalFree tool
Solution Architecture Document From Specs
A solution architecture document built from your specs, diagrams and infrastructure files, with requirements traced to components and gaps listed first.
Free to start · Opens in your River workspace, ready to edit and share
How to write a solution architecture document
A solution architecture document (SAD) explains how a system meets an agreed set of requirements. It's written for the people who must accept it: a client's review board, an auditor or the team taking it over. A good one sets the scope, ranks the few quality goals the design serves, and states each requirement so it can be tested. It shows the system in context and the parts inside it, records decisions with their reasons, and traces every requirement to the component that meets it.
The rule that matters most: write it to be checked, not just read. Every claim should point to its evidence, and every requirement to the part of the system that delivers it.
What goes in a solution architecture document
Start with who has to accept it, because that reader sets the depth. A review board wants to see each requirement met, an auditor wants evidence behind every security claim, and a new team wants to know what runs where. Then write the scope as two lists: what the solution covers and what it leaves out.
Whatever template you start from, check that it covers the parts below. If you're proposing a change rather than documenting a solution, an RFC and design doc template suits the job better.
The parts of a solution architecture document
| Part | What it holds | Example |
|---|---|---|
| Scope and context | What's in and out, the users, and the outside systems | "Billing stays in the client's ERP." |
| Quality goals | Three to five qualities the design serves, ranked | 1. Availability 2. Response time 3. Ease of change |
| Requirements | What the system must do, plus each quality as a testable scenario | "A driver's position reaches the map within 5 seconds." |
| Views | A context view and a container view, every line labeled | "Driver app sends positions to dispatch API (JSON over HTTPS)" |
| Decisions | Each significant choice, its reasons and its costs | "Queue position updates instead of writing them straight to the database." |
| Security | Who can reach what, how data is protected, the main threats | "Staff sign in through the client's identity provider." |
| Constraints, assumptions, risks | What was imposed, what you're betting on, what could go wrong | "Data stays in the EU" (client contract) |
| Traceability | Each requirement, the component meeting it, and the proof | "R-12: position service, June 3 load test" |
Start from what already exists
Write from the evidence, not from memory. Before you draft anything, collect what already exists and note where each piece came from.
Collect the artifacts
Diagrams, API specs such as OpenAPI files, infrastructure code, requirements, and the contracts or emails that set constraints.
Date each one
A diagram from two years ago is history, not fact. Record each file's date and owner.
Check drawings against config
Infrastructure and deployment files are usually closer to what runs than a diagram drawn once. Compare them.
Log every disagreement
Where two artifacts conflict, keep both versions with their sources, and say which you trust and why.
Leave the gaps visible
If no artifact states a throughput figure or a protocol, don't estimate one. Make it an open question and name who can answer it.
Rank the quality goals, then make them testable
Quality goals are what the design is built for, such as availability, security or ease of change. arc42, a free architecture template from Peter Hruschka and Gernot Starke, asks for the top three (max five) quality goals1 and warns not to confuse them with project goals. Rank yours, and say which one gives way when two conflict.
The Architecture Tradeoff Analysis Method (ATAM), described in a 2000 report from Carnegie Mellon's Software Engineering Institute, shows how. It refines each quality into specific scenarios, then rates each one twice: for importance to the system's success and for the risk of achieving it2. The authors prefer High, Medium or Low, because they find stakeholders can't reliably make finer distinctions.
Then make each goal testable, so anyone can tell whether it's met. A line like "The architecture shall be modifiable and robust" fails, the same report says, because it has no operational meaning and can't be refuted. arc42 asks instead for scenarios that are specific and measurable3. Usage scenarios describe how the system reacts to a stimulus. Change scenarios describe a modification and measure the effort or time it takes.
Before: "The platform must be scalable and fast."
After: "During the morning peak, 4,000 driver phones each send a position every 30 seconds. Within 5 seconds, 99% of positions appear on the dispatcher's map, as measured by the monitoring service."
- Stimulus and conditions. Who sends what, how often, and when.
- Response. What the system does about it, in words the client can read.
- Measure. A number someone can check, and where it is measured.
Draw two views at the right level
Draw the context view first. It shows your system as one box, surrounded by its users and the outside systems it talks to, with no technology, so a client can follow it. The container view then zooms inside that box.
Pitch the container view at the right level. In Simon Brown's C4 model, a container isn't a Docker container. It's an application or a data store that needs to be running for the system to work4, such as a web app or a database. Leave clusters, load balancers and failover to a separate deployment view.
Label every line. C4's notation guide asks for labels that match each relationship's direction and intent5, ideally not a single word like "Uses". Lines between containers should also name the technology or protocol. "Sends position updates (JSON over HTTPS)" tells a reviewer something. A bare arrow doesn't.
Keep decisions, constraints and risks apart
Record each significant decision with its reasons. Michael Nygard's 2011 essay on architecture decision records6 warns that a newcomer who doesn't know why a decision was made can only accept it blindly or change it blindly. His record has five parts (title, context, decision, status and consequences), and it lists every consequence, not just the good ones.
An architecture decision record template keeps your decisions in one register. Sort everything else into three lists, because each needs a different answer:
- Constraints are imposed. Name who imposed each one: "Keep the existing Postgres until the contract renews" (client IT team).
- Assumptions are bets. Name who can confirm each one: "Under 5,000 devices in year one" (client's operations lead).
- Risks are what could go wrong, and what it would cost: "If the map provider throttles requests, positions arrive late."
Give security its own section: who can reach what, how data is protected, and the main threats. If the review turns on security, work through a STRIDE threat model first and summarize it here.
Trace every requirement both ways
Traceability lets a reviewer check the design instead of nodding along. NASA's Systems Engineering Handbook calls for bidirectional traceability between customer requirements, design documents and test plans7. It says a requirement with no parent, unless the team derived it and had it accepted, points to a flawed trace or to "gold plating" that should be eliminated.
Run your map in both directions. Down: each requirement, the component that meets it and the artifact that proves it. Up: each component and the requirement it exists for. A requirement with no component is a gap, so list gaps first. A component with no requirement is scope nobody asked for, or a decision nobody wrote down.
Before the review
- Three to five quality goals, ranked, with the tiebreak stated
- Every quality written as a scenario with a measure
- A context view and a container view, every line labeled
- Constraints, assumptions and risks in separate lists
- Every requirement traced to a component and its proof
- Gaps and open questions up front, each with an owner
Starting from a folder of specs and old diagrams? The tool at the top of this page reads them, builds the two-way map and drafts the document, with every claim tied to the file it came from.
How it works
Start with what you already have: diagrams, API specs, infrastructure files, requirements and the emails that set the constraints. River reads every file and matches each requirement to the component that meets it. Then it writes the architecture document in your workspace, with a traceability sheet beside it and the gaps listed first.
It never invents a component, a figure or a requirement. Every claim names the file it came from, and conclusions are marked as inferred. Anything your files can't settle becomes an open question, naming the person or document that could answer it.
Add your artifacts
Paste or attach diagrams, API specs, infrastructure files and constraints, and choose who must accept it.
River traces the requirements
Each requirement is matched to the component that meets it, and each component to the requirement behind it.
Get the document
Ranked quality goals, testable scenarios, decisions, risks, two views and a traceability sheet, all in your workspace.
Close the gaps
Answer the open questions it lists, ask for a one-page review summary, and share the document.
What you get
- Scope, context and three to five ranked quality goals, with what gives way when two conflict
- Each quality written as a scenario with a measure, and vague ones flagged with the measure they lack
- A context view and a container view, described with titles, scope and a label on every relationship
- Design decisions with their reasons, and constraints, assumptions and risks kept in three separate lists
- A traceability sheet: each requirement, the component meeting it and its proof, then the orphan components
- Unmet requirements and contradictions between your files shown first, with open questions naming who can settle each
Common questions
What is a solution architecture document?
A solution architecture document describes how one system or project meets its requirements, for the people who must approve or inherit it. It usually covers scope and context, quality goals, requirements, the main views of the system, design decisions, security, constraints and risks. The strongest ones also map each requirement to the component that meets it, so a reviewer can check the design.
Is there a free solution architecture document template?
Yes. arc42, created by Peter Hruschka and Gernot Starke, is free and splits the job into 12 sections, from goals and constraints to quality requirements, risks and a glossary. The parts table in this guide is a shorter outline for client reviews. If you already have specs and diagrams, the tool at the top of this page drafts the document from them instead of a blank page.
Is a solution architecture document the same as a design doc?
Not quite, though they overlap. A design doc usually proposes a change and weighs the alternatives before work starts. A solution architecture document describes the chosen solution so that someone can accept it, with each requirement traced to a component. Names vary between organizations, so if your client has a template of their own, follow it.
How do I write a solution architecture document with River?
Paste or attach what you have in the box at the top of this page: diagrams, API specs, infrastructure files, requirements and the constraints. Choose who has to accept it. River traces each requirement to the component that meets it and lists the gaps first. Then it writes the document and a traceability sheet into your free River workspace, where you can edit and share them.
What if my diagrams and specs disagree?
River shows both versions, each with the file it came from, and says which it would trust and why. It never quietly picks one. A disagreement is often the most useful finding, such as a component someone added without updating the diagram, so each one is listed where a reviewer will see it.
What if the requirements were never written down?
River still maps what your files show, but it never invents a requirement. Components that no stated requirement asks for are listed as undocumented scope or unrecorded decisions. The missing requirements become open questions, each naming the person or document that could settle it. If nothing you send describes the system at all, it asks one bundled question first.
Is the solution architecture document tool free?
Yes, it is free to start. Your architecture document and traceability sheet open in a River workspace, where you can edit them, share them or ask River to change them. Paid plans add more AI use and access to the most advanced models.
Sources
arc42. “1. Introduction and Goals.” docs.arc42.org (opens in a new tab)
Software Engineering Institute. “ATAM: Method for Architecture Evaluation.” sei.cmu.edu (opens in a new tab)
arc42. “10. Quality Requirements.” docs.arc42.org (opens in a new tab)
C4 model. “Container.” c4model.com (opens in a new tab)
C4 model. “Notation.” c4model.com (opens in a new tab)
Cognitect. “Documenting Architecture Decisions.” cognitect.com (opens in a new tab)
NASA. “6.2 Requirements Management.” nasa.gov (opens in a new tab)
Built by
Chandler Supple
Co-founder & CEO, River
Chandler has spent the last six years working in AI, building tools for millions of users and Fortune 100 companies. In 2025, he co-founded River to build a new kind of operating system for AI agents.