结对编程软件工程论文

关键词: 结对 师范院校 计算机专业 编程

摘要:结对编程是极限编程的特色实践之一。在极限编程活动中,对于中国学生,结对编程是组织难度最大的活动。为了更有效地组织结对编程,文章分析以往团队成员所出现的一些不良现象,并探讨可行对策,为大学软件实践教学和软件业者从事极限编程提供参考和指导。以下是小编精心整理的《结对编程软件工程论文(精选3篇)》,仅供参考,希望能够帮助到大家。

结对编程软件工程论文 篇1:

结对编程在师范院校计算机专业实践教学改革中的应用

【摘要】针对师范院校计算机专业实践教学存在的问题,提出利用结对编程进行实践教学改革的方案。分析了结对编程的特点、结对原则和实施要求,并与传统的实践教学进行了实验对比。实验结果表明,结对编程能有效降低Bug出现频率,提高学生动手能力和团队合作意识,促进了实践教学改革。

【关键词】结对编程:师范院校;实践教学改革;计算机专业

引言

在我国高等教育体制中,师范院校计算机专业培养目标主要包括两个方面:一是要求毕业生具备教书育人的良好教育理论素质和技能:二是要求毕业生具备胜任所从事岗位的扎实的学科专业知识以及较强的实践能力和创新能力。长期以来,由于受传统教师教育培养模式影响,师范院校计算机专业实践教学仅被看作是一种辅助性和验证性手段,导致出现重理论教学,轻实践技能,重思维能力,轻动手能力的现象,培养出来的学生难以适应社会需求。随着师范院校就业形式多元化的发展,毕业生不仅可以选择当老师,还可以从事软件开发、网络管理、信息技术等操作能力较强的工作。针对河南省4所师范院校的一份调型结果显示:计算机师范生只有34.7%的学生非常愿意和愿意从事教师职业,其中计算机专业科班出身的学生只有29.68%的人愿意从事计算机教学。由此可见,推行实践教学改革已成为师范院校的迫切要求。当前师范院校计算机专业应该着力培养“教师+IT工程师”新模式的人才,因此,如何提高学生的计算机应用能力,培养专业素养高、综合能力强、动手能力突出的实践型人才是亟须解决的问题。

对计算机专业而言,实践教学是培养计划的重要组成部分,而提高编程能力、践行软件工程思想、培养团队合作精神则是实践教学中的重要环节和目标,因此,各院校均将实践教学摆在了重要的战略位置上。目前,师范院校计算机专业的实践教学环节主要包括教学(课程)实验、实习实训、课程设计、毕业设计(论文)、实践创新等方面,实践操作方式大体分为独立完成和团队合作两种。但是不论哪种方式,都存在不足:独立完成方式开发周期长、开发效率低、Bug出现频率高,不利于培养团队合作精神,不利于践行软件工程思想:团队合作方式无法保证团队成员均能各司其职,无法达到全面发展,并且存在着“窝工”、“吃大锅饭”等现象。往往团队中只有小部分人真正动手编程,其他人员仅仅是借用团队实验成果达到实验或考核目标。通过分析目前实践教学实施过程中存在的问题,我们提出利用结对编程思想来改革传统实践教学方式的方案。

一 结对编程概述

结对编程的定义为:两名程序员合作开发同一产品模块(设计、算法、代码),这两名程序员分别扮演“驾驶员”和“导航员”的角色,共同思考问题,共同负责产品模块的各个方面。“驾驶员”控制鼠标、键盘并编写代码,“导航员”主动持续地观察和辅助“驾驶员”的工作,找出代码的缺陷,思考替换方案。结对双方的角色不是固定的,而是进行周期性的交换。任何时候双方都是平等活跃的参与者,在整个项目开发过程中,两者共享所获得的工作成绩。

结对编程是极限编程12个最佳实践中最重要原则之一,是团队设计的基础,它与传统的开发过程有很大的不同。在传统开发过程中,每个开发人员负责系统的一部分开发任务,各自分工,互不干扰。而结对编程是两人结为一对,共同完成同一个开发任务。两人在同一台计算机面前进行编程活动,“驾驶员”进行操作编码,“导航员”观察代码并考虑设计问题。一旦发现问题时,暂停编码工作,双方讨论解决。结对者的角色根据需要进行不断调整和交换,包括与其他结对小组交换成员。

