热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

[转]需求变更的烦恼

客户今天要求变更需求,加某某功能,“这个应该不难吧,某某公司的产品都有这个功能的。”客户的需求一直在变,烦恼。。。开始是需求
客户今天要求变更需求,加某某功能,“这个应该不难吧,某某公司的产品都有这个功能的。”客户的需求一直在变,烦恼。。。

 

开始是需求不明确,客户都不知道要做成什么样,只有一个大概的粗略的描述。等到大楼盖好了,给客户,却发现大楼应该是这样那样的。。。客户方和开发方在一起( WorkShop) 还好,如果分开在两地就更糟糕。。。

 

永远不变的就是变化,这个大家都知道,但关键是如何合理的控制需求变更?

 

我以前做的上百人一年多一个的大项目,完全按照CMMI Level3规范来控制需求变更的。起初有双方签字的经过评审的需求基线,以后需求变更的时候有需求变更委员会(CCB)或专门负责的角色(通常由客户方需求人员来收集和评估最初需求并提交给QA,QA牵头需求变更流程)来处理需求变更,具体做法是:

1.         先是客户或项目组成员提出的需求申请,填写《变更申请单》并提交给项目经理。

2.         项目经理组织项目相关人员对需求变更进行评估和调研,然后组织 需求变更评审。

3.         如果同意变更则由CCB授权配置管理员检出配置项由项目组成员对相关的文档(用户需求说明书、需求规格说明书)进行修改,修改后评审(同时 填写《变更管理记录表》)通过后由高层经理审批,然后提交用户确认,最后纳入配置库,更新《需求追踪矩阵》,确保需求和工作产品的一致性;

4.         如果不同意变 更,则项目经理、部门经理与客户共同协商,协商后同意变更,则对相关的文档进行修改。协商后依然不统一,则需求变更结束。

5.         所有的需求变更都需要总经理理进 行审批。需求变更的影响:利用《需求跟踪矩阵》对变更影响进行评估;估计对项目参数的影响规模、工作量、进度影响;超出阀值(整个项目进度的10%- 15%,里程碑30%)的,应提交高层评审/批准。

6.         妥善保存变更产生的相关文档。

 


现在公司做的项目规范较小,完全按照
CMMI的规范来有点多余,所以我们基本上类似于敏捷开发的模式。敏捷编程是拥抱变化,持续重构和改进,迭代开发,频繁交付。在需求变更管理上我们还没有一套完整的合适的流程,具体做法是:

1.         客户提出新需求;

2.         开发人员或项目经理评估后答应了;

3.         继续开发,时间表按照重新评估后的进行;

4.         基本上很少拒绝客户;一方面是为了维护客户关系,另一方面对自己team的开发能力很自信; 结果是上头答应了客户,下头的只能加班加点赶工。 

 

另外还有一些控制需求的做法: 

1.         项目前期会首先快速开发一个产品原型(Prototype)给客户,有界面的先用visio画个界面,以验证业务规则、业务流程和大概GUI等。另外,产品原型也有助于进一步挖掘用户的需求。 

2.         会粗略的列出大体的需求并签字 

3.         频繁交付给客户,短周期的交付可工作的产品,以印证需求与实现是否一致,同时兼做客户教育工作。

 

问题是如果需求变更无休止,则需求变更几乎就不可控,项目开发也无休止。所以我觉得我们公司在需求管理上还缺乏:

1.         需求基线管理,经过评审的双方确认签字的需求基线。以后如果要超出或修改需求基线,则必须有专门的人员对此提出异议,由CCB审核后方可修改;

2.         专门的需求控制负责人。现在基本上是技术人员或是项目经理收到客户需求变更,然后自己评估下就答应了。缺乏专门的需求控制负责人,因而没有需求评审,没有一套专门的严格可控的需求变更流程。

3.         需求功能点列表的书面确认。现在签的只是非常粗略的大体需求,定性而没有定量,以后扯皮发生的可能性非常大;

4.         适 当时候应该拒绝客户的要求。虽然用户有众多的理由,比如他认为改动不大,竞争对手已经拥有该功能,或是新的业务需要,但如果评估后的结果是没有必要,或不 合理,或优先级不高,或风险大于必要,则坚定的拒绝。另外一种变通的方法是,根据优先级重要性有条件的答应,比如放在下一次版本之后。

5.    需求Scope的管理,不仅要明确做什么,而且要明确不做什么。什么是我们负责的,什么不是我们应该负责和提供的。 

另 外在需求变更管理中,和客户有效的沟通、协调和教育非常重要。说的好点,就是“要讲究沟通的艺术”,“多引导客户”;说得俗点,就是“摆平客户”。如果能 够对客户进行很好的客户教育,很多时候客户是可以理解开发过程中的困难,从而达到妥协或折中。比如客户理解了项目后期进度紧张,技术架构难以大改,就会在 资源、进度、功能上做一些折中的选择,比如把功能分主要功能先实现,次要功能后实现;核心业务保稳定,次要业务不能牺牲核心业务的稳定性等等。反之,如果 没有和客户有效的沟通、协调和教育,则会双方各执一词,搞业务的只讲业务、流程和功能,不考虑技术可行性,不考虑资源和时间表;搞技术的只讲技术,没有倾 听客户的正当的商业需求,不能满足客户利益的最大化,这样双方就很难达成双赢的结果。所以,有效的沟通是软件项目成功的关键。

 

客户今天要求变更需求,加某某功能,“这个应该不难吧,某某公司的产品都有这个功能的。”客户的需求一直在变,烦恼。。。

