Template · SRS

Software Requirements Specification Template

A fill-in SRS — context and assumptions, interfaces at field level, a data dictionary, non-functional requirements with derived numbers, acceptance criteria and a glossary.

Markdown. No sign-up, no email.

The engineering contract. Every requirement here should be verifiable, and every number should have been derived from something rather than chosen because it sounded reasonable.

Structure follows the conventional introduction / description / requirements shape; the international reference for requirements engineering is ISO/IEC/IEEE 29148.

System: _______________ Version: ____ Date: _______ Author: _______________ Engineering owner: _______________

1. Introduction#

Purpose of this document: _______________ System scope: _______________ Explicitly excluded: _______________ Intended readers: _______________

2. Overall description#

Context — what this system sits between: _______________

Users and their characteristics: _______________

Operating environment (platforms, browsers, devices, networks): _______________

Assumptions#

#AssumptionWho confirmsConfirmed
A1

Dependencies#

#Depends onOwnerRisk if unavailable
D1

The assumptions table is where a project's real risk usually sits. "We assume the upstream system provides a unique identifier" is one line, and a quarter of work when wrong.

3. Functional requirements#

IDThe system shall…Verification methodPriority
SR-001test / demo / inspect / analyse

If the verification method for any row is "inspect the code" or "the developer confirms", it will not be verified. Rewrite it.

4. External interfaces#

Complete one per integration.

Interface name / counterparty
Protocol and format
Authentication
Expected volume (average / peak)
Timeout
Retry policy
Idempotent — safe to repeat?yes / no
Error codes and meanings
Behaviour when the far end is down
Contact when it misbehaves

5. Data dictionary#

FieldTypeRange / formatMandatorySource of truthRetention

6. Non-functional requirements#

Each with a number and the condition it applies under. A figure nobody derived is worse than no figure, because it will be designed to — mark placeholders as such with a date to resolve.

RequirementDerived from
Performance___ operation at p95 under ___ concurrent users
Volume___ records today, ___ growth/year, peak ___
Availability___%, measured as ___, excluding ___
RPO (data loss tolerable)
RTO (time to recover)
Securityauthn ___ · authz model ___ · encryption ___
Auditwhat is logged, retained ___
Accessibilitystandard and level (build to WCAG 2.2 AA unless stated otherwise)
Compliance / residency

RPO and RTO shape the architecture more than anything else on this page. Fill them before design starts, not after.

7. Acceptance criteria#

Requirement IDHow acceptance is demonstratedBy whom

8. Glossary#

TermDefinition in THIS system

Most requirement disputes are vocabulary disputes. Two teams using "customer" differently will agree on every sentence and build incompatible systems.

9. Open issues#

#IssueOwnerNeeded by

10. Sign-off#

NameDate
Author
Engineering
Business owner
Security

Back to SRS