结对编程的概念起源于20世纪90年代中期。经过近20年的研究和发展,多数软件企业因其具有可以减少风险、提高生产效率、代码质量高、有利于交流学习等优点而积极采用结对编程。也有一些企业对其持反对态度,主要理由是认为结对编程浪费人力资源、对程序员要求太高、公司人手短缺等。高校教学中应用结对编程思想的目的与软件企业采用结对编程的目的不同,前者主要是帮助学生提高编程能力和培养团队合作精神。在教学方面,最有代表性的是在1999年犹他州立大学做的一项试验,结果表明虽然结对组在最初阶段比独立工作的学生完成同样任务花费的时间更多,但很快结对组花费的时间大幅度下降,而独立工作的学生需要花费比结对组更多的时间来达到相近的代码质量。国外研究显示,教学过程中采用结对编程可以提高学生的记忆力、自信心、学习兴趣、代码质量和学习成绩。国内研究表明结对组的共同学习失败率小于独立学习失败率,采用结对编程进行实践教学的班级普遍在编程能力和质量上优于采用传统实践教学的班级。而且,结对编程有利于培养学生互相学习的良好习惯,提高学生的自信心,促进团队合作和人际交往。但是,目前针对师范院校计算机专业特点的结对编程研究还很少。

二 实践教学改革中对结对编程的要求

综合考虑师范院校计算机专业本科生的实际情况,对实践教学改革中践行结对编程从工作环境、项目选择、结对原则等方面提出相关要求。

1 工作环境要求

由于结对编程工作模式是两人坐在一起共同完成程序的设计、编程和测试,因此需要将传统的“一人一桌一机”的工作环境改造为“两人一桌一机”环境,使工作台和设备的摆放便于结对搭档之间的交流与合作,为了不影响其他结对组的工作,最好将工作环境设置为隔断式空间。如图1所示。

目前,大多数软件公司的工作环境与图1类似(传统开发仍然是“一人一桌一机”),这样可以让学生“身临其境”感受未来实习或工作单位的工作环境。

2 项目选择

实践教学不是单纯的课程实验,提高学生编程能力最好的方式是项目驱动式。考虑到师范院校计算机专业学生的实际能力和编程素养,功能全面、业务逻辑复杂、代码量庞大的大中型项目并不适合作为实践课题,而通常情况下只由一人工作几天甚至半天即可完成的微型项目也不能起到锻炼技能的作用。因此,团队结构简单,开发人数在4~6人,代码量在18人月以下,项目目标简单,不需要与周边系统集成,对系统高可用性要求一般的小型项目是最佳选择。同时,宜选择学生感兴趣的、业务逻辑比较熟悉的小型项目进行实践,如单机版游戏开发、多媒体教室预约管理系统、单词记忆软件等。

3 结对原则

实践教学改革的目的是最大限度地提高学生实际动手能力、培养团队合作精神和创新精神。实践教学改革中的结对编程除了满足基本的原则外,还应突出以下几点:

(1)按照编程水平高低,将学生分为高级、中级和低级三个级别,因此结对组合有“高级+高级”、“中级+中级”、“低级+低级”、“高级+中级”、“高级+低级”、“中级+低级”几种形式,为了达到学习和提高的目的,应该优先选择“高级+低级”的模式。在这种模式中,力求达到高手培养新手的“帮带”效果。

(2)结对编程的双方有一个较长的磨合过程,应该让学生尽早“结对”,争取在实践项目开始时,结对双方已经有多次合作经历。因此,在课程实验阶段,就应该让学生自行寻找“搭档”,并经常更换“搭档”,以期找到最“志同道合”的伙伴。伙伴的选择尽量将性格融合的,技术互补的配对。

(3)结对编程的双方经常交换角色。角色可以定时交换,也可以根据开发任务交换。假设A为“高级”者,B为“低级”者,则难度大的任务由A担任“驾驶员”,此时B在一旁观摩和学习;难度小的任务由B担任“驾驶员”,此时A在一旁监督和指导。

(4)结对双方必须保证地位平等。“低级”者容易产生依赖和畏难心理,所以在结对编程过程中需要鼓励“低级”者积极主动,而“高级”者应该以指导和沟通为主。两人是平等的,只有经验多寡之分,没有地位高低之分。对“低级,,者而言,独立操作实现一个功能模块后,往往异常兴奋,在结对中也会表现得越来越积极。因此,安排难度适中的结对任务有利于加强“低级”者参与结对的意愿。

(5)结对双方必须全力以赴。结对编程本身能促使人竭尽全力,两人一起工作的时候,没有走神分心的条件。一旦编程过程中出现问题,则立即停止,双方共同讨论解决。

(6)结对双方必须对待解决的问题有相同或相近的认知。结对双方对开发任务都必须做到逐步了解、思路一致、编码规范一致,包括标识符命名规则、注释风格等。编程时先经过讨论,达成共识,然后方能动手编写程序。

