首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 软件时空 > 软件相关 > 极限编程研究报告
【标  题】:极限编程研究报告
【关键字】:
【来  源】:http://blog.csdn.net/soaringsea/archive/2007/04/07/1555339.aspx

极限编程研究报告

极限编程研究报告

 

小组成员:X X   XXX  XXX

          XXX   XXX  X X

 

绪言

极限编程是九十年代兴起的一种敏捷的软件开发方法。现今它正逐渐得到软件开发人员的认可并且迅速发展起来。我们在了解软件开发领域的新兴概念(比如设计模式)的时候都可以看到它的身影。而且在程序员杂志和CSDN社区上也出现了越来越多介绍极限编程和极限编程实施的文章。这些都促使我们想要较为系统地了解这种新兴的软件开发方法——极限编程。

经过少数几位小组成员的提议和全体讨论之后,我们决定将极限编程作为“小组软件开发”这一课题的具体研究对象以完成我们小组的专题讨论任务。

在了解和研究极限编程这一过程中,我们发现它涵盖了软件开发过程中的方方面面,而且各方面之间又相互影响,相互支持。在有限的时间和精力下,我们不可能讨论极限编程的所有内容。加之,我们还缺少具体的开发实践来支持我们对极限编程的理解。因此,我们小组采取的研究方法是:在每位小组成员对极限编程都有一个初步了解的基础上,提出五个自己认为在极限编程中比较重要的观点或方法,然后对大家都比较认同的方面进行讨论以及与经典软件开发进行对比研究。经讨论后,我们小组对极限编程的研究集中在了以下几个方面:变化成本曲线、快速迭代、经过编程、测试、用户参与和轻量文档。本文下面将依次介绍极限编程中这几个较为重要的方面,并在最后说明极限编程的局限性和发展前景。

1 极限编程的基础

1.1 成本曲线的对比

变化的成本

时间

需求 分析 设计 实现 测试 生产

变化的成本

时间

经典理论变化成本曲线与极限编程变化成本本曲线的对比:

上图:经典理论变化成本曲线

下图:极限编程变化成本曲线

上图显示的是经典软件理论的变化成本曲线,它认为“解决一个软件中的问题的成本随时间的推移而以指数方式上升”。而下图显示的是极限编程理论认为的变化成本曲线。它认为应对变化所花费的成本可能并不一定如经典理论所说的那样会随着时间的推移急剧地增长,可能会呈现比较平缓的变化趋势。这是极限编程的理论基础,也是对传统观念的挑战。相对于传统的“避免变化”的软件设计和开发理念,极限编程对变化采取了积极应对的态度。这种“拥抱变化”的精神体现在极限编程的各个方面。

如果软件开发的变化成本曲线是指数上升方式的,那一切“拥抱变化”的开发实践都会成为空谈。因为我们无法承担变化带来的巨大的成本负担。但如果曲线的上升趋势比较平缓,即在后期引入变化的成本不是太大,那我们就有可能在软件开发初期不用考虑太多的变动因素,只需完成核心的功能模块,以减少初期阶段的成本和周期。既然变化是不可避免的,我们可以在后期开发中逐渐应对需求变动。变化带来的成本不是太大时,这种开发模式的总成本也不会太高。极限编程正是把这种增量编程方式发挥到了“极限”。

可以看到在极限编程的变化成本曲线中,当时间趋向无限大时,变化增加的成本有一个上限。极限编程正是建立在这一“极限”的基础之上的。

1.2 极限编程对“拥抱变化”的支持

极限编程的变化成本曲线的平缓性是建立在一系列的实践方法和软件技术之上的。极限编程采取了以下几方面措施来减少变化增加的成本:对象技术、简单设计原则、自动测试和开发人员不断改良设计的态度。

面向对象的软件开发本身就是一种高内聚低耦合的软件设计方法。因此利用对象技术可以控制变化的范围。修改一个类的内容不会影响到其它的类;可以通过继承和组合产生新类代替原来有问题的类。这些都降低了变化的危害。

简单设计原则几乎可以称为一切设计领域的金科玉律。简单的也是容易修改的。因此简单在一定程度上体现了灵活,也称为柔性。力求在满足要求的情况下用最简单的设计实现,可以减少修改时花费的代价。

自动测试不仅要发现软件的缺陷而且要保证软件的正确的。通过自动化测试可以保证对原有程序的修改不会带来其它方面的新问题。只要通过了构建的足够完善的原有测试用例,就可以放心地说软件是“正确的”。因此极限编程对测试的重视到了“极限”。

在软件开发过程中,开发人员的态度对开发进度和生产率有很大影响。在面对大量的反复的变动需求时,开发人员很容易产生挫折感,不愿意再去修改自己设计得已经很“完善”的程序。因此极限编程注重培养开发人员迎接变化的态度,这有助于提高修改原程序时的生产率。

2 极限编程的精髓

2.1 极限编程的迭代特点

极限编程的使用了迭代开发的思想并将其发挥到了极限。极限编程的迭代的最大特点就是小步快速。它的一个迭代期是非常之短,甚至短到几个小时就会发布一个新的集成版本。若按通常开发方法以一两个月为一个迭代期,则在极限编程中这一个迭代期可能被拆分成若干个一两周迭代一次的小迭代。几乎每天都有新的功能集成到新版本中。

极限编程的这种小步快行的措施很好地应对了变化。它能够根据需求变动及时地调整软件开发方向。通个保证每一步的正确性可以保证最终系统的正确性。

