需求清单写到“开发人员不用猜、验收人员能逐条判断通过或不通过”的程度就够了。具体标准是:每条需求都能对应一个可观察的结果,而不是一个主观评价。比如“首页要好看”无法验收,“首页首屏在常见手机宽度下不出现横向滚动条”可以验收。多人协作时,清单过粗会导致反复确认,过细会拖慢启动,判断依据是这条需求是否会影响开发排期、页面结构或验收结论。
把现有需求文档拿出来,逐条标记三类问题。第一类是只有形容词没有对象,例如“简洁”“大气”“流畅”。第二类是只有名词没有行为,例如“用户中心”“消息通知”,没写谁在什么条件下看到什么、能做什么。第三类是混入实现方案,例如“用某框架做服务端渲染”,但没写要解决的是首屏速度还是分享收录。前两类会让开发和设计各自理解,第三类会把技术选型锁死,反而增加返工。
观察时可以做一个小测试:把某条需求读给没参与前期讨论的人听,问他“做完之后你怎么判断它完成了”。如果答案依赖个人审美或口头补充,这条就需要改写。
不是所有需求都要写到同等细致。可以按影响范围分档:
判断结果很直接:如果一条需求删掉后,开发仍然知道怎么做、验收仍然有依据,它可能写多了;如果删掉后必须开会才能继续,它写少了。
一个可执行的改写方法是固定句式:在什么条件下,谁,做什么,系统给出什么可观察结果,异常时怎样。下面用假设例子说明,不是真实项目结论。
原句:“列表页要支持筛选。”改写后:“在列表页,已登录用户可以按状态筛选;筛选后列表只显示符合状态的数据;无匹配结果时显示空状态提示;筛选条件在刷新后不保留。”这样开发知道要不要做持久化,测试知道怎么点,产品也知道边界在哪。
另一个常见问题是把非功能需求写成口号。可以改成检查项,例如“在常用手机宽度下,主要操作按钮不被底部栏遮挡”,而不是“移动端体验良好”。如果涉及性能,写成可测量的条件,例如“在约定网络条件下,首屏主要内容的加载时间不超过某个团队自定的阈值”,阈值由团队根据实际业务定,不照搬外部数字。
需求清单定稿前,让开发、设计、测试各出一人做交叉复查。复查不是重新讨论要不要做,而是检查每条是否满足以下条件:
复查后如果发现某条仍然需要口头解释才能理解,就把它退回改写,而不是靠会议纪要补丁。会议纪要会散落,需求清单才是多人协作时的共同依据。
下一步很简单:从当前清单里挑出三条最常被追问的需求,按上面的句式改写,再让一位没参与讨论的同事复述他的理解。如果复述和你的预期一致,这个程度就适合进入开发;如果不一致,继续补边界条件,而不是先开工再补文档。