APP下载

结对编程在软件工程专业实践课程改革中的探索

2014-07-28黎明杜敏吕兰兰

电脑知识与技术 2014年16期
关键词:团队协作实践课程

黎明 杜敏 吕兰兰

摘要:针对传统实践方式周期长、难度大、难以培养团队精神的弊端,提出在软件工程专业实践课程中引入结对编程模式。并选择多组学生结对编程完成同一项目,进行了对比试验。对比试验结果表明结对编程模式能有效提高学生的软件工程思想和质量意识,促进团队合作意识,参与学员的学习能力和沟通能力得到较大的提高。

关键词:结对编程;实践课程;团队协作

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)16-3840-03

Abstract: Against traditional practice way cycle long, difficult, difficult to cultivate team spirit, proposed the introduction of pair programming in software engineering practice course. for Contrast test, select more groups of students to complete the same project. Contrast test results show that pair programming model can effectively improve the quality of students of software engineering idea and consciousness, promote the team cooperation consciousness, to participate in the students' learning ability and communication skills to get a larger increase.

Key words: Pair Programming; Practical Curriculum; Teamwork

1 概述

软件工程专业相对其他专业而言,更注重实践能力、解决问题能力的培养。实践教学是专业培养计划中最重要的组成因素,而提高学生程序设计能力、转化实践技能、掌握软件工程思想、培养团队协作和沟通管理技能是实践教学中很重要的环节和目标[1]。

目前,软件工程专业的实践教学环节主要包括了实验课程、课程设计、实习实训、和毕业设计以及创新性实验计划及课外科技创新活动等方面。实践组织方式主要分为独立开发和团队开发两种。但两种组织方式均有不足,如独立开发方式缺乏必要的师生和同学之间的交流不利于培养团队合作精神、开发周期长、设计和程序没有足够的审查而导致bug数量大、不利于掌握软件工程思想。而团队开发方式不能有效监督各成员的工作流程,很难保证成员根据其编程能力进行了有效分工并能各司其职,个别能力强的1、2个人真正动手完成项目开发,存在部分学生偷懒懈怠,利用团队成果完成考核目标的现象,无法达到全面促进学生提高程序设计能力、培养团队协作和沟通管理的目标[2]。该文通过分析软件工程专业能力培养的指标、指出软件工程专业实验和实践教学方式中存在的问题,提出利用结对编程方式改革软件工程实践教学模式,并通过实验验证结对编程教学模式对于多项专业能力培养的促进作用。

2 结对编程概述

结对编程的定义为:两个程序员共用一台计算机,合作完成开发任务,比如一个算法、一段程序、一个模块等。两个程序员一个负责输入代码,担任”驾驶员”角色,另一个负责审查代码,担任”导航员”角色。结对双方的角色并不是固定不变的,可以周期性地进行交换[3]。

结对编程的优势主要有以下几个:

1)规范意识的增加。个人独立开发很容易懈怠,但是结对编程的话,互相之间有所监督,就会保持思维一直高度集中,可以提高双方的规范意识。

2) 提高程序质量。结对编程多了一道设计与代码评审的过程,是的设计和编码bug大幅度减少,提高设计与程序的质量。

3) 开发效率的提高。独立开发时,开发流程可能因如需求变化、被其他业务打断等会改变,经常在作业时会遇到需要考虑接下来应该做什么的场景。而结对编程方式如果有其他因素,其中一方可以应对。并且两个人的思想1+1会大于2,考虑会更周全一些[4]。

4)更容易实现核心代码的共享。通过结对成员组合的变化实现项目组全员对代码的共享。

5) 团队合作精神。通过结对编程让项目组成员能互相了解,提高沟通能力和团队凝聚力。

6) 促进团队成员工作积极性。结对编程的方式比独立开发的方式更容易让开发者感到快乐。

虽然结对编程有以上的优点,但是在我国开发现场中采用的并不多,主要理由有开发团队人手不够、对经验丰富者来说指导初学者的他人很难激发工作热情等。但我们从高校实践教学目标出发,认为结对编程模式可以有效帮助学生提高程序设计能力、培养团队合作精神,选择湖南科技学院计算机系软件工程专业2012级本科学生的多种组合模式进行了对比试验,以检测结对编程对学生的编程质量和能力的影响,并通过问卷调查分析验证对学生学习积极性和团队精神的促进作用。

3 结对编程应用探索

3.1 实验概要

验证学生编程能力和协作精神的最好的方式是项目驱动式。该文组织湖南科技学院计算机系软件工程专业2012级本科部分学生开发一个web平台的考试系统项目,针对传统考试方式的问题,实现web平台下的自动出卷、改卷、评分等功能。参与人员共有12人,分别分成3组2类。1类为独立组4人,由有经验同学组成。另1类为两个结对组,每组均为4人,第1组为两位能力强和能力弱同学混合结对,另一组为4位中等能力同学组队。结对组按时间周期交换搭档。这3组的项目需求和目标都是一样的。该项目提供了基本素材,如数据资料,学生主要完成其中的在线考试部分。主要分四个阶段(数据库设计、在线答题、判卷并分析结果、记录学习轨迹)。endprint

