首页  ·  知识 ·  软件项目
需求管理完整指南
CIO之家的朋友  知乎  综合  编辑:清欢渡   图片来源:网络
无论您是刚开始接触需求管理的基础知识,还是想改进当前需求管理流程,将自己的流程与行业领先者为标杆进行对比分析,都可以在本文中找到相关知识。

一、什么是需求?

需求是对产品或系统在规定的约束条件下、可接受的风险内执行某些功能或拥有某些质量的共同期望。需求传达了利益相关者对于解决特定问题或抓住机遇所需要和期望的产品或系统的需求。

二、什么是要求?

要求是将一个或多个需求或父需求正式转化为产品或系统的商业承诺,它是在规定的约束条件下、以可接受的风险执行某些功能或拥有某些特性。

此外, 需求和要求分为不同类型,包括不同的业务重点、用户重点和技术重点。

业务需求和要求,也称为利益相关者需求,是从业务流程中衍生出来,或者说是从涉及到的利益相关者(包括客户、用户以及项目中其他相关方)收集来的。利益相关者需求是利益相关者定义的产品需求,代表他们需要产品解决什么问题或抓住什么机会。利益相关者的需求描述可以不使用规范化语言,不使用“应该”等词汇,而对利益相关者的要求描述则要使用“应该”这样的词汇,为了确保其具有约束力,用以最终验证产品是否满足这些要求。

鉴于存在多个利益相关者,通常会出现多组利益相关者需求和要求,项目团队负责收集这些需求和要求,并解决它们之间的冲突、不一致等问题。其结果是产出一组需求集合,从中转换为产品要求。最终的产品要求描述了产品必须执行哪些功能或具有哪些性能才能满足要求。产品要求有时也被称为系统要求、软件要求或技术要求。

三、什么是需求管理?

需求管理是指对正在开发的特定产品或系统的需求和要求进行收集、分析、验证和确认的过程。成功的需求管理可确保交付的成果符合利益相关者的期望。虽然可以使用文档来管理需求,但在复杂的系统或产品、高度监管的行业中,最好使用可信度高的需求管理工具来管理复杂的系统或产品,以降低风险。

四、为什么需求管理很重要?

需求管理之所以重要,是因为它使每个人都能清晰地理解利益相关者的期望,并有信心地交付一个经过验证以满足需求和确认满足需求的产品。

需求管理是一个复杂的过程,涉及到许多不同的阶段、流程或步骤,以及不同的利益相关者。通常,产品管理部门,尤其是产品经理,负责需求管理流程,他们与各个利益相关者合作,这些利益相关者包括业务团队、客户、用户、开发人员、测试人员、监管人员和质量保证人员。

此外,一个产品可能需要满足 100 个甚至几千个需求,这个数字取决于产品的复杂性和监管要求。成功的关键在于让每个人朝着同一个目标努力,共同协作。因此,需求管理在商业上的价值巨大,因为它是项目成功的关键。

做好需求管理的好处包括:

  • 需求管理有助于加强对利益相关者的要求,需求和期望的理解,以及产品所要解决的问题的理解。

  • 通过需求管理,可以明确产品的范围、预算和时间表。

  • 需求管理可以最大限度地减少昂贵、耗时的返工。

  • 通过需求管理,可以提高产品的质量。

  • 需求管理有助于降低风险。

  • 通过需求管理,可以提高在预算和时间表内,交付符合质量要求的产品的可能性。

当构建复杂或高度管制的产品时,需求管理变得尤为重要,因为开发团队投入了更多的时间和预算,犯错的代价无论是金钱、时间还是声誉都十分巨大。受监管行业的开发人员,或开发具有复杂需求和要求的产品的开发人员,通常会依赖需求管理工具来保证项目有序进行。

需求管理 vs. 项目管理

虽然需求管理和项目管理是看上去是同义词,但它们之间存在差异。简而言之,项目管理是在有限资源、预算和时间内构建产品的过程。需求管理则是确保产品是正确的产品,并且构建得正确。

产品开发过程的目标是创建一个满足利益相关者、客户和市场需求的成功产品。产品开发的需求管理部分包括管理需求和要求,以便产品满足利益相关者的期望。因此,需求和要求,连同预算和进度共同确定了项目的范围。

然而,项目管理的领域包括提供预算、人员和开发产品所需的资源等任务。

五、需求管理过程中的不同阶段

那么,如何管理需求呢?最成功的团队通常会按照定义好的需求管理流开展工作。定义需求管理流程非常重要,因为需求在整个项目中会发生变化。当这种变化发生时,可重复的流程就显得非常重要,能够有效降低成本和避免错误。

需求管理过程通常包括四个主要阶段——规划、开发、系统验证和系统确认,每个阶段都很关键。变更管理虽然本身不是一个阶段,但几乎影响需求管理过程的每个阶段。

