跳转到内容

软件工程/规划/需求管理入门

来自维基教科书,开放世界中的开放书籍

需求管理是记录、分析、跟踪、优先排序和达成共识的过程,然后控制变更并与相关利益相关者进行沟通。它是一个贯穿整个项目的持续过程。需求是指项目成果(产品或服务)应符合的功能或属性。

需求管理的目的是确保组织记录、验证并满足其客户和内部或外部利益相关者的需求和期望[1]。需求管理从分析和收集组织目标和约束开始。需求管理还包括支持需求规划,整合需求和组织以使用它们(需求属性),以及与其他提供需求的信息的关系,以及这些信息的更改。

由此建立的可追溯性用于管理需求,以便根据合规性、完整性、覆盖范围和一致性来报告公司和利益相关者利益的实现情况。可追溯性还支持变更管理,作为需求管理的一部分,以了解变更对需求或其他相关元素的影响(例如,通过与功能架构的关系对功能的影响),并促进引入这些变更。[2]

需求管理涉及项目团队成员和利益相关者之间的沟通,以及在项目进行过程中对需求变更的调整[3]。为了防止一类需求压倒另一类需求,开发团队成员之间的持续沟通至关重要。例如,在内部应用程序的软件开发中,业务部门有如此强烈的需求,以至于可能会忽略用户需求,或者认为在创建用例时,用户需求正在得到满足。

可追溯性

[编辑 | 编辑源代码]

需求可追溯性关注的是记录需求的生命周期。应能够追溯到每个需求的来源,并应记录对需求进行的每次更改,以实现可追溯性。即使在已部署和使用的已实现功能之后使用需求也应该是可追溯的[4]

需求来自不同的来源,例如订购产品的业务人员、营销经理和实际用户。这些人对产品都有不同的需求。使用需求可追溯性,可以将已实现的功能追溯到在需求收集过程中想要它的个人或团队。例如,这可以在开发过程中用于优先考虑需求,确定需求对特定用户的价值。它也可以在部署之后使用,当用户研究表明功能没有被使用时,用于了解为什么首先需要它。

需求活动

[编辑 | 编辑源代码]

在开发过程的每个阶段,都有关键的需求管理活动和方法。为了说明这一点,请考虑一个标准的五阶段开发过程,包括调查、可行性、设计、构建和测试以及发布阶段。

在调查阶段,从用户、业务和开发团队收集前三类需求。在每个领域,都会问类似的问题;目标是什么,约束是什么,当前有哪些工具或流程,等等。只有在充分了解这些需求后,才能开发功能需求。

这里需要提出一个警告:无论团队多么努力,在项目开始时都无法完全定义需求。有些需求会发生变化,要么是因为它们根本没有被提取出来,要么是因为内部或外部力量在工作中影响了项目中期。因此,团队成员必须在开始时就同意,成功的首要条件是思维和操作的灵活性。

调查阶段的交付成果是所有团队成员都批准的需求文档。后来,在开发过程中,这份文档对于防止范围蔓延或不必要的更改将至关重要。随着系统的开发,每个新功能都会打开一个充满新可能性的世界,因此需求规范将团队锚定在最初的愿景中,并允许对范围变更进行受控讨论。

虽然许多组织仍然只使用文档来管理需求,但其他组织使用软件工具来管理他们的需求基线。这些工具允许在数据库中管理需求,并且通常具有自动化可追溯性的功能(例如,通过允许在父需求和子需求之间或在测试用例和需求之间创建电子链接),电子基线创建、版本控制和变更管理。通常,此类工具包含一个导出功能,允许通过将需求数据导出到标准文档应用程序来创建规范文档。

可行性

[编辑 | 编辑源代码]

在可行性阶段,确定需求的成本。对于用户需求,将当前工作成本与新系统到位后的未来预计成本进行比较。会问诸如此类的问题:“现在数据输入错误给我们造成了多少成本?”或者“由于当前界面操作员错误造成的废品成本是多少?”事实上,对新工具的需求通常是在这些问题引起组织财务人员注意时认识到的。

业务成本将包括“哪个部门拥有此项目的预算?”“新产品在市场上的预期回报率是多少?”“如果我们开发一个新的、更易于使用的系统,在减少培训和支持成本方面,内部回报率是多少?”

技术成本与软件开发成本和硬件成本相关。“我们有合适的人员来创建该工具吗?”“我们需要新的设备来支持扩展的软件角色吗?”最后一个问题是一个重要的类型。团队必须调查最新的自动化工具是否会增加足够的处理能力,将部分负担从用户转移到系统,以节省人员时间。

