2007年4月16日星期一

随便谈谈——rup、开发过程、cmm

原文:2002/7
修订:2004/2/19

这是以前在XPChina论坛上贴的一些旧文,后又贴在了UMLChina上。当时的公司刚做完CMM3不久,因为自己不但是CMM过程改进组和评估组的主要成员,同时也是一个一线的项目经理和开发成员 。软件开发者是痛苦的,所以他们总是梦想是有像“葵花宝典”一样的神奇功法可以拯救自己,比如说“规范的开发流程”,比如说CMM,但在无数次的尝试之后,我想,也许那不过是个silver bullet。最近一年多在开发中,逐渐使用像FDD和XP的一些实践,开始觉得,也许不提“方法”,那些来源于开发实践中的不那么宏伟的东西似乎更有效,像JUnit之类的东西。不过现在整理以前的旧文,也算是回顾一下当时的思路历程吧。

2002年在XPChina贴出之后,网友grantlee提出了一些质疑,而且《随便谈谈..》似乎意犹未尽,于是又贴了续文《随便再谈谈...》。还有一点需要说明,既然“随便谈谈”,看官需不必太苛刻。


XPChina帖子链接(http://xpchina.smiling.com/group/posts/view_forum.ecgi?group_id=9999&res_message_id=1101784)


现在开发软件的人员说到开发流程,基本上都是rup/xp,xp没使用过,不敢说,这里说一说我对rup的使用经验。

根据我的使用经验(1.5 years),rup并不是一种强方法论,更多的是包括了大量的关于软件开发的流程和设计指南,没有谁会直接使用rup的流程,实际上只有理解好rup的活动思想,自己剪裁、组织合适的流程,才可能使用比较有效,但这需要很长的学习曲线和昂贵的学习费用(包括OOAD/RUP,不是一个人而是一个团队),当然自学也是没有问题,如果本身有很多软件开发的经验。

所有我同Rational的人交谈的时候说,虽然RUP号称适合于小项目,但那是在忽略了学习周期和成本的前提下,也就是说,如果你的团队或组长很熟悉RUP,那么它当然适合小项目(可以有效地剪裁并向成员培训),否则在实际的项目中使用就要小心了。但无论怎样,都可以把它看作关于OOAD的设计指南和流程的一般性建议,就像XP的很多原则也可以适合于其它环境,不过话又说回来,软件开发经验的本来就是怎样,不一定非要属于某种方法。

关于软件流程和CMM

过去我觉得正规的软件企业应当有一套完整的开发过程,现在我更倾向于认为软件开发的最佳实践对项目更有价值,包括开发方法、管理的,如有效的计划、需求方法、同行评审、团队的面向对象的经验。主要我觉得国内软件企业不太可能建立真正有效的角色清晰的资源结构和成熟有效的过程框架,国内软件企业热衷于CMM而不太关注于其具体效果(我参与了我们公司CMM3的评估,评估小组成员);关注于纸质的规范,而不关注约定对质量的提高;盲目追求一套流程,而忽视流程是否真正有用。

作了这么长时间的过程改进和软件开发,我觉得对于国内的企业来说,xp或者其它最佳实践方法更容易给开发团队带来实际的价值,因为这些由一线经理和开发人员,CMM不过是高层管理的招牌,他们大部分人实际上不懂软件开发,或者没有参与一个完整的软件开发过程,谁又会期望他们给开发团队带来的是开发的利器。

grantlee:我也随便说说

XPChina:我也随便说说

1、RUP不是方法论;00才是方法论,RUP/XP只是工作流程罢了。
2、过程的改进不是一朝一夕的事情,流程也有一个制定的过程;在这个过程中应该是首先有流程,然后才是流程的逐渐实施。
3、不管采用什么方法,对于企业的目标是一定的:创造价值;所以使用什么方法还是和当前团队的能力相关,如果带领着一组清一色的学生你无论如何完成不了一个大的项目(当然你通过几年的培训另说了)。

随便再谈谈——rup、开发过程、cmm

UMLChina帖子链接(http://umlchina.smiling.com/group/posts/view_forum.ecgi?group_id=9986&res_message_id=1135234)

我不知道rup是不是不能叫方法论,但我想既有分析设计的方法,也不妨有流程的方法,不过也许你是对的,但我只想把我使用rup的一些感受同大家交流。

我同意grantlee的话“过程的改进不是一朝一夕的事情,流程也有一个制定的过程;在这个过程中应该是首先有流程,然后才是流程的逐渐实施。”,但我分为两个层面来说明一下,一是如何的循序渐进, 二是制定怎样一个流程来执行。

首先循序渐进的做法是没有问题的,开发的流程不可能一下就完善起来(永远也不会有没有机会改进的时候),但重要的是怎样的循序渐进,以什么样的目标的渐进?那国内的企业是以什么来作为改进的目标呢?我想可能主要不是质量目标,而是评估的目标吧,倒不是说企业领导者不愿意看到质量的改进,这里面有些问题:质量的改进并不像证书那样被大家认同,同样也就不被管理者认同。实际上没有几个管理者是真正关心质量和开发的生产率这些话题,他们渴望市场和媒体的认同,这必然会带来一些轻浮的做法和浅薄的目标:通过CMM评估,而且它的高层需要也是基于市场和同行的压力(你说鼎新都过二级了,联想怎能不过呢?),这样的改进能带来什么呢?可笑的是,CMM的宗旨是帮助企业评估它的过程能力或者叫开发成熟度,它不愿意被看作是一个标准或认证,所以它叫评估而不叫认证。当我们通过CMM3我仍然不知道我们的项目的控制范围有多大,测试覆盖率是多少;当我看到众多的国内软件开发企业在2001年接二连三的通过CMM评估时,我知道我们都在玩弄CMM。国外到CMM2极可能需要几年的时间,CMM2到CMM3需要1.5-2年的时间,而我们从一个连SCM/Baseline都没搞太明白的公司,用一年的时间通过了CMM3(实际时间更短,不敢说出来),这又是怎样的渐进呢?

其次说说RUP,当然CMM同RUP并没有多大的关系,但CMM3要求要求组织级的开发过程,项目根据组织级的开发过程进行剪裁来获得项目的开发过程。以前我不知道国内到底有什么成熟的流程,所谓的结构化实际上也是很模糊、不完整的概念,RUP因为具有了开发过程所需要的流程、指南、模版,这些都是CMM,也是软件开发过程所需要的元素。因此我们就通过基于RUP来定制自己的开发过程,但后来发觉使用RUP有些问题:

  1. RUP的活动太多,并且没有严格的活动界限,对于初学者来说很难理解那些活动应该取舍,项目经理在半年后仍然无法熟练地对RUP进行流程的重新组织。
  2. 虽然RUP声称不一定要依赖OOAD,但事实上RUP是离不开OOAD,它本来就是从Objective流程改进而来。但对于组织来说并不是所有的项目都适用于OO的。

但是总的来说,我还是认为RUP比较复杂,并且项目也不能花费太多的学习代价,所以我还是希望能够有更加容易理解、有效的流程。

对于人,我觉得虽然我们并不是实际用应届毕业生(指没有经验的)来开发,但实际上对于严格的流程来说,我们可以说不是训练有素的人员,所有也有人说国内的职业工程师太少,这时候也更需要贴近开发人员,容易在过程中改进的流程。

同时我也觉得CMM确实需要很多管理带来的成本,不是太大的软件企业是否值得付出代价(虽然有些企业是大型企业,但开发团队从整体上讲却是小企业),这时候注重项目成败的流程会更有价值。

没有评论: