SayCraft

← Blog

Software Requirements Specification Template + Example

By SayCraft Team · 2026-08-17 · 12 min read

A software requirements specification (SRS) should turn a product idea into observable system behavior. For a small app, that means recording users, scope, workflows, data, failure states, quality constraints, acceptance evidence, and unresolved decisions in one reviewable document. Use it when several people need to agree what will be built or when a quote, test plan, or handoff needs a stable boundary. It complements a product brief and user stories rather than replacing them. Copy the template below, delete irrelevant sections, and keep unknowns visible instead of inventing certainty.

Copyable SRS template

# Software Requirements Specification

## 1. Purpose and decision
- Problem this product addresses:
- Decision this specification supports:

## 2. Scope
- In scope:
- Out of scope:

## 3. Users and roles
- Role:
- Goal:
- Permissions:

## 4. Assumptions and constraints
- Confirmed fact:
- Assumption to validate:
- Technical, legal, budget, or time constraint:

## 5. Functional requirements
- FR-01: When [condition], the system shall [observable behavior].
- Failure/recovery behavior:

## 6. Quality requirements
- Context:
- Measure:
- Target or threshold to confirm:

## 7. Data and integrations
- Data created/read/updated/deleted:
- Retention or privacy owner:
- External service and failure behavior:

## 8. States and errors
- Loading:
- Empty:
- Validation error:
- Permission error:
- Recovery:

## 9. Acceptance evidence
- Scenario:
- Expected result:
- Evidence owner:

## 10. Open questions and change log
- Question / owner / due date:
- Change / reason / date:

Worked example: client approval portal

Scope: a freelance designer uploads a draft, a named client reviews it, and the client approves or requests changes. Public file sharing, invoicing, and team analytics are out of scope for the first version.

IDRequirementAcceptance evidence
FR-01When a designer uploads a PDF under 20 MB, the system shall create a draft with an Uploading state and then show Ready or Failed.A supported file reaches Ready; an interrupted upload shows Failed and a retry action.
FR-02Only invited client accounts may approve or request changes on the linked project.An invited client succeeds; an unrelated signed-in user receives a permission error without seeing the draft.
FR-03A change request shall preserve the comment and return the draft to Changes requested.Reloading the project shows the saved comment and state.
QR-01On the supported mobile viewport, the review action and its label remain usable at 200% text zoom.Manual accessibility review records the viewport, zoom setting, result, and evidence.

Vague requirement versus testable requirement

VagueMore testable
The portal should be fast.For the agreed test dataset and environment, the project list target is to display within two seconds; the owner must confirm the target before acceptance.
Clients can approve designs.An invited client can approve the current draft once; the result records actor, draft version, and time, then disables duplicate approval.
Handle upload errors gracefully.If an upload fails, retain the selected file name, explain that the upload did not complete, and provide Retry and Cancel actions.

Map database entities before adding screens

For every persistent object, record its owner, identifier, relationships, lifecycle, and deletion rule before designing screens. A client-approval portal might need Workspace, Project, Membership, Draft, Comment, and Decision. The screen is not the data model: one project can have many drafts, one draft can have many comments, and each decision must point to the exact draft version it approves.

EntityKey relationshipOwnership or lifecycle question
WorkspaceHas many memberships and projectsWho can transfer or delete it, and what happens to child records?
ProjectBelongs to one workspace; has many draftsCan a user from another workspace ever read its identifier or metadata?
DraftBelongs to one project; has many comments and decisionsIs a new upload a new version or a replacement, and which version remains authoritative?
DecisionBelongs to one draft and one actorCan it be changed, revoked, or duplicated, and what evidence must remain?

Review checklist

  • Purpose, scope, exclusions, assumptions, and the decision this SRS supports are explicit.
  • Each user role has bounded permissions and at least one complete normal, failure, and recovery path.
  • Data ownership, retention questions, integrations, and external-service failure behavior are visible.
  • Quality requirements name a context and measure; unsupported thresholds remain marked for confirmation.
  • Acceptance evidence, evidence owner, open questions, and important changes can be traced.

SRS, PRD, and user stories

A PRD explains the product outcome, evidence, scope, and tradeoffs. An SRS makes the required system behavior and quality conditions explicit. User stories package slices of user value for delivery. A small team may keep them in one document as long as each responsibility remains clear.

Before writing the document, use these requirements gathering questions. Then separate functional and nonfunctional requirements and map important risks to test evidence.

Before specifying behavior, separate business requirements from functional requirements and define the app’s user roles. If the agreed scope is going to a client, carry its assumptions into a software proposal with a worked example.

Sources used for this guide

Turn the document into something testable

Use the SRS to scope one complete workflow. SayCraft can turn that bounded workflow into a live preview for review; the preview does not by itself prove security, reliability, or production readiness.

Build a free live preview →

Frequently asked questions

What is a software requirements specification?

An SRS records what a software system must do, the conditions under which it must do it, important quality constraints, and the evidence that will be used to accept it.

Is this an ISO-compliant SRS template?

No. It is a practical template for a small app. ISO/IEC/IEEE 29148 is a requirements-engineering standard, but using this page does not establish compliance with that standard.