从CMM的角度来看Extreme Programming

charles_hhb 2002-06-29 06:23:41
From www.chinaxp.org

Extreme Programming 论坛 / 从CMM的角度来看XP
charles 2002.06.22, 0个回复, 32次浏览
节选和翻译自Mark C Paulk的 Extreme programming from CMM perspetive
首先看看CMM的要求

Level2 ------------ Repeatable
Requirment Management
To establish a common understanding between teh customer and the software of the
customer's requirement that will be addressed by the software project.
目标:1.System requirements allocated to software are controlled to establish a
baseline for software enigneering and management use.
2.Software plans,products and activities are kept consistent with the system
requirment allocated to software

Software project planning
To establish reasonable plans for performing the software engineering and for managing
the software project.
目标:1.开发周期的预算(时间和人力和资源)被记录猖用来做计划和track项目开服
2.项目开发的活动和承诺都被被记录和被预先计划
3.所有的相关人员都能够对自己的开服计划和活动了解和做出承诺

Software Project Trackign and Oversight
能过了解开发的进度和对延迟的项目进行有效的调整
目标:1.开发进度被监控track
2.如果发现开发进度和原来计划的延迟,能够采取有玄的行动来干预
     3.开发进度的改变需要被所有人同意和认可

Software Subcontract Managment
项目外包的管理
Software Quality Assurance
能够给管理层提供能见度对软件质量的软件开发流程
  目标:1.QA被预先计划
     2.软件开发的标准,过程和需求能被可观的检查
     3.开发人员能了解QA的计划和结果
     4.QA和developmen之间的矛盾能由管理层来协调
Software Configuration Management
能过建立和维护一个统一的开发环境

Level3 ------------ Defined
Organization Process Focus
企业内部能够建立有效的责任机制来不断改进开发的流程和能力
  目标:1.开发流程的建立和改进能在整个企业内部得到协调
     2.开发流程的缺点能够被发现
     3.能进行企业级的流程开发和改进
Organization process Definition
能够发展和维护各种已有有效的软件流程开发方法,并能把这些方法用在各个不同的projects中,
并把这些方法作为公司的一种长期的积累并形成适合自己的特色
  目标:1.发展和维护一个标准的开发流程
     2.开发流程的资料被整理和发布给所有的开发人员
Trainning programm
不断提高和更新人员的知识和素质

Integrated Software Management
能够裁减和利用公司已有的文档,方法,并把它们利用和整合到开发流程中去.
目标:1.项目的开发流程是过对公司的标准流程进行改进调整
2.项目是利用这些调整后的流程来计划和管理

Software Product Engieering
能够统一持续的利用标准或改进后的流程来管理项目开发

Intergroup Coordination
建立一种有效的机制让各个不同的开发队伍和部门能积极的交流和参与开发从而能迅速有效的法满
足客户的要求
目标:1.用户需求因盖被所有队伍了解和同意
2.各个group能够互相了解和承诺
3.工程管理部分能够确定,跟踪和解决不同group之间的问题

Peer Reivews
尽可能早和有效的消灭bugs.需要让所有人对产品和可能出现的问题又从分的了解

Level 4 ----------- Managed
Quantitative Process Management
能够量化的管理项目开发。项目开发的效率应该能反映公司标准流程的玄果
目标:1.项目开发管理能够量化的计划
2.项目开发的进度和效率能够被量化的控制.如开发人数,小时数,完成进度等
3.流程的效率和能力是能被量化的

Software Quality Management
开发队伍能了解如何量化的保证产品质量并取得这样的结果
目标:1.软件产品的质量管理是被预先计划的
2.测量方法和手段是被预先定义和计划的
3.质量管理的进度是被预先计划的

Level5 ------------ Optimizing
Defect Prevention
能够确认错误产生的原因和防止其重复出现
目标:1.如何避免错误是被预先计划的
2.通常出现错误的原因应该被确认和避免

Technology Change Management
Process Change Management
目标:1.流程改进是被计划的
2.流程能被持续的改进

在了解和CMM的要求后,再来看看XP(Extreme Programming). XP主要包含了12个方法:
1. Planning game
迅速的确定开发的范围,优先级别核技术难度,由用户来确认那些是迫切需要的功能,同时开发人员对
这些功能的Story进行估计并记录下来
3. Metaphor
让每个开发人员都知道整个系统是如何运行的
4. Simple Design
使用最简单的设计
5. Testing
Unit test first and run unit test all the tinme
6. Refactoring
Refacor all the time
7. Pari programming
所有Code两个人一起写
8. Collective ownership
9. Continuous integration
每个任务完成都要做Integration test
10.40小时工作周
11.On-site cuostomer
12.Coding Standards

