项目管理中的过程之变更控制

  变更控制的目的并不是控制变更的发生,而是对变更进行管理,确保变更有序进行。对于软件开发项目来说,发生变更的环节比较多,因此变更控制显得格外重要。

  IT项目中引起变更的因素有两个:一是来自外部的变更要求,如客户要求修改工作范围和需求等;二是">开发过程内部的变更要求,如为解决测试中发现的一些错误而修改源码甚至设计。比较而言,最难处理的是来自外部的需求变更,因为IT项目需求变更的概率大,引发的工作量也大(特别是到项目的后期)。

  变更控制不能仅在过程中靠流程控制,有效的方法是在事前明确定义。事前控制的一种方法是在项目开始前明确定义,否则“变化”也无从谈起。工作范围(以前章节谈过);另一种方法是评审,特别是对需求进行评审,这往往是项目成败的关键。需求评审的目的不仅是“确认”,更重要的是找出不正确的地方并进行修改,使其尽量接近“真实”需求。另外,需求通过正式评审后应作为重要基线,从此之后即开始对需求变更进行控制。

  虽然可以事前定义好变更控制流程,但在各种压力下真正“控制”起来其实非常困难。下面给大家分析一个变更失控的项目案例:

  王先生刚出任项目经理,并承接了一个中型软件项目。上任时公司高层再三叮咛他一定要尊重客户,充分满足客户需求。项目开始比较顺利,但进入到后期,客户频繁的需求变更带来很多额外工作。王先生动员大家加班,保持了项目的正常进度,客户相当满意。

  但需求变更却越来越多。为了节省时间,客户的业务人员不再向王先生申请变更,而是直接找程序员商量。程序员疲于应付,往往直接改程序而不做任何记录,很多相关文档也忘记修改。很快王先生就发现:需求、设计和代码无法保持一致,甚至没有人能说清楚现在系统“到底改成什么样了”。版本管理也出现了混乱,很多人违反配置管理规定,直接在测试环境中修改和编译程序。但在进度压力下,他也只能佯装不知此事。但因频繁出现“改好的错误又重新出现”的问题,客户已经明确表示“失去了耐心”。

  而这还只是噩梦的开始。一个程序员未经许可擅自修改了核心模块,造成系统运行异常缓慢,大量应用程序超时退出。虽然最终花费了整整3天的时间解决了这个问题,但客户却投诉了,表示“无法容忍这种低下的项目管理水平”。更糟糕的是,因为担心系统中还隐含着其他类似的错误,客户高层对项目的质量也疑虑重重。

  随后发生的事情让王先生更加为难:客户的两个负责人对界面风格的看法不一致,并为此发生了激烈争执。王先生知道如果发表意见可能会得罪其中一方,于是保持了沉默。最终客户决定调整所有界面,王先生只好立刻动员大家抓紧时间修改。可后来当听说因修改界面而造成了项目一周的延误后,客户方原来发生争执的两人这次却非常一致,同时气愤地质问王先生:“为什么你不早点告诉我们要延期!早知这样才不会让你改呢!”王先生委屈极了,疑惑自己到底错在哪里了。

  从上面的案例中可以看到各种变更失控的现象和造成的后果,王先生主要犯了几个错误:

  (1) 没有明确的授权。

  事先应该明确客户方有权提出变更申请的人员和实施方有权受理变更的人员,并要控制双方人数。这样做才可以对变更有整体的控制。绝不能进行“私下交易”,而没有人能完整地知道到底改了些什么。另外,授权双方接口人的好处是可以屏蔽客户内部的矛盾,如果只有一个接口人,内部尚未达成一致时变更是无法提出来的。从实际经验看,授权可以显著减少变更,特别是那些因内部看法不同而导致的反复变更。

  (2) 对变更没有进行必要的审核。

  并不是所有的变更都要修改,也不是所有变更都要立刻修改,审核的目的就是为了决定是否需要修改和什么时候修改。比如案例中提到的界面风格问题,就可以先不修改,或者规划一下修改的时间待到以后进行优化。另外,对于核心模块的修改要严格审核把关,否则会引起全局问题,案例中提到的“擅自修改核心模块”造成的事故就是因为没有审核而造成的。

  (3) 对变更的影响没有评估。

  变更都是有代价的,应该评估一下变更的代价和对项目的影响,要让客户了解变更的后果,并与客户一起做判断。案例中客户最后的质问正是因为没有事前告诉客户变更的影响造成的。如果客户不知道你为变更付出的代价,对你的辛苦便难以体会。案例中客户刚开始对王先生加班处理变更相当满意,但只是对工作态度满意,后期当变更引发一系列问题时客户并没有感谢王先生的苦劳。

  (4) 应该让客户确认是否接受变更的代价。

  在评估代价并且与客户讨论的过程中,可以请客户一起做判断:“我可以修改,但您能接受后果吗?”。案例中如果王先生评估了修改界面的工作量并请客户确认,则有三种可能:客户预先接受延期这一后果,也就不会再质问王先生了;如果客户认为代价太大,则王先生就不必修改了;如果认为可以缩短延期时间,则王先生至少争取到了与客户协商的机会,让客户知道为此项目组需要付出加班的代价,吃个“明亏”。

  上述步骤完成后,要等客户确认变更再组织实施变更的相关工作。变更要按配置管理(读者可以查阅相关的资料)的规定执行,确保所有交付物的一致性和完整性。同时,对所有的变更要跟踪和验证,确保都按要求完成了。

  最后,要特别提醒的是:要在项目开始就对项目组和客户进行宣传和培训,让所有成员都理解变更控制的重要意义;在项目过程中要对变更控制的执行情况进行审计,发现违反规定的事件要严肃处理,否则过程很快就会失效。

  综上所述,变更控制的目的是管理变化。变更控制对项目成败有重要影响,事前要明确定义,事中要严格执行。实施变更之前有四个重要控制点:授权、审核、评估和确认;在实施过程要进行跟踪和验证,确保变更被正确执行。

