改进您的需求管理过程可以对你的开发过程产生重大影响,所带来的益处包括:提高效率、缩短上市时间,以及节省宝贵的预算和资源。需求是最能向工程师说明要构建什么,以及向测试人员说明要测试什么的信息。
需求具有三个主要功能:
- 定义计划创建什么样的产品
- 确定产品需要做什么以及它应该是什么样子
- 描述产品的功能和价值。
需求的复杂性因项目而异。需求管理计划可以是粗略想法或结构化“应该有的样子”的描述,也可以是文本、模型、从高级需求的层级结构中分化出的子需求。需求也可以是详细规范,其中包含对于产品行为或组件的功能要求描述。
高级需求有时被简称为“要求”或“目标”,软件开发实践有时将需求称为“用例”、“特性”或“功能需求”。敏捷开发方法通常将需求称为“史诗”和“故事”。无论采用何种术语,需求对于产品开发都至关重要。如果没有明确定义的需求,一个公司可能会生产出不完整或有缺陷产品。
定义需求的过程中通常涉及多个利益相关者,如用户、业务分析师、设计师、开发人员和测试人员。每个利益相关者都有自己的目标和需求,可能要求描述产品将如何为解决问题提供有价值的特性、从可用性或用户界面的角度定义需求,或者创建符合特定技术系统需求。要想成功开发产品,需要协调和整合各方需求,并实施经过验证的需求管理最佳实践。
四个需求管理最佳实践
产品和软件应用程序的开发变得越来越复杂,通常需要收集成百上千个需求才能充分定义项目或发布的范围。需求在开发过程中变更的情况并不少见,因此,团队必须秉持协作原则,能随时能访问需求,了解需求更新,并测试每个需求直至项目完成。为了有效地管理这些需求,团队需要了解需求管理工作流程的四个基本要素:
1.好的需求
良好的需求要具备可操作性。它应该提供通向解决方案的途径,团队中的每个人都应该明白它的含义。好的需求需要简洁明确,应该回答“我们需要什么?”而不是“我们如何满足需求?”有了准确的需求,利益相关者就可以理解他们在计划中的部分。如果他们缺乏这种知识,如果需求模糊不清或含糊,最后的产品可能有缺陷或失败。
2. 协作和认同
让一个公司对需求达成一致是很难的,特别是对于有许多利益相关者的大项目。实际上,不需要通过妥协达成共识。更重要的是在团队中建立认同(在管理层批准项目之前或之后),以便开发过程能够向前推进。有了认同,团队就会支持最佳解决方案,做出明智的决定,并做好必要的工作以推动需求管理过程。
团队协作是建立良好需求的关键。协作的团队努力确保每个人都对项目有贡献,并提供反馈。当有对项目目标的承诺和理解时,团队成员往往会支持他人的决定。只有当开发人员、测试人员或其他利益相关者感到“被排除在外”时,才会出现沟通问题,人们会感到沮丧,项目会被延迟。
3. 可追溯性和变更管理
需求可追溯性是一种让每个人都保持对项目了解的方式。从只是一个想法到最终测试阶段,需求可追溯性可组织、记录并跟踪所有需求。可追溯性被形象地比喻为枢纽环节,它可识别项目中不同要素之间的关系。下图展示了常见的下游流程示例。
公司应能够在整个开发过程中,而不仅仅是在完成后,追溯每个需求回到其原始的业务目标。通过追溯需求,公司可以识别变化带来的连锁反应,查看他们是否已经完成了一个需求并且是否正确地测试了它。通过可追溯性,以及有效地管理变化,管理者可以预见问题并确保持续的质量。
可追溯性还确保产品满足来自不同利益相关者的所有重要需求。通过追溯需求,所有团队成员与彼此和所有的相互依赖保持连接。通过良好地管理变化,公司可以避免范围蔓延——当需求没有被清楚地捕获、理解和沟通时发生的未计划的变化。良好需求的好处是对产品和涉及的范围有清楚的理解。这导致更好的开发时间表和预算,防止延误和成本超支。
4. 质量保证
准确的获取需求可提高工作质量,缩短开发周期,提高客户满意度。清晰、具体的需求能够帮助公司及早发现和解决问题,因为在项目开发过程中,后期解决问题的成本要比前期高出许多。研究表明,有效地管理需求可以解决50% 到 80% 的项目缺陷。Borland Software(现Micro Focus)认为,在开发过程的后期纠正缺陷的成本,可能比前期高出 100 倍。
将需求管理最佳实践整合到质量保证流程中,可以帮助团队提高效率的同时避免返工。卡耐基梅隆软件工程研究所表示,软件开发成本的 60% 到 80% 花费在返工上。也就是说,开发团队将大部分预算浪费在因为需求管理不完善而产生的问题上。
虽然需求管理最佳实践看起来很复杂,但其核心概念却很简单,它可以帮助团队回答以下问题:从业务领导到产品经理、项目负责人、开发人员、QA 经理和测试人员,是否都了解团队正在构建什么样的产品以及原因是什么?
当团队中的每个人都协作在一起,积极参与关于产品开发的讨论,清楚所有决策和变更,这样的团队一定能开发出成功的产品。