极限编程在JAVA编程教学中的应用

来源 :计算机光盘软件与应用 | 被引量 : 0次 | 上传用户:network_worm
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:Java是计算机专业教学中使用的主要编程语言,针对Java语言教学的现状,文中提出了一种将XP极限编程应用到Java编程教学的方式,该教学方式提高了学生的程序编写质量,转变了学生的编程习惯,取得了良好的教学效果。
  关键词:极限编程;Java教学;教学改革
  中图分类号:TP311.11-4
  1 当前编程教学现状
  Java是计算机软件工程专业教学中使用的主要编程语言之一。在以往的Java编程教学中发现,学生在学习过程中普遍存在如下问题:
  编写出的程序错误多,查找错误、修改错误占用了大量时间。程序设计和代码的质量比较差。编写的程序即使能够运行,但也经常出错。通过调查分析,究其原因主要是,每个学生都是传统的“单打独斗”编程方式,编程过程缺少与他人的沟通交流;遇到问题后,个人单独解决,考虑不够周全。二是,学生对编程质量的认识较弱,没有养成编写“良好运行”的健壮程序的习惯。
  本文通过将XP极限编程的核心方法引入Java编程教学,有利于帮助学生养成良好的编程习惯,增强了学生对编程质量的认识,取得了良好的教学效果。
  2 极限编程(eXtreme Programming,XP)
  XP极限编程是近年来使用广泛的软件敏捷开发方法之一。与“一次性针对所有需求完成设计、实现、测试”的传统开发模式不同,XP将开发过程分解為测试、编码、设计/重构三个短小周期,针对每一个需求模块采用增量、迭代方式完成测试、编码、重构,在迭代过程中优化设计。如图1所示。
  图1 XP极限编程
  XP极限编程通过强调结对编程、测试驱动、重构、简单设计核心方法,使整个开发流程简单、高效,且是软件质量得到有效保证。
  2.1 结对编程
  结对编程是两人一组连续协作共同完成软件设计、实现和测试的开发方式。在文献[1]指出,结对编程与单独编程相比,完成的程序具有更好的设计,更加简短有效,且具有更少的错误和缺陷。结对两人工作时,交流中彼此传递着知识,分享知识,并且互相学习编程技巧。因此,结对编程方式有利于结对的人充分沟通和交流,既能互相促进和补充知识和技能、彼此受益;又能提高编程质量和减少所用时间。
  2.2 测试驱动开发
  与传统开发方式不同,测试驱动开发(Test Drived Development,TDD)提倡以测试为中心。在编写任何实际功能的实现代码前,先编写该功能的测试;编写功能的实现代码是以通过该功能的所有测试为目标。测试驱动开发可以尽早地发现错误和避免错误,极大地降低了错误的出现几率和修改成本;从而保证最终软件有可靠的质量。
  2.3 重构
  重构(Refactor)是指在不改变功能的外部行为的前提下,对功能的内部实现进行优化,去除冗余部分,提高代码可读性。增加新的测试和功能后,通过重构对代码进行“重新”设计,增进内部的清晰性和一致性。
  2.4 简单设计
  简单设计(Simple Design)以最简单方式设计、实现每个功能,去除一切不必要的冗余部分,只要能通过当前的预定的所有测试即可。并在后续的不断重构中,根据需求变化进行修改和优化。
  另外,在为每一个类和方法设计其功能职责时,XP提倡所有的设计元素从命名和形式上能够表述其承但的功能职责,并且其承担的功能职责应尽可能简单、单一,以符合单一职责原则。
  3 XP极限编程在Java教学中的应用
  经过实践,按照以下步骤可以将XP编程方法有效应用到Java编程教学过程中。把每一个编程实践练习题目看作一个简单的软件项目,由指导老师向所有的学生讲解练习题目并明确题目要求,完成需求分析。例如,在进行“编写一个计算器”的题目时,指导老师讲解并明确题目的具体的功能需求:实现给定两个数值的加、减、乘、除的计算功能,以及计算结果的输出。
  3.1 分组结对
  指导老师根据学生的以往成绩以两人一组进行分组结对。分组结对时,可以先按照以往成绩对所有学生进行排名,假如共有10名学生,从排序中间位置开始分组,让1和6、2和7、3和8、4和9、5和10进行结对,如图2所示。
  图2 结对分组
  结对的两名学生需要在整个过程中进行大量的讨论,彼此交换掌握的知识和技巧,如若遇到两人都不善言语,交流困难等特殊情况,需要在此基础上做少量调整,将其中一人调换为善于沟通交流的学生。
  3.2 为需求编写测试列表
  首先,根据题目明确的需求功能,结对两人在经过讨论后,以“望文生义”的方式为需求中的所有元素命名。比如,将计算器命名为Calculator,将计算器的加、减、乘、除、乘方运算功能命名为add、sub、multi、divide和power;计算结果为result,输出计算结果功能命名为printOut。
  然后,结对两人根据题目明确的功能需求,通过讨论的方式,共同为每一个功能需求编写需通过的测试列表。结对两人讨论过程中,考虑越细致,测试覆盖越全面,程序质量越高。
  在编写测试列表时,指导学生注意每一个测试应明确输入以及预期的输出。例如,为divide运算功能编写测试列表,可按如图所示编写。
  表1 divide运算功能测试列表
  序号 说明 输入 输出
  1 Result为0.0,传入参数2.0 2.0 Result为0.0
  2 Result为0.0,传入参数0.0 0.0 提示“除数为0”错误
  3 Result(非0)为10.0,传入参数2.0 2.0 Result为5.0
  4 Result(非0)为10.0,传入参数0.0 0.0 提示“除数为0”错误   3.3 编写测试用例
  测试用例是对功能需求的具体体现,根据TDD测试驱动开发原则,在编写功能实现代码前,需先编写测试该功能的用例。为了方便编写测试用例,可提前向学生介绍xUnit、TestNG类测试工具的使用。
  结对两人根据已明确的需求,编写测试用例。比如,定义计算器的测试用例类为CaculatorTest,并根据需求列表中的第1个需求,编写第一个测试方法。
  public void testZeroDivide(){
  //getResult()返回0.0
  calculator.divide(2.0);
  assertEquals(0.0, calculator.getResult());
  }
  3.4 编写实现代码
  结对两人共同编写能够通过当前所有测试的实现代码。在该环节,学生最容易犯的错误是,编写实现代码时,主观随意、即兴发挥,实现代码并非都是为了通过当前所有测试而编写。与通过测试不相关的代码部分,无法进行测试验证其正确性,所以,根据简单设计原则,应该避免和去除与当前测试无关的部分。
  另外,编写代码时,可由一人进行代码编写,同时另一人在边上观看,并且两人时常交换。一方面,两人可以及时发现代码错误,并减少错误出现的几率,保证代码的编写质量;二是,代码编写过程中,两人在查找代码错误、修改错误及尽力避免错误的大量讨论,彼此的知识、技巧和经验得到了充分的交换和补充,是对已学的书本内容进行了又一次生动而深刻学习。
  3.5 运行测试、重构
  运行当前所有测试,验证实现代码的正确性。如果实现代码存在错误,未通过所有测试,则返回步骤4检查实现代码,修改错误。修改后,并再次运行测试。在多次的“修改代码-运行测试”的迭代中,如发现冗余的、无关的代码,应重构当前程序,优化和修改设计,及时去除冗余部分,从而提高代码质量。
  实现代码能够通过当前所有测试后,跳回步骤3,按照测试列表,在测试用例中编写增加一个新的测试,继续编写实现代码、运行测试,直到通过所有测试。
  这种增量的、迭代方式的过程中,程序不断地被重构,既可以根据变化进行修改,又可以通过优化提高质量,使得最终的程序具有良好的质量和健壮性。
  在基于XP极限编程的这种增量的、迭代方式的过程中,学生的知识和技巧不断地得到了强化学习和提高,并且学生养成了良好的软件开发习惯,提高了对软件开发的质量意识,为后续课程的学习奠定了坚实的基础。
  4 结论
  经过实践发现,按照上述方法將XP极限编程应用到Java编程教学中,教学效果有了明显的改善:
  (1)提高了学生编写程序的质量和健壮性。学生的程序代码中,随意命名“a1,b1”的情况和冗余代码明显减少,程序编码的规范性和质量有了较大提高。程序运行不再频繁出错,程序具有了一定的健壮性。
  (2)增强了对软件开发的质量意识。学生不再只是以程序能够运行为目标,在开发过程中,能够主动通过多次迭代、重构来优化程序,提高程序质量,质量意识有了明显增强。
  (3)软件开发习惯有了明显改变。学生逐渐熟悉了“测试驱动、结对编程”的增量、迭代开发方式,以前的“单打独斗”编程习惯有了明显的转变。
  参考文献:
  [1]W.Laurie,K.Robert,结对编程技术[M].北京:机械工业出版社,2004.
  [2]Kent Beck.解析极限编程—拥抱变化[M].北京:机械工业出版社,2011.
  [3]A.Cockburn,L.Williams,The Costs and Benefits of Pair Programming[J].Proceedings of the First International Conference,2000.
  [4]W.Laurie.K. Robert.测试驱动开发艺术[M].北京:人民邮电出版社,2010.
  作者简介:葛宪强,男,讲师,硕士,研究方向:软件工程、图形处理;许杰,女,中级,硕士,研究方向:教育管理。
  作者单位:聊城大学计算机学院,山东聊城 252059;聊城高级财经学校工程系,山东聊城 252000