3.2 实验结果分析

项目结束时的结果对比如表1所示。从表1可以看出,在项目初期,结对组合所花费的时间比较多,主要是因为初期沟通效果和协调都还不理想,进入项目中后期,结对组的总体效率有了较大提高。相互之间的协调和沟通也进步了许多。

进一步对比分析两个结对分组,可以看出中等能力组合的进步比强弱能力组合的进步要大。另外我们对3组的bug数量也进行了统计,结果显示结对组的bug数量远少于独立组。

3.3 问卷调查及分析

针对结对编程本身及对学生程序设计能力和团队合作精神,我们设计了多个问题的调查问卷。主要包括以下内容(以独立开发作为对比):

1) 编程能力是否得到了提高

2) 工作效率是否得到了提高

3) 学习方法是否有所改进

4) 团队合作是否比个人开发更有趣

5) 是否与结对的伙伴相处愉快

6) 是否在合作中得到了学习

问卷调查中,每个问答的回答分为5档,如果有回答满意度低于中间值,需要说明理由。根据调查结果,总体上来说项目参与同学在相互的协作开发中,编程能力有了较明显地提高,工作效率相对来说比独立开发更高,经过相互的帮助,学习方法有所改进,更能够感受到开发的乐趣。

但是也有一些不够积极的意见:有部分组合觉得效率不够高,压力大;个别组员需要时间来独立解决问题,有时候会觉得资源冲突;搭档是编程高手,会有自负情绪,不愿意接受他人的建议。

经过分析,我们认为主要是以下的原因产生了一些对结对编程消极的意见:

1) 合作双方水平差距较大,低水平同学感觉跟不上对方思路,压力大,另一方觉得对方拖累了自己,希望独力开发,但计算机资源被占用。

2) 有些同学不善于与他人交流,与其说与他人打交道,不如集中个人精力埋头苦干。但项目中不可能由个人完成,所以需要将结对编程看成是一种习惯,培养与人交流的能力。

3) 喜欢独自思考、解决问题的习惯背后,可能存在着害怕自己弱点被他人看破,不愿意被他人看到自己的无知的一面。但是,作为一种互相学习的方式,暴露自己缺点本身就是提高编程能力的一个必经途径。

本文认为可以通过改进工作方式、改进结对匹配方式、设置合适的结对组织策略来进一步改善结对编程方式的效果。(1)每对组合设置两台计算机,在检查他人代码和设计时,也可以同时自己完成一些需要独立开发的工作。(2)尽量让中等学员组对,避免强强联手,因为强者容易自负,互相不同意对方意见,会影响项目中的共事。强弱组合中,需要水平强的学员有一定耐心,这样才能促进水平弱学生的快速进步,作为指导者水平强的一方,也能培养自己的领导能力。

在改进措施中,重点要注意三点:(1)注重效果而不是形式。(2)每次配对周期要完成一个较完整的迭代过程。(3)要学生坚持在整个项目中保证结对编程的持续性。

4 总结与展望

传统实践方式的独立开发和团队开发方式均有弊端。独立开发方式开发周期长,遇到问题难以解决,不能培养团队精神;团队开发方式难以有效监控成员是否完成分配任务,因此我们提出将结对编程模式引入软件工程专业编程类课程实践,并选择湖南科技学院计算机系软件工程专业2012级本科学生的多种组合模式进行了对比试验,以检测结对编程对学生的编程质量和能力的影响,并通过问卷调查分析验证对学生学习积极性和团队精神的促进作用。

对比试验结果和问卷调查分析结果表明结对编程方式能有效提高参与者的软件工程思想和质量意识,加强了团队建设,促进了团队合作,学习能力和沟通能力得到了很大的提高。可以说结对编程方式是一种有效的实践教学方式。

针对试验中的一些个别消极意见,该文提出了改进工作方式和结对匹配方式来避免出现合作中会产生的配合、沟通不理想的问题。在今后的工作中,我们将进行更细致的配对组合来验证结对组合策略。

参考文献:

[1] 林丕源,刘财兴,张明武.软件工程专业的实践教学改革初探[J].实验室研究与探索,2007(12):245-247.

[2] 赵法信.程序设计与创新人才培养[J].电脑知识与技术,2011(5):1090-1091.

[3] 詹英,王黎征.结对编程在程序设计课程实践教学中的应用[J].南阳理工学院学报,2009(5):123-125.

[4] 谢国波,刘竹松,陈平华.结对编程在计算机专业学生编程实践的应用[J].广东工业大学学报,2008(7):65-66.endprint

