一、文档质量决定返工成本
需求文档里写"系统要快",开发不知道做到多快算完,测试不知道怎么验证。临沂手机APP开发公司在评审移动APP需求时,会把每条描述改写成可验证的陈述:例如查询在三百毫秒内返回、并发不低于五百。一条好需求必须完整、无歧义、可验证、可追溯,后续设计与测试才有共同依据。
SRS的读者最终是未来的同事。半年后接手项目的人,没有机会去问当初的客户,只能靠文档理解系统为什么长这样。因此写作时应当把"为什么这样设计需求"的理由也记录下来,例如某个字段为什么这样定义,避免后来者把当时的权衡当成错误改掉。
中小企业写SRS常见的极端是两个:要么完全不写,全靠微信群口头传达,三个月后没人记得当初说过什么;要么追求大而全,照搬标准模板写了上百页,没人看得完。务实的做法是把篇幅控制在真正被各方会读、会用的程度,核心需求逐条写清,背景描述点到为止。
二、一条合格需求的写法
从合作双方的关系看,SRS同时也是项目合同的技术附件。开发方按文档交付,甲方按文档验收,文档越清晰,扯皮空间越小。企业在与软件服务商签约前,应当把需求文档当作最重要的谈判成果来对待,而不是把它当成走流程的附属材料。
软件需求规格说明文档,俗称SRS,是把调研结论固化下来的正式产物。它要回答三件事:系统必须做什么、必须做到什么程度、做到什么标准算验收通过。很多团队把SRS写成一张功能点列表,缺少业务背景与验收条件,开发照着做、测试照着猜,最后各说各话,这正是文档失去意义的开始。
三、常见编写错误
一条高质量的需求描述应当满足几个特征:完整、无歧义、可验证、可追溯。例如"系统要快"不是合格需求,"在五百并发用户下,页面查询响应时间不超过两秒"才是。每条需求最好编号,并注明来源角色与业务价值,后续设计、测试、维护都能顺着编号回溯到它当初为什么存在。
需求文档应当分层组织。业务需求层回答企业为什么做这个系统,供高层看;用户需求层描述各类角色要完成的任务,常用用户故事或用例表达,供产品与业务人员看;系统需求层落到可实现、可测试的具体陈述,供开发与测试看。把三层混在一段文字里,是造成沟通混乱的最常见原因。
给每条需求编号并注明来源角色,维护时才能顺着编号回溯当初为什么存在。
非功能需求在SRS中最容易被漏掉。性能、并发量、数据保留期限、浏览器兼容范围、权限粒度、安全合规要求,这些约束往往比功能本身更能决定架构走向。一份只写功能不写约束的需求文档,等于把最关键的设计自由度全部留给开发团队临场发挥,后期几乎必然推倒重来。
备注:可验证是需求描述合格与否的试金石。