每天进步一点点,用感恩的心做人!

论CMM与XP的价值对比(一)

上一篇 / 下一篇  2007-04-06 14:50:08 / 个人分类:软件工程

                              论CMM与XP的价值对比 (一)              

;bbw+VE@M0

      xuanyan356@163.com51Testing软件测试网f3kT#n-V3g mp

一些对CMMXP做过深入研究的人看到这个题目可能会嗤之以鼻——搞错没有?这一个度量的标准,一个是方法论,不是同一范畴,怎么能放在一起比较?51Testing软件测试网 ZO;iO&Tf

的确,CMM仅指明了每个等级该做什么,并没有告诉人们如何去做,而XP则从方法论上告诉了人们如何去实践。两者不属于同一范畴,但同样对于软件开发而言,它们之间又有那么多的可比性,本文根据个人对两者的理解,谈下个人的观点。

,E!FO(@Vt;c0

为了便于对CMMXP不熟悉的朋友理解,在行文前先对两者做以简单介绍。51Testing软件测试网*gc0U7n_

 51Testing软件测试网 FS0w,l[;P

关于CMM

2]!`"k D1[%q0

 

N"L7MM W;ms5^&_{0

CMM (能力成熟度模型)是英文Capability Maturity Model缩写。CMM的定义是:有关软件企业或组织的软件过程进程中各个发展阶段的定义、实现、质量控制和改善的模型化描述。51Testing软件测试网$@7th!Y6I

CMM根据软件开发过程能力成熟度共分5个等级,分别是初始级、可重复级、已定义级、已管理级和不断优化级。CMM5个等级共计18个关键过程域、52个目标、300多个关键实践。51Testing软件测试网$h'ox9J+_3|H{

CMM的核心思想是过程管理从第二级开始,每个级等定义了相应的定义和规范。下图很好的表述了5个级别的联系。51Testing软件测试网Hn6U^3a{6y*h

 

o~6hy)D9W0

CMM18个关键过程域,分布在25级中:
H!DV{j0
2(可重复级)6个关键过程域,主要涉及建立软件项目管理控制方面的内容。
51Testing软件测试网{3Z&T-P;Vh
即:需求管理(RM)、软件项目计划(SPP)、软件项目跟踪与监控(SPTO)、软件子合同管理(SSM)、软件质量保证(SQA)、软件配置管理
(SCM)51Testing软件测试网5s\8` q`$\f7Zi
3(定义级)7个关键过程域,主要涉及项目和组织的策略,使软件组织建立起对项目中的有效计划和管理过程的内部细节。
51Testing软件测试网imR.j C
即:组织过程焦点(OPF)、组织过程定义(OPD)、培训程序(TP)、集成软件管理(ISM)、软件产品工程(SPE)、组间协调(IC)、同级评审
(PR)
"y FaMF4P'{0
4(管理级)2个关键过程域,主要的任务是为软件过程和软件产品建立一种可以理解的定量的方式。

+r fF&`(C5{fmD0
即:定量过程管理(QPM)、软件质量管理
(SQM)
O@Ws F0
5(优化级)3个关键过程域,主要涉及的内容是软件组织和项目中如何实现持续不断的过程改进问题。

+C"n@D-xNfl0
即:缺陷预防(DP)、技术变更管理(TCM)、过程变更管理(PCM)51Testing软件测试网J/O u W U S8}

 51Testing软件测试网P4of5Ad#c9A'`r S

关于XP51Testing软件测试网9we SjT sx6a+B

 51Testing软件测试网q4|,z'lo

XPExtreme Programming)是一种敏捷软件工程方法,和传统的瀑布模型一样,XP也是一种软件开发模型,极限编程模型。

.h!JWhs6a9Xzu0B/K0

XP共包含四个核心价值和十二个关键实践。分别是:51Testing软件测试网*X2a.Z v4@gvIo

 

+Z!vm7j6D*DU!k0

四个核心价值——

/u ^&?(MvI(m0

 51Testing软件测试网'Qp }8Hs

沟通:项目中发现的问题往往是由于开发人员与设计人员、设计人员与客户之间的沟通不畅造成的,因此,在XP项目中没有沟通是不可能的。
3T e6g+G7|d+R,j0
简单:XP认为应该尽量保持代码的简单,只要它能工作就可以。Kent Beck指出与其实现一个复杂的的系统,不如设计一个能够满足目前需要的、简单的系统,因为你所考虑的情况可能永远都不会发生。
51Testing软件测试网T%]6^}NJDk)Q
反馈:尽快获得用户的反馈,并且越详细越好,使得开发人员能够保证自己的成果符合用户的需要。
51Testing软件测试网r|!~WHtT*[
勇气:这是最重要的核心价值。因为XP强调要"拥抱变化",因此对于用户的反馈,要勇于对自己的代码进行修改,丢掉坏的代码。

:{MQ7pl'?NK,@N0

 51Testing软件测试网3R1e Q_2^]

十二个关键实践——51Testing软件测试网 S#CUv1[D%F/WU

 51Testing软件测试网ltDls o(b5@?DC

1.    有计划的开发(planning design51Testing软件测试网e"o6c"py-_

XP要求要求根据项目进展和技术情况,确定下一版本的功能开发范围;

'b*t R4hM1nK{ D,n0

2.    简单设计( Simple Design )51Testing软件测试网:XD)W-W~1e4S

XP要求代码的设计应该尽可能的简单,只要满足当前功能的要求即可;
%JHb{Fs03
.小版本发行( Small Release )
51Testing软件测试网`&O6?g~+m\R:?[

以较小的增量经常向客户发行版本,然后根据用户反馈决定下一步的开发计划;

0['S*? ?"b0

4.测试驱动开发( Test-driven )51Testing软件测试网mHNy6T(S-}

在编写代码前先编写测试内容,而后再进行编码,直至所有的测试项都得以通过;

0TfIwHt"{0

5.代码重构( Code Refactoring )
7eN'\E1Q#ck%a0
代码重构是指在不改变系统行为的前提下,重新调整、优化系统的内部结构以减少复杂性、消除冗余、增加软件灵活性和提高性能;51Testing软件测试网9}sNL j

6.系统隐喻( System Metaphor )

pAG5uHy0

通过隐喻来描述系统如何运作、新的功能以何种方式加入到系统。XP不需要事先进行详细的架构设计,而是在迭代周期中不断的细化架构;51Testing软件测试网:NGs?|

7.成对编程( Pair Programming )51Testing软件测试网}f` B(]'VbL,Br
XP认为在项目中采用成对编程比独自编程更加有效。成对编程是由两个开发人员在同一台电脑上共同编写代码,通常一个人负责写编码,而另一个负责检查代码的正确性与可读性;

'~ t\rK0

8.每周40小时工作制( 40-hour Week )
.`:^ qj F(g.I v'\}2rU0
XP要求项目团队人员每周工作时间不超过40小时,加班不得连续超过两周,否则会影响生产率;

~6`&Gp4I0T0

9.持续集成( Continuous Integration )
b%w&| oG0XP
提倡在一天中集成系统多次,而且随着需求的改变,要不断的进行回归测试;

Gpnoz,fya&A\+H6`0

10.代码规范( Code Standards )
|H }9TdJ%V#|z0XP
强调通过指定严格的代码规范来进行沟通,尽可能减少不必要的文档;
51Testing软件测试网K[w#N0~rdl

11.现场客户( On-site Customer )51Testing软件测试网;WTgu1?$k3P
XP要求至少有一名实际的客户代表在整个项目开发周期在现场负责确定需求、回答团队问题以及编写功能验收测试;
51Testing软件测试网 d K*k*Hb,ey!CA1l

12 代码集体所有(Collectively Ownership51Testing软件测试网R0YH(Ri

代码公有,提高了代码的透明度,这就意味这每个人都可以在任何时候变更任何代码。51Testing软件测试网.uw^ t8t

 51Testing软件测试网 t&oMs `}8uy;U'i

CMMXP

dw{4Ei'U{%F0

 51Testing软件测试网] I4ahU q;W&D

上面介绍了一些CMMXP的常识知识,接下来该对两者做以对比分析了。

!iK/@-C;Q%b*[*JU0

首先,在适用范围上,CMM主要是面对重型项目(200人以上)的,XP主要是面对一些轻型项目(50人以下);51Testing软件测试网,^H`,~ hv [(F

其次,对于需求比较明确的,一般不会变化或者变化比较小的比较适合实施CMM,而对于一些软件需求不明确,需求变化难以控制的项目更适合采取敏捷开发(XP)方法;51Testing软件测试网#G!Lg"xR

再者,实施CMM需求各种复杂文档规范,而以XP为代表的敏捷开发则尽可能避免这些文档;51Testing软件测试网_,h&uEl-]Y3tuO

第四,CMM讲的是做什么,并没有告诉人们如何去做,而XP讲的是如何去做,是方法论;51Testing软件测试网Kp+A%Akj p

第五,实施CMM的企业采用的多是瀑布的开发模型,而采取XP开发方法则为迭代开发模型;

z*?7H&f#g&G&d0

……51Testing软件测试网a`3em[\$pQi

 51Testing软件测试网?4j~)l#IM]f


相关阅读:

TAG: 软件工程

引用 删除 kekia   /   2008-01-09 10:31:27
3ks
 

评分:0

我来说两句

Open Toolbar