(7)任务出错或不能完成,应由双方共同负责,不能相互指责。两人意见不同时,可由指导教师协助解决,不要各执己见、据理力争。

(8)指导教师给予学生更多鼓励,结对双方之间也需要相互鼓励、相互学习,可以产生共同的荣誉感、责任感和成就感。

三 实验对比及分析

1 实验设计

我们在课程设计这一实践教学环节中,采用对比实验的方法对结对编程进行评价。在课程设计开始之前,学生已经在课程实验阶段进行了结对编程训练。对比实验班级有44名同学,分成两个实验对比组:一组采用传统的小团队开发方式,称为传统组,组员各自独立编程;一组采用结对编程的团队方式,称为结对组,结对组由若干结对单元组成,结对单元采取两人结对编程方式。指导教师拟定4个课题并事先划分好模块,分别交由两个实验对比组完成,均采用面向对象程序设计。对比组分配如表1所示。

表1中,对比实验组的具体要求如下:

(1)两组均要求遵循软件开发流程,需要提交相关文档

(2)两组均分成三个阶段,由指导老师根据时间确定,每个阶段同时考查各组的完成情况。阶段考查时,传统组需提交各成员的任务分配记录;结对组需提交结对交换记录。

(3)两组均以答辩的形式给出每个课题的最终成绩,并事先告知:传统组各成员均有自己的成绩,根据自己对课程设计的贡献给出;结对组每个结对单元的两人共同获得一个成绩(若结对单元之间经常互换结对角色,则参与交换的人员共同获得一个成绩)。

2 实验结果及分析

对比实验组的实验结果分别如图2、图3、图4所示。

图2显示在课程设计初期,结对组花费的平均开发时间比传统组长,原因是结对组在结对编程之前需要进行讨论和交流,达到共识后才进行动手编程,而且有些结对单元还处于磨合期。随着项目的进展,结对组的编程效率逐渐增加,与传统组的开发时间差距也逐渐减小。

图3显示,在各个开发阶段,结对组的平均Bug数量均较独立组少,原因是结对单元的两人对同一任务实行结对设计、结对编码、结对测试和结对评审。因此,在动手编程之前已进行了充分的交流和讨论并达成一致意见,而且在编程过程中,一人编程,另一人随时对编程中的错误进行监督和提醒,有效降低了Bug数量。

图4显示了两个实验对比组的平均成绩(4个课题的总平均成绩),成绩的考核综合考虑了开发时间、Bug数量、团队合作精神、项目完成质量、编码风格等指标。实验结果表明,结对编程的效果明显高于传统方式。

四 结对编程对实践教学的改进

通过考查学生结对编程过程及对比实验分析,发现采用结对编程的学生,其编程素质有了明显的提高。因此,我们提倡在教学过程中采用结对编程思想来改革计算机专业实践教学。

1 结对编程的优点

(1)动手能力较低的学生学习和上手速度快,主要原因为:一是学习的内容均是实际需要的,目的明确,针对性强:二是有人帮带,手把手的演示,比自己看书摸索进展快、效果好;三是边学边用,知识点掌握扎实。

(2)结对编程改掉了一些学生的编码坏习惯,同时也学习了他人的编程优点:如快捷键的灵活运用,解决问题的搜索技巧等。另外,代码的层次和语句变得更优美易读。

(3)工作效率提高了。结对中,一人对另一人实际上有监督作用,有效杜绝了学生上机时聊天、打游戏、泡论坛、看电影等现象。结对编程时两人合作能更有效地交流,相互学习和传授经验,解决问题能力有较大提高。而且,在结对过程中,结对双方经常有思想的碰撞,在讨论中更容易培养创新意识。

(4)程序Bug明显减少,代码质量显著提高。结对编程,首先需要两人共同理解,经过讨论,形成一致思想,才可以编程。这样减少了由于理解错误带来的风险;其次,结对编程在编写代码的同时进行着代码评审,出错几率降低了很多。所以结对编程能有效减少Bug数量。

(5)每个学生都有动手实践的机会,都能在实际操作中学到实用知识,避免了前述传统团队开发中“窝工”、“吃大锅饭”的现象发生。由于每人需要完成自己的结对任务,所以几乎不存在照搬照抄他人成果的情况。

2 对师范院校实践教学的促进作用

结对编程除了具备上述的优点外,对师范院校的计算机专业而言,还有着独特的优势。

(1)培养和提高了师范生的教学技能。师范生的教育实习是一个重要环节,但是多数学生的实习效果并不好,往往表现为不能进入教师角色,无法胜任顶岗课程教学任务等。究其原因是教育实习之前的试教环节存在弊端,因此严抓试教工作是教育实习取得成效的前提。但是,由于课时的限制,教师不可能让每个学生都试讲并给予指导。而结对编程环境恰好可以提供一个良好的试教平台,这也是提倡“高级+初级”结对方式的原因所在。因为,在帮助和指导“搭档”的时候,学生可以切身体会到“学会”和“教会”是两个不同的层次,要想讲清楚一个知识点,需要有耐心、勤思考。另外,被辅导的对象也会有无形的动力去努力学习,并模仿“搭档”的教学方式。因为老师讲解某个知识点可能无法完全站在学生的角度去考虑,学生如果听不懂会认为“老师懂这些是理所当然的”,而且性格内向的学生可能会羞于向老师请教。但是,如果这个知识点是由自己的同学来讲解的话,则情况大有改观。在这个过程中,学生往往能收获到成功的喜悦。

(2)增强了女生的自信心。师范院校女生居多,而且大都受“女生不适合学计算机”等片面观点的影响,往往对编程望而生畏。在结对编程中,不论知识点的难度大小,每个人均需要亲自动手操作。在公平对等的编程环境中,她们能真正动手敲程序代码,一旦完成了自己的第一个小程序,她们往往很有成就感,自信心也极大增强。如果能得到老师和“高级”者的鼓励和赞许,她们的进步会更大。

五 结束语

结对编程是一种新的编程思想。虽然部分软件公司在项目开发中,对使用结对编程的方法持消极态度,表现为:(1)管理人员的反对;(2)不能让两个人干一个人的活;(3)编程人员的反对。究其原因主要是考虑开发成本等经济效益以及程序员编程水平相差大。而在本科教学中这几条因素的影响很小,故可以实施和推行。通过对比实验结果表明,结对编程可以加快学生的学习速度,同时还能提高程序的设计质量、减少程序缺陷、提高学生的操作技能和团队合作精神,并且在此过程中结对学生的心情更加愉快,学习积极性、自信心都得到了明显增强。但是,也存在着一些问题:如有的学生喜欢独立编程,不愿意结对(存在个别学生选择独自完成课程设计而不参与团队开发的现象):有时会出现不适合结对的时机,比如对新技术进行尝试和攻关的时候:如何采取有效措施让“低级”者真实地参与结对编程等。在下一步的实践教学改革中,将关注以上问题,寻找合适的解决方案。

作者:熊晶 高峰 王爱民

结对编程软件工程论文 篇2:

极限编程中结对编程的不良现象分析及对策

摘要:结对编程是极限编程的特色实践之一。在极限编程活动中,对于中国学生,结对编程是组织难度最大的活动。为了更有效地组织结对编程,文章分析以往团队成员所出现的一些不良现象,并探讨可行对策,为大学软件实践教学和软件业者从事极限编程提供参考和指导。

关键词:结对编程;极限编程;敏捷软件开发;人为因素

0 引言

结对编程(pair programming)是极限编程(XP,eXtreme Programming)和敏捷软件开发方法学的特色实践之一。对于我国学生,组织极限编程活动,采用结对编程方法,有助于沟通能力、口头表达能力的培养,有助于相互学习、相互支持,有助于团队协作能力的培养,有助于提高软件质量和开发效率。因此结对编程实践具有非常重要的意义。

笔者详细分析了结对编程中学生所表现出来的不良现象,并针对这些现象给出相应对策,以改进极限编程活动的效率。

1 结对编程的不良现象

一个项目团队成功或失败的关键原因往往不是技术因素,很多非技术的人为因素在起作用。极限编程活动中,如何组织结对编程就是非常突出的人为因素。笔者曾参与德国波恩大学2届XP活动,在国内组织了4届XP活动。活动中发现传统软件工程中的一些习惯做法,以及学生的一些习性,导致活动中出现了一系列问题,在价值观、团队行为等多个方面都产生了明显冲突,导致结对编程在国内“水土不服”。

冲突1,传统软件工程中,往往先划分模块,然后个人对模块负责。这种做法看似责任明确,但实际上,项目依赖每个成员,当某个成员离职,该模块就无法维护,导致项目风险增大。此种做法与极限编程所倡导的“代码集体所有权”违背。

代码集体所有制,即每个人都是项目中所有代码的受益人,同时也是责任人。每个人对所有代码负责,而不是仅对自己编写的代码负责;每个人要对所有代码的将来的维护负责;而不是仅对当前运行负责;每个人提交的代码都属于团队,允许他人质疑、修正、重构,甚至抛弃重建。

国内学生大多过度关注个人能力和个人成绩,而往往忽略团队能力和团队成绩,他们往往倾向于独立研究解决问题。独立学习能力往往作为衡量学生个人能力的标尺,从小学到大学的教育都如此,根深蒂固,短时间内难以改变。

