概述

围绕项目需求变更频繁,如何做好有效的需求管理和规划,本文从背景、问题分析、解决措施、如何进行需求结构化管理?如何进行需求优先级管理?如何避免重要需求遗漏?几个方面进行了细致解答。全程干货。

背景

不管是项目型软件开发还是产品型软件开发,需求变更频繁都是影响研发效能的第一号因素,在2019年中国DevOps现状调查报告中也可以发现,超半数企业认为需求的频繁变更是阻碍软件按时交付的主要原因。解决或缓解需求变更频繁带来的影响,是势在必行的重要工作。

问题分析

由于每家企业的情况不同,包括客户合作方式、人员能力水平、研发流程等各方面的差异,同样是需求变更频繁,所体现出来的具体症状却有所不同,导致问题发生的根因也可能不同,所应采取的措施也需要根据实际情况来选择。根据我们的观察以及与企业交流的经验发现,一般都体现为如下几种情况,接下来我们结合这些情况的部分实例来分析:

  1. 第一种情况:需求杂乱、经常变更,难以管理;
  2. 第二种情况:领导或客户时不时地要把某些需求提前,打乱了开发计划;
  3. 第三种情况:做着做着发现有些需求遗漏了;

【第一种情况】软件项目前期结构清楚,开发到后期,需求变化多而细,如何管理,如何规划。困扰我们的是前期需求不明确、不完善,导致后期需改动,需求需要发生变更。而使用DevCloud的项目管理的支持不够。

我们发现出现这种情况,往往跟客户未能正确使用需求规划有一定关系,存在着需求层次划分不清晰、缺少规范机制等问题。例如,某客户规划一个用户登录功能,按照下图所示规划需求。用户会将其中管理员登录的Task放在第一个版本中发布,后期又增加了一个手机号登录的需求,设置成Task放在第二个版本中发布,这样一个Story里面存在多个不同版本(或迭代)发布的Task,不方便管理。由此我们可以将这个问题的根因定性为如何进行需求结构化管理的问题:

  1. 没有区分跟随项目进展而持续产生的碎片化需求和系统/产品持续完善的功能特性;
  2. 对DevCloud提供的Epic-Feature-Story的需求结构理解有误,未能正确使用;

【第二种情况】软件项目进行过程中,领导需要提拉需求,在敏捷研发模式中该如何去操作?

提拉需求的意思也就是要将某些需求的优先级提高,要求团队先实现它们,因而我们将此问题定性为需求优先级管理的问题。解决此问题,我们需要了解:

  • 为什么领导会要提拉需求?如果是合理的,那么我们就应该提升响应能力、优化工作安排流程,使得优先级调整对研发进展带来的影响最小化,且我们能够尽快地响应领导需要,先交付被提拉的需求;
  • 这种情况发生频率有多高?如果是经常发生,那就是一种常态,而且是一种不好的常态,那我们需要去思考是什么导致了这种常态发生,并考虑如何从流程、制度、协作模式或人员能力等方面去做调整,减少过程中提拉需求情况的发生;如果是偶尔发生,那就可以特事特办,为例外情况调整流程、制度反而会加重常态工作的负担,没有必要;
  • 需要提拉的需求有无共性特点?比如是否都跟某个客户有关,或者跟某个功能域(如退款)有关?如果能够找到共性,那我们就可以针对这些共性去思考针对性的解决方案。

【第三种情况】由于外界原因经常会临时增加一些紧急需求,并且这是目前常态

临时增加需求,首先是一个如何处理突发需求的问题;紧急需求,也就是说需要马上就做,而且是插队,那就不仅仅是紧急,肯定也是重要的需求,不然不需要插队先做,所以这还涉及到需求优先级管理的问题。但是当两种情况合在一起,我们需要将它定性为是重要需求遗漏的问题,反问一句就是 —— 为什么这些紧急重要的需求无法更早预见?同样的,我们需要了解:

  • 具体是哪些外界原因?这些原因是否有共性,有的话,那就针对性处理;
  • 增加的需求有无共性特点?有的话,可以针对性处理;
  • 临时增加有多临时?我们是否有提高或改善响应能力的空间,如果我们可以更快调整和响应,使得这些临时需求对我们产生不了什么影响,那么这个问题也就不再是问题了;
  • 既然是常态,为何我们的流程没有做出调整去应对?是调整过流程或工作方式,还是无法解决问题,还是说不知道该怎么调整流程或工作方式去适应?

