需求清单写到“能据此判断交付物是否合格”的程度就够了。具体说,每个功能条目都应包含可观察的结果、由谁提供什么资料、由谁完成、以及用什么方式验收。只写“做一个企业官网”“后台要方便”这类描述,多人协作时必然返工;写到界面像素级或代码实现细节,又会把成本锁死、拖慢进度。判断标准很简单:换一个没参与前期沟通的人,能否照着清单判断“做完没有、做得对不对”。
不要从“要做什么功能”开始列,而要从“最后要交出什么”往回推。每一行需求至少覆盖四类信息:交付物、资料、责任、验收。缺任何一类,都会在协作中变成模糊地带。
这四类信息齐全,清单就从“愿望”变成了“合同附件”。
合适的颗粒度是“功能行为”层面。举个例子,假设一个娄底本地服务类站点需要在线留言功能,可以这样写:
访客填写姓名、电话、留言内容后提交;提交成功后页面提示“已收到”;后台可按时间倒序列出留言;后台可标记“已处理”。
这是行为层描述,开发、设计、测试都能据此判断。反过来,写成“用某某框架的某某组件实现”就过度了,它把实现方式提前锁死,一旦技术选型调整,清单就得重写。写成“要有留言功能”又太粗,没人知道要不要短信通知、要不要防重复提交、后台能不能导出。
判断颗粒度是否合适,可以问一句:这条描述能不能直接变成一条测试用例?能,就说明够具体;不能,就还需要补充。
协作人数越多,越要把容易扯皮的地方单独成条。以下检查项建议在清单里明确写出,而不是默认“大家都知道”:
这些条目看似琐碎,却是返工最集中的来源。把它们写进清单,比事后争论“这算不算在范围内”成本低得多。
需求清单不是越细越好。以下内容写进去往往弊大于利:
一个实用的分界:影响“能不能验收”的写清楚,影响“怎么做”的留给执行方。需求方守住结果,执行方负责路径。
把现有需求逐条过一遍,对每条补上“交付物、资料、责任、验收”四项。补不出来的条目,就是接下来要和协作方确认的问题;四项齐全的条目,可以直接进入排期。这样处理一遍,清单的详细程度自然就落在合适的位置上。