时间: 2024-09-25 19:31:26

项目管理中的过程之变更控制的相关文章

《张成功项目管理记》一坚持执行整体变更控制流程不动摇

坚持执行整体变更控制流程不动摇 张成功项目管理记管理贵在坚持,张成功对此深有感触. 在项目的执行过程中,张成功始终坚持执行和项目建设方约定的需求变更控制流程(实际上就是项目整体变更控制流程的一个主要方面)不动摇(见图6- 9). 有一次,项目建设方项目经理郝127.tif枋非常着急地打电话给张成功,说他们副厅长有一个需求变更,要求张成功不要走整体变更控制就立即响应.张成功给郝127.tif枋做了不按"规矩"办事而随意变更弊远远大于利的解释无果后,言辞诚恳地打电话给该副厅长说明了理由.因

PLM在汽车零部件项目管理中的应用

在加入WTO以后,中国正在迅速成为世界制造业的中心.在经济全球化的压力下,中国的制造业企业面临更加激烈的市场竞争.我国制造业的利润已经进入微利时代,提升企业的核心竞争力-研发能力,已经成为企业的首要任务.产品研发的过程涉及到设计.制造.市场.销售以及客户服务等多个部门.产品研发中用到的数据包括需求分析.产品开发.产品设计.加工制造.服务支持等各种数据,以上数据信息在企业中都是分散管理,因而,项目团队成员获取信息困难,效率低下.产品生命周期管理系统(PLM)很好实现了各种数据的集成与整理.在项目管

Python中线程编程之threading模块的使用详解

  这篇文章主要介绍了Python中线程编程之threading模块的使用详解,由于GIL的存在,线程一直是Python编程中的焦点问题,需要的朋友可以参考下 threading.Thread Thread 是threading模块中最重要的类之一,可以使用它来创建线程.有两种方式来创建线程:一种是通过继承Thread类,重写它的run方法;另一种是创建一个threading.Thread对象,在它的初始化函数(__init__)中将可调用对象作为参数传入.下面分别举例说明.先来看看通过继承th