冲突2,传统软件工程中,多人分别完成任务,看似并行工作,效率应该更高,但实际上返工较多。原因是个人独立完成一个模块的设计、编程和测试,实际上往往导致需求误解多、缺乏设计合理性、缺乏测试完备性,最后导致软件质量达不到要求,项目开发效率降低。

国内学生常常质疑这样的问题,两个人用一台电脑编程,怎么可能比两人用两台电脑并行编程更有效?

结对(pair)是最小的团队。结对编程要求两人自由组成一个结对来完成一项任务,要求坐在一起用一台电脑。两人分别扮演两个角色:正驾driver和副驾co-driver或领航员,就像汽车拉力赛中两人共同驾驶一部汽车。正驾操键盘,负责编码,副驾掌鼠标,负责指导方向并做代码审查;正驾注意力往往集中在最邻近目标上,如前方400米之内的具体目标,而副驾能借助地图(如模型或文档)来指导更长远目标。两人不断沟通交流,密切协作,共同抵达目标。

两人每小时休息一次并更换角色,直到一项任务完成,任务完成之后,结对解散,对新的任务再组织新结对。一个项目完成后,每个人都应与其它成员至少结对一次。

对于一个项目团队来说,最理想情形是,一个人的成功经验就是整个团队的经验,一个人在某个地方失败或走弯路,整个团队都不会再出现。

冲突3,传统软件工程教育中,指导教师或项目负责人往往要起过分重要的权威作用。因为学生往往只关注老师如何评价,而往往忽视团队其他成员的意见或建议。当团队成员之间出现错误或不一致,就难以协调自行解决问题,除非指导教师干预。极限编程中,尊重是极限编程核心价值观之一。要尊重每个人的意见,而不仅仅是教师或项目负责人。

2 不良现象分析及对策

文章就结对编程活动中成员所出现的7种不良现象进行分析,并给出相应对策。

1)高手单驾,副驾休闲。

编程能力强的学生往往倾向于单独行事,高手单独驾车,很忙很累,而副驾无事可做,导致人力资源浪费。解决对策是坚持每小时更换角色,共同驾驶,共同抵达目标。个人能力有高低差异,高手有责任主动介绍经验和技能,把更多机会给另一方,另一方应主动提出问题,寻求解决,主动驾驶。

2)事后证明。

副驾不同意正驾选择或未达成一致,正驾就独自到达目标,先造成即成事实,“一夜之间”独自解决难题,以此证明自己正确高明。这样对另一方可能造成潜在矛盾,并未达到结对编程之目的。解决对策,副驾作为领航,应先决定做什么,正驾再执行。

3)成功自尊。

很多学生只希望别人看到自己成功的结果,不希望别人看到过程中的多次失败。这种“要面子”心理和“结果证明成功”做法导致过程中交流被动,团队效率降低。解决对策,鼓励失败和失败共享。具体做法是,建立失败表彰机制,鼓励个人发布自己遇到的错误和失败,发布“有效失败”记录,说明发生时间、错误或失败现象以及原因和解决办法,标明撰写人、重写人。并将记录发布在团队网页上,使所有成员能及时看到。“有效失败”的每一个错误或失败都有特色、不重复,对所有成员都有参照价值。对于一个错误,如原因不明,相同错误可能再次发生,对于多次发生的错误需要团队格外重视,如果原因已清楚,相同错误就不应再犯。一名成员发现错误后,不鼓励私下自行解决,因为这样对其它成员并没有经验积累。在每个开发周期之后应累计错误记录次数。对累计次数最多的个人进行鼓励表彰。鼓励失败是极限编程最具颠覆j生的特点之一,测试优先和测试驱动开发也有鼓励失败的动机。

4)情面阻碍。

学生在发现别人编码有错误时,不好意思指明,更不好意思修改或重构他人代码,导致错误和缺陷不能及时发现和处理,进一步可能导致项目延误或重大缺陷。解决对策,勇气是极限编程核心价值观之一,要求每个人共同担责,贯彻代码集体所有制,将所有共享代码都看作是自己的编码。项目负责人应明确当发生错误或缺陷时,不仅应追查谁做的编码,还应追查谁可能已经发现了错误而没有说明的责任人。

5)不熟悉难结对。

只与相熟的人结对,而对陌生人难以有效交流,难以组成结对。团队中可能有外国学生,也可能是本科生、研究生混搭,大部分相互间不熟悉,导致部分成员在执行任务时形成隔阂。解决对策,成员应明确与陌生人有效沟通是一种极其重要的能力,应格外重视这种能力的培养,一些集体配合游戏项目有助于成员之间增强交流和协作。