XP的价值应该被其他任何软件项目才采用,即使是完全不同的环境。XP中关于沟通和简单设计的原则应
该被所有使用CMM德公司和组织采用。

CMM和XP是从不同的角度和高度来看软件开发。CMM是从公司组织的角度来看软件开发。XP则是从开发队
伍的高度来看软件开发。XP不涉及公司组织的管理。在公司组织的高度来看,XP是建立在假设公司的有
开明的管理和适当的公司架构的情况下。

XP是一个完善的displined的流程。XP和CMM可以看作是互补的。CMM说了一个软件公司需要做到什么,
但没有说怎么做。而XP则包含了一系列好的方法来说明如合作。因此XP是符合CMM的需求和目标的,即
使不是完全吻合。

在Level 2, Requirements Management相对XP中是User stories,on-site coustomer和continuous
integration.Software Project Planning则是planning game和small release.XP的planning规划策略
包含一个谚语:如果你不Plan得好,就多点而plan吧

Software project Tracking&oversite在XP重是透明的开发进度表和程序员的对每个user story的承
诺。在XP中的承诺为用户和程序员和Team自己都设立了一个清晰的目标。而XP中所强调的40小时工作周
则是CMM没有考虑的,但这确实是一个管理层通常要考虑的问题,而40小时工作周则被认为是一个最好
的练习。另外XP要求的开发的工作环境也是CMM所没有涉及的。XP中没有subcontract managmeent,在
XP的环境中也不可能有

在XP中没有一个对立的QA team.但是在XP强调测试的文化和环境下,Pair programming, coding
standards都完成了通常由QA team的责任。XP中策是压力来自peer pressure(伙伴的压力)。但是如
果采用CMM-based的QA体系,更能够客观的确认用户需求和标准得到执行。

Software Configuration Management在XP种对应的是collective ownership,small release and
continuous integration.虽然在XP中没有明确的针对configuration management,但XP的这些方法都隐
含和这些管理。Collective ownership在大规模的环境下可能会有问题,因为在大规模的环境中,可能
需要更正规的沟通方式但这种正规也可能导致SCM失败

在Level 3, Organization Process foucs在XP中更多的是针对Team level process focus。XP更多针
对软件开发流程而不是公司的架构组织问题。而Organization Process Definition和training则可以
利用众多的网站,文章和讨论部分的解决。因此,公司的管理经验的管理也就没有了

Software product engineering在XP中得到很好的解决,例如metaphor,simple
design,refactoring,coding standards,unit test,funcitonal test。XP中较少的设计文档肯能在很
多环境中未成为一个问题。在一些环境中,好的设计是非常关键的。没有足够的设计文档可能会对对系
统改进有负面的影响

Intergroup coordination在XP中则是通过on-stie customer和pair programming来实现。XP对
communication沟通的重视不单单是利于不同group只见的了解,甚至是利于产品整合和流程改进。

Peer Reviews在XP中式pair programming。Pair proramming 可能比peer reivews更有效。但是缺乏结
构设计可能会影响效率

leve4和level5的要求在XP中美有很多针对的方法如果从严格个统计学角度来说。但是像Defect
Prevention可以通过XP中的samll release和快速的反馈实现。

在CMM的很多关键要领域中,XP是没有针对的。XP无法生存如果没有管理层和和公司结构的支持。

公平的说,XP是针对技术的,而CMM针对管理。但显然的,两者都强调“公司文化”

结论:
在任何环境中,大部分的XP的方法应该被仔细的采用。当然所有的有效其他方法也因盖被采用。

XP从系统工程的角度来看软件开发,就像CMM总系统工程的角度来看公司的流程改进。希望改进刘成的
公司可以从两个方法中获得idea去改进公司的流程

软件CMM主要针对管理问题。而XP主要针对小规模的team。是否可以把XP用在
关键性的应用一直是有争议的。缺少文档对很多有经验的IT人员来说是很危险的。

改用XP和风险是它的练习所需要的环境不能相应的配合。

Extreem programming from CMM's perspetive


...全文
108 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

1,265

社区成员

发帖
与我相关
我的任务
社区描述
软件工程/管理 管理版
社区管理员
  • 研发管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