1.规划阶段

在产品开发中有着不同的开发方法(如瀑布、敏捷),不同的方法下需求管理的过程也会有差别。瀑布开发通常采用线性的方式,只有在一个阶段完成后才能开展另一个阶段的工作,最终一次性交付具备所需特性和功能的完整产品。而敏捷开发方法,包括Scrum,本质上是迭代的。团队在整个过程中可能会处理不同的需求集,分阶段的交付产品,并在每个阶段通过增加所需特性和功能来增加产品的价值。

无论采用哪种方法,团队都需要制定一个文档化的需求管理计(RMP)。RMP中应明确利益相关者的角色和职责,确定哪些要求和需求工件需要被定义,如何完成和管理可追溯性,如何处理要求和需求基线,如何管理与外部系统和用户的交互(接口),如何管理变更,以及如何验证和确认产品。

一个成功的需求管理计划应该对所有利益相关者可见且得到他们的认可,因为它设定了整个产品开发过程中所得利益相关者的路线图和期望。

要求和需求工件

需求管理计划的一部分作用是定义在需求管理过程中将创建的需求和需求工件。

这些工件包括与需求和要求相关的数据和信息,例如图表、模型、要求集合、产品需求集、用例、设计文档、测试计划和程序等。这些需求工件在整个产品开发生命周期中被用于:

  • 描述正在开发的产品

  • 确定开发产品所需的操作

  • 记录在开发期间执行的操作

  • 定义进行系统验证和系统确认所需的测试

  • 协助利益相关者审查、沟通和参与

虽然一些企业以文档形式(如软件需求规范)来传达这些信息,但越来越多的趋势是在需求管理软中来管理要求和需求工件。这是因为使用文档的方法记录数据,在应对复杂的敏捷项目时,其灵活性和可扩展性都将大大受限。

这对于必须证明合规性的高度监管行业尤其如此。

由于缺乏持续一致的更新、人为错误、数据不完整、版本控制以及需要建立和维护可追溯性等问题,我们无法依赖文档来确定需求或要求是否得到满足。

在高度监管行业中的敏捷产品团队在开发复杂产品时,使用需求管理软件应用程序来简化需求分析阶段的需求定义和管理,能够取得更显著的成效。现代需求管理解决方案,如 PingCode,能够自动定义需求、建立可追溯性、管理和验证复杂的产品需求,从而简化了需求分析,并简化了整个需求定义和管理流程。

要求和需求特性

为了追踪既定项目中的需求,应为每个需求制作特定的属性列表。需求属性可确保需求在所有需求工件中被特别标识。这些属性也有助于管理要求和需求集,比定义报告和仪表板,以提供准确及时的项目状态信息。我们的最佳实践中,需求和要求通常都包含以下需求属性:

  • 唯一标识符

  • 理由

  • 负责人

  • 类型

  • 定义状态

  • 优先事项

  • 风险

  • 合规性

  • 版本号

  • 更改历史

  • 追踪数据

  • 测试状态(针对要求)

  • 确认状态(针对需求)

要求和需求基准线

需求和需要基是一组已经被商定、审查并得到批准的需求和要求集合,标识了产品中包含的计划功能和特性。设定基线的目的是为利益相关者相应的信息,以帮助其使用变更请求对所计划交付的功能和特性做出决策和更改。RMP (Requirements Management Plan)定义了基线策,包括创建的时间和频率、需求和要求的优先级排序(决定应包括哪些需求)、发布、变更管理、需求验证和需求确认。在这种情况下,需求和需求验证用来解决要求和需求陈述的质量,和可追踪性的存在和正确性。

通过验证客户需求,可确认整合的需求集是否清晰地传达了利益相关者对于产品的期望。需求确认则为利益相关者确认单个需求和整个需求集是否清晰地传达了它们所转化的要求。需求的质量取决于所转换的要求的质量。

建立需求基线的重要性在于:

  • 确定并达成共识的项目范围——这对于控制范围的蔓延至关重要。

  • 启动正式的变更控制过程

  • 确定适当的人员资源和预算配备水平

  • 做出可实现的进度承诺

需求基线通常存储在软件需求规范 (SRS) 文档中。然然而,一个复杂的系统可能需要各种软件、硬件和接口需求规格来封装基线的组件。在初次开发期间维护这些可能很麻烦,在变更管理期间可能会变得无法实现。

或者,你可以寻找一个需求管理解决方案,这种方案使基线可被定义为已存储在数据库中的需求子集,从优先级排序到利益相关者签署,整个流程都可被简化。

2.需求开发阶段