其他文献
随着高维数特点的非结构化数据大量涌现,降维在数据处理过程中越来越重要。为了充分挖掘数据中潜在的信息,我们提出了一种基于实例级和约束块级信息的判别性半监督降维方法 IDSDRC。该算法同时利用成对约束的实例级以及约束块级信息,并综合考虑数据样本的局部几何结构。基于Yale、ORL和AR标准人脸数据库进行人脸聚类的实验,实验结果显示IDSDRC算法比一些现有的半监督降维算法效果好,验证了该算法的有效性
体外诊断(IVD)医疗器械正在迅速发展,品种日益增多。文中简要介绍了GHIF(全球协医调作组)建议的关于IVD医疗器械的分类和符合性评价原则。
摘要:随着信息技术的发展和人们生活水平的提高,传统的单向广播模式已经不能达到人们对高质量、多样化信息的标准。因此,需要一种全新的宽屏幕、数字化和高清晰度的制作节目系统,来满足人们对数字电视的需求。数字媒体技术的创新,使得制作影视节目的成本减少,也降低了传输信号的损耗量,使得影视节目达到了一个新的质量水平。HD高清晰度的标准,成为当今非线编系统的主要标准。本文就此对HD非线编系统进行探讨,阐述了ED
非线性编辑设备是目前电视制作领域中所常用的一种设备,用户为了满足不断提升的工作效率及画面的需要,使得非线性编辑不仅仅是一个简单的视频剪辑系统,而是在一个更广泛的平
优生.优育、优教是提高整个中华民族的人口素质的重要途径。提出以手机短信平台为载体.搭建医院.政府与百姓沟通的桥梁,定时传送“三优”信息.为妇幼和计生宣教工作的创新提供了新
随着移动互联网络的迅速发展,传统的互联网格局正在经历结构性的改变,与互联网相比电信网、广电电视网、电力网等也经历着技术发展的冲击。不断增加的市场需求不仅仅是局限在
当围海造陆工程需要覆盖原有海底管线时,对海管的不利影响包括两个方面:其一是隔埝与管线相交处,对管线局部造成较大的附加应力;其二是大面积吹填造陆,使管线受力发生变化.在这两种
基于对最低比特位Matching密写方法与利用图像直方图进行的密写分析方法的研究,提出了一种可保持直方图特性的LSB Matching密写方法.在密写过程中定义动态改变的密写信息表以记
2004年云南省气象局完成了包括IP语音的全省气象宽带网建设,省局科技大楼的IP语音系统也于2005年5月建设完毕,运行至今,期间进行了大量的系统维护工作。本文简述了云南气象IP语音系统的概况,并对使用过程中常见故障的处理方法及系统的日常维护进行小结,详细介绍了语音网关的相关配置、系统文件的备份以及系统软件的升级操作。
提出了带有周期通信序列(PCS)的多输入与多输出分布式网络化控制系统的故障诊断方法通过把故障诊断单元与各子系统之间周期通信序列的变换相当于不同工作模态之间的切换,将带有