电信企业信息化项目中的需求风险和控制

在全球软件业高速发展的今天,软件项目的实施情况却不甚理想.据统计,约80%-90%信息化投资没有达到预期目标,80%的项目超期或超预算,40%的项目以失败告终,只有不足25%的项目达到预期的技术和业务目标.这种局面的出现是与软件项目本身所蕴含的诸多风险密切相关的,如技术风险.管理风险.需求风险等:而能够对需求风险进行有效控制则是决定整个项目成败的关键. 企业信息化项目中存在的主要需求风险 1.软件需求的定义和层次 什么是软件需求呢?关于这个概念有各种各样的定义,http://www.aliyun

如何使用Win8中自带的语音控制?

  或许我们已经习惯了在智能手机和平板电脑上使用语音控制来代替手动操作,但事实上我们也完全可以桌面电脑上使用语音来控制我们的系统.本期就将向大家介绍如何使用Win8中自带的语音控制来让工作变得简单. 设置Windows语音识别 首先我们需要找到Windows 8中的"Windows语音识别",你可以选择通过搜索,也可以在"所有应用"的"Windows轻松使用"中找到它.找到之后我们就可以点击进入了. 找到"Windows语音识别&quo

在C#中使用.NET SDK创建控制

创建|控制 在C#中使用.NET SDK创建控制作者: Norm Almond 下载示例工程 - 8 Kb 介绍在这篇教程中,我将使用.NET架构创建一个简单的时钟控制示例,这个控制是一个显示当前时间的时钟,我将指导读者实现秒针并显示钟点数.文章加亮处是创建这个控制的关键点,读者可以参考其中的代码.创建一个控制的最快的方法是从这里拷贝一个控制示例代码: ..\Program Files\NGWSSDK\Samples\QuickStart\winforms\samples\Cs\WritingC

Swift中的Access Control权限控制介绍

  这篇文章主要介绍了Swift中的Access Control权限控制介绍,本文讲解了private.internal.public三个关键字的使用,需要的朋友可以参考下 如果您之前没有接触过权限控制,先来听一个小故事: 小明是五道口工业学院的一个大一新生,最近他有点烦恼,因为同屋经常用他的热水壶,好像那是自己家的一样,可是碍于同学情面,又不好意思说.直到有一天,他和学姐小K吐槽. 学姐听了之后,说:大学集体生活里面,大部分东西都是默认室友可以共用的.如果你不想别人拿,我可以帮你做封印,只要打

多项目管理中如何高效管理资源?

随着社会经济的发展,企业经营的多样化,以及规模的巨大化,越来越多的项目导向型企业已经不仅仅运行一个项目,而是同时运行N个项目.如何同时对这些项目进行有效管理,提升多项目管理效益,是现代企业赢取竞争优势的有力手段. 相比单个项目管理,多项目管理要复杂的多,要促使企业内所有的项目都能够顺利实施,需要协调解决的难题非常多,既要处理好项目实施的优先顺序,也要处理好项目间的依赖和约束,更要做好项目间的沟通和协作,这其中,合理分配每个项目所需资源.避免资源冲突和浪费,成为了整个多项目管理中的难点. 资源是有

html-Html 中的table问题 如何控制列的宽度

问题描述 Html 中的table问题 如何控制列的宽度 代码如下: table width = 950 ?tr ? ?td width = 450/td ? ?td width = 50/td ? ?td width = 450/td ?tr table 为什么起不到应有的效果,这种代码的结果是3列基本一样宽(那这样不是超过了table本身的宽度么)..如果把中=50的一行去掉,这里会有另外一个问题(我的本意是中间一列空出来,左右2列写内容.)我在第1列里首先放入一个图像 该图像宽450,放进