一、什么是需求变更

需求变更,对软件开发需求的更变。是指在软件完成交付之前,客户提出的对软件的功能或非功能性的更改要求。

软件需求是整个软件项目的最关键的一个输入,软件的需求具有模糊性、不确定性、变化性和主观性的特点。软件需求变更会给项目带来巨大的风险,会导致项目的成本费用增加、开发周期延长、产品质量下降及团队工作效率下降等后果。因此,对于需求变更应该正确的对待,尽量将其负面影响降到最低。

二、需求变更产生的原因

1.软件可以随意更改的特性

软件相对于硬件最大的特点是可以随意更改,或者说更改的成本相对要小。软件在开发过程中,用户可以直接和软件设计者沟通,表达自己的需求。对于硬件设备,用户面对的是销售商,一般无法直接和设计或生产者沟通。

软件不是标准化产品,尤其对于TO B型软件来说,更是完全响应用户的需求。在软件开发的过程中会进行需求变更,软件发布以后还会进行版本迭代。虽然硬件产品,也可能进行版本的迭代,但周期一般都会比软件长很多。

2.用户表达不全面

用户表达不全面,不是怪罪用户为什么不把需求表达完善,而是对于需求调研,无论是用户访谈和可用性测试,还是问卷调查和数据分析,目的都是为了能更深入和全面的了解用户的需求。但由于用户不专业或表达不全面,会造成需求遗漏或对需求的理解不同,从而导致在开发的过程中出现需求变更。而用户无论是提出新需求还是需求变更,只要产品未交付,需求都有可能随时提出。

3.需求调研不充分,需求分析不深入

需求调研和需求分析,都是为了设计实现方案,通过产品功能来满足需求。当用户提出需求变更时,就说明了前期的需求调研不充分,没有全面挖掘用户的需求,或者是需求分析不深入,没有以更好的方式实现用户的需求。所以要认真对待需求调研和需求分析,只有打牢根基,才有可能做出相对完善的产品。只有前期工作充分,才有可能保持产品的开发节奏,使产品和项目顺利完成。

三、如何有效减少需求变更?

1.深入调研用户、场景和需求

在需求分析和产品设计阶段,要深入了解用户的典型特征和行为,考虑产品的不同使用场景。把自己当作用户,站在用户的角度考虑问题,明确我们是为哪些用户在什么场景下解决什么问题,产品是如何解决问题的。想清楚这些问题后,我们提出的需求才是更加靠谱的,能经得起推理和考验,更能被用户接受,也会减少需求变更的发生。

2.充分理解客户的需求

很多情况下,我们的需求是直接来自客户的。有时候客户并不清楚自己想要的是什么,在与客户沟通过程中,如果不能引导他们说出真实的想法或没有充分理解用户的需求和意图,那么开发出来的产品可能就不符合客户的预期,这也会导致需求变更,甚至延误产品的交付。

想要减少这种问题的发生,在沟通前,需要我们对接触的用户群体有一个清晰的认知。构建用户画像,通过调研与沟通的方式,了解目标群体的典型特征和群体行为。如年龄、地区、所属行业、使用的设备类型、使用产品的习惯等,完整了解目标群体的情况。

其次,要想清楚他们可能存在哪些需求,分析用户真实的诉求点,然后针对这些需求我们去与客户进行沟通,验证我们的想法是否正确,并且去了解用户其他的真实想法。

最后,在投入开发前,我们可以为客户提供产品的原型Demo进行体验,看是否满足他们的需求,能否帮助他们解决实际问题。客户在体验完产品之后,一般会提出自己的想法,我们可以根据客户的意见去做产品上的相应调整。这样在开发过程中以及产品交付后,才会发生更少的需求变更。

3.明确业务流程

产品设计的核心其实就是业务流程的设计。有一些业务流程是比较复杂的,涉及到的角色与流程比较多。比如电商的退换货流程,这里面可能会涉及买家、卖家、系统、客服、财务等多个角色,而且涉及到的环节也比较多。

对于这种复杂的业务流程,如果流程梳理的不清晰,没有把各种可能发生的情况和异常流程考虑周全,就很有可能会出现逻辑错误或者需求遗漏的问题。一旦我们忽略了这些问题,在产品的开发过程,无疑也会导致需求的变更。

首先要明确产品的核心业务流程,明确流程中有哪些角色、角色之间关系是什么、流程从哪开始、到哪结束、产生的数据流是怎样的,从而形成一个业务闭环。然后针对每一个流程节点去考虑所有可能会发生的情况,只有将业务流程考虑全面之后,才会减少需求变更。

4.与用户明确变更范围和变更方式

在开始之前和用户沟通好需求变更的范围和变更方式。如哪些种类的需求可以变更、哪些种类的需求需要通过合同约定、什么样的需求会影响开发周期、什么样的需求会增加开发成本等。提前和用户沟通清楚,可以让用户有一个合理的预期,避免在后期需求变更时产生矛盾。

四、总结

笔者认为,需求变更一方面可以优化产品功能,提高用户体验,另一方面又会增加开发成本,打击团队士气。所以要正确对待需求变更,通过前期深入调研需求、与用户充分沟通、明确细化业务流程、做好需求评估的方式来最大化减少需求变更。

远齐科技基于成熟的软件架构、互联网、物联网、大数据、人工智能等技术构建面向未来的集成开发平台系统。在自有集成开发平台基础上,基于最佳业务实践开发出丰富的软件功能模块、业务系统,为企业提供高效的定制化开发服务。

上一篇:用超多细节探讨 Apple 官网的设计哲学 下一篇:想要设计出好的APP界面,应该注意哪些细节?