需求表述不善可带来毁灭性影响,其所引发的多米诺效应可导致耗时返工、延期交付及预算超支,严重的还可造成业务违规甚至人员伤亡。
近年来,随着ISO9000、CMM/CMMI、六西格码等国际标准逐步引入中国,“需求管理”正成为中国当前工程应用和商业热域的热点。目前,有关需求管理的实践大量应用于软件开发工程等领域,软件开发团队在开始一个新的项目之前,会通过详细的用户需求调研准确捕获了用户需求并汇总分析后,再进行下一步的设计与实施工作,以避免因未能正确识别用户的真正需求而导致不断返工和工作成本增加。
对于从事软件工程的程序员们来说,在进行项目开发之前创建和管理良好的需求是非常重要的第一步,同时也是一项挑战。需求表述不善可带来毁灭性影响,其引发的多米诺效应可导致耗时返工、延期交付及预算超支,严重的还可造成业务违规甚至人员伤亡。因此,开发团队需要首先有效定义和管理需求,才能确保在保证进度和控制预算的同时,产品能够满足用户所需。
良好需求的特征 含义
正确(Correct) 技术可行,内容合法
完整(Complete) 能够表达一个完整的想法
清晰(Clear) 不模棱两可,不易被误导
一致性(Consistent) 不与其它需求相冲突
可验证性(Verifiable) 可验证系统能够满足用户需要
可追踪性(Traceable) 可唯一识别并进行跟踪
可行性(Feasible) 可在预期成本和计划进度内完成
模块化(Modular) 可单独变更而不会造成较大影响
独立于设计(Design-independent) 不包括项目设计和实现的细节、计划信息等
本文旨在阐述良好需求描述的特征,并介绍有助于更好地编写软件工程需求说明文档的十佳经验,以帮助软件开发团队能够更快更好地取得投资收益。
高质量需求的特征
首先的问题是,何为良好的需求?一般而言,一项编写良好的需求描述,应该包含以下特征(见表1):
同时,一项需求描述应该用一个包含主语和谓语的完整句子来表述,使用“应该”“必须”等词来表明其强制性,使用“可以”等词来指明可选性。一个完整的需求还应写明预期达成的目标,并包含质量的达标标准或其它可测量的指标。
提高需求编写质量的十佳经验
在明确了何为良好的需求之后,以下介绍十个可以帮助开发团队编写出更好的需求描述的方法,加速软件工程投资回报率。
经验1:将需求结构化(Structuring)
每一项需求既不能被重复描述也不能被遗漏,诀窍之一是将需求结构化。需求组织应具有良好的结构,以增进理解,同时避免出现重复和忽略的情况。同时,须具备对需求的向上和向下的追溯能力之后,团队才能够评估需求的覆盖范围。结构化组织需求是控制和改善需求质量的第一步。
经验2:把握好用户需要(customer needs)、项目需求(requirments)和合同文本(contractual documents)之间的互动关系
用户需要是指软件的使用者对于软件所能实现的功能的期望及操作便利性上的要求;软件工程项目中的需求,则是将这些用户需要通过特定的描述方法重新表述为程序开发者可以识别并据此工作的说明性语句。
一个项目需求通常会比用户的某项需要在描述上更加共性化,以便满足多个用