作为开发人员,您可能认为"我没有时间进行需求管理",或者"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 不是仅用于分析人员的吗?可