Skip to main content
Free template

Software Requirements Document Template, With a Worked Example

By Obaid Tariq, Founder & Lead Engineer · Published

Disclosure: AI Dev Planner is a software development company, and a brief written with this template is the kind we quote against. It works just as well with any other supplier. See our disclosure policy.

What this template is for

A software requirements document records what a system must do, how well it must do it, and how you will know it is finished. Its job is practical: give every development company the same picture, so their quotes can be compared, and give the team that wins a reference to build and test against.

The template below has eleven sections. Each one explains what to include and shows a short worked example. The examples all describe the same fictional project, an online booking system for a small group of physiotherapy clinics, so you can see how the sections fit together. Building a subscription product? Work through the SaaS MVP planning checklist first, then record the answers here.

1. Document control

So everyone knows which version is current, who owns it and who can approve a change.

What to include

  • Document title, version number and date
  • Owner: the one person responsible for keeping it accurate
  • Reviewers and approvers, by name and role
  • A short change log: what changed, when and why

Worked example (fictional)

Version 0.3, 2 March. Owner: Operations Manager. Approver: Managing Director. Change: added the waiting-list requirement (FR-07).

2. Background and goals

Explains the problem and what success means, so the team can make sensible trade-offs when a detail is missing.

What to include

  • The problem, in the words of the people who have it
  • Why now: what has changed, or what it is costing
  • Two or three business goals, each with how you will measure it
  • What is explicitly not a goal

Worked example (fictional)

Receptionists spend much of each morning rebooking cancelled appointments by phone, and freed-up slots often go unused. Goal: patients can cancel and rebook online. Measure: the share of cancelled slots that are rebooked without a phone call. Not a goal: replacing the clinic's practice management system.

3. Users and roles

Every screen and permission follows from this list, so it is worth getting right first.

What to include

  • Each type of user, what they are trying to do and how often
  • What each role may see and change
  • Who administers the system day to day

Worked example (fictional)

Example roles for a fictional clinic booking system
RoleNeeds toMay see
PatientBook, cancel and rebook; join a waiting listOnly their own appointments
ReceptionistManage bookings for their clinicAll appointments at their clinic
PhysiotherapistSee their own scheduleTheir own appointments
Clinic managerSet opening hours and practitioners; view reportsEverything for their clinic

4. Scope: in, out and later

The section that prevents most disputes. Anything not listed as in scope is out of scope.

What to include

  • In scope for this release
  • Out of scope, stated plainly
  • Later: wanted, but not in this release

Worked example (fictional)

In: online booking, cancellation and rebooking, a waiting list, email reminders. Out: taking payments, insurance claims, clinical notes. Later: SMS reminders, a mobile app.

5. Functional requirements

What the system must do. Write each one so a tester could check it, and give it an ID and a priority.

What to include

  • A user story: As a [role], I want [action], so that [outcome].
  • Acceptance criteria in the form Given [situation], when [action], then [result].
  • A priority (must, should, could) and an ID such as FR-07, so quotes, tests and change requests can refer to it

Worked example (fictional)

FR-07 (Must). As a patient, I want to join a waiting list for a fully booked day, so that I am offered a slot if someone cancels.

  • Given a day with no free slots, when a patient joins the waiting list, then they are added in the order they joined.
  • Given a cancellation on that day, when the slot becomes free, then the first patient on the list is emailed and has two hours to accept before it is offered to the next.
  • Given a patient accepts, when the booking is confirmed, then they are removed from every waiting list for that day.

6. Data requirements

Data decisions are the most expensive to change later, and they drive privacy, hosting and migration work.

What to include

  • The main things the system stores (patients, appointments, invoices) and how they relate
  • Which data is personal data, and whether any is special category data such as health information
  • How long each kind of data is kept, and how it is deleted
  • Existing data to migrate: where it is, its format, how much and how clean

Worked example (fictional)

Stores patients, appointments, practitioners and clinics. Health information is special category data, so the system stores only a booking reason code, never clinical notes. Appointment history is migrated from the current system's CSV export; duplicates are reviewed by reception before import.

