1结对编程概述
1)规范意识的增加。个人独立开发很容易懈怠,但是结对编程的话,互相之间有所监督,就会保持思维一直高度集中,可以提高双方的规范意识。2)提高程序质量。结对编程多了一道设计与代码评审的过程,是的设计和编码bug大幅度减少,提高设计与程序的质量。3)开发效率的提高。独立开发时,开发流程可能因如需求变化、被其他业务打断等会改变,经常在作业时会遇到需要考虑接下来应该做什么的场景。而结对编程方式如果有其他因素,其中一方可以应对。并且两个人的思想1+1会大于2,考虑会更周全一些[4]。4)更容易实现核心代码的共享。通过结对成员组合的变化实现项目组全员对代码的共享。5)团队合作精神。通过结对编程让项目组成员能互相了解,提高沟通能力和团队凝聚力。6)促进团队成员工作积极性。结对编程的方式比独立开发的方式更容易让开发者感到快乐。虽然结对编程有以上的优点,但是在我国开发现场中采用的并不多,主要理由有开发团队人手不够、对经验丰富者来说指导初学者的他人很难激发工作热情等。但我们从高校实践教学目标出发,认为结对编程模式可以有效帮助学生提高程序设计能力、培养团队合作精神,选择湖南科技学院计算机系软件工程专业2012级本科学生的多种组合模式进行了对比试验,以检测结对编程对学生的编程质量和能力的影响,并通过问卷调查分析验证对学生学习积极性和团队精神的促进作用。
2结对编程应用探索
2.1实验概要验证学生编程能力和协作精神的最好的方式是项目驱动式。该文组织湖南科技学院计算机系软件工程专业2012级本科部分学生开发一个web平台的考试系统项目,针对传统考试方式的问题,实现web平台下的自动出卷、改卷、评分等功能。参与人员共有12人,分别分成3组2类。1类为独立组4人,由有经验同学组成。另1类为两个结对组,每组均为4人,第1组为两位能力强和能力弱同学混合结对,另一组为4位中等能力同学组队。结对组按时间周期交换搭档。这3组的项目需求和目标都是一样的。该项目提供了基本素材,如数据资料,学生主要完成其中的在线考试部分。主要分四个阶段(数据库设计、在线答题、判卷并分析结果、记录学习轨迹)。2.2实验结果分析项目结束时的结果对比如表1所示。从表1可以看出,在项目初期,结对组合所花费的时间比较多,主要是因为初期沟通效果和协调都还不理想,进入项目中后期,结对组的总体效率有了较大提高。相互之间的协调和沟通也进步了许多。进一步对比分析两个结对分组,可以看出中等能力组合的进步比强弱能力组合的进步要大。另外我们对3组的bug数量也进行了统计,结果显示结对组的bug数量远少于独立组。2.3问卷调查及分析针对结对编程本身及对学生程序设计能力和团队合作精神,我们设计了多个问题的调查问卷。主要包括以下内容(以独立开发作为对比):1)编程能力是否得到了提高2)工作效率是否得到了提高3)学习方法是否有所改进4)团队合作是否比个人开发更有趣5)是否与结对的伙伴相处愉快6)是否在合作中得到了学习问卷调查中,每个问答的回答分为5档,如果有回答满意度低于中间值,需要说明理由。根据调查结果,总体上来说项目参与同学在相互的协作开发中,编程能力有了较明显地提高,工作效率相对来说比独立开发更高,经过相互的帮助,学习方法有所改进,更能够感受到开发的乐趣。但是也有一些不够积极的意见:有部分组合觉得效率不够高,压力大;个别组员需要时间来独立解决问题,有时候会觉得资源冲突;搭档是编程高手,会有自负情绪,不愿意接受他人的建议。经过分析,我们认为主要是以下的原因产生了一些对结对编程消极的意见:1)合作双方水平差距较大,低水平同学感觉跟不上对方思路,压力大,另一方觉得对方拖累了自己,希望独力开发,但计算机资源被占用。2)有些同学不善于与他人交流,与其说与他人打交道,不如集中个人精力埋头苦干。但项目中不可能由个人完成,所以需要将结对编程看成是一种习惯,培养与人交流的能力。3)喜欢独自思考、解决问题的习惯背后,可能存在着害怕自己弱点被他人看破,不愿意被他人看到自己的无知的一面。但是,作为一种互相学习的方式,暴露自己缺点本身就是提高编程能力的一个必经途径。本文认为可以通过改进工作方式、改进结对匹配方式、设置合适的结对组织策略来进一步改善结对编程方式的效果。(1)每对组合设置两台计算机,在检查他人代码和设计时,也可以同时自己完成一些需要独立开发的工作。(2)尽量让中等学员组对,避免强强联手,因为强者容易自负,互相不同意对方意见,会影响项目中的共事。强弱组合中,需要水平强的学员有一定耐心,这样才能促进水平弱学生的快速进步,作为指导者水平强的一方,也能培养自己的领导能力。在改进措施中,重点要注意三点:(1)注重效果而不是形式。(2)每次配对周期要完成一个较完整的迭代过程。(3)要学生坚持在整个项目中保证结对编程的持续性。
3总结与展望
传统实践方式的独立开发和团队开发方式均有弊端。独立开发方式开发周期长,遇到问题难以解决,不能培养团队精神;团队开发方式难以有效监控成员是否完成分配任务,因此我们提出将结对编程模式引入软件工程专业编程类课程实践,并选择湖南科技学院计算机系软件工程专业2012级本科学生的多种组合模式进行了对比试验,以检测结对编程对学生的编程质量和能力的影响,并通过问卷调查分析验证对学生学习积极性和团队精神的促进作用。对比试验结果和问卷调查分析结果表明结对编程方式能有效提高参与者的软件工程思想和质量意识,加强了团队建设,促进了团队合作,学习能力和沟通能力得到了很大的提高。可以说结对编程方式是一种有效的实践教学方式。针对试验中的一些个别消极意见,该文提出了改进工作方式和结对匹配方式来避免出现合作中会产生的配合、沟通不理想的问题。在今后的工作中,我们将进行更细致的配对组合来验证结对组合策略。
作者:黎明 杜敏 吕兰兰 单位:湖南科技学院计算机系