论CMM与XP的价值对比(一)
上一篇 / 下一篇 2007-04-06 14:50:08 / 个人分类:软件工程
论CMM与XP的价值对比 (一)
;bbw+VE@M0xuanyan356@163.com51Testing软件测试网f3kT#n-V3g mp
一些对CMM和XP做过深入研究的人看到这个题目可能会嗤之以鼻——搞错没有?这一个度量的标准,一个是方法论,不是同一范畴,怎么能放在一起比较?51Testing软件测试网ZO;iO&Tf
的确,CMM仅指明了每个等级该做什么,并没有告诉人们如何去做,而XP则从方法论上告诉了人们如何去实践。两者不属于同一范畴,但同样对于软件开发而言,它们之间又有那么多的可比性,本文根据个人对两者的理解,谈下个人的观点。
,E!F O(@Vt;c0为了便于对CMM和XP不熟悉的朋友理解,在行文前先对两者做以简单介绍。51Testing软件测试网*gc0U7n_
关于CMM
2]!`"k D1[%q0CMM (能力成熟度模型)是英文Capability Maturity Model缩写。CMM的定义是:有关软件企业或组织的软件过程进程中各个发展阶段的定义、实现、质量控制和改善的模型化描述。
CMM根据软件开发过程能力成熟度共分5个等级,分别是初始级、可重复级、已定义级、已管理级和不断优化级。CMM5个等级共计18个关键过程域、52个目标、300多个关键实践。51Testing软件测试网$h'ox9J+_3|H{
CMM的核心思想是过程管理。从第二级开始,每个级等定义了相应的定义和规范。下图很好的表述了5个级别的联系。51Testing软件测试网Hn6U^3a{6y*h
o~6hy)D9W0CMM中18个关键过程域,分布在2至5级中:
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个关键过程域,主要的任务是为软件过程和软件产品建立一种可以理解的定量的方式。
+rfF&`(C5{fmD0即:定量过程管理(QPM)、软件质量管理(SQM)
O@WsF0第5级(优化级)有3个关键过程域,主要涉及的内容是软件组织和项目中如何实现持续不断的过程改进问题。
+C"n@ D-xNfl0即:缺陷预防(DP)、技术变更管理(TCM)、过程变更管理(PCM)51Testing软件测试网J/O uWUS8}
关于XP51Testing软件测试网9we SjTsx6a+B
XP(Extreme Programming)是一种敏捷软件工程方法,和传统的瀑布模型一样,XP也是一种软件开发模型,极限编程模型。
.h!JWhs6a9Xzu0B/K0XP共包含四个核心价值和十二个关键实践。分别是:51Testing软件测试网*X2a.Z v4@gvIo
+Z!vm7j6D*DU!k0
四个核心价值——
/u ^&?(MvI(m0沟通:项目中发现的问题往往是由于开发人员与设计人员、设计人员与客户之间的沟通不畅造成的,因此,在XP项目中没有沟通是不可能的。
3T
e6g+G7|d+R,j0简单:XP认为应该尽量保持代码的简单,只要它能工作就可以。Kent Beck指出与其实现一个复杂的的系统,不如设计一个能够满足目前需要的、简单的系统,因为你所考虑的情况可能永远都不会发生。51Testing软件测试网T%]6^}NJDk)Q
反馈:尽快获得用户的反馈,并且越详细越好,使得开发人员能够保证自己的成果符合用户的需要。51Testing软件测试网r|!~WHtT*[
勇气:这是最重要的核心价值。因为XP强调要"拥抱变化",因此对于用户的反馈,要勇于对自己的代码进行修改,丢掉坏的代码。
十二个关键实践——51Testing软件测试网 S#CUv1[D%F/WU
1. 有计划的开发(planning design)
XP要求要求根据项目进展和技术情况,确定下一版本的功能开发范围;
2. 简单设计( Simple Design )
XP要求代码的设计应该尽可能的简单,只要满足当前功能的要求即可;
%JHb{Fs03.小版本发行( Small Release )
以较小的增量经常向客户发行版本,然后根据用户反馈决定下一步的开发计划;
4.测试驱动开发( Test-driven )51Testing软件测试网mHNy6T(S-}
在编写代码前先编写测试内容,而后再进行编码,直至所有的测试项都得以通过;
5.代码重构( Code Refactoring )
7eN'\E1Q#ck%a0代码重构是指在不改变系统行为的前提下,重新调整、优化系统的内部结构以减少复杂性、消除冗余、增加软件灵活性和提高性能;
6.系统隐喻( System Metaphor )
通过隐喻来描述系统如何运作、新的功能以何种方式加入到系统。XP不需要事先进行详细的架构设计,而是在迭代周期中不断的细化架构;
7.成对编程( Pair Programming )51Testing软件测试网}f`
B(]'VbL,Br
XP认为在项目中采用成对编程比独自编程更加有效。成对编程是由两个开发人员在同一台电脑上共同编写代码,通常一个人负责写编码,而另一个负责检查代码的正确性与可读性;
8.每周40小时工作制( 40-hour Week )
.`:^qj F(g.I
v'\}2rU0XP要求项目团队人员每周工作时间不超过40小时,加班不得连续超过两周,否则会影响生产率;
9.持续集成( Continuous Integration )