1. SRS概述:什么是SRS、SRS在项目中的价值、SRS与用户故事的区别
1.1 什么是SRS?说白了就是一份“契约”
SRS,全称是 Software Requirements Specification,中文叫《软件需求规格说明书》。
我个人习惯把它理解成一份“契约”。
你想想看,一个项目里,产品经理、开发、测试、客户,大家脑子里的想法肯定不一样。产品经理觉得“做个登录功能很简单”,开发觉得“登录要支持OAuth2.0”,客户觉得“我要能微信扫码登录”。
如果没有一份白纸黑字的东西,最后肯定吵翻天。
SRS就是干这个的。它把所有的功能、性能、约束条件,一条一条写清楚。谁也别含糊。
我在项目中遇到过最典型的情况:客户口头说“报表要快”,结果上线后嫌加载慢。我翻出SRS,上面写着“报表加载时间不超过3秒”,客户没话说了。你看,这就是SRS的价值——它是个保护伞。
核心定义:SRS是软件需求的完整、精确、无歧义的描述。它定义了系统“做什么”,而不是“怎么做”。
1.2 SRS在项目中的价值——不只是文档
很多人觉得写SRS就是走形式,浪费时间。我以前也这么想。
直到有一次,一个项目做了三个月,开发快写完了,客户突然说“我要的不是这个功能”。我们翻出当初的聊天记录,发现需求理解完全跑偏了。嗯,那次返工的成本,够写十份SRS了。
SRS的价值,我总结为三点:
- 沟通的桥梁:让客户、产品、开发、测试说同一种语言。避免“我以为你知道”。
- 项目的基线:所有设计、编码、测试、验收,都以SRS为准。变更需求?可以,先改SRS,再谈工期和成本。
- 历史的存档:项目做完后,SRS就是最宝贵的知识资产。新人接手、系统维护,全靠它。
我的小技巧:写SRS时,我会在每一条需求后面加一个“验收标准”。比如“用户登录后跳转到首页”,验收标准就是“输入正确账号密码,点击登录,3秒内跳转首页”。这样测试人员拿到就能直接写用例。
1.3 SRS与用户故事的区别——一个是蓝图,一个是便签
这个问题经常有人问。我直接说结论:SRS是完整的蓝图,用户故事是敏捷的便签。
用户故事(User Story)是敏捷开发里的概念。格式很简单:
作为<角色>
我想要<功能>
以便<价值>
比如:
作为普通用户
我想要用手机号注册
以便快速体验产品
你看,用户故事很轻量,几句话就说完了。它强调的是“沟通”,而不是“记录”。团队拿到用户故事后,会面对面讨论细节。
但SRS不一样。SRS要把所有细节写死。比如注册功能,SRS里会写:
- 手机号格式:11位数字,以1开头
- 验证码有效期:5分钟
- 密码规则:8-16位,包含字母和数字
- 错误提示:手机号已注册时,显示“该手机号已注册”
我做个对比表格,你一看就明白:
| 对比维度 | SRS | 用户故事 |
|---|---|---|
| 详细程度 | 非常详细,每条需求精确到细节 | 很简略,只描述核心意图 |
| 使用场景 | 传统瀑布模型、需要严格合同的项目 | 敏捷开发、快速迭代的项目 |
| 变更成本 | 高,需要走变更流程 | 低,随时可以调整 |
| 文档长度 | 几十页到几百页 | 几句话到几段话 |
| 主要读者 | 客户、项目经理、开发、测试、运维 | 开发团队、产品经理 |
避坑指南:我曾经在一个项目里,团队坚持用用户故事,结果客户不认账。因为用户故事太模糊,客户说“我没说过要支持微信登录”,团队说“你当时说‘方便用户登录’”。最后扯皮了两个月。所以,如果项目涉及合同、外包、或者客户比较强势,老老实实写SRS。
1.4 什么时候用SRS,什么时候用用户故事?
这个问题没有标准答案。我个人的经验是:
- 项目规模大、周期长、客户明确:用SRS。比如银行系统、医疗系统、政府项目。这些项目容不得半点含糊。
- 项目小、需求变化快、团队内部使用:用用户故事。比如创业公司的MVP、内部工具。
- 折中方案:先用用户故事快速沟通,再整理成SRS存档。我很多项目就是这么干的。
说白了,工具是死的,人是活的。别被方法论框死。
1.5 本章小结
这一章我们聊了:
- SRS是什么——一份精确的“契约”
- SRS的价值——沟通、基线、存档
- SRS与用户故事的区别——蓝图 vs 便签
下一章,我会带你手把手拆解SRS的标准结构。嗯,到时候你会看到,一份好的SRS长什么样。
课后思考:你现在手头的项目,适合用SRS还是用户故事?如果让你选,你会怎么平衡“详细”和“灵活”?