标准 SRS(Software Requirement Specification),兼顾甲方业务、产品、开发、测试、运维,分为文档概述、总体描述、具体需求、附录四大块,可直接拿来做模板目录。
1. 文档引言 / 概述
1.1 文档目的:编写这份需求文档要解决什么,给谁看(开发、测试、项目经理、客户)
1.2 项目背景:项目来源、业务痛点、建设目标、为什么要做这个系统
1.3 范围
在范围:系统包含哪些模块、能力
不在范围:明确哪些功能本期不做(避免需求蔓延)
1.4 读者对象:项目经理、开发、测试、运维、业务方
1.5 参考文档:业务调研报告、合同、原型图、接口文档、行业规范、国标等
1.6 术语、缩略词:业务名词、技术缩写,避免各方理解歧义

2. 总体描述(业务大框架)
2.1 产品愿景与业务目标
业务要达成的效果、量化目标,例如:实现用户线上审批,减少纸质单据 80%。
2.2 用户特征与角色
角色列表:普通用户、管理员、运营、审核人、外部对接系统
每个角色:职责、使用场景、计算机操作能力
2.3 运行环境
服务端:操作系统、数据库、中间件、信创适配要求、部署方式
客户端:浏览器版本、小程序、APP、兼容版本
第三方依赖:对接哪些外部系统、短信、OCR、文件存储等
2.4 约束条件(非常重要)
业务约束:法规、等保、数据合规、保密要求
技术约束:必须使用指定技术栈、国产化适配
时间约束:交付周期
成本约束
安全约束:权限、数据脱敏、日志留存
2.5 假设与依赖
系统正常运行的前提条件,例如:依赖第三方接口稳定;客户提供基础数据。
3. 具体需求(SRS 核心)
3.1 功能需求 FR
描述系统要做什么,不用写怎么实现。推荐用【模块‑子模块‑功能点】,每条需求编号唯一。
每条功能需求建议包含:
需求 ID、简要描述
输入:用户操作 / 入参
处理逻辑:业务规则
输出:页面展示、返回数据、提示、生成文件
前置条件、后置条件
异常场景(失败、校验不通过如何处理)
示例:FR‑001 用户登录 前置:用户已注册账号;输入账号密码;校验账号密码;成功跳转首页;失败返回错误提示。
可以搭配原型图、流程图、业务流程图。
3.2 非功能需求 NFR(很多文档容易漏掉)
性能需求 并发用户数、TPS、响应时间、大数据查询耗时、导出文件耗时;高峰期处理能力。
安全需求 身份认证、权限控制(RBAC)、密码策略、防 SQL 注入、XSS;操作日志审计;数据加密、脱敏;等保要求。
可用性需求 系统可用率(如 99.95%);故障恢复 RTO/RPO;页面容错;友好错误提示。
兼容性需求 浏览器、操作系统、移动端、信创环境兼容。
可维护性、可扩展性 日志输出规范;支持后续扩展新接口;配置化能力。
易用性 操作步骤、提示文案;业务人员学习成本。
3.3 接口需求
内部接口:系统模块之间调用
外部接口:和第三方系统对接(输入输出参数、协议、频率、鉴权、错误码)
数据接口:数据导入导出、同步规则
3.4 数据需求
核心实体、关键数据项;数据格式;数据保留周期;备份策略;数据迁移规则。
4. 其他附属内容
4.1 业务场景说明
重要业务流程,使用 UML 活动图、流程图描述。
4.2 界面需求
引用原型地址,重要页面说明交互规则,不必把原型截图全部粘贴。
4.3 测试要点(可选,方便测试编写用例)
简要说明每条需求的验证点。
5. 附录
附录 A:待确定问题清单(TBD,暂时没有定下来的需求)
附录 B:变更记录:版本号、日期、修改人、修改内容
附录 C:签字确认:业务方、产品、项目经理评审确认

精简版(小项目快速写 SRS,不用写全套国标)
项目简介、目标、范围(做什么,不做什么)
用户角色
业务流程图
模块功能清单(每条功能:做什么,输入输出,异常)
非功能需求:性能、安全、兼容
对接外部系统与接口说明
约束、待确认问题
版本变更记录
✨ 写 SRS 避坑要点
不要写技术实现(不要写 “使用 SpringBoot 实现登录”,需求只写业务)
每条需求要可测试,避免模糊描述:“系统要跑得快”❌;“普通查询响应≤200ms”✅
明确不在本版本范围,防止后期不断加需求
记录 TBD 待确认项,避免口头需求
本文原创作者:易君召,详见:https://www.yijunzhao.cn/authors/yijunzhao,转载请注明出处。
原文链接
欢迎访问 小易撩挨踢