极限编程及应用(共4篇)
极限编程及应用 篇1
1 引言
当今时代,国内有很多中小型软件项目开发时间紧迫,需求也经常发生变化,如果使用传统的软件开发方法,会导致开发资源浪费,甚至质量低下。敏捷开发方法为有效解决这种状况提供了良好的解决方案。其中,以极限编程XP(e Xtreme Programming)最为典型代表。XP是一个基于实践的、混乱而有序的方法,它通过非常短的迭代周期来应对需求的变化。
笔者正在做一个Android手机情景模式自动切换的软件开发创新训练计划项目,虽然不敢与国内的那些中小型软件项目相比,但是,自己也主动尝试使用敏捷开发方法。虽有不到与不周之处,但也小有收获。
2 流行的敏捷开发方法:极限编程(XP)
在所有敏捷开发方法中,XP(e Xtreme Programming)是最引人注目的,它适用于需求快速变动背景下的中小规模的开发团队。
XP所呈现的生命周期,如图1所示。
2.1 极限编程的四个核心准则
(1)沟通:注意开发人员、设计人员、测试人员及客户之间的沟通。
(2)简单:尽量保持代码的简单,只要它能工作就可以。
(3)反馈:尽快获得用户的反馈意见,且越详细越好,使开发人员能够保证自己的成果符合用户的需要。
(4)勇气:最重要的核心价值。因为XP强调要“拥抱变化”,因此对于用户的反馈,要勇于对自己的代码进行修改,丢掉坏的代码。
2.2 极限编程的五个基本原则
(1)快速反馈:XP提倡尽可能早的,迅速的反馈。
(2)假设简单性:XP倡导为完成今天的工作而工作,并不计划未来对软件的扩展。
(3)提倡更改:XP强调要“拥抱变化”,有快速的反馈,就应有对反馈结果的执行措施。
(4)递增更改:XP提倡小改动,用期望的功能逐步增强系统。递增更改应用在XP的诸多方面:设计、计划、团队等每次只改动一小点。
(5)优质工作:质量是最重要的。XP强调团队中的成员要对工作充满兴趣和信心,保持编程人员的最高热情和水平。
2.3 XP主要特点
最为一种轻量级方法论,XP明确放弃了系统建档和分析以外的任何外在活动。文档明确不予鼓励,编码才是最主要的活动。
基于测试驱动开发(Test-Driven Development,TDD)的思想,在编码开始之前将测试用例或者脚本设计好。
3 极限编程开发应用
3.1 发布计划
3.1.1 项目简介
开发一个软件,可以通过手机自带话筒收集手机周围的声音信息,通过软件对采集信息的分析和标示,选择默认设置或者用户预先设置里面对应的情景模式,进行模式的自动匹配选择和切换。本项目首先面向的对象是学生android手机用户。
3.1.2 项目模块划分
XP是明确不支持文档的,只要设计出系统架构,各模块不必详细设计,在测试驱动的开发中进行完善。本项目模块划分如表1所示。
3.2 开发
开发过程中主要分为以下过程:
(1)模块基本功能实现
在该阶段,团队队员进行分工,独立编写模块。由队长搭建模块架构,确定模块之间相互传递数据时的数据结构定义以及各模块函数命名等。规定各模块输入值和预期输出值。
(2)模块整合
按照主函数的结构安排,插入各模块的功能函数调用部分。对变量、结构体等进行初步检查,防止同名变量的影响。
(3)测试驱动
可以全部团队的人员(团队人数在3-4人时)加入测试设计和代码修改的过程中,避免忽略细节,同时也可以避免沟通不畅带来的不必要的麻烦。
对于不同的环境输入,进行运行过程和结果测试。
测试的典型环境选取、环境特点和测试内容表示如表2所示。
使用语句覆盖测试、分支覆盖测试、条件覆盖测试、谓词覆盖测试、路径覆盖测试、边界值测试、特殊值测试等单元测试方法,对代码进行测试和修改。消除代码错误,完善代码实现功能。
3.3 应用经验
(1)个人创新,为实现新技术的突破,解决遭遇到的许多新挑战、新困难,团队中的每一个人都需要创新意识。
(2)统一与一致,只有和所在团队规定的格式一致时,才能方便地对其他人的代码的理解。
(3)减少文档,对于小规模团队而言,直接的交流和沟通才是最有效的。
(4)民主和荣辱与共。
参考文献
[1]朱少民,左智.软件过程管理[M].清华大学出版社,2007.
[2]易金刚.极限编程理论的研究[J].计算机时代,2010.
[3]B.Kent.Test-Driven Development:By Example[M].PearsonEducation,Inc,2003.
[4]F.Michael.Working Effectively with Legancy Code[M].Prent-ice Hall,Inc,2004.
[5]F.Martin.Refactoring:Improving the Design of Existing Code[M].Pearson Education,Inc,2003.
极限编程及应用 篇2
关键词:敏捷开发,极限编程,软件项目开发
1 引言
随着信息技术的不断发展,软件产品的更新换代十分迅速,因此需要严格控制产品的开发周期,以提高自身的竞争力。其次,软件还要具备快速响应和多种逻辑运算的功能,以适应不断变化的系统环境。敏捷开发就是目前最为流行的一种软件开发方法,它不仅能够快速响应用户的需求,还十分重视开发过程中人与人之间的交流,提高了软件开发效率。敏捷开发的过程是渐进的、迭代的。目前比较常见的敏捷开发有SCRUM、动态系统开发、水晶系列开发等,其中使用最为广泛的方法就是极限编程。
2 极限编程简介
极限编程的概念由美国人Kent Beck于1996年提出的,Kent Beck自九十年代初期就一直致力于探索一种新的便捷有效的软件开发方法,在经过多年的观察研究之后,终于在软件开发项目中引入了一个新的概念:极限编程(Extreme Programming),简称为XP,其中Extreme是指充分利用好的开发方法并运用到实践当中。XP作为敏捷开发的主要代表,使用起来简便灵活,具有开发效率高、风险相对低的特点,而且XP注重编程实践,适合要求严格、环境复杂的开发项目。它所提倡的软件开发理论,与以往的理论都不相同,并没有针对软件开发的细节制定繁琐规则,而是利用实践活动来约束软件开发的过程。软件项目开发的团队,可以直接使用极限编程进行工作,也可以根据自身需求进行一定的变动和改良,使软件开发工作进展更加顺利有序。
3 原则
极限编程的软件开发原则主要体现在注重实践方面,具体内容如下:
3.1 递增改变
在进行开发之前,要对软件整体结构和未来的发展制定出一个详细的计划,并在设计过程中逐步改进完善软件的各个功能,通过量变累积实现质变,使软件的开发水平呈递增的趋势,从而更好地解决软件中的问题。
3.2 快速反馈
在当前的软件应用市场中,快速反馈是用户的主要需求之一。因此开发人员要着力缩短软件开发的迭代周期,使系统能够在接收到用户指令之后及时进行反馈;这也有利于开发人员迅速检查工作质量,确认是否满足客户需求。
3.3 预留升级
在开发初期,开发人员无法预知未来市场和用户对于软件的要求,因此只能尽力做好系统中的基础功能。同时为软件的升级调整做好充分准备,在用户需要的时候对软件进行必要的更改,以更好地适应使用环境。
3.4 质量保证
无论什么时候,软件产品的质量都不容下降。在市场竞争激烈的环境下,好的质量就是产品的实力体现。一旦因为过于注重实践环节,盲目压缩迭代周期而影响了产品的质量,其结果只能是失去用户的信赖。
4 极限编程的开发过程
4.1 探索阶段
探索阶段的主要内容是通过与客户交流,获取最准确的用户要求,使得初始的开发框架能够最大限度地满足用户。常见的交流方式是运用图示,用例图将软件简洁明了地展示给用户观察。在例图中用户的角色按照其特点进行了划分,并详细规定了每种角色所拥有的功能和权限。为了使用户更好地理解正在开发的软件过程,同时使每个开发人员对自己所负责的工作和自己在全局中的作用有所了解,需要建立一个数字模型,用更加立体化的方式来表现软件开发过程。
4.2 小型发布
在建立数字模型之后,结合用户的意见进行改进,确定软件开发的技术架构,并快速确定小型发布的范围。小型发布的作用是让客户对软件进行初步的审核,在通过之后由客户代表确定系统的核心内容。同时制定出第二次发布内容,即回收不良资产及后续处置的计划。经过开发人员的计算,得出下一次发布的时间。下一次发布的内容主要还是针对不良资产信息维护与不良资产的处置需求,并适当增加关于数据查询和系统维护的内容。结合实践情况来看,小型发布的运作形式能够使系统开发时间与投产时间的差距缩小,用户的意见能够及时反馈给开发人员,并迅速在新的发布中得到解决。
4.3 迭代开发
系统每一个版本都会被分解为若干个迭代,其时长为一周,这样做的目的是为了尽快收到用户的反馈意见,并及时解决。迭代的长度是开发人员与用户在探索阶段就制定好的,在以后的开发过程中,迭代长度都将保持不变。用户通常只需要为系统角色和功能选择优先级,然后由开发人员将用户的选择分解为小型任务,每个任务执行的时间为两天左右;在达到迭代时长之后,这些任务会根据其内容及特点进行合并,然后进入到下一个迭代周期。
4.4 测试验收
在对系统进行不断地测试的同时,接收用户的反馈,并继续小型发布。在这个阶段中,开发人员和用户之间的交流仍然对软件的开发起着重要作用,既有效减少了小型发布的次数,也提高了软件开发的质量。开发人员之间也要进行沟通,互相探讨如何实现用户的角色和功能,在每一次迭代开发中逐步实现它们,使软件始终处在不断增速的开发过程之中,反复更改持续集成,最终完成整个软件的全部开发,然后进行提交。
5 极限编程的实践分析
假设某企业需要通过极限编程开发一个软件项目,其过程如下:
5.1 制定模型深度沟通
首先是制定初步的数字模型,将模型交给用户查看,在讲解的过程中不断听取用户的意见,将其收集整理为一个需求分析,内容包括主系统管理、分公司系统管理、业务统计查询、权限设置管理、网络办公模块、客户意见处理平台等。这些内容都需要开发人员与用户进行深度沟通,不断调整开发框架以适应用户的需求,并在开发初期决定迭代周期的长度与侧重内容。通常企业会选择在第一个迭代周期中重点开发业务统计查询和权限设置管理两个部分。在迭代周期内,开发人员制定出详细的流程图和文字计划,然后交于用户进行审核;在得到用户确认及新添加的信息之后,再次进行迭代开发。从第二个迭代周期开始,每一个软件的版本都可以实际运行,让用户在实践使用的过程中不断提出改良意见,以方便开发人员进行修改。
5.2 简洁设计保证实用
通常初次版本的界面十分简洁,开发人员重点放在实现软件各功能上,只提交出软件的基本框架和核心功能。在初次版本得到用户的肯定之后,再由美工人员根据客户需求进行细节改良。这个过程基本上会持续若干个迭代周期,当最终软件版本完成之后,其功能和界面都已经符合了用户的要求;在保证软件质量的基础上,最大限度地提高了软件界面的观赏性。
5.3 优化编程重视方法
编程在软件开发中是最重要的一个环节,开发人员要在编程之前制定好开发标准,以保证程序代码的优化。可以采用Spring+Struts+Hibernate的J2EE轻量级开发框架,它具有SSH结构清晰、集成多种底层操作、开发速度快的优点。服务器和数据库尽量选择J2EE开发框架,以便为开发过程中系统部署提供便利。制定严格的代码书写规范,如类名、变量名、注释等;利用版本控制系统共享和管理代码,控制代码修改,使代码保持完整性和一致性,这样既提高了代码的可读性,又加强了开发人员之间的可协调性。
在开发过程中有一个很重要的方法就是结对编程,它是由两个开发人员在同一台电脑上共同编写一组用于解决某一个问题的代码。其中一个人负责写代码,而另一个就负责检查代码。这种方法使得每组代码都有两个人来进行确认,提高代码的正确性;每遇到重要决策的时候,可以由两个人共同研究决定;在编写和检查代码时候,两个人还可以进行良好的沟通,为后期代码的修改奠定基础。可见重视方法能够有效提高软件开发的质量。
5.4 持续进行集成测试
结对编程的代码每天都要被上传到数据库中进行集成测试,且测试包含了交换模式和持续模式,目的是为了在最逼真的实践环境中及时发现软件问题并改正,从而保证软件开发的质量。每次当代码完成数据库的集成测试之后,可以由用户进行实践使用测试,以便及时提出更改意见。开发人员之间不断进行沟通,提高了相互协作的效率,使软件在按时完成的基础上,更加符合用户需求。这样开发人员的工作压力相对减轻,软件的开发质量也有所提高。
6 总结
极限编程作为一种轻量级软件开发方法,其灵活性是与传统软件开发方法的最大区别;它能够更加清晰地体现出开发人员的意图和用户的需求,并根据实际情况进行最恰当的修改。目前国内软件开发行业不容乐观,很多项目都是时间紧、要求高、问题多,为了能够在开发过程中最大限度地满足用户要求的软件,使用极限编程是一项值得信赖的选择。
参考文献
[1]刘玲惠.敏捷软件开发中的极限编程[J].产业与科技论坛,2011,10(22).
[2]蔡娟娟.极限编程及其应用[J].科技视界,2013(35):64.
极限编程及应用 篇3
1 极限编程概述
2000年,美国软件工程专家Kent Beck对极限编程这一创新软件过程方法论进行了解释:“XP是一种轻量、高效、低风险、柔性、可预测、科学而充满乐趣的软件开发方式。”
XP的核心价值观是交流、简单性、反馈和勇气,即任何一个软件项目都可以从四个方面入手进行改善:加强交流、从简单做起、寻求反馈、勇于面对需求的变化。它的核心价值观并不是对软件开发过程本身的要求与规定,而是在精神层面对软件开发团队的要求与指引。
XP是一种近螺旋式的开发方法,它将任务细分为可以在较短周期解决的多个子任务或模块,并且强调测试、代码质量和及早发现问题。通常,通过一个个短小的迭代周期,我们就可以获得一个个阶段性的进展,并且可以及时形成一个版本供用户参考,以便及时对用户可能的需求变更做出响应。在一般情况下,客户只有在系统被开发完成以后才能真正去体会它。XP却不一样,它通过加强最终用户的反馈来缩短开发的周期,同时获得足够的时间来改变功能和获得用户的认同。在XP中,提倡让最终用户参与到软件产品的开发中来,最大限度的降低了需求变化带来的风险。
2 极限编程的开发过程
在XP的实施过程中,我们将项目分成多次迭代,每一次迭代结束都会交付用户一个通过了质量检验且可以投入使用的软件。举例来讲:比如一个软件共含有8个功能点,XP会将这8个功能点分为4个迭代阶段,每个迭代阶段都会发布一个能够实现两个功能点的软件。用户可以对每次发布的软件进行测试,若在某个迭代版本中出现问题,我们可以在产生问题的地方就地将问题解决,从而保证最后软件版本的可靠性和完整性。
XP整个开发过程可以用图1来表示:
1)探索阶段用户和开发人员面对面,共同探讨软件所要实现的功能,形成表示用户需求的用户素材(User Story)。
2)计划阶段开发人员对用户素材进行整理,选取最急需和最重要的部分,发布第1次迭代所要完成的任务计划,这个任务通常要能在1~3周内完成。
3)实施调整阶段对提出的计划进行编码实现、测试,最后交付。
用户在迭代过程中还有可能对原先探讨的用户素材提出增加、删除或是修改。在迭代期内产生的素材不在本迭代内解决,以保证开发不受干扰,经验收测试通过后交付使用,而开发人员在发布的下一个计划中可能马上就会响应这些变化。
3 极限编程在校产管理系统开发中的应用
3.1 项目背景
校产管理是学校工作的重要组成部分。随着社会的发展,学校的规模是越来越大。校产不断增减变化,规格型号和来源日趋复杂。以往校产管理采用手工作业的记帐方式,由于数据量大,操作烦琐,已远远不能适应现代化教学管理的要求。而且校产购入投入使用后,便分散在各个使用部门,几乎遍及学校的各个角落,时间一长,常发生遗忘、差错,从而导致账实不符的现象较为普遍。要改变这种现象的最好办法就是开发适合我校实际情况的校产管理软件来进行管理。
针对该系统在我校的特殊需求,以及时间紧,开发人员少等特点,经项目组研究决定采用XP方法来开发该项目。这里将按照XP项目开发过程来描述实际的开发历程。
3.2 开发过程
1)探索阶段:在这个阶段由我们单位校产管理部门负责人同开发组成员在一起进行面对面的讨论,确定我们的系统需要完成的功能。我们将需要分别写在一张张的卡片上,形成具体的用户需求。如:校产信息录入、校产的分类、生成校产登记卡片、校产的增加、删除、变更、汇总、打印等等。
在描述系统功能的同时,也形成了系统的总体架构,如图2所示。
2)XP的迭代计划:有了系统总体的功能架构,开发人员可以对各功能模块进行分析,确定整个系统当前最重要、最急需的部分,制定版本计划。制定计划的时候,第1版相对详细些,后面的版本只需要作大致的规划,因为随着开发的进行,后面的需求很可能发生变化,过于详细的计划是没有必要的。如表1所示。
3)XP迭代开发:系统的一个版本被分解为若干个为时一周的迭代,这个迭代的长度在项目开始的时候就已经确定了,并且以后会保持不变。对于一个迭代周期,开发人员将这些用户素材分解成若干个任务,每个任务会在1、2天内完成,这些任务分配给不同的程序员对(Pair)。程序员对有两名成员组成,他们一起合作对分配的任务进行设计、编码、测试,测试通过后交付,再领取新的任务。
第1周的小迭代结束后,实现了如主要数据录入界面的粗体设计、系统主控框架的粗略搭建等。这里用户就已经可以开始参与到系统的功能测试中来了。当用户接触到实实在在的系统后,由于感性的认识,很可能会对原来的系统需求提出变更,这时,在制定第2个迭代计划的时候就可以进行变化的响应了。
当第1个版本最终发布以后,马上就可以对第2版的计划进行修改,使其较原来更详细,以及适应新的变化。由于已经进行了为期四周的开发,对于开发效率已经有了更准确的把握,第2版本的计划制定将会更接近于实际开发情况。
4)项目完成的测试、验收:XP开发过程一直处在不停的测试当中,系统是在持续的开发、重构、测试当中不断的增长和持续集成的。当最终系统完成开发后就可以提交用户进行最后的验收测试了。
4 结束语
XP方法在目前已经被世界上越来越多的开发机构所采用,得到广泛的好评。但由于国内外软件开发机构在许多方面存在着差异,而且XP理论本身仍然处于完善和改进阶段,XP方法在国内的应用仍然需要进一步的学习和研究。但我相信,正确使用极限编程的思想将有助于我们实现提高软件开发效率,改善软件产品质量。只要大家在开发中多实践,一定可以掌握极限编程思想的精髓,能够更从容的面对软件开发过程中的变化,增加软件开发成功的机会。
摘要:极限编程是敏捷方法中最著名的一种基于实践的软件开发方法。文章通过对极限编程在一个校产管理系统中实际开发应用,阐述了极限编程方法在软件项目开发中的应用特点。
关键词:极限编程,软件项目开发,校产管理系统
参考文献
[1]邓辉,孙鸣.敏捷软件开发[M].北京:人民邮电出版社,2008.
[2]芮雄健,王忠民.基于敏捷软件开发方法的基金管理信息系统开发[J].计算机应用,2004,24(11).
[3]于文元.管理信息系统[M].大连:东北财经大学出版社,1998.
极限编程及应用 篇4
极限编程,简称XP,是由KentBeck在1996年提出的。XP是一个轻量级的、灵巧的软件开发方法;同时它也是一个非常严谨和周密的方法,消除了大多数重量型过程的不必要产物,建立了一个渐进型开发过程。因此,简单性、交流、反馈和勇气是它的基本宗旨和灵魂。
XP方法将开发阶段的4个活动(分析、设计、编码和测试)混合在一起,在全过程中采用迭代增量开发、反馈修正、反复测试,把软件生命周期划分为用户故事、题写结构、发布计划、交互、接受测试和小型发布6个阶段。XP以用户故事为功能单位,以迭代以及增量集成为原则,逐步将一个个的用户故事所描述的功能集成到系统代码中,从而最终完成系统的开发。通过积极的交流、反馈以及其它一系列的方法,开发人员和客户可以非常清楚开发进度、变化、待解决的问题和潜在的困难等,并根据实际情况及时地调整开发过程。
高职院校计算机专业的毕业设计主要是考查及训练学生的综合应用能力,它是对学生三年所学知识的一次综合考验,它要求学生对各种软、硬件知识进行综合应用。但是,对于高职院校的学生来说,大多数缺乏综合运用能力和实践经验,总体水平不是很高,学生素质相差悬殊,如果要求每人交一个作品,会使得一些技能相对薄弱的学生无法综合运用软硬件知识,独立完成课题而敷衍了事。为加强学生综合应用各方面知识的能力,挖掘学生的学习潜力,并且培养学生之间的合作意识,提高毕业设计的整体水平。在毕业设计这一环节中,我们将极限编程的思想应用到计算机专业毕业设计中,使学生在团队中通过相互之间的充分交流和合作,完成高质量的课题设计。
2 极限编程的最佳实践保证了XP在毕业设计中的实施的可行性
极限编程集成了12个最佳实践,其主要的创新点在于提供一种良好的思路将这些最佳实践结合在一起,使得他们能够在最大程度上相互支持。在这12个实践中,笔者认为其中的简单设计、结对编程、集体代码所有制对于学生毕业设计具有指导性意义。
2.1 简单设计强调简单的价值观,引出了简单性假设原则,总是花较少的时间完成复杂的任务
传统的软件开发过程,对于设计是自顶而下的,强调设计先行,在代码开始编写之前,要有一个完美的设计模型。然而,对于高职院校的计算机专业的毕业生来说,由于缺乏丰富的实践经验,要设计出一个完美的模型是比较困难的。多数学生直到毕业设计过去了三分之一还没构思好设计模型,严重影响了后续工作。
另外,传统开发的前提是需求不变化,或者很少变化;然而,这是不太现实的,任何事物都在发展变化中,必然要求软件随时发生改变;而XP认为需求是会经常变化的,设计不应该在编码之前一蹴而就,而应该是一项持续进行的过程。
与其让学生消耗巨大的精力去对未来开发做一些预先规划,还不如用秉承“够用即好”的思路,早点着手简单的编码,只要今天够用就行,先不考虑明天会发生什么样的新问题。这就要求学生应该首先确定一个灵活的系统架构,而后在每个迭代周期的设计阶段可以采用XP的简单设计原则,将设计进行到底。
2.2 结对编程比单独编程的效率更高,大大降低了沟通成本,提高了工作质量
结对编程是XP的一个最典型的实践。结对编程意思是所有的代码都是两个人坐在一台电脑前一起完成的。一个人控制计算机并且主要考虑编程细节。另外一个人主要关注整体结构不断的对第一个程序员写的代码进行审查。结对不是固定的,我们甚至建议开发人员尽量交叉结对。这样,每个人都可以知道其他人的工作每个人都对整个系统熟悉,结对编程增强了团队内的沟通。
采用结对编程使学生毕业设计的质量有了明显的改进。
1)结对编程改掉了一些学生的编码坏习惯,同时也融合了每个人的编程优点。另外,代码的层次和语法变得优美、易读了。
2)程序执行效率提高了。结对编程时两个人的劳动成果,使合作的学生能更有效地交流,相互学习和传递经验;能训练更强的问题解决能力。
3)减少了Bug的产生。Bug的产生首先在于理解上,两人编程,需要两人共同理解,经过讨论,形成一致思想,才可以编程,使得在理解错误的风险上减少。其次,两人编程就等于已经有了一遍代码评审,出错几率降低了很多。所以结对编程能有效的减少了bug的产生。
采用结对编程时应注意以下几点:
1)以模块为单位,一组人负责一个模块的设计和编码。
2)尽量将性格融合的,技术互补的配对。在不同阶段,有针对性的组合,可以起到很好的作用。两人中,地位是平等的,只有经验多寡之分,没有地位高低之分。
3)编码前,两人必须有达成共同的思想;编码时先写测试,再写实现。
4)任务出错或不能完成,应由双方共同负责,不能相互指责。两人意见不同时,可由教师帮助解决,最好不要各执己见。
5)每次测试时,从新组合配对,但不能由设计编码的人负责测试自己编写的模块但可以写测试文档。
6)教师多点鼓励,结对学生相互鼓励,可以产生共同的荣誉感,责任感。
2.3 集体代码所有制使得团队中每个成员都拥有对代码改进的权利,每个人都拥有全部代码,并对全部代码负责
在传统的毕业设计过程中,一个组里的每个学生只维护自己的代码,而且很多人不喜欢其他人随意修改自己的代码。他们很少、也不太愿意去读他人的代码,甚至不清楚其他人的程序到底实现了什么功能。同时,因为是自己维护自己的代码,由于时间紧张或技术水平的局限性,某些问题一直不能被发现或得到比较好的解决。基于这些问题,XP充分体现了它的优越性。
结对编程的动态搭配使每一组的学生都会遇到不同的代码,因此代码的所有制就属于公有了,更加便于各个模块的组合和修改工作。集体所有制的提倡大家共同拥有代码,每个人都有权利和义务阅读其他代码,发现和纠正错误,重整和优化代码。这样,这些代码就不仅仅是一两个人写的,而是由整个开发团队共同完成的,错误会减少很多,重用性会尽可能地得到提高,代码质量是非常好。同时也提升了开发过程的速度。
3 应用极限编程完成高质量的毕业设计的具体步骤
3.1 系统规划阶段
1)填写用户故事卡片。从客户的角度讨论系统应该完成什么功能,然后用通俗的语言将其写在卡片上,制成用户故事。
2)开发人员进行估算,确定开发日程、项目开发“速度”。首先将用户故事按优先级分成必须要有、希望有、如果有更好三类,然后对每个用户故事进行估算,先从高到低的开始估算。根据所产生的子系统以及各个可独立编码及测试的单元进行分工合作,并且每个人对小任务所需时间进行估计。
3)将一个项目划分成多个开发周期。
4)通过开发周期确定从一个周期开始。
3.2 迭代设计阶段
1)确定本次迭代的时间周期,再结合参与的开发人数,算出可以完成的工作总量。然后根据估算结果,挑选出时间上恰当、优先级合适的用户故事组合,形成计划。
2)以团队讨论的形式进行本次次迭代的快速分析、建模。
3)根据本次迭代所需要的时间以及现在每个人估计的时间的总和,进行协调处理,最终确定本次迭代所需要的时间。大家按照协调确定的时间工作。
4)将每个人的小任务进行顺序排列,以便学生按这个顺序完成每个小任务。
5)详细的规定每个编码的细节,制订出编码标准。
3.3 迭代编码阶段
1)考虑到学生的特殊性,不可能按照XP传统的结对编程方式进行编程。为了让小组的每位学生均能够熟悉系统整体的代码并均匀分配工作量,采用类似“接力”的方式按照小任务的顺序依次开始编码。
2)编码过程中,每位学生必须写到规定的水平。
3)编码之前必须先写好单元测试代码。
4)执行小任务的学生一定要在规定的时间内完成自己的任务。小任务完成后,由下一个任务的学生进行“接力”,并向整个团队做开发报告。同一时间只能有一组人集成代码。
5)依照上述3、4步骤依次类推,进行“接力”,直到本次迭代过程的所有任务都已完成。
6)对整个迭代结果进行整合测试及优化。
3.4 系统测试阶段
1)每一个单元的代码完成后用编码前编写的测试用例进行单元测试,若出错,则在改错之后增加新的测试用例再次测试,直到确保任务没有错误以及异常。然后将代码和测试用例一起存入代码库。
2)当发现一个新的Bug时,就应该增加新的测试。
3)对整个迭代结果整合优化后,应运行验收测试,检验是否完成了预定的功能,是否有错误及异常。并公布结果。
总之,采用极限编程进行合作的学生能更有效地交流,有利于培养学生的合作精神与综合能力;学生能相互学习和传递经验,有利于全体学生主动参与,锻炼了学生的动手能力;能提供更好的设计质量和代码质量;能训练更强的问题解决能力,有利于提高工作效率,使学生更容易树立信心,从工作中获取更多的满足感。
参考文献
[1]Beck K.Extreme Programming Explained:Embrace Change Pearson[M].Addison-Wesley Professional,1999:25-39.
[2]张友生.系统分析师技术指南[M].北京:清华大学出版社,2007.
[3]Cockburn A.敏捷软件开发[M].俞涓,译.北京:清华大学出版社,2003.
【极限编程及应用】推荐阅读:
两个重要极限及应用12-03
可编程控制原理及应用10-31
可编程控制器及应用08-26
可视化编程应用12-12
应用程序编程模型12-23
计算机编程语言应用08-18
可编程控制器应用技术12-17
SQL数据库编程学习应用语句07-18
数控机床加工及编程08-15