需求开发阶段是指企业团队分析需求的过程。在这个阶段,团队需要从利益相关者那里获取需求和要求信息,加以定义和精炼,并对这些信息进行分析以确保其清晰准确,同时解决存在的问题和冲突。如果没有获取准确清晰的需求和要求信息,最终交付的产品很可能与利益相关者的期望不符。

需求收集

需求收集,也称为需求和需求的收集,是与用户、客户和内部业务利益相关者合作,以识别利益相关者的需求和需求,并了解产品或系统的需求。

需求定义

需求定义是将收集到的需求以更加清晰、可追溯的方式重写,以便在产品开发生命周期中进行有效的沟通。

以下是编写高质量需求和要求的基本特征:

  • 必要性

  • 明确性

  • 可行性

  • 可验证性

  • 正确性

  • 可追溯性

  • 描述恰当

需求和要求的可追溯性至关重要,因为它是了解设计和构建产品是否满足需求和要求的唯一方式。需求管理工具(如PingCode)可实现双向可追溯性,可使团队理解特定需求或要求存在的原因,并易于分析变更的影响。特别是在受监管行业中,产品必须证明可追溯性以符合标准和法规。因此,在编写需求时,将每个需求映射到所有相应的工件以确保可追溯性至关重要。

许多团队采用需求可追溯性矩阵(RTM)来追踪和管理需求变更的范围。RTM是一种静态工具,需要手动维护。问题在于,在产品开发过程中,变更几乎是无处不在的。遇到需求变更时,团队必须手动搜索RTM文档来查找所有相关的上游和下游需求和要求、依赖需求以及验证和验证测试,以确定可能受到变更影响的范围。

如果只有少量的需求,通过Excel电子表格进行搜索可能并不困难。然而,如果有成百上千个需求和要求,管理变更范围将变得非常繁琐、耗时且容易出错。

需求管理工具的目的是简化流程,即使对于高度复杂和受监管的产品也是如此。特别是 PingCode 这类工具,它通过以下方式实现简化流程的目标:

  • 轻松了解变更的影响

  • 启用端到端流程改进

  • 提高生产率

  • 降低产品风险

  • 提高质量

需求分析

在产品开发的过程中,有时候利益相关者所表达的要求并不完全符合他们的实际需求。这时候就需要进行需求分析来确保所有的业务、软件和产品需求准确地代表了利益相关者的真实需求和要求。需求分析的目标是了解利益相关者的需要,以便在交付产品时能够完全满足他们的期望。

3.系统验证阶段

系统验证的目的是确认成品符合基线的产品需求,而系统确认则评估产品是否满足利益相关者的要求。两者都非常重要,但系统验证总是先进行。

这个阶段的计划开始于产品需求被定义的时候。计划包括确定哪些系统验证事件需要确认产品需求已经被满足。

为确保系统验证成功进行,应在需求确定为基线之前为每个产品需求定义以下属性:

  • 成功标准:确定需要验证的内容,以便满足产品需求

  • 方法:测试、演示、检查或分析等方法。

  • 策略:用于确定如何执行系统验证,包括运行环境、测试环境、系统配置等因素。

通过定义这些属性,可为测试和质量保证工作设定清晰的目标和标准,并确保系统验证的结果能够准确反映产品需求的实现内容,并减少了之后需要返工的风险。

4.系统确认阶段

系统确认阶段决定产品是否满足既定利益相关者的要求。系统确认决定了预期用户在实际操作环境中能否接受产品的预期用途。高度管制的产品是否被批准使用取决于确认结果。客户对最终产品的接受程度也取决于系统确认结果。

开始规划系统确认之前,应先定义一组集成的要求,包括确定需要哪些系统确认事件来考量需求已经被实现。一种有效的方法是为系统确认中的每个要求定义一组属性。

为确保系统确认成功进行,应在需求基线化之前为每个要求定义以下属性:

  • 成功标准:明确取得什么样的结果意味着客户要求已经被满足。

  • 方法:测试、演示、检查或分析。

  • 策略:包括使用的方法、运行环境、测试环境、系统配置等。

定义这些属性为测试和质量保证工作了设定目标,并降低返工的风险。

七、需求管理的挑战

需求管理的其中一个挑战就是变更管理。因为变更在需求管理过程中如此普遍,所以团队需要在项目开始时就解决他们将如何管理变更的问题。

当构建有数以千计的需求和无数变更的产品时,团队可能需要花费很多时间来反复查看、修改和跟踪这些变更,以保持变更的可追溯性并确保开发进程不偏离轨道。

以文档的形式维护要求和需求文档是具有挑战性的,变更带来的挑战之一就是版本控制问题。而工件本身也可能存在版本控制问题,例如,某人可能会就 SRS 第一版提供反馈,但这时已经同时存在包含不同编辑和附加内容SRS 第二版。此外,文档中的版本控制也可以更加精细。例如,需求一可能在版本三上,但它链接到版本二上的测试 B。

