这个问题会有很多好的想法。我的亲身经历告诉我:
1~ 工作产品本身就是一种文档形式:假设产品被接受,那么询问它在特定条件下应该做什么就相当于询问它在这些条件下实际做什么——登录并尝试获取你的答案。
2~ 测试,无论是手动的还是自动的(或混合的),都是一种文档形式。当然,单元测试可能与技术水平较低的团队成员(例如:“业务专家”或客户)所说的领域语言相去甚远。验收测试可能更接近某种“中间立场”。绝对 BDD 风格的测试似乎最有可能构建一种每个人都能理解的无处不在的语言(请参阅这方面的 Gojko's Bridging the Communication Gap)。尽管如此,所有这些形式的测试都是一种文档形式,可用于确定产品应该做什么。
3~ 根据您的项目在范围内的位置,您的文档(通常还有所有辅助工件)可能需要更高或更低程度的仪式。较小的产品,较小的团队,对上市时间至关重要的地方可能会发现,与它所增加的价值相比,非常正式的需求文档成本太高了。另一方面,跨越多个团队和多年开发的超大型项目会发现正式文档的投资回报率完全不同。
4~ 在完美的世界中,我们可能不需要以工作代码(在象牙塔中也是不言自明的)和测试(主要用于回归测试和- 在边缘 - 推动新功能的开发)。因此,需求文档的问题是关于完美世界/象牙塔和现实世界/战壕之间有什么不同的问题。当然,答案因项目和团队而异。例如,我们可以说“所有需求都应保存在此 wiki 中,并非常小心地维护,等等……”但如果团队对 wiki 不熟悉和不熟悉,这将行不通。
5~ 最后,利益相关者是您应该询问的人。当然,应该以协作的方式处理该主题,因为团队中的每个人都必须在整个项目中与需求进行交互,但您必须找到满足利益相关者需求的文档形式。
话虽如此,以下是我在应用 Scrum 时看到的一些需求记录(为什么我觉得这个词后面应该总是跟一个星号?):
- PDF 文档
- 公告板
- 维基
- Wiki + 自动验收测试(阅读:FitNesse)
- 单元测试
- 手动测试计划
- 用户故事、用例图(阅读:Enterprise Architect 模型)
- 办公室周围的白板
- 电子邮件
- 便利贴
而且,老实说,我不能说任何一个系统与成功项目的相关性始终高于其他系统。我想,确实,我们没有灵丹妙药。
HTH,感谢您提出发人深省的问题!