目前,有关需求管理的实践大量应用于软件开发工程等领域,对于从事软件工程的程序员们来说,在进行项目开发之前创建和管理良好的需求是非常重要的第一步,同时也是一项挑战。需求表述不当可带来重大影响,如耗时返工、延期交付及预算超支,严重的还可造成业务违规。
软件开发团队在开始一个新的项目之前,会通过详细的用户需求调研准确捕获了用户需求并汇总分析后,再进行下一步的设计与实施工作,以避免因未能正确识别用户的真正需求而导致不断返工和工作成本增加。开发团队需要首先有效定义和管理需求,才能确保在保证进度和控制预算的同时,产品能够满足用户所需。
本文旨在阐述良好需求描述的特征,并介绍有助于更好地编写软件工程需求说明文档的几点经验,以帮助软件开发团队能够更快更好地取得投资收益。
1、高质量需求的特征
首先的问题是,何为良好的需求?一般而言,一项编写良好的需求描述,应该包含以下特征:
(1)正确(Correct) 技术可行,内容合法
(2)完整(Complete) 能够表达一个完整的想法
(3)清晰(Clear) 不模棱两可,不易被误导
(4)一致性(Consistent)不与其它需求相冲突
(5)可验证性(Verifiable)可验证系统能够满足用户需要
(6)可追踪性(Traceable)可唯一识别并进行跟踪
(7)可行性(Feasible)可在预期成本和计划进度内完成
(8)模块化(Modular) 可单独变更而不会造成较大影响
(9)独立于设计(Design-independent)不包括项目设计和实现的细节、计划信息等
2、提高需求编写质量的经验
在明确了何为良好的需求之后,以下介绍几点可以帮助开发团队编写出更好的需求描述的方法,加速软件工程投资回报率。
经验1:将需求结构化(Structuring)
每一项需求既不能被重复描述也不能被遗漏,诀窍之一是将需求结构化。需求组织应具有良好的结构,以增进理解,同时避免出现重复和忽略的情况。同时,须具备对需求的向上和向下的追溯能力之后,团队才能够评估需求的覆盖范围。结构化组织需求是控制和改善需求质量的第一步。
经验2:重视非功能性需求(Constraints)
对于编写需求说明书而言,涉及法规遵从和提高软件系统质量的非功能性需求(又称约束条件,Constraints)同样重要,它们通常包括软件的性能、界面和可维护性等方面。编写良好需求应包含对约束条件的覆盖,原因是一旦如下领域(例如,性能、可靠性和易用性等)在开发完成后出现缺陷,通常都无法在系统中对其进行重新设计。因此,在项目初期将所有类型的非功能性需求考虑在内,可帮助开发团队大幅提高项目成功的几率。
经验3:将需求可视化(Visualization)
大多数需求分析人员发现建模有助于直观化文字形式的需求。无论是在白板上绘图、使用Microsoft PowerPoint演示工具,还是仅仅在脑海中构建一个模型,都可视为一种建模方法。以上这种图型化的文档应与文字形式的需求描述一起统一管理,以确保一致性、可跟踪性和变更控制能力。可视化需求建模提供了一种与客户及