解决措施

综上,前面几种参考情况经分析后得出了根因,基于这些根因,我们将所要解决的问题重新描述如下:

  1. 如何进行需求结构化管理?
  2. 如何进行需求优先级管理?
  3. 如何避免重要需求遗漏?

如何进行需求结构化管理?

首先,并不是说任何情况下都需要进行需求的结构化管理。只有在需求较多、且需求之间存在关联,而且即便是已经实现的需求也需要进行一定的管理、维护的情况下,我们才需要去思考需求结构化管理的问题,此时,我们需要使用DevCloud提供的Scrum项目模板,因为里面有Epic-Feature-Story的需求结构,以及需求规划功能可以辅助我们进行需求的结构化管理。那么我们应该以什么为脉络来建立这个结构呢?这就意味着,我们的需求结构化管理,需要以产品或系统的功能特性的脉络为依据。而软件项目管理所需要关注的版本、客户、模块等信息,则可以通过需求的不同属性甚至标签等方式来实现。

简单来说,可以通过如下三个步骤来完成:

  • 针对产品或系统建立DevCloud项目
  • 确立Epic-Feature-Story的需求结构
  • 对不同模块以及版本的管理,可以通过工作项的属性来进行管理

如何进行需求优先级管理?

需求优先级的管理,其实是为了帮助我们确定先做哪个需求后做哪个需求,从而可以最大化我们的回报、最小化我们的风险或投入。要做好优先级管理,或者更直接来说是优先级顺序管理,我们需要做到如下几件事情:

  1. 确定优先级模型:需要考虑的因素以及因素的综合判断原则,比如Kano模型;
  2. 排定需求优先级顺序:因素的具体量化和排序标准,例如成本收益法是按照收入还是按利润的多少来排序;
  3. 调整需求优先级顺序;
  4. 改进优先级模型:根据反馈调整模型或模型的落地实施细节,以提升效果;

如何避免重要需求遗漏?

根据重要需求遗漏的事前、事中、事后的不同时间点,我们可以采取不同的措施。参照八二原则,我们需要确保常态问题有对应的处理方式,软件项目成员按照既定方案进行处理即可,而特殊情况要有应急机制指导现场处理、事后再复盘总结。

  • 事中的处理:按照常规做法进行处理,或是特殊情况特殊处理,先解决眼下的问题;
  • 事后的处理:基于模型或思路进行复盘,并落实为新的常规做法或特殊情况处理方式;
  • 事前的处理:明确如何区分常规情况或特殊情况,并制定相应的处理方式或应急机制;

参考附录

相关文章

  1. 敏捷联盟网站上的Epic术语解释:https://www.agilealliance.org/glossary/epic
  2. 维基百科上的Kano模型词条:https://en.wikipedia.org/wiki/Kano_model

相关书籍

  1. Mike Cohn:《用户故事实战》
  2. 杰拉尔德·温伯格:《成为技术领导者》
  3. 邱昭良:《复盘+:把经验转化为能力》