6)个人偏见。

对技术方案见解或意见不一致而产生个人偏见,进而导致对某成员“看不惯”“合不来”,从而采取不合作态度。如果团队中两个重要成员形成个人矛盾,那么整个团队就会受到影响。解决对策,编程是一种创作,创作都带有个人色彩,编程作为软件工程活动,个性发挥应受到限制。让团队成员知道,可争论,但反对争吵;可公开争论,但反对私下言论和个人偏见。每个迭代周期结束后,成员都应回答“对你帮助最多的同学是谁?”,以促进相互学习,交流经验。

7)延误借口。

学生编程往往要使用别人已完成的编程,但发现别人编程有问题或缺陷,而没有及时地、明确地提出,并以此为借口,延误了自己的任务,并把延误责任推给别人。另一种情形为起初使用他人编程正确,后来他人出于纠错或重构目的而修改了编码,导致自己编码错误。以此为借口,延误了自己的任务。解决对策,项目负责人应明确指出这是不可容忍的行为,成员应明确每个人的编码都会被他人使用。

3 相关讨论

结对编程目前获得广泛关注并给予好评。文献[3]通过实践指出结对编程可减少15%的开发时间。文献[4]说明组织大学生结对编程,获得定性和定量的评价和度量,结果都是积极的。但软件业开发者则提出更多更尖锐问题来探讨。

文献[5]指出结对编程对于软件工程的好处和缺点,其中大多缺点是针对中国软件开发团队。例如个人编程习惯不同可能导致难以协调;争论中各执己见,互不让步。应关注结对副作用,如谈论内容与工作无关,合伙应付敷衍等现象分析。文献[6]给出结对编程中的一些成型的模式,一个结对中的两个角色,正驾和副驾,对于不同人员的行为特征,给出解决办法。最主要的是,在一个结对中,当某人行为出现某种现象时,就应及时转换角色。

文献[7]探讨了何时结对编程最有效的问题。前提是具体考虑任务(称为挑战)难度和个人技能之间是否匹配。结对编程有流模式与指导两种成功模式,流模式就是两人技能与任务难度之间都匹配,分工协作完成任务;指导模式是针对新手完成较简单任务,需要老手指导,让新手有机会学到经验。结对编程还有两种不成功模式,“经验浪费”和“不知所措”。“经验浪费”模式是任务太简单,而无需老手指导,此时如果强行结对编程,就会导致浪费人力;“不知所措”模式是另一个极端,任务太复杂或需要太多新知识,最后无力完成。

4 结语

结对编程在我国仍处于探索阶段。尽管目前存在种种不良现象,但也存在多种途径和方法。(1)活动组织者只要认识到这些不良现象背后的原因,就容易找到合理的解决办法。(2)在活动之初通过培训告知参与者注意事项。(3)在活动中各个迭代周期小结时组织者应及时指出所发现的不良现象。(4)对“失败”鼓励和奖励,这种观念转变也很重要。

参考文献:

[1]Beck K,Andres C.解析极限编程:拥抱变化[M].2版 雷剑文,译.北京:机械工业出版社,2011:42-55.

[2]Martin R C.敏捷软件开发——原则、模式与实践[M].邓辉,译.北京:清华大学出版社,2003:9-20.

[3]Cokburn A.The costs and benefits ofpair programming[J].Extreme programming examined,2000(8):223-247.

[4]Williams L,Kessler R R,Cunningham W,et al.Strengtheningme caseforpairprogramming[J].Software,IEEE,2000,17(4):19-25.

[5]陈皓.结对编程的利与弊[EB/OL].(2010-03-15)[2013-9-4].http:∥kb.cnblogs.com/page/58732/.

[6]Pairprogramming stereotypes[EB/OL].(2011-12-27)[2013-9-1].http:∥www.planetgeek.ch/2011/12/27/pair-programming-stereotypes/.

[7]Pair programming:to do or not to do[EB/OL].(2008-12-10))[2013-09-04].http:∥softwarecreation.org/2008/pair-programming-to-do-or-not-to-do/.

(编辑:赵廓)

作者:严悍 苑俊旺 邵帅 赵学龙

结对编程软件工程论文 篇3:

“结对学习”教学方法在高校计算机基础教学中的应用

摘要:改进教学方法,提高教学质量已成为计算机基础教学面临的重大挑战,本文介绍了一种新的教学方法——“结对学习”,并对“结对学习”在计算机基础教学中的应用、实施意义等方面进行了探讨。

关键词:结对学习;高校;计算机基础教学;教学方法

“结对学习”教学方法的应用意义