再加上通过电子邮件或会议从多个利益相关者那里汇总反馈,分析变更对需求工件各个版本的影响,并向正确的人员传达正确的变更和状态。只是想想如何保持所有这些都井井有条就令人崩溃。

以下是需求管理会面临的五个挑战:

  • 临期反馈

  • 反复讨论和重新审视已经做出的决策

  • 变更成本

  • 注意力分散

  • 期望不一致或者不匹配

使用文档或基于文档的遗留系统,而非用专门构建的需求管理工具来管理需求时,问题会变得更加复杂。通过从以文档为中心的需求管理方式转变为以数据为中心的方式,可以克服大多数这些挑战,甚至更多。

八、成功管理复杂产品和高度受监管行业的需求的方法

上述挑战是实实在在的,掌握它们可以对开发时间表和预算产生重大影响。在受监管的行业——如汽车、航空、医疗设备、政府和工业制造——的开发人员面临的挑战更大,因为他们需要证明产品符合法规和标准。

标准和法规可能包含数百项规定,但并非所有规定都适用于自己的特定产品。此外,标准和法规还包括对系统验证和确认(验收、认证和资格)的要求,以及有关产品开发组织的规定。但是,标准和法规中条款经常表述模糊。

在项目开始阶段,确定驱动因素和制约因素时,项目团队需要识别所有适用的标准和法规,并确定其中哪些条款适用于自己的产品。然后需要编写清晰明确的产品需求说明,来表明产品符合这些监管规定。

需要注意的是,法规并不等同于需求,但需求说明必须满足监管标准的规定。因此,对适用标准和法规的深入理解对于编写产品需求至关重要,直接决定产品最终是否合规。产品需求说明确定后,法规要求应该在所有需求工件中以“合规性”属性标明,以便所有团队成员在整个开发过程中都可随时查看,有助于决策制和变更分析工作的开展。

要掌握标准和法规的专业知识,为保持产品合规性,还需要注意以下几个方面:

  • 团队之间的紧密协作

  • 引用唯一真实来源定义、验证和确认合规性要求

  • 标准框架与法规的内容一致

  • 开发活动和生成的工件的全面可追溯性

  • 简化审计准备和数据导出

在应对合规性审时要准备好相关报告。团队必须清楚应对审计所需准备的数据以及如何在需要时随时获取数据。通常,团队只顾忙于收集数据,审计跟踪一般事后才想到,这可能会影响交付时间和发布日期,甚至导致产品完全无法发布。为了消除这种风险,团队需要建立详细的数字审计跟踪,以便在需要时随时导出。在项目开始之初,就应该建立和维护可追溯性,为审计做好准备。

很多受监管行业的领导者都依赖于需求管理工具来降低未遵守标准和法规的风险。PingCode 是一款能够跟踪标准、法规和合规性的工具,可帮助这些行业领袖始终走在创新的前沿。

九、需求管理工具的好处

RM(需求管理)工具在现代产品开发中具备多项优势,它们可以消除文档和旧系统带来的风险,并解决效率低下的问题。优秀的RM系统(如PingCode)可以整合整个开发生命周期中的工程活动,包括测试和风险管理,能够帮助改进产品开发流程,具体表现在以下方面:

  • 确保质量和合规性

  • 管理风险

  • 提高效率和优化流程

  • 易于理解、响应变化快

  • 提高可追溯性

  • 简化和加速审查

  • 实时协作和迭代

  • 节约时间

  • 提高质量

在产品管理中,有许多不同的需求管理工具可供选择,但并非所有工具都能带来以上所述的所有好处。在选择需求管理系统时,应首先需要考虑所开发产品的类型和复杂程度,以确定哪个工具中的哪些功能最适合团队。

根据我们的经验以及从客户那里得到的反馈,需求管理系统的最重要功能包括:

  • 实时双向可追溯性

  • 实时协作沟通

  • 高效且可扩展的审查流程

  • 简化测试和质量保证管理

  • 实时风险分析

  • 可重复使用的需求和基线目录

  • 标准化验证和功能安全套件

  • 全面的可见性和合规性报告

  • 快速实施

  • 灵活配置

  • 易于操作的界面/管理

  • 自动化整合

  • 需求和可追溯性的高质量评估


本文作者:CIO之家的朋友 来源:知乎
CIO之家 www.ciozj.com 微信公众号:imciow
    >>频道首页  >>网站首页   纠错  >>投诉
版权声明:CIO之家尊重行业规范,每篇文章都注明有明确的作者和来源;CIO之家的原创文章,请转载时务必注明文章作者和来源;
延伸阅读
也许感兴趣的
我们推荐的
主题最新
看看其它的