Software requirements specification: structure and checklist
A practical guide to what goes into a specification for a website, platform or mobile app, and how to phrase requirements so they can actually be accepted. Useful for anyone preparing a project for a vendor estimate and contract.
W2W editorial teamWin to WinIn short
- PMI research found that 47% of unsuccessful projects missed their goals because of inaccurate requirements management.
- A NASA study shows that fixing a requirements error during integration and test costs 21–78 times more than during requirements, and 29 to over 1,500 times more in operations.
- A working specification has 12 key sections: goal, current problems, components, roles, functional and non-functional requirements, security, integrations, client inputs, stages, acceptance and out-of-scope work.
- Every functional requirement needs an ID and an acceptance criterion — a check that shows unambiguously whether it is done.
- A brief is for the first estimate, a specification is for the contract and acceptance; Win to Win publishes templates of both on its Documents page.
Why a software requirements specification matters
A software requirements specification (SRS), often called a statement of work or terms of reference, records exactly what the vendor builds and how you will verify it. Without one, each side understands the scope differently, and the dispute surfaces at acceptance — when fixing things costs the most.
The data backs this up. PMI's Pulse of the Profession research found that 47% of unsuccessful projects missed their goals because of inaccurate requirements management. NASA engineers measured how the cost of a requirements error grows over a project: if fixing it during requirements costs 1 unit, the same fix costs 3–8 units in design, 21–78 units in integration and test, and 29 to more than 1,500 units in operations.
A good specification does three jobs:
- it is the basis for the estimate — the vendor prices a list of requirements, not a general idea;
- it sets the acceptance rules — every feature has a criterion that shows whether it is done;
- it separates scope from wishes — anything outside the document is handled as a change request.
Brief, specification and contract: what is the difference
A brief is a questionnaire for the first estimate, the specification is a detailed description of the system, and the contract is the legal frame the specification is attached to. Each has a different author and timing.
| Document | Who prepares it | What it contains | When you need it |
|---|---|---|---|
| Brief | Client | Goal, users, features, integrations, timing, budget | Before the first estimate |
| Specification | Vendor's analyst together with the client | Roles, requirements with acceptance criteria, integrations, stages | Before signing or during the first stage |
| Contract | Both parties | Stages, acceptance procedure, support, code ownership | At project start |
Win to Win follows this order in its own templates: a three-page development brief (in English and Russian) for a quick estimate, and a specification template drafted as Annex 1 to the services contract. In the W2W template, if the specification and the contract conflict, the contract prevails.
The 12 sections every specification needs
A working specification answers why, for whom, what exactly, connected to what, when, and how it is accepted. The structure below follows the W2W template, which has 15 sections in total including terms, exclusions and signatures:
- General information — system name and a measurable goal: not "speed up work" but "cut request processing from 2 hours to 15 minutes".
- Current state and problems — how the process runs today, which spreadsheets and tools are used, where time is lost.
- System components — web portal, admin panel, mobile app, integrations.
- User roles and permissions — who can do what, and what they cannot do.
- Functional requirements — a numbered list (FR-1.1, FR-1.2…) with an acceptance criterion for each item.
- Non-functional requirements — speed, supported browsers and OS versions, interface languages, backups.
- Security and hosting — where the server sits, how access is granted, whether actions are logged.
- Integrations — which systems, which data, which direction, and who provides access.
- Client inputs — credentials, content, reference data, with deadlines and owners.
- Stages, timeline and deliverables — what is handed over after each stage.
- Acceptance procedure — where and on what test data results are checked.
- Out of scope — what is explicitly not included.
Large government and enterprise systems in CIS countries often follow the interstate standard GOST 34.602-2020 on specifications for automated systems, which took effect on 1 January 2022 and replaced the 1989 version. For a commercial web platform or mobile app that level of detail is usually more than you need.
How to write requirements you can actually accept
A requirement is good when anyone can say "done" or "not done" without debate. That means every item carries an acceptance criterion — a concrete check, not a judgement like "user-friendly" or "fast".
The international standard ISO/IEC/IEEE 29148 lists nine characteristics of a well-formed requirement: necessary, appropriate, unambiguous, complete, singular, feasible, verifiable, correct and conforming. In practice, three checks catch most problems:
- one function per item — "users log in and can reset their password" is two functions; split them or accept them together on purpose;
- no vague adjectives — instead of "fast loading", write "a page opens in under 2 seconds with 100 concurrent users";
- a testable criterion — "a blocked user cannot log in" takes a minute to verify.
| Weak | Strong |
|---|---|
| Convenient admin panel for managing users | FR-1.2. An admin creates users, assigns roles and blocks access. Criterion: a blocked user cannot log in; permissions match the roles table |
| Integration with the ERP | Warehouse stock is pulled from the ERP into the system every hour via API; the client provides ERP access |
Non-functional requirements people forget
Non-functional requirements describe how the system works rather than what it does: speed, compatibility, reliability and security. They are the ones most often skipped — until the app fails on older phones or nobody set up backups.
At minimum, write down:
- performance — page load time at a given number of concurrent users;
- compatibility — browsers (for example current Chrome, Safari, Edge and Firefox), minimum screen width for responsive layouts (360 px in the W2W template), minimum iOS and Android versions;
- interface languages — they drive the volume of copy and testing;
- design — whose brand guidelines apply and how many rounds of mockup approval are included;
- reliability — backup frequency (at least daily in the W2W template) and retention period;
- security — personal accounts for server access, an admin action log, HTTPS.
If the system processes personal data, state the data storage requirements separately and check them against the laws of each country where you operate before development starts.
Common specification mistakes
Most mistakes are not about technology but about something missing from the document. Check yours against this list:
- no measurable goal — nobody can tell later whether the project succeeded;
- roles not described — permissions surface during testing and break the logic;
- integrations named but not specified — no one knows who grants access to the external system or which data flows where;
- client obligations left out — content and credentials arrive late and the timeline slips; the W2W template states that delays in client inputs shift deadlines proportionally;
- no out-of-scope section — content population, branding, licences and servers are assumed to be included;
- a solution instead of a problem — the client specifies a button rather than the user's need, leaving no room for a simpler option.
Specification checklist before you sign
Run through these 10 questions before approving a specification. Any question the document cannot answer is a risk.
- Is the system goal written with a number?
- Are all modules and platforms listed?
- Is there a roles table with permissions and limits?
- Does every functional requirement have an ID and an acceptance criterion?
- Are speed, browsers, iOS and Android versions and languages specified?
- Is hosting defined, along with backup frequency?
- For each integration, are the data, direction, method and access owner clear?
- Is there a list of client inputs with deadlines and owners?
- Is the work split into stages with a clear deliverable for each?
- Is there an out-of-scope section?
A specification does not have to be final before the first line of code. In an agile setup it is refined during analysis and design, and the pricing model should match how certain the scope is — see fixed price vs time and materials.
Where to start
Start with a brief: describe the goal, users, must-have launch features and integrations. It takes under an hour and gives a vendor enough to produce a first estimate.
Then:
- download the brief and specification templates — the same forms W2W uses with its clients (PDF to read, DOCX to fill in; the specification template is in Russian);
- book a 30-minute call — after it, W2W prepares a commercial proposal within 2–3 days;
- see how the W2W process works: the specification and architecture are approved during the design stage, before development begins.
Questions and answers
What should a software requirements specification include?
A measurable goal, system components, user roles and permissions, functional requirements with acceptance criteria, non-functional requirements, integrations, stages, the acceptance procedure and a list of out-of-scope work.
Who writes the specification, the client or the developer?
Usually the client fills in a brief and the vendor's analyst writes the detailed specification together with the client. The client owns goals and business rules; the vendor makes the requirements complete and testable.
What is the difference between a project brief and a specification?
A brief is a short questionnaire for a first estimate of timeline and budget. A specification is a detailed document attached to the contract and used to accept the work.
What makes a requirement testable?
It describes one function, avoids vague words like fast or convenient, and has an acceptance criterion — for example, a page opens in under 2 seconds with 100 concurrent users.
Where can I download a specification template?
Win to Win publishes its specification, brief, contract, acceptance act and NDA templates at w2w.uz/en/documents/ in PDF and DOCX.
Sources
- PMI — Requirements Management: A Core Competency for Project and Program Success
- NASA NTRS — Error Cost Escalation Through the Project Life Cycle
- arXiv — Leveraging LLMs for the Quality Assurance of Software Requirements (ISO/IEC/IEEE 29148 requirement characteristics)
- ComNews — Overview of changes in GOST 34.602-2020 (in Russian)
Shall we discuss your task?
Tell us which process you want to automate — in 30 minutes we will show how to do it and what it costs.
Related reading
All articlesIT outsourcing8 min
How much does a mobile app cost in 2026: what drives the price
What makes up mobile app development cost in 2026: stages, roles, platforms, backend, store fees ($99/year Apple, $25 Google Play) and post-launch support.
ReadIT outsourcing4 min
IT outsourcing in Uzbekistan: why US and European companies move development to Tashkent
$10–30 hourly rates, the IT Park tax regime, a UTC+5 time zone and a vendor checklist: why Uzbekistan is now a serious IT outsourcing destination.
ReadIT outsourcing3 min
Fixed price or time & materials: how to choose the model for your project
When a fixed price pays off, when time & materials is better, and why a hybrid — fixed price for the prototype, T&M for growth — is often the fairest option.
Read