[转贴]:软件过程改进:经验和教训
上一篇 / 下一篇 2007-02-09 00:00:00 / 个人分类:经验分享
4pZw2_-r;tG,l$g0 软件过程改进:经验和教训
前言:ITPUB个人空间#P.o7iKAqLs
因为公司并不从事外包服务,所以CMM对其没有生存的压力。高层也只是想通过一个可行的过程管理,一个提高软件质量,保证项目进度,有效控制项目成本。所以公司并不是要去过CMM等级,而是要一个有效的过程管理。ITPUB个人空间S(?q8\(T6K-pn7F
,GBCb#m5w#z K0
所以我此后开始以‘有效、简易、可行、低成本’为标准探索起适合起我们公司的过程改进的最佳实际。现在,我很高兴可以在文中和大家探讨我公司在过程改进过程中的一些经验和教训,也许你会从中得到一些启发,开发出适合你自己的最佳实际。ITPUB个人空间!d"\"I d1W\z[J
rQlPBm7i)pOG3E0
经验和教训:
5Ey~,Pyi7Ln)qb0
1x'?5j#K_:@D1Hv0
在中小型的软件企业当中,软件过程的改进更容易半途而废
Z1XC1jAA0
$C5n%p l\'L$g.LnB0
中小企业,特别是开发人员小于40个人的企业。一般不会有专门的人员可以组建‘软件过程组’,也很少会有专职的质量工程师和配置工程师。在进行过程改进
中,对于这些职位基本上都是由原来的人员兼职完成。这无形中增加了人员的工作量。一旦过程定义的不是太完善,或是在试点中不是太成功。很容易让人去怀疑过
程改进本身的可行性。同时中小企业接到的项目也比较小,成本压力是比较大的,而提高质量是必须以牺牲成本为代价的。所以有时从成本的角度出发,可能在高层
管理人员的心目中,对于过程改进也是有成本的顾虑的,一方面希望,可以通过过程改进提供质量,并为企业的发展提供基础,另一方面,也面临成本压力,若过程
是改进了,可是成本也大幅度提高了,则本事企业的生存就成问题了。
i(h m%Uxl&[a0
ITPUB个人空间h@Q w3m
而在大的软件企业,一般可以有专职的人员进行质量保证和过程改进。同时由于大企业拿到的项目一般也比较大,项目组就比较大,客户要求也高。这也为过程改进增加了必要性。
P L
Et9B vX0
iH0v
h ?W2G"uw5|0
持续的改进很重要,但频繁的改进会不利于过程的执行
qEZ DMu0
ITPUB个人空间e"}_;OW8fM
CMM中定义了每个KPA的目标和一系列的KP,企业必须根据自己的实际情况去定义实现每个KPA的工作流程。但并不是每个企业都很幸运,在一开始就可以
定义一个自己企业的最佳实践。一般的情况是,首先定义一个工作流程,并在一个试点项目中实行,而后对试点项目进行总结,并对此工作流程进行改进。再在其他
项目或整个企业中推广,也许在推广的过程中,又遇到问题,再对流程进行修改。整个的过程定义是螺旋上升的进行。这本身没有问题,但有时当遇到问题时,不要
太急于就改流程,或加流程的分支。而要仔细分析后,慎重的进行。太频繁的改动,给人一种不严肃的影响,似乎流程可以随意的改动和定义。最后,没人去遵守流
程了。 同时,根据不同的项目若定义了太多了流程分支,最后,实际人员也不知道要去实行哪一套了。
/h&\6F"Rv]
`0
_(i:T2u%W:K8x,B8jN0
总之,频繁改动的规矩,让人无所适从。ITPUB个人空间#c!oMwX%O,jnK6J
S[Z8?
Qi{k,`x&oe0
过程制定后,一定要有选择的进行试点。一个进度和成本宽余的项目和一群对过程改进 有热情的人是保证试点成功的组合ITPUB个人空间0Q,vK:d-ejMf3R
+]D+cdU/VO{0
定义好一套流程,最好的验证方式就是找个真实的项目去‘跑’一遍。并注意收集应用流程前后的各种情况的对比。由于在项目的进行中,还要试验流程,所以需要
更多的培训时间,让项目组的成员了解熟悉新的流程。需要更多的评审,不但是评审项目本身,还要评审过程和进行必要的度量。ITPUB个人空间;lm0y2V%e7q
^$s5~"R1H]o*m0
一群对于过程改进有热情的组员是试点成功的保证。他们要有热情去学习新的流程,要有热情去沟通在执行新流程当中遇到的问题,他们要有热情去克服进行中的困
难,而不是抱怨,他们要有热情去总结和改进新的流程,使它更完善,最总要的是,他们要有热情作为新流程的传播者,把流程象星星之火一样在组织中开展。
W%Vt0h0|`+Q4O
G0
r\ OI
D0
ITPUB个人空间iVpu7r
一个坚决支持过程改进的领导是必不可少的ITPUB个人空间#q"@t5n/SS{(QA*n5J
Ls
\5I
b1N?,t$a|2M0
象任何其他的变革一样,一个坚决支持变革的领导是不可缺少的。在一切顺利,大家赞成的时候,也许感觉不到什么。但当变革遇到阻力,遭受暂时的困难时,这种坚决的支持就是变革是否可以继续进行的保证。
#B5W%qpk1t'k0
ITPUB个人空间@"UFZk2z&Yg
因此,在过程改进的初期,于企业的高层进行沟通,让其了解到过程改进的必要性和预期的前景是十分必要的。同时最好在过程改进的开始阶段,一个誓师大会的举
行也是鼓舞士气的上佳方法。在过程改进的过程中也要注意及时的通报进行的过程,取得的成果。当然在遇到困难,或需要高层支持时,更要及时开口。(这对于技
术人员主持的过程改进尤为重要。)ITPUB个人空间X,j*m/@2Dx
ITPUB个人空间 ?,h[7B&f^p A#~f
要有选择的对于KPA进行改进,不一定是最薄弱的KPA,最重要是选择你可以控制的KPA
7G8`?};i"T%r4Q0
ITPUB个人空间E)C7KG[U\P.W
关于这点其实并不涉及CMM的技术问题,而是一个管理问题。这里有个现实的例子,一家企业的管理有点乱,高层希望可以通过CMM的过程改进,来提高企业的
产品质量,理顺工作的流程。于是任命了一个开发组的主管(代称A),来主持这个过程改进。结果A在选择KPA的时候,认为首先应该对于实行需求管理和变更
管理。因为开发组的同事们都抱怨,需求经常改变,造成的返工很多,在最终期限的压力下他们不得不经常加班。这个本事没有问题,可是需求管理和变革管理的发
起基本是在系统分析组,而这个组在行政上不归他管。公司也没有因为要进行过程改进而把他提高到一个高的级别(即使是暂时的)。ITPUB个人空间5vMC4M#O@ A
ITPUB个人空间8eDCC(s|`Xe
ITPUB个人空间Qk1b
w'y)O H$U
现在问题来了,虽然他花费了心思去设计的流程。并对于需求部门和相关部门组织了培训。可是在进行试点的时候,他发现,当他去评审需求分析组的工作时,别人
很反感。而且对于有些需求的变革也推诿到销售人员、客户等因素。同时,流程中只要有一点不太合理的地方,就抱怨的很厉害。最后试点结束,他自己很累,试点
的结果也不好,改善的目标没有实现。整个过程的改进处于一种微妙的处境。最后,试点的流程并没有推广。其他的KPA过程改进也不再进行了,随着时间的推
移,过程改进在企业中也不在有人提起。
{Q? u-@!uvp^0
ITPUB个人空间7uv/JF$pB#X%hz;qj"l
知道这位开发组的主管错在哪里吗?他选错了KPA,他选了一个不属于自己管辖范围的KPA作为起点。他跑到一个不属于他的地方开始指手画脚,他是个不受欢
迎的人。注定了,在一开始他就面对着对立和抱怨。这样的团队是无法经受一点点挫折和失败的。若他一开始选择配置管理,这个至于他管理范围的KPA,他可以
利用手中的权利、资源和威信,组织试点。可能情况就好的多。又或者企业的高层给这个开发主管一个虚职,比如过程改进项目组组长,并任命其他组的组长为过程
改进项目组成员。情况也会完全不同。
+T-H"t
{"VL8y0
B]o+pB1JB0
对于过程的改进要有度量
v4u%F}%w9Y;wQ0
}*{0@?`U
pT0
不必一开始就是数字化的,也可以是感性的体会。但要把这些也要收集起来。一个有力的对比可以堵住反对者的嘴。不要因为度量管理是CMM4级的内容就在实施低级别的CMM时放弃度量。一套流程需要一系列度量的数据来说明它改进了多少。而度量的数据将会为它赢得预算和支持。ITPUB个人空间'{N(w{)Y
~!l*H
ITPUB个人空间"s1v;? [*[6nJ
bdF+@
当然度量作为CMM4级的内容,也是有一定的道理的。收集一套完备、准确的度量是需要大量人力的。但是在一开始,也许我们可以借助一些好的工具达到同样的效果,而不必花费大量的时间和精力。ITPUB个人空间DK9p9KuX:} C
L
C/i)e:jr[m0
在我就自己做过一个简易的BUG管理工具,并和数据库相连。在项目结束时我可以轻易的了解项目中有多少BUG、BUG分布如何,BUG的原因统计等度量数据。我只是用了几个SQL语句就掌握了我需要的度量。ITPUB个人空间5VQ.S*IQ:Ko!G
ITPUB个人空间&B
r\4uRNJ{
另一个例子是微软推出的PROJECT
SERVER(注:不是广告)。以前项目经理要了解实际的项目进度并不是件轻松的事,项目经理要去问组员××模块,你开发的如何啦?然后收集好所有组员的
进度,填写自己的项目进度。由于这相当的花费时间,过去进度基本上一周汇报一次。 可是有了PROJECT
SERVER你只要按个‘请求进度’的按钮,组员直接通过WEB填写与他相关的进度就可以了。项目经理就可以得到整个项目的进度了。
:hbX!T si3O0
,O1_tOfv)Q@1\0
不必拘泥于CMM的级别ITPUB个人空间A/K
cY7d!]
?3N%P"M4s0jE wC0
这一点在CMMI中已经有体现了,CMMI不再只有一种级别的模式,还增加了持续改进的模式。即,可以按过程域进行改进,而不是过去按级别进行改进。ITPUB个人空间x9]J5c?7X
N-O
Z
~1q0]"{1|0
比如,CMM5级的技术革新管理。其实,在现在新技术层出不穷的当今,一个企业不会因为还没到CMM5级就不需要技术革新管理。换一种数据库,换一个开发工具,甚至是换一种开发过程等都是一直发生的。若需要完全可以把这个KPA先实施改进。ITPUB个人空间PK6G
P
m${&d
ITPUB个人空间W,Z)^-DMK
不是每个人都喜欢改进的过程,特别对于要增加其工作量的过程。有时必须牺牲一些过程的严谨性,去简化过程。毕竟有过程比没过程好。
D,ZJP$n0
3E:mL;eX+g2j!?0
也许在看到了这条时很多人会不以为然,说:这样做肯定过不了CMM评审。对,这样确实肯定过不了CMM级别的评审,可是只要可以对于过程有改进,对于软件
质量有提高,就可以了。对于中小软件企业,一个有效的(可以满足高层对于过程控制的期望),简易的(是所有基层工作人员可以理解的,无须大量培训的),可
行的(不会大量增加基层人员的工作量,不会影响开发速度和效率的。名言是:‘我不要那种原先2天可以完成的项目,因为应用了过程,现在要5天才可以完成的
所谓的过程’。)和低成本的(公司一年才赚多少,我可不想把钱全用来采购工具软件)过程才是最重要的。ITPUB个人空间 x:J(o!oK8B?6T
ITPUB个人空间JF8E cK WN
G
选择合适的工具,至关重要。好的工具不但使过程更流畅,也大大减少由于过程的引进而引入的工作量。
u1G||5B0
3?)l$Y3sU];|2[0
[N3N6hz(r2W/?0
关于这点其实在前面介绍PROJECT SERVER时已经有介绍。这里只是再作为一个观点再提一下。不过虽然工具的使用可以提高效率,不过这方面的工具都不便宜。是否引进,何时引进确实对于中小型的软件企业要好好考虑。ITPUB个人空间Iymlv6~Q#l;J
ITPUB个人空间-g%PKXkr
在这里列一些工具供大家参考:
A-v{"T)}:C6m0
F-jb.E7w;RV0
计划工具:Microsoft ProjectITPUB个人空间!e"{g!}UbPa
`
B#qO#YX-j b;A+|A0
项目监督和跟踪:Microsoft Project server 2003,SharePointITPUB个人空间f$d/H B4ir4Vt
ITPUB个人空间6jYJ)h]"f@
需求管理:Rational RequisitePro, Borland CaliberRM, SYSBASE POWERDESIGN 11
1{*P^U
z `'T0
ITPUB个人空间+rIFw2T
变更管理:Rational ClearQuestITPUB个人空间fLz/J1BK"}*T
ITPUB个人空间
Kby y!Vjr'c8n
Bug跟踪工具:Rational ClearQuest
nrD |!et0V I-W0