3.2 实验结果分析

项目结束时的结果对比如表1所示。从表1可以看出,在项目初期,结对组合所花费的时间比较多,主要是因为初期沟通效果和协调都还不理想,进入项目中后期,结对组的总体效率有了较大提高。相互之间的协调和沟通也进步了许多。

进一步对比分析两个结对分组,可以看出中等能力组合的进步比强弱能力组合的进步要大。另外我们对3组的bug数量也进行了统计,结果显示结对组的bug数量远少于独立组。

3.3 问卷调查及分析

针对结对编程本身及对学生程序设计能力和团队合作精神,我们设计了多个问题的调查问卷。主要包括以下内容(以独立开发作为对比):

1) 编程能力是否得到了提高

2) 工作效率是否得到了提高

3) 学习方法是否有所改进

4) 团队合作是否比个人开发更有趣

5) 是否与结对的伙伴相处愉快

6) 是否在合作中得到了学习

问卷调查中,每个问答的回答分为5档,如果有回答满意度低于中间值,需要说明理由。根据调查结果,总体上来说项目参与同学在相互的协作开发中,编程能力有了较明显地提高,工作效率相对来说比独立开发更高,经过相互的帮助,学习方法有所改进,更能够感受到开发的乐趣。

但是也有一些不够积极的意见:有部分组合觉得效率不够高,压力大;个别组员需要时间来独立解决问题,有时候会觉得资源冲突;搭档是编程高手,会有自负情绪,不愿意接受他人的建议。

经过分析,我们认为主要是以下的原因产生了一些对结对编程消极的意见:

1) 合作双方水平差距较大,低水平同学感觉跟不上对方思路,压力大,另一方觉得对方拖累了自己,希望独力开发,但计算机资源被占用。

2) 有些同学不善于与他人交流,与其说与他人打交道,不如集中个人精力埋头苦干。但项目中不可能由个人完成,所以需要将结对编程看成是一种习惯,培养与人交流的能力。

3) 喜欢独自思考、解决问题的习惯背后,可能存在着害怕自己弱点被他人看破,不愿意被他人看到自己的无知的一面。但是,作为一种互相学习的方式,暴露自己缺点本身就是提高编程能力的一个必经途径。

本文认为可以通过改进工作方式、改进结对匹配方式、设置合适的结对组织策略来进一步改善结对编程方式的效果。(1)每对组合设置两台计算机,在检查他人代码和设计时,也可以同时自己完成一些需要独立开发的工作。(2)尽量让中等学员组对,避免强强联手,因为强者容易自负,互相不同意对方意见,会影响项目中的共事。强弱组合中,需要水平强的学员有一定耐心,这样才能促进水平弱学生的快速进步,作为指导者水平强的一方,也能培养自己的领导能力。

在改进措施中,重点要注意三点:(1)注重效果而不是形式。(2)每次配对周期要完成一个较完整的迭代过程。(3)要学生坚持在整个项目中保证结对编程的持续性。

4 总结与展望

传统实践方式的独立开发和团队开发方式均有弊端。独立开发方式开发周期长,遇到问题难以解决,不能培养团队精神;团队开发方式难以有效监控成员是否完成分配任务,因此我们提出将结对编程模式引入软件工程专业编程类课程实践,并选择湖南科技学院计算机系软件工程专业2012级本科学生的多种组合模式进行了对比试验,以检测结对编程对学生的编程质量和能力的影响,并通过问卷调查分析验证对学生学习积极性和团队精神的促进作用。

对比试验结果和问卷调查分析结果表明结对编程方式能有效提高参与者的软件工程思想和质量意识,加强了团队建设,促进了团队合作,学习能力和沟通能力得到了很大的提高。可以说结对编程方式是一种有效的实践教学方式。

针对试验中的一些个别消极意见,该文提出了改进工作方式和结对匹配方式来避免出现合作中会产生的配合、沟通不理想的问题。在今后的工作中,我们将进行更细致的配对组合来验证结对组合策略。

参考文献:

[1] 林丕源,刘财兴,张明武.软件工程专业的实践教学改革初探[J].实验室研究与探索,2007(12):245-247.

[2] 赵法信.程序设计与创新人才培养[J].电脑知识与技术,2011(5):1090-1091.

[3] 詹英,王黎征.结对编程在程序设计课程实践教学中的应用[J].南阳理工学院学报,2009(5):123-125.

[4] 谢国波,刘竹松,陈平华.结对编程在计算机专业学生编程实践的应用[J].广东工业大学学报,2008(7):65-66.endprint

3.2 实验结果分析

项目结束时的结果对比如表1所示。从表1可以看出,在项目初期,结对组合所花费的时间比较多,主要是因为初期沟通效果和协调都还不理想,进入项目中后期,结对组的总体效率有了较大提高。相互之间的协调和沟通也进步了许多。

