通过与 Jira 对比,让您更全面了解 PingCode

  • 首页
  • 需求与产品管理
  • 项目管理
  • 测试与缺陷管理
  • 知识管理
  • 效能度量
        • 更多产品

          客户为中心的产品管理工具

          专业的软件研发项目管理工具

          简单易用的团队知识库管理

          可量化的研发效能度量工具

          测试用例维护与计划执行

          以团队为中心的协作沟通

          研发工作流自动化工具

          账号认证与安全管理工具

          Why PingCode
          为什么选择 PingCode ?

          6000+企业信赖之选,为研发团队降本增效

        • 行业解决方案
          先进制造(即将上线)
        • 解决方案1
        • 解决方案2
  • Jira替代方案

25人以下免费

目录

为什么需求管理很重要

并非所有的管理者都确信他们的团队需要在需求开发和管理方面做得更好,或者认为这样的投入会带来回报。然而,许多行业研究表明,需求问题是项目困境的普遍原因。经常被引用的Standish集团的混沌报告表明,导致项目失败或“挑战性”的三个主要因素是缺乏用户输入,需求和规格不完整,以及需求和规格的变化。

为什么你需要需求管理?一个经济学角度论证

需要实施更好的需求管理实践,是从经济或业务角度讲的,而不是站在哲学或技术立场。往往一个公司的业务是因为需求管理相关问题无法开展下去时,才会认识到需求管理的投资回报是长远的。

有关需求管理失败的最新案例是联邦调查局的VCF案件管理软件系统。 该项目在斥资1.7亿美元巨额资金后被弃,因交付的软件缺陷百出、与目标功能相去甚远。其中一位调查员是这么写的:

我怀疑 VCF 失败的原因在于团队以为已经获取了正确需求,便急于开发系统,但实际上并非如此。这个案例非常典型,其实团队一开始就没有获得完善正确的客户需求,因此需要不断重新定义需求,从而对已经设计和生产的产品引起了级联效应。(引自:Goldstein, Harry。2005年。“谁杀死了虚拟案件档案?”IEEE Spectrum 42(9): 24–35)

许多研究已经表明需求定义错误对软件开发项目所产生的影响。这些研究一致表明,将近一半的软件缺陷源自需求定义的错误。需求定义错误的最常见结果是预期差距,即开发人员构建的内容与客户真正需要的内容之间存在差距。既然软件项目中一半问题产生的根本原因的都是需求错误,那这个问题就值得引起我们重视。

获取错误需求之所以具有如此大的影响,主要原因在于这些错误会直接导致开发返工。需求错误、团队疏忽或理解偏差迫使开发人员必须重新处理已完成的工作。

如表1所示,纠正需求错误的成本随着错误被发现的时长而急剧增加。因此,购买可以减少需求缺陷并防止返工的技术手段是高回报投资。一项对需求潜在投资回报的分析表明,需求定义错误可能会消耗项目返工成本的70%到85%。

错误被发现的阶段纠正错误的成本
需求开发1X
设计2–3X
构建5–10X
系统或验收测试8–20X
运行68–110X
表 1. 更正需求错误的相关成本

更好的需求管理能为你带来什么?

除了避免上述负面影响外,改善软件需求管理还可获得其他益处,这些包括选择正确的项目进行投资,便于估算,实现合理的优先级,开发更高质量的设计,以及更有效的测试。

有助于选择值得资助的项目

获取正确的初步需求使高级管理者能够在决定在一系列可能的项目中选择哪个项目进行投资时,做出有效的业务决策。获取的需求越正确,业务回报的预测就越准确。对于已经获得资助的项目,完善的需求管理可帮助项目经理地在团队内或跨团队间更科学的分配任务。

便于估算

梳理清晰的需求可以帮助团队估算执行项目所需的工作量和资源。是否能估算准确取决于需求的规模和复杂程度,以及过去的项目经验和历史数据进行比较。

建立合理的优先级排序

当需求被明确地记录下来之后,开发团队可以根据这些需求,来合理地安排和优先考虑他们接下来需要完成的任务。这样可以帮助团队更好地确定任务的优先级,把精力集中在最重要的需求上。大多数项目需要做出妥协,以确保他们实现最关键和最及时的功能。优先级合理化的需求基线可以帮助团队引入那些能够提供最大客户价值的变更。一项研究显示,项目需求平均交付了率大都在最初定义功能的54%。所以如果你无法实现所有功能需求,确保团队实现正确的部分。

有助于提升开发设计质量

需求是开发设计的基础,梳理清晰且传达明确的需求有助于开发人员设计出最合适的问题解决方案。高质量的需求也确保了开发团队致力于解决正确的问题。许多开发者都经历过这样的挫败感,即实现了一些功能,这些功能被人们宣称是需要的,但最后发现根本没人使用。有一项调查显示,完全有45%的交付的软件产品特性从未被使用。少花时间实现错误的功能可以加速项目进程并最大化其业务回报。

有助于对软件进行有效测试

定义明确并可测试的需求使测试人员能够开发精确的测试程序来验证功能。对需求的优先级排序告诉测试人员首先要关注哪些需求。评估需求的难度和风险可以帮助测试人员了解哪些功能应该受到最密切的审查。

有助于跟踪项目状态

全面、可跟踪的需求集合可以帮助利益相关者了解项目何时完工。一个完整的需求追踪系统可以帮助团队清晰地了解哪些需求已经实施,哪些被删除,哪些还在进行中,同时有助于利益相关者对项目进展情况进行评估,以确定项目是否已经达到了预期的目标。

加快软件开发

这似乎违反直觉,但却是真的。定义商业需求将各方利益相关者以共享的愿景、目标和期望统一起来。用户有效参与建立需求减少了用户在交付新系统时可能不满意的机会。

以下是一些公开的实际案例:

  • 一项关于15个银行和电信项目的研究结果表明:其中最成功的项目一般将28%的资源用于需求工程,相比较,成果平平的项目分配资源占比仅为15.7%的资源。
  • 《以客户为中心的产品:通过智能需求管理创建成功的产品》这篇文章指出:NASA 项目通过增加用于需求的总预算比例,在大大降低成本的同时,也避免了项目进度延后。具体数据可以参考表2。
  • 一项欧洲调查发现,速度最快的项目团队在需求工作上投入的时间和精力是速度较慢团队的两倍(14% vs 7%)。
用于需求的总预算项目数量平均项目成本超支
< 5%5125%
5 to 10%783%
> 10%630%
表2. NASA 项目成本超支和进度延后情况

准确的需求可以确保开发出的软件功能能够满足用户的基本需求,同时需求也设定了可实现质量预期。这样,团队就可以同时兼顾功能需求和非功能性需求,从而让用户满意。此外,强调需求开发比依赖Beta测试来发现需求问题成本更低,因为在开发后期解决问题的成本远高于早期纠正问题的成本。

本文是否对你有用?

内容导航

目录