这个问题还指出了关于需求管理的一个基本要点。人和工具构成一个系统,这种认识在工具是计算机或计算机上的新应用程序时尤其重要。人类思维擅长并行处理和对数据不足的趋势进行解释。CPU 擅长串行处理和精确的数学计算。因此,软件项目需求管理工作的总体目标是确保要自动化的工作被分配给合适的处理器。例如,“不要让用户记住她在界面中的位置。让界面始终报告用户在系统中的位置。”或者“不要让用户在两个屏幕上输入相同的数据。让系统存储数据并在需要时填写第二个屏幕。”

可行性阶段的交付成果是项目的预算和时间表。

假设成本被准确地确定,并且获得的利益足够大,项目就可以进入设计阶段。在设计阶段,主要的 需求管理活动是将设计结果与需求文档进行比较,以确保工作保持在范围内。

再次强调,灵活性是成功的关键。以下是一个经典的例子,说明了在项目中期更改范围实际上效果很好。在 20 世纪 80 年代初,福特汽车设计师预计到本世纪末汽油价格将达到每加仑 3.18 美元。在福特金牛座的设计过程中,汽油价格稳定在每加仑 1.50 美元左右。设计团队决定,如果汽油价格保持低位,他们可以制造一辆更大、更舒适、更强大的汽车,因此他们重新设计了这款汽车。当新车上市时,金牛座的推出创下了全国销量纪录,主要是因为它非常宽敞,驾驶起来很舒适。

然而,在大多数情况下,偏离原始需求的程度不会奏效。因此,需求文档成为帮助团队做出关于设计更改决策的关键工具。

构建和测试

[编辑 | 编辑源代码]

在构建和测试阶段,需求管理的主要活动是确保工作和成本保持在时间表和预算内,以及确保正在开发的工具实际上满足了需求。此阶段使用的主要工具是原型构建和迭代测试。对于软件应用程序,可以在纸上创建用户界面,并在构建软件框架时与潜在用户进行测试。将这些测试的结果记录在用户界面设计指南中,并在设计团队准备开发界面时将其移交给他们。这可以节省他们的时间,并使他们的工作更容易。

需求管理不会随着产品发布而结束。从那时起,有关应用程序可接受性的数据将被收集起来,并输入到下一代或版本的调查阶段。因此,该过程将再次开始。

存在用于需求管理的桌面和基于 Web 的工具。基于 Web 的需求工具可以安装在客户的数据中心,也可以作为按需需求管理平台提供,在某些情况下,该平台完全免费。以前,INCOSE 维护着这些工具的清单,但他们在 2015 年放弃了它。 [5]


建模语言

[编辑 | 编辑源代码]

系统工程建模语言 SysML 包含一个需求图,允许开发人员以图形方式组织、管理和跟踪需求。

按需需求管理平台

[编辑 | 编辑源代码]

按需需求管理平台是一个完全托管的需求管理解决方案,其中唯一的系统要求通常是互联网访问和标准的 Web 浏览器。

该服务通常包括所有特殊的硬件和软件。其他服务可能包括旨在保护您的数据免遭物理丢失和未经授权使用、24×7 数据可用性以及确保服务随着您添加用户、应用程序和额外活动而扩展的技术和流程。

一些按需需求管理平台收取费用,而另一些平台则免费使用。

参考文献

[编辑 | 编辑源代码]
  1. Stellman, Andrew; Greene, Jennifer (2005). 应用软件项目管理. O'Reilly Media. ISBN 978-0-596-00948-9.
  2. "需求管理". 英国政府商务办公室. 检索于 2009-11-10.
  3. 项目管理知识体系指南 (第 4 版). 项目管理协会. 2008. ISBN 978-1-933-89051-7.
  4. Gotel, O., Finkelstein, A. 需求可追溯性问题分析 第一届需求工程国际会议论文集,1994 年,第 94-101 页
  5. "需求管理工具调查". 国际系统工程理事会. 存档于 原始于 2015 年 4 月 19 日. 检索于 2017 年 6 月 4 日. {{cite web}}: 检查日期值:|accessdate= (帮助)

进一步阅读

[编辑 | 编辑源代码]
  • CMMI 产品团队 (2006 年 8 月). "用于开发的 CMMI,版本 1.2" (PDF). 技术报告 CMU/SEI-2006-TR-008. 软件工程研究所. 检索于 2008-01-22. {{cite journal}}: 引用期刊需要 |journal= (帮助)
  • Colin Hood,Simon Wiedemann,Stefan Fichtinger,Urte Pautz *需求管理:需求开发与所有其他工程过程之间的接口* Springer,柏林 2007,ISBN 354047689X
[编辑 | 编辑源代码]
华夏公益教科书