开发人员为什么要关注需求管理?

发表于:2008-08-15来源:作者:点击数: 标签:管理开发需求
关键字:需求管理 作为开发人员,您可能认为"我没有时间进行 需求管理 ",或者"RM与我毫无关系"。如果情况正是这样,那么项目 团队 如何定义您正在构建的系统功能呢?实际上,您对于项目交付的职责是由某位人员决定并定义的。无论这位人员只是在头脑中计划着
关键字:需求管理
   作为开发人员,您可能认为"我没有时间进行需求管理",或者"RM 与我毫无关系"。如果情况正是这样,那么项目团队如何定义您正在构建的系统功能呢?实际上,您对于项目交付的职责是由某位人员决定并定义的。无论这位人员只是在头脑中计划着这些需求、在纸上草画出需求、在正式会议上讨论了需求,还是将需求正式记录在需求文档中,每个软件开发团队都要涉及某种形式的需求管理。他们可能并没有意识到,因为他们的 RM 实践可能极其不规范。不管怎样,所有软件团队都要进行某种程度的 RM。问题只是您的软件团队的 RM 实践的规范化程度如何。 

    理解开发人员在 RM 中的重要性,有助于反映 RM 的目的。RM 的目的是在客户和软件组之间建立共识,其内容包括查找、文档化、组织并跟踪不断变化的需求。与客户达成共识是计划和管理项目的基础。如果项目团队不能有效管理需求,那么他们达到关键里程碑的能力就会受到损害,进而影响项目计划的精确度和效用。这通常导致开发和测试资源被浪费在错误方面。开发人员在 RM 上扮演了重要角色,不仅因为他们根据需求构建软件,而且因为他们能够防止项目团队一开始就使用不完整或者模糊需求。最大化需求的完整性和清晰度是保证整个项目成功的转折点,可以确保包括测试人员和文档编写人员在内的整修团队能够在最短的时间内构建质量合格的系统。 

    RM 的正式程度因项目和项目团队而异,并且与您的项目团队在不能交付正确的软件解决方案方面愿意冒多大的风险直接相关。RM 过程的正式程度越差,项目团队不能向客户交付令他们满意的软件的风险就越大。幸运的是,项目中 RM 的松散程度是权衡 RM 形式的优缺点之后所作的一个简明的决定。关于采用松散 RM 过程的最常见的论据包括:它可以使的开发速度更快,可以更好地适应不断变化的市场,并且不需要正式的需求文档来了解我们应该创建什么系统。不幸的是,这些论据是项目团队很难实际把握的,并且需要仔细分析项目成功所需的 RM 正式程度。从根本上说,RM 实践应该产生:1)所有项目团队成员都能够清楚理解的需求,2)对不断变化的需求的控制,以保证项目团队能够跟踪正确解决方案的交付,3)有效的沟通,以保证整个项目团队协调一致。 

    有时使用非常正式的 RM 实践可能是小题大做。比如,如果您的项目团队任务是构建一个视频游戏,那么扩展请求和需求变更就可能频繁出现,以至于随后如果使用传统变更控制过程(需要变更控制委员会的批准)实际上可能妨碍项目成功。这种情况下,变更控制过程实际上限制了开发人员的创新,并且成为软件交付的瓶颈。然而,即使在这种情况下,项目团队仍可以使用诸如故事板或原型这样的RM技术在开发和交付之前验证游戏创意,并从中获益。 

    在另一个极端上,也有极其需要使用非常正式的 RM 实践的时候。比如,如果项目团队的任务是开发一个运行医疗设备的软件,它能根据情况自动管理病人的精确的、正确的用药量,那么项目团队就应该采用高度正式的 RM 过程来保证开发出正确的系统。这种情况下需求错误的风险可能危及人的生命安全。 

    那么 RM 如何影响像您这样的开发人员呢?诸如 Standish Group 报告这样的研究表明,需求错误是修复成本最高的错误,因为它们出错的时间越长,影响就越大。随着软件开发生命周期的进展,这些错误越来越难以纠正,这实际上产生了雪球效应。如果您从一个错误的需求或者需求变更开始,那么您的设计就是无效的,这最终会导致进行代价昂贵的构架返工。确认测试也是错误的,用户文档也不精确,等等。最终,这将导致花费更多的时间来修复问题,而这些是完全可以避免的。 

    但您是开发人员,而不是分析人员。RM 不是仅用于分析人员的吗?可以肯定的是,您项目团队中代表客户的那些人涉入 RM 最深。分析人员通常负责创建需求。然而,需求的质量不仅仅落在分析人员的肩上。记住,整个项目团队对需求有一个完整清楚的理解是至关重要的。为了实现这种质量,开发人员必须尽早参与,以帮助澄清最初需求版本中的模糊性。开发人员提供了一种实现视角,能够提高已编写需求的质量,并且能够增加开发解决方案的成功率。与开发人员的合作是"如鱼得水";开发人员负责将概念转化为现实。因此,开发人员越早参与需求的澄清,项目成功交付正确的软件解决方案的机会就越大。 

    开发人员还应该关心适当的 RM,因为它可以简化他们的工作。当从高质量的需求而不是很差劲的需求(这样的需求总需要团队成员查找测试内容,并且用各种问题打断开发人员)开始工作时,质量保证(QA)或质量工程(QE)和文档编辑团队的工作就更有效率。另外,维护活动可以减少到只专注于系统中真正的实施缺陷,而不是由不清楚和不完整的原始需求导致的缺陷。更高质量的需求最终能够保证软件的质量更高,这使得开发人员可以集中精力思考如何对系统作出改进。

原文转自:http://www.ltesting.net