进一步对比分析两个结对分组,可以看出中等能力组合的进步比强弱能力组合的进步要大。另外我们对3组的bug数量也进行了统计,结果显示结对组的bug数量远少于独立组。

3.3 问卷调查及分析

针对结对编程本身及对学生程序设计能力和团队合作精神,我们设计了多个问题的调查问卷。主要包括以下内容(以独立开发作为对比):

1) 编程能力是否得到了提高

2) 工作效率是否得到了提高

3) 学习方法是否有所改进

4) 团队合作是否比个人开发更有趣

5) 是否与结对的伙伴相处愉快

6) 是否在合作中得到了学习

问卷调查中,每个问答的回答分为5档,如果有回答满意度低于中间值,需要说明理由。根据调查结果,总体上来说项目参与同学在相互的协作开发中,编程能力有了较明显地提高,工作效率相对来说比独立开发更高,经过相互的帮助,学习方法有所改进,更能够感受到开发的乐趣。

但是也有一些不够积极的意见:有部分组合觉得效率不够高,压力大;个别组员需要时间来独立解决问题,有时候会觉得资源冲突;搭档是编程高手,会有自负情绪,不愿意接受他人的建议。

经过分析,我们认为主要是以下的原因产生了一些对结对编程消极的意见:

1) 合作双方水平差距较大,低水平同学感觉跟不上对方思路,压力大,另一方觉得对方拖累了自己,希望独力开发,但计算机资源被占用。

2) 有些同学不善于与他人交流,与其说与他人打交道,不如集中个人精力埋头苦干。但项目中不可能由个人完成,所以需要将结对编程看成是一种习惯,培养与人交流的能力。

3) 喜欢独自思考、解决问题的习惯背后,可能存在着害怕自己弱点被他人看破,不愿意被他人看到自己的无知的一面。但是,作为一种互相学习的方式,暴露自己缺点本身就是提高编程能力的一个必经途径。

本文认为可以通过改进工作方式、改进结对匹配方式、设置合适的结对组织策略来进一步改善结对编程方式的效果。(1)每对组合设置两台计算机,在检查他人代码和设计时,也可以同时自己完成一些需要独立开发的工作。(2)尽量让中等学员组对,避免强强联手,因为强者容易自负,互相不同意对方意见,会影响项目中的共事。强弱组合中,需要水平强的学员有一定耐心,这样才能促进水平弱学生的快速进步,作为指导者水平强的一方,也能培养自己的领导能力。

在改进措施中,重点要注意三点:(1)注重效果而不是形式。(2)每次配对周期要完成一个较完整的迭代过程。(3)要学生坚持在整个项目中保证结对编程的持续性。

4 总结与展望

传统实践方式的独立开发和团队开发方式均有弊端。独立开发方式开发周期长,遇到问题难以解决,不能培养团队精神;团队开发方式难以有效监控成员是否完成分配任务,因此我们提出将结对编程模式引入软件工程专业编程类课程实践,并选择湖南科技学院计算机系软件工程专业2012级本科学生的多种组合模式进行了对比试验,以检测结对编程对学生的编程质量和能力的影响,并通过问卷调查分析验证对学生学习积极性和团队精神的促进作用。

对比试验结果和问卷调查分析结果表明结对编程方式能有效提高参与者的软件工程思想和质量意识,加强了团队建设,促进了团队合作,学习能力和沟通能力得到了很大的提高。可以说结对编程方式是一种有效的实践教学方式。

针对试验中的一些个别消极意见,该文提出了改进工作方式和结对匹配方式来避免出现合作中会产生的配合、沟通不理想的问题。在今后的工作中,我们将进行更细致的配对组合来验证结对组合策略。

参考文献:

[1] 林丕源,刘财兴,张明武.软件工程专业的实践教学改革初探[J].实验室研究与探索,2007(12):245-247.

[2] 赵法信.程序设计与创新人才培养[J].电脑知识与技术,2011(5):1090-1091.

[3] 詹英,王黎征.结对编程在程序设计课程实践教学中的应用[J].南阳理工学院学报,2009(5):123-125.

[4] 谢国波,刘竹松,陈平华.结对编程在计算机专业学生编程实践的应用[J].广东工业大学学报,2008(7):65-66.endprint

猜你喜欢

团队协作实践课程
对会计专业实践类课程教学做合一教学模式的思考
智能机器人实践课程自主创新能力培养研究
民办本科院校旅游管理专业实践课程改革刍议
独立学院国际经济与贸易专业实践课程教学创新研究
《Oracle数据库》课程教学模式探究 
程序设计课程的教学方法探索与实践
基于优势学科的“材料化学实验”课程改革研究
政工职能在企业发展中的作用研究
促进有效沟通,提高高校学生会团队协作能力
物业企业管理中团队协作的重要性