随着计算机的发展与普及,高校计算机基础教育越来越受到重视。一方面,社会各专业对高校学生计算机应用水平的提高,给计算机基础教学带来很大难度。由于高校毕业生计算机应用技能水平的高低已逐渐成为衡量其综合素质的一个侧重点,相应地计算机基础教育的改革与创新也变得势在必行。与其他传统基础教育相比,高校计算机基础教育面临的问题有:计算机基础是一门实践性强,技术更新快的课程,教学体系相对不够稳定,还在不断发展和完善之中;学生的计算机水平差距较大等。

目前,我校《计算机基础》课程教学任务大,每班的人数多达60人左右,最突出的问题包括:(1)新入校的学生计算机应用水平参差不齐,有些学生已经具备了熟练操作计算机的基本技能,而有些学生却因之前很少接触计算机而对使用、学习计算机有一定的抵触、胆怯情绪。这样就导致了教师在教学过程中很难抓住学生的共同兴趣点,教材、大纲等教学内容也难以统一。(2)课堂教学管理的基本数据缺少有效的采集、管理和分析手段,例如,每次上机作业成绩的评定、保存乃至最终的统计分析,目前还是主要依靠教师手工操作、记录,缺乏一个信息化、自动化的方法或工具使教师的课堂管理变得轻松、有效。(3)由于教学内容缺乏实际应用,造成学生上课时积极主动性较差,缺乏动手实践能力和创造能力,在以后的工作和学习中不能熟练使用计算机基础知识和技能。

为此,笔者提出一种新的教学方法——“结对学习”。“结对学习”的方法源自“极限编程”方法中的“结对编程”思想。结对编程技术是一个非常简单和直观的概念:两位程序员肩并肩地坐在同一台电脑前合作完成同一个设计、同一段代码。一个称为驾驶者,负责具体细节,另外一个称为领航员,负责关注整体、盯紧可能出现的错误,这两个角色可以随时交换。“结对编程”是一种效率极高的编程方法,更是一种“有效传播知识的方式”。把“结对”的方法引入计算机基础教学,可以很好地解决学生计算机水平参差不齐的问题。

“结对学习”的教学方法由三个维度组成:课堂教学组织的创新、课堂教学管理的信息化方法、与其他教学方法(分组、任务驱动、案例教学等)的有机结合:(1)课堂教学组织的创新。两两学生结合在一起,包括上机操作可以共用一台电脑,合作完成各项学习任务,学生间“形成积极的依赖”,“更好地传播了知识”。(2)课堂教学管理的信息化。研制开发了“高校计算机基础”课堂教学管理软件,填补了教学过程中基本数据采集信息化方法的空白。(3)与其他教学方法(分组、任务驱动、案例等)的有效结合。可以更充分地发挥各自方法的优势,如分组方法的引入,可以使教师课堂辅导的任务减轻;与实际应用结合良好的案例及驱动教学,可以很好地提高学生上课时的积极性,更好地解决计算机基础教学中遇到的问题。

“结对学习”教学方法的理论基础是“结对编程”、“构建主义学习”以及“合作学习”。“结对编程”的思想已经很成熟,“构建主义学习”和“合作学习”的教学理念也渐渐深入人心。“结对学习”教学理论应用在高校计算机基础教学课程上,用于培养学生的创新精神和实践能力,可以充分体现教师的主导地位、学生的主体地位的教学新理念,在学生计算机水平参差不齐的情况下,充分发挥学生的自主学习能动性,调动学习激情,提高学习效率,达到提高教学质量的目的。

“结对学习”教学方法的实施

1.理论研究与学习,探讨“结对学习”与其他教学方法的有效结合。“结对学习”与分组教学的结合:在两人结对的基础上,再每6~8人分组,选出组长辅助教师课堂教学、作业评分等。人数多于40人的班,可以选出一个助教来,这样就形成了层次分明的学生梯队:助教→分组大组长→结对小组长→成员,有效减轻了教师课堂上机辅导的压力。“结对学习”与“任务驱动”教学的结合:针对不同情况的结对,设计出不同层次的教学任务,以使得不同程度的学生都能得到相应的提高。“结对学习”与案例教学结合:对于适合案例教学的教学内容,精心设计出贴近实际应用、能够引发学生浓厚兴趣的案例来。

2.教学实验。在实际教学中,把班级分成三类:文科类、理科类、音体美类,从每类挑选出典型的班级再分为实施“结对”的班级和未实施“结对”的班级,分别进行横向和纵向的比较实验。在进行教学实验过程中注意督促检查学生完成教学任务的情况,及时了解学生对所讲内容的掌握和理解情况。根据学生完成练习的情况及时进行点评,特别是通过让课堂任务完成效果好的学生进行作品展示、记录平时成绩等方式,可极大地调动学生学习的积极性和主动性,活跃课堂气氛,提高教学效果。应及时总结“结对学习”教学方法的实施原则与方法,分析“结对”与“未结对”的区别与各自的优势及劣势。