软件项目需求变更频繁,如何做好有效的需求管理和规划相关推荐

  1. 项目积压需求项目计划_需求变更频繁,项目经理如何做好需求管理?

    项目实施过程中,项目经理常常面临一个重大挑战--需求变更.需求变更无处不在,市场条件变化.新业务出现.战略目标调整.客户需求修改.资源限制等,都会造成需求变更. 需求变更会影响项目的时间.成本和质量, ...

  2. 产品研发过程管理专题——软件项目范围变更流程与过程控制研究

    [摘 要]软件项目中,范围变更失控是导致软件失败的主要原因.分析了范围变更的主要原因,提出了范围变更控制的基本要素,建立了有效的范围变更控制流程,并且对范围管理的控制过程进行了分析,最后对软件项目范围 ...

  3. 软件项目范围变更流程与过程控制研究

    1 引言 近年来,IT产业以惊人的速度发展,从而使软件产业的地位在经济发达国家提到了空前的高度.虽然软件产业在国内外得到了迅速发展,但是软件项目实施效果却不容乐观.调查分析表明,大约70%的软件项目超 ...

  4. 【指标需求思考】如何做好指标类需求建设

    简介:大家一直所说的[需求]究竟有哪些?用户需求.业务需求.系统需求...... 但是今天我要给大家介绍一种我自认为一种别出心裁的需求![指标类需求]在庞大的需求体系里,一个完整的系统设计流程是非常必 ...

  5. 软件项目中的决策分析_软件工程中的决策管理

    软件项目中的决策分析 Every day we make a lot of decisions. I always wonder why, in so much companies, there is ...

  6. 软件项目中需求管理工作的重要性

    开发一个软件项目,如果采用瀑布模型(或改进型瀑布模型)的话,通常会包括以下几个开发阶段,即:需求分析.系统设计.系统编码.系统测试.系统交付(及后续维护).在项目管理过程域中,主要包括:项目规划.立项 ...

  7. 项目需求变更原因及处理

     需求变更的控制当然与项目管理范畴之外的纯技术因素息息相关,比如面向对象的分析.面向对象的设计.面向对象的编码方式等等.不论在项目变更控制中采取什么方法.策略,对于项目本身的变化一定要时时洞悉,处 ...

  8. 软件需求工程 高校教学平台 需求变更控制会规程

    点击查看 软件需求工程 高校教学平台 卷首语 文章目录 概述 目的 范围 参考文献 角色与职责 角色分配与职责 各成员联系方式 决策制定 指定决策过程规定 交流状态 重新协商原先约定 变更请求状态 开 ...

  9. 第二章软件项目需求管理

    一.学习目的与要求 目的:认识软件需求是一个项目的开端,是软件设计及实现的基础 要求: 了解软件需求的概念 理解需求开发的步骤和活动 初步具备编写需求规格说明书的能力 掌握需求管理的目标.原则和策略 ...

最新文章

  1. AngularJS ui-router (嵌套路由)
  2. javascript实现二叉搜索树
  3. Java内存模型的历史变迁
  4. java的默认_java默认包的使用
  5. Kafka 入门 and kafka+logstash 实战应用
  6. [SpringBoot2]原生组件注入_原生注解与Spring方式注入
  7. APUE第二版源码编译问题解决
  8. oracle ion tool,Ionic4 导航条组件 ion-toolbar - Ionic 帮助文档
  9. Hibernate二级缓存 --Hibernate框架
  10. 【强烈推荐】蒋勋细说《红楼梦》
  11. 随机森林模型及案例(Python)
  12. 微信背后的产品观---张小龙内部8小时演讲
  13. Android 矢量图动画(完结篇)
  14. String spilt()方法
  15. 《SysML精粹》学习记录--第十章
  16. DELL灵越笔记本插上耳机后,只有外放耳机无声音的解决方法。
  17. 使用互传APP实现Android手机投屏到windows电脑
  18. C#入门学习笔记(基于刘铁锰老师C#入门2014教学视频)【1】
  19. 字符串、字符长度计算
  20. 夜深模拟器不能连接 adb shell 解决方案

热门文章

  1. Geomagic Studio 2013 (64 bit)安装
  2. 谷歌添加扩展程序没有反应
  3. 火花幻境加深与亚马逊云科技的合作,为玩家创造更加美好的游戏体验
  4. 用于可靠的钙钛矿薄膜瞬时光致发光模拟的拟合程序
  5. Html网站导航图标
  6. amd python mkl_pip install“无效要求:'numpy1.13.1+mklcp36cp36mwin_amd64'”
  7. 基于SSM的客货运管理系统 JAVA MYSQL
  8. Ventoy多系统启动盘制作及虚拟机VMware配置使用
  9. 【Linux系统】第8节 Linux系统软件分类及安装
  10. server2012微软输入法切换_[WS2012]HOWTO:在 Windows Server 2012 中启用触摸键盘