扫码阅读
手机扫码阅读

需求分析七宗罪之无端的需求变更

80 2024-03-26
点击蓝字 | 关注我们



#
产品经理必聊的100个话题



第100期:需求分析七宗罪-无端的需求变更

在项目开发的过程中,我们经常面对各种需求变更的挑战。有时候,我们甚至在产品验收阶段才会发现某些功能或场景的遗漏,导致开发团队再次陷入紧急处理的境地。

那么,引发这种无端需求变更的根本原因是什么呢?从变更的角度来看,主要可以分为两种:内部变化和外部变化。



内部变化


Business Analysis





内部变化指的是BA(业务分析师)推翻之前的设计或对其进行修改。这可能是由于设计不当导致需求无法持续兼容,或者由于设计缺陷而迫使开发人员不得不进行变更。内部变化可以进一步细化为以下三种类型:

1.业务或产品验收时发现逻辑遗漏

在项目开发过程中,由于需求理解不清或沟通不畅等原因,可能导致某些功能未被考虑或实现方式存在问题。这种情况通常在业务或产品验收阶段浮现。

2.完善需求功能细节

项目开始时制定的需求文档通常无法覆盖所有情况和细节。随着开发的进展,新的场景和要求可能会浮现,需要对需求进行进一步的完善。

3.研发评估不足无法实现调整逻辑

研发评估不足指的是技术团队在项目可行性、风险以及所需时间等方面没有做出合理的预判,基于自身能力和资源等条件进行不足的评估。这可能导致调整逻辑的实现面临一系列困难。


外部变化


Business Analysis





外部变化涵盖了市场、业务和实施条件的变更,以及业务流程、工作流程、角色和操作权限等方面的调整。外部变化可进一步细化为以下三种类型:

1.第三方接口变更

使用第三方服务接口时,接口的升级和版本迭代可能引发系统变更,可能对系统正常运行产生影响,甚至导致崩溃故障。

2.紧急或高价值需求插入和当前需求合并

紧急任务有时候不能按计划推迟处理,必须优先处理;而高价值任务则代表着能够带来重大利益,因此也需要优先安排完成。

3.领导或监管要求对当前需求范围扩大或缩小

领导层和监管机构可能根据内部规章制度、政策法规以及市场竞争环境等因素提出对需求范围的要求,使原本确定的范围边界变得模糊不清。


情况分析


Business Analysis





由于以上各种原因,需求变更可能给项目团队带来严重的影响。首先,需求文档的版本迭代成为不可避免的任务。不论是变更还是扩展,都可能使文档维护变得异常困难。这不仅增加了工作负担,也可能导致文档的准确性和一致性受到挑战。

其次,需求变更会打乱开发计划,甚至可能迫使团队彻底推翻原有计划并进行重写。这样的混乱可能摧毁团队艰苦建立的客户信任,进而对项目的整体成功产生负面影响。因此,管理和适应需求变更至关重要,以确保项目的稳健执行和客户满意度。

实际工作中响应需求变更之所以变得特别困难,我总结了以下三个主要原因:

1.重复

在代码中重复使用相同的逻辑,导致每次发生需求变更时需要修改的地方变得异常繁琐。这种重复性的设计增加了维护的难度,也使得变更的时候容易遗漏某些关键的修改点。

2.不分层

未进行合理的需求分层会导致需求显得过于僵硬,一旦发生变更,就很难避免影响整体系统。良好的分层设计能够减轻变更带来的影响,使得修改更加精确、可控。

3.过度耦合

采用过度耦合的逻辑结构,类似于锯齿状的设计,导致每次修改都需要重新设计逻辑,以防止引入错误。降低耦合度可以提高系统的灵活性,减少变更带来的不必要的工作量和风险。


解决方案


Business Analysis





为了有效应对内部变化和灵活适应外部变化,我为大家提供了三个有效的解决方案:

1.分层

在面对庞大需求时,采用分层的方式进行描述。通过分层结构对需求进行勾画,可以降低顶层发生变化的可能性。不同层次描述不同内容,从高层到低层逐渐展现细节。这样,每次修改时,只影响当前层次,不会波及到上层。采用分层的方式能够以由粗到细的方式表达需求,易于管理和阅读,并在变更发生时更迅速地进行定位。

2.抽象

通过抽象的方式提取相似对象的共通部分。采用抽象能够减少对现有设计的影响,将修改限制在更为明确和有限的范围内,降低维护的成本,特别是在增加新功能时更为有效。

3.解耦

通过解耦将关注点分离,即将能够引起变化的点分开阐述,突出重点。这样一来,当需求发生变化时,影响的范围更受控,也更容易进行调整。解耦能够提高系统的灵活性,降低变更带来的风险,使系统更易维护和扩展。

原文链接: http://mp.weixin.qq.com/s?__biz=Mzk0MzM2OTQzOA==&mid=2247485203&idx=1&sn=25265f3f7de57f6eef3bacbd5b9c39c2&chksm=c335baa2f44233b475e24c74137e5cac26ff43cc46561af90214e974051d00f1e94b06e7218f#rd