2.2 快速迭代的实现措施

    极限编程通过一些实践措施来保证了快速迭代的实现,这些措施包括客户参与、自动化测试和高效沟通。客户参与是将客户吸收到开发团队中,这样可以不断地从这个客户成员获得新增的需求,也能更好地理解客户的需求。自动化测试保证了软件的正确性和高效的生产率。成员间的高效沟通使项目的快速推进成为可能。在极限编程的特色中将会具体介绍这三方面的内容。

3 极限编程的特色

3.1 结对编程

结对编程可能是极限编程的最大特色。它是指两人共用一台计算机共同进行软件开发,包括共同分析、设计、测试和实现。在结对编程时,一个人负责录入,而另一个人专注于思考,一段时间后交换角色。结对编程看起似乎是浪费了人力资源,但应当看到一加一大于二的效果。结对编程的优点在于:它使一个人可以专注于思考,不必分散精力来注意编码的细节;它使两个开发人员之间的可以经常地方便地交流;两个人互相激发可以产生更好的设计思路;相互交流使开发人员了解整个系统,减少关键人员离队带了的影响。

结对编程也意味着更高的工作效率,两个人的相互激发使两个人一直高度专注于工作,这将是很辛苦的。组对成员应当经常变动,这样可以通过交流使开发人员了解整个系统。应当避免将个人关系带入到结对编程之中。

3.2 “极限”的测试

“极限”的测试包括测试先行和自动测试两个方面。

测试先行是指开发人员在编码之前先编写测试用例。通过提前编写测试用例,开发人员可以明确模块的功能和范围,也可以评价设计是否优良。因为一个高内聚低耦合的模块是很容易写出它的测试用例的,当开发人员发现一个模块的测试用例很难编写时,那就有必要重新考虑设计的合理性了。测试先行增加了开发人员的信心,当编写出符合测试的程序时,可以放心地说程序是正确的。编写测试用例将开发人员从马不停蹄的编码调试的噩梦中解脱出来,使开发人员在测试、编码、重构的节奏下工作。

自动化测试使用xUnit工具,使软件的持续集成成为可能。每个新增的模块要通过xUnit自动测试所有的测试用例以保证不用影响原有其它模块。每次程序的变动都要通过所有的测试用例。

3.3 客户参与

在极限编程中,客户作为团队的一员参与软件开发的整个生命周期。客户成员的作用是:参与业务决策,给出每次迭代的核心需求(称为“Story”);实现了对开发人员的持续反馈;保证了开发人员彻底理解需求以及软件功能的正确性;编写或指导编写功能测试。

在开发方与客户交流中要合理拆分业务方和技术方的权利。通常业务方控制成本、发布时间和软件质量,而技术方控制软件范围。由客户确定功能的优先级别,由开发人员估算时间控制范围。

3.4 轻量文档

    极限编程实现高效沟通的一个重要方法就是轻量文档。所谓轻量文档不是不编写文档,而是要编写必要的文档和有效的文档。通过减少不必要的文档的编写有助于提高团队的工作效率。有时团队会采用白板和卡片的交流方式,这比正规文档更简洁,更方便,更高效。

4 极限编程的一些局限

    极限编程是新兴的软件开发方法,还没有发展得很完善。并不是所有软件项目都适合极限编程的开发方法。它比较适合210人的小团队组织。因为是新兴的方法要得到支持不是太容易。尤其是对于极限编程的最大特色——结对编程,不太容易得到高层管理人员的支持,会被认为是浪费人才资源的做法。开发人员要适应结对编程和结对伙伴要花费一定时间,在这段时间的开发效率可能并不会太高。

5 极限编程的发展和推广

Kent Beck是极限编程的创造人和推广者。他在指导ChryslerC3团队时首先尝试了极限编程的方式并取得了很好的效果。通过他和其他一些人的推广以及敏捷观念的流行,在2000年左右极限编程在国外逐渐开始流行起来。现在,一些人正在尝试将极限编程应用到各个领域和较大型的项目。

现今正盛行的Eclipse在开发过程中就应用了一些极限编程的观念和方法。Eclipse的创始人之一Erich Gamma说:“我曾经享受过跟Kent交互实践一段XP的乐趣,编一个叫JUnit的小东西。他的观点和方法总是挑战我处理软件开发的方式。XP无疑挑战了一些传统的超级方法论。” (XPeXtreme Programming,极限编程)

近一两年间,极限编程正在国内流行起来,受到了软件开发社区的大力宣传。

 

 

 

 

 

 

参考书目

1.    [] Kent Beck 著,唐东铭 译,解析极限编程——拥抱变化,北京:人民邮电出版社,2002.6

2.    [] Kent Beck[] Cynthia Andres 著,雷剑文,陈振文,李明树 译,解析极限编程——拥抱变化(第二版),北京:电子工业出版社,2006.5

3.    [] Griancario Succi, [] Michele Marchesi 编,张辉 译,极限编程研究,北京:人民邮电出版社,2002.6

4.    [] Michele Marchesi 等著,卢庆龄等译,极限编程透视,北京:电子工业出版社,2004.7

 

怎样才能开发出高质量的程序:【上一篇】
关于项目团队的发展阶段特点、问题、应对措施、领导风格:【下一篇】
【相关文章】
没有相关文章
【随机文章】
  • 初次安装Linux系统手记
  • 了解一些系统视图
  • 浅谈音频电缆
  • 用VC++实现版本在线升级
  • web开发:通用持久类代替hibernate的持久类、通用动态formBean类代替struts的formBean类
  • 速动画教程第二十二集 使用Struts上传文件
  • Google将允许用户提交视频内容
  • 利用ASP实现对表的分页浏览
  • 局域网连通状态动态监控技术
  • 抽象类和接口的探讨
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.