7. Integrations

Each integration needs its own estimate. Unknowns here are the most common cause of late surprises.

What to include

  • Each external system, and whether data flows in, out or both
  • How often (real time, hourly, nightly) and who owns the other system
  • Whether a documented API exists, and who will confirm access
  • What should happen when the other system is unavailable

Worked example (fictional)

Email provider: sends confirmations and reminders. Practice management system: nightly one-way export of the next day's appointments. API access is not yet confirmed with the vendor (see open question Q-02). If the export fails, reception is alerted by email and the previous day's schedule stays in place.

8. Non-functional requirements

How well the system must work. These are easy to forget and change both the price and the architecture.

What to include

  • Performance: what must be fast, on what device and connection
  • Availability: when it must be up, and what happens during maintenance
  • Security: sign-in method, who can reach production, logging
  • Accessibility: name a standard, such as level AA of the Web Content Accessibility Guidelines (WCAG) 2.2, a W3C Recommendation (accessed 18 October 2026)
  • Devices and browsers to support
  • Hosting region, backups and how quickly the system must be restored after a failure

Worked example (fictional)

Booking pages meet WCAG 2.2 level AA and are usable within three seconds on a mid-range phone over 4G. Supported: current versions of Chrome, Safari, Edge and Firefox, on phones and desktops. Hosted in the UK. Daily backups; a restore is tested before launch.

9. Constraints, assumptions and dependencies

Writes down what everyone is taking for granted, so it can be checked rather than discovered.

What to include

  • Budget range and any fixed deadline, with the reason for it
  • Technology the system must use or must not use
  • Legal or contractual requirements
  • Assumptions the estimate depends on

Worked example (fictional)

Must be live before the new clinic opens in September. Assumption: the practice management vendor provides an export. Constraint: no patient data may be stored outside the UK.

10. Risks and open questions

An honest list of what is not known yet, each with an owner and a date to answer it by.

What to include

  • The question or risk
  • Who will answer it
  • When it must be answered, and what it affects

Worked example (fictional)

Q-02: Will the practice management vendor allow API or export access? Owner: Operations Manager. Needed by 15 March, because it affects FR-11 and the integration estimate.

11. Acceptance and sign-off

Defines how you will decide the work is finished, before the work starts.

What to include

  • Who tests, where (a staging environment) and for how long
  • What is tested: the acceptance criteria above
  • How defects are reported and what blocks sign-off
  • Who signs off

Worked example (fictional)

Two receptionists and the clinic manager test on staging for five working days against the acceptance criteria. Any failed "must" requirement blocks sign-off. The Managing Director signs off.

Copy the blank template

Select the text below and paste it into your own document. Replace each bracketed prompt, and delete any line that genuinely does not apply rather than leaving it blank.

SOFTWARE REQUIREMENTS DOCUMENT
Project: [name]            Version: [0.1]       Date: [date]
Owner: [name, role]        Approver: [name, role]

1. DOCUMENT CONTROL
   Change log: [version] [date] [what changed and why]

2. BACKGROUND AND GOALS
   Problem: [in the words of the people who have it]
   Why now: [what has changed or what it costs]
   Goals and measures: [goal] -> [how it will be measured]
   Not goals: [what this project will not try to do]

3. USERS AND ROLES
   [Role] | needs to: [...] | may see and change: [...]

4. SCOPE
   In scope: [...]
   Out of scope: [...]
   Later: [...]

5. FUNCTIONAL REQUIREMENTS
   FR-01 (Must/Should/Could)
   As a [role], I want [action], so that [outcome].
   Acceptance criteria:
   - Given [situation], when [action], then [result].

6. DATA
   Main records and how they relate: [...]
   Personal / special category data: [...]
   Retention and deletion: [...]
   Data to migrate: [source, format, volume, quality]

7. INTEGRATIONS
   [System] | direction: in/out/both | frequency: [...] | API confirmed: yes/no
   If unavailable: [...]