3.课堂教学管理软件的开发与应用。开发“高校计算机基础”课堂教学管理软件,以帮助采集课堂上的基础数据(如每次课的课堂成绩、分组、结对情况等)、分析“结对学习”教学方法的具体实施成效,还可把此类软件推广应用到其他实践性强的科目中。

4.数据分析。分别对三类班级(文科类、理科类、音体美类)中的“结对”和“未结对”班进行平时成绩和上机考试成绩的分析,分析图举例如图1、图2、图3所示。

从大量实践数据分析来看,“结对学习”教学方法的实施可以有效提高学生班级的整体水平,大大降低不及格率,在这一点上,教学效果是不分专业的。但同时也能看出,此种教学方法对于提高“精英”学生率的效果不是太明显,尤其对于偏文科的专业更是如此,这也是我们以后在教学方法实施中改进的重点。

5.教学反思与交流提高。有效地组织实施“结对学习”教学方法的教师团队,每次课堂教学后写好教学日志,认真坚持做好教学反思,及时发现问题,拿出改进方案。定期组织集体听课,交流实施过程中的心得,经验。以论文的形式对此教学方法的改革和探索进行总结,为该教学方法的进一步推广打下良好的基础。

“结对学习”教学方法的应用效果

通过本次教学改革和探索,在该教学方法的实施过程中,主要解决了我校《计算机基础》课程教学中存在的如下几个方面的问题:

1.更有效地传播知识,很好地解决了学生中计算机水平高低有别的问题。我校学生在入学时计算机水平参差不齐,一部分学生已经掌握了一些计算机基础知识和应用技能,对于教师讲授已经学习过的内容,容易产生厌烦情绪,失去学习计算机的兴趣,学生的学习兴趣不高,学习的效果也大打折扣。而对于那些没有接触过计算机的学生,该课程对他们来说是全新的,学习起来明显感到吃力,出现跟不上教学进度的情况。按照“结对学习”的教学方式进行教学,势必形成“赶帮带”的局面,从整体上提高了本课程的教学效果。

2.解决了我校《计算机基础》教学学生多,教师教学辅导、考评任务重的矛盾。该课程教学时出现的教师辅导任务大,作业批改量大,教学任务过重等情况得到了一定程度的缓解。

3.培养了学生的团队、互助精神,提高了合作学习的水平与技能。通过“结对”、“分组”以及让操作熟练的学生进行课堂演示、对课堂任务完成好的学生的作品进行展示、小组讨论、学生互相帮助等方式进行学生之间学习交流和沟通,在一定程度上提高了学生的团结互助和协作能力。

总结和展望

笔者及相关的教学团队经过三年的“结对学习”教学方法的实践,总结出“结对学习”在计算机基础教学中实施的方法、经验及意义。对“结对学习”的教学方法在计算机基础教育中的应用进行了探讨。实践证明,这种新式教学方法在计算机相关教学中有着良好的效果,其相关理论和与其他教学方法的结合还有待于进一步研究。

在教学实践过程中,我们也发现还有许多方面可做进一步改革和探索,比如课堂教学管理软件的继续完善与升级;“结对学习”教学理论的更深入探讨与在计算机专业课中的推广使用等。

参考文献:

[1]周世兵.大学计算机文化基础课程教学探究[J].江南大学学报,2008(6):64-66.

[2]Laurie Williams,Robert Kessler,etc.Pair Programming Illuminated[M].北京:机械工业出版社,2004.

[3]William C. Wake. 探索极限编程XP系列丛书[M].北京:人民邮电出版社,2005.

[4]李德春.高等职业教育考试制度改革初探[J].职业教育研究,2006(12).

[5]张翠英.学分制条件下的高职院校实训教学研究[J].职业教育研究,2006(11).

[6]葛文英.基于网络的“大学计算机基础”教学改革[J].计算机教育,2010(14).

[7]冯凯.高职《计算机应用基础》课程教学改革探究[J].科技资讯,2010(24).

作者简介:

刘淑芝(1978—),女,河南商丘人,硕士,焦作师范高等专科学校讲师,研究方向为软件工程与数据仓库。

(本栏责任编辑:郑晶)

作者:刘淑芝 靳继红

注:本文为网友上传,旨在传播知识,不代表本站观点,与本站立场无关。若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:66553826@qq.com

上一篇:成校论文题目 下一篇:关于编程的论文题目