开始是需求不明确,客户都不知道要做成什么样,只有一个大概的粗略的描述。等到大楼盖好了,给客户,却发现大楼应该是这样那样的。。。客户方和开发方在一起( WorkShop) 还好,如果分开在两地就更糟糕。。。

永远不变的就是变化,这个大家都知道,但关键是如何合理的控制需求变更?

我以前做的上百人一年多一个的大项目,完全按照CMMI Level3规范来控制需求变更的。起初有双方签字的经过评审的需求基线,以后需求变更的时候有需求变更委员会(CCB)或专门负责的角色(通常由客户方需求人员来收集和评估最初需求并提交给QA,QA牵头需求变更流程)来处理需求变更,具体做法是:

1.         先是客户或项目组成员提出的需求申请,填写《变更申请单》并提交给项目经理。

2.         项目经理组织项目相关人员对需求变更进行评估和调研,然后组织 需求变更评审。

3.         如果同意变更则由CCB授权配置管理员检出配置项由项目组成员对相关的文档(用户需求说明书、需求规格说明书)进行修改,修改后评审(同时 填写《变更管理记录表》)通过后由高层经理审批,然后提交用户确认,最后纳入配置库,更新《需求追踪矩阵》,确保需求和工作产品的一致性;

4.         如果不同意变 更,则项目经理、部门经理与客户共同协商,协商后同意变更,则对相关的文档进行修改。协商后依然不统一,则需求变更结束。

5.         所有的需求变更都需要总经理理进 行审批。需求变更的影响:利用《需求跟踪矩阵》对变更影响进行评估;估计对项目参数的影响规模、工作量、进度影响;超出阀值(整个项目进度的10%- 15%,里程碑30%)的,应提交高层评审/批准。

6.         妥善保存变更产生的相关文档。


现在公司做的项目规范较小,完全按照
CMMI的规范来有点多余,所以我们基本上类似于敏捷开发的模式。敏捷编程是拥抱变化,持续重构和改进,迭代开发,频繁交付。在需求变更管理上我们还没有一套完整的合适的流程,具体做法是:

1.         客户提出新需求;

2.         开发人员或项目经理评估后答应了;

3.         继续开发,时间表按照重新评估后的进行;

4.         基本上很少拒绝客户;一方面是为了维护客户关系,另一方面对自己team的开发能力很自信; 结果是上头答应了客户,下头的只能加班加点赶工。

 

另外还有一些控制需求的做法:

1.         项目前期会首先快速开发一个产品原型(Prototype)给客户,有界面的先用visio画个界面,以验证业务规则、业务流程和大概GUI等。另外,产品原型也有助于进一步挖掘用户的需求。

2.         会粗略的列出大体的需求并签字

3.         频繁交付给客户,短周期的交付可工作的产品,以印证需求与实现是否一致,同时兼做客户教育工作。

 

问题是如果需求变更无休止,则需求变更几乎就不可控,项目开发也无休止。所以我觉得我们公司在需求管理上还缺乏:

1.         需求基线管理,经过评审的双方确认签字的需求基线。以后如果要超出或修改需求基线,则必须有专门的人员对此提出异议,由CCB审核后方可修改;

2.         专门的需求控制负责人。现在基本上是技术人员或是项目经理收到客户需求变更,然后自己评估下就答应了。缺乏专门的需求控制负责人,因而没有需求评审,没有一套专门的严格可控的需求变更流程。

3.         需求功能点列表的书面确认。现在签的只是非常粗略的大体需求,定性而没有定量,以后扯皮发生的可能性非常大;

4.         适 当时候应该拒绝客户的要求。虽然用户有众多的理由,比如他认为改动不大,竞争对手已经拥有该功能,或是新的业务需要,但如果评估后的结果是没有必要,或不 合理,或优先级不高,或风险大于必要,则坚定的拒绝。另外一种变通的方法是,根据优先级重要性有条件的答应,比如放在下一次版本之后。

5.    需求Scope的管理,不仅要明确做什么,而且要明确不做什么。什么是我们负责的,什么不是我们应该负责和提供的。 

另 外在需求变更管理中,和客户有效的沟通、协调和教育非常重要。说的好点,就是“要讲究沟通的艺术”,“多引导客户”;说得俗点,就是“摆平客户”。如果能 够对客户进行很好的客户教育,很多时候客户是可以理解开发过程中的困难,从而达到妥协或折中。比如客户理解了项目后期进度紧张,技术架构难以大改,就会在 资源、进度、功能上做一些折中的选择,比如把功能分主要功能先实现,次要功能后实现;核心业务保稳定,次要业务不能牺牲核心业务的稳定性等等。反之,如果 没有和客户有效的沟通、协调和教育,则会双方各执一词,搞业务的只讲业务、流程和功能,不考虑技术可行性,不考虑资源和时间表;搞技术的只讲技术,没有倾 听客户的正当的商业需求,不能满足客户利益的最大化,这样双方就很难达成双赢的结果。所以,有效的沟通是软件项目成功的关键。

转:https://www.cnblogs.com/xiongbo/articles/2062355.html



推荐阅读
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 阿里Treebased Deep Match(TDM) 学习笔记及技术发展回顾
    本文介绍了阿里Treebased Deep Match(TDM)的学习笔记,同时回顾了工业界技术发展的几代演进。从基于统计的启发式规则方法到基于内积模型的向量检索方法,再到引入复杂深度学习模型的下一代匹配技术。文章详细解释了基于统计的启发式规则方法和基于内积模型的向量检索方法的原理和应用,并介绍了TDM的背景和优势。最后,文章提到了向量距离和基于向量聚类的索引结构对于加速匹配效率的作用。本文对于理解TDM的学习过程和了解匹配技术的发展具有重要意义。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
author-avatar
淡淡很淡淡真淡
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有