8. NON-FUNCTIONAL REQUIREMENTS
   Performance: [...]
   Availability: [...]
   Security: [...]
   Accessibility standard: [e.g. WCAG 2.2 level AA]
   Devices and browsers: [...]
   Hosting region, backups and recovery: [...]

9. CONSTRAINTS, ASSUMPTIONS AND DEPENDENCIES
   Budget range: [...]   Deadline and reason: [...]
   Must use / must not use: [...]
   Assumptions: [...]

10. RISKS AND OPEN QUESTIONS
   Q-01: [question] | owner: [...] | answer by: [date] | affects: [IDs]

11. ACCEPTANCE AND SIGN-OFF
   Testers: [...]   Environment: staging   Test window: [...]
   Blocks sign-off: [...]   Signed off by: [...]

How to write requirements a developer can estimate

  • One requirement per statement

    "Patients can cancel and rebook" is two requirements. Split them, so each can be estimated, built and tested on its own.

  • Describe the outcome, not the solution

    "Patients are reminded the day before" leaves the team free to suggest the best channel. "Send an SMS via provider X" fixes a choice before anyone has compared options.

  • Make it checkable

    "Fast" and "user-friendly" cannot be tested. "Usable within three seconds on a mid-range phone over 4G" can.

  • Use must, should and could consistently

    Decide what each word means at the top of the document and stick to it, so priorities survive the first budget conversation.

  • Write down what is out of scope

    Silence is read differently by every reader. An explicit out-of-scope list is the cheapest protection against disputes about the invoice.

  • Keep open questions visible

    An honest "not known yet" with an owner and a date is far more useful to an estimator than a confident guess.

After the document: getting quotes

Send the same document to every company you are considering and ask each one to list its assumptions and exclusions against your section numbers. Our guide to how to choose a software development company covers the questions to ask and the contract clauses to check, and the MVP cost calculator gives an indicative GBP range before you speak to anyone.

If a supplier will handle personal data on your behalf, plan the data processing contract alongside the requirements. The ICO says that every time a controller uses a processor to process personal data there must be a written contract (ICO, accessed 18 October 2026).

Services that usually start from a brief like this

Requirements document FAQs

What is the difference between a software requirements document, a PRD and a statement of work?

A software requirements document (SRD or SRS) describes what the system must do and how well, in enough detail to estimate, build and test it. A product requirements document (PRD) is usually written by a product team and focuses more on the user problem, goals and priorities, with less technical detail. A statement of work (SOW) is a contractual document that describes the work a supplier will deliver, the price and the timeline, and often refers to a requirements document for the detail.

How long should a software requirements document be?

As long as it needs to be for someone else to estimate and test the system, and no longer. For an MVP or a single internal tool, a few pages covering every section of this template is often enough. Larger systems with many roles, integrations or regulatory requirements need more detail, usually split by module. A short document that answers every section is more useful than a long one that skips scope, data or acceptance.

Who should write the requirements document?

The business should own it, because it records business decisions: who the users are, what is in scope and what counts as done. In practice it is often drafted by a product owner, an operations lead or a founder, then refined with the development team during discovery, who add technical detail and flag gaps. Whoever writes it, one named person should own it and approve changes.

Do agile teams still need a requirements document?

They need the decisions in it, even if not as one long document. Agile teams usually keep requirements as a prioritised backlog of user stories with acceptance criteria, which is what section 5 of this template produces. The other sections, such as scope, data, integrations and non-functional requirements, still need writing down somewhere, because they shape the architecture and the estimate before the first sprint starts.

Can I use an AI assistant to write a requirements document?

It can help you draft structure, rephrase requirements as user stories and spot missing sections, but the decisions have to come from you: who the users are, what is out of scope and what counts as done. Check every drafted requirement against how your business actually works, and do not paste confidential or personal data into a tool whose terms allow that data to be used for training.

Want a second pair of eyes on your brief?

Send it to us. We will point out the gaps that would change an estimate, whether or not you build with us.