目录

什么是需求工程?需求工程概述和简介

需求管理(RM)对许多公司来说是一项挑战,部分原因是软件开发涉及的含糊不清。首先,你需要理解客户的需求。其次,你需要将这些需求与关键的过程相匹配。

需求管理是需求工程(RE)的一部分,RE能够弥合客户需求与开发者所创造的产品之间的差距。当需求工程做得好时,它可以为软件开发建立一个扎实的框架。这一点十分重要,因为糟糕的软件工程需求管理是许多项目失败的根源。

CIO杂志的一项研究发现,“据分析师报告,多达71%的软件项目因为需求管理不当而失败,这使得需求管理成为项目失败的最大原因。”

根据CIO杂志的一项研究,高达71%的软件项目失败是由于团队不善于管理需求,需求管理不善已构成项目失败的首要原因。

1999年美国宇航局耗资1.25亿美元建造了火星气候轨道探测器,最终这个项目失败了,其原因是由于探测器进入到了距离火星过近的轨道,而这个问题的源头是需求之间的冲突;所以避免需求冲突是需求工程的关键任务之一。

理解需求工程涉及的细节和最佳实践可以帮助你更好地满足客户的期望。

一、什么是需求工程?

当客户创建新的软件时,他们可能会有很多的目标,而需求工程(RE)则提供了一个框架来实现这些目标。它重要的需求被收集起来,并转化为详细的需求集。需求的开发决定了未来的开发活动,并为成功创建了蓝图。

“需求管理”和”需求工程”这两个术语经常被交替使用,但它们是不同的。因为需求管理是需求工程的一部分,而正确地执行需求管理会产生巨大的影响。

需求工程确保客户希望解决的问题被清楚地定义,而且解决方案是准确和有效的。本质上,需求工程将现实世界的问题转化为一个高效的软件解决方案。

二、需求工程的四个步骤

需求工程中潜藏着许多风险,而强化需求工程流程能够帮助我们规避许多常见的问题,这个流程就像一个指南针,明确了可交付成果,使我们的开发目标更准确。通过践行这一流程,所有的关键利益相关者都能够了解达到预期结果所需的步骤。

需求工程的流程一般包含以下四个步骤:

  • 提出需求:这是关于熟悉项目涉及的所有重要细节。客户会提供他们的需求,包括需求的详细信息和关键的背景信息。你需要研究这些细节,并同时了解类似类型的软件解决方案。这个步骤为开发提供了重要的上下文环境。
  • 需求规格:在规格阶段,你会收集项目的功能性和非功能性需求。在这个阶段我们会使用各种工具,包括数据流程图,以增加对项目目标的清晰理解。
  • 验证和确认:验证确保软件按照客户的需求构建,确认软件实现了正确的功能。如果需求没有通过确认阶段,可能会有耗费巨大的成本返工。
  • 需求管理:需求管理是一个持续的过程,与上述的其他三个过程并行运行。在需求管理中,你要将所有相关的流程与它们的需求相匹配。你将分析、记录和进行优先级排序,并与相关的利益相关者进行沟通,让任何需求变更都以有效且有序的方式进行处理。

通过实施这一流程,需求工程可帮助我们识别出哪些内容需要被剔除,也正因此,我们可以专注于开发需求,并更好地满足客户期望。

三、需求不应包含哪些信息?

需求是对要解决的问题的阐述,而不是提供解决方案。需求说明了我们需要解决的问题是什么,而不是我们打算如何解决问题,好的需求应具备以下关键属性:

  • 需求准确定义了利益相关者的需求
  • 需求是可测试的

需求的表达应该清晰易懂、没有歧义。在制定好的需求的重要步骤中,审查过程是必不可少的。我们捕捉到的需求是否反应了利益相关者的期望?要设置反馈机制,以便我们及时获取客户反馈并根据客户需要调整需求。

四、需求工程中的常见错误

构建需求工程(RE)框架时我们会遇到很多挑战,思考以下方面可帮助我们规避很多问题:

  • 范围蔓延:克制住为了取悦客户,想不断添加新需求的冲动。即使再微小的变更也可能会对后续活动(如测试和文档编制)产生重大影响。
  • 过度设计:我们会想尝试满足客户的每个需求,因此容易犯过度设计的错误。过度设计可能会导致代码冗余和解决方案过于复杂。保持简单高效,只添加必要的功能和特性。
  • 缺乏充足的反馈和审查:前期反馈对项目的成功至关重要。定期对需求进行审查,建立稳健的反馈机制,有助于我们及时发现和解决问题,及时调整需求。
  • 未能关注所有利益相关者:全面考虑并满足所有关键利益相关者的需求。在需求工程的早期阶段花时间去识别和理解所有相关方的需求,避免之后出现返工问题。
  • 未能及早识别可能遇到的阻碍:在早期阶段要及时发现问题,以便尽早采取应对措施,并保证每个人对问题都有充分的理解。

及早防范这些问题可以帮助我们节省时间、资金和资源。此外,要确保流程具有充分的可追溯性,例如每个需求都与至少一个测试相关联,以便更好地跟踪需求的实现情况。在需求工程过程中,可追溯性是重要的一环,能帮助工程师更有针对性地处理未通过测试的需求,保证项目的顺利进行。

五、使用适当工具可帮助我们取得成功

使用适当的工具有助于我们有效地进行需求工程,每个参与者都清楚项目的目标是什么。需求越准确,就越利于产品经理进行项目规划。使用正确的需求管理软件工具(比如PingCode等)可以帮助我们极大提高产品和系统开发的效率。

这类工具具有以下优势:

  • 提升清晰度和可见性:可以更全面地理解正在开发的产品以及开发的背景和目的。
  • 实时可追溯性:完善的可追溯性可确保产品质量,并优化变更管理的过程。
  • 决策跟踪和快速审查:这类工具可以进行虚拟审查,使需求、测试用例和用户需求等可以得到有效跟踪和审查。
  • 实时协作:这些工具可以实时更新重要决策和优先级设定,吸引必要的利益相关者参与其中,随时引用历史信息,避免由于信息偏差沟通出现误解。

使用恰当的工具可以帮助我们改进需求管理流程,加强我们对需求的跟踪、审查和确认,且有助于我们理解决策。选择正确的工具也能帮助我们简化产品开发流程,提高效率,更好地理解和应对变更,使项目进展过程更公开透明。

本文是否对你有用?

内容导航

目录