公务员期刊网 论文中心 正文

结对编程软件工程论文

前言:想要写出一篇引人入胜的文章?我们特意为您整理了结对编程软件工程论文范文,希望能给你带来灵感和参考,敬请阅读。

结对编程软件工程论文

1研究性教学

软件工程研究性教学是一种实践性较强的教育教学活动。与现有的软件工程教学不同,研究性学习不再局限于对学生进行纯粹书本知识的传授,而是让学生参加实践活动,在实践中学会学习和获得各种能力。

1.1研究性教学作用

软件工程研究性教学强调知识的联系和运用,不仅是软件工程学科知识的综合运用,更是程序设计、数据库、计算机网络等领域知识的融会贯通。学生通过研究性学习,不但知道如何综合运用学过的知识,还会在已经学过的知识之间建立一定的联系,并主动学习新的知识。软件工程研究性教学能够通过合理的选题充分调动学生的学习兴趣和积极性。研究性学习是一种带有研究性质的综合性学习。软件工程研究性学习主要与传统的接受性学习相对。一般来讲,该学习方式是学生通过自己观察、调查、访谈、分析、设计、实现、测试等方式获取知识、得出结论、形成软件产品,而不是由教师将现成的知识和结论传递式教给学生的学习方式。软件工程研究性学习的本质在于让学生亲历软件开发问题的产生与方案形成的过程,使学生学会独立思考、实践和分析,实现发现问题、取得解决方案与学习三者之间的有机结合与高度统一。

研究性教学和学习有其独特的好处与必要性。软件工程课程包含了丰富的工程化思想和基本原理,然而,这些思想和原理需要通过实践和探索使学生获得切身体会。这种探究对学生的思维构成了挑战,有利于思维能力的培养。探究过程要求综合运用已有的知识经验,有利于学生整合知识、学以致用,培养学生实事求是的科学精神和态度,促进学生学会合作、交流、倾听、批判和反思。在探究过程中,学生经历挫折与失败、曲折与迂回、成功与兴奋,从而最终理解科学的本质。软件研究性学习引导学生自主获得软件开发相关知识或信息,对学生学会思维与实践、加强能力培养、践行可持续发展具有重要意义。

2软件工程研究性教学案例

考虑到软件工程的内容复杂性,作者选择敏捷开发实践的结对编程方法作为研究性教学的探究内容。敏捷开发是一个新的思路,但不是软件开发的终极选择。对于时间长、人数多的大型应用软件的开发,文档的管理与衔接作用是不可替代的。如何把敏捷的开发思路与传统的“流水线工厂式”管理有机结合,是软件开发组织者面临的新课题。敏捷过程将整个软件生命周期分解为若干个小的迭代周期,通过在每个迭代周期结束时交付阶段性成果来获取切实有效的客户反馈,目的是希望通过建立及时的反馈机制,应对随时可能出现的需求变更,并做出相应的调整,从而增强对软件项目的控制能力。因此,敏捷过程对变化的环境具有更好的适应能力,相比于经典软件开发过程的计划性特征,敏捷过程在适应性上具有更大的优势。极限编程实践中有一个非常重要的原则就是结对编程,这里所谓的结对编程并非是一个人在编程,另一个在看着,另外一个人同样起着非常重要的作用,他需要帮助编码的人找到低级的失误,防止其编码出现方向性的错误,特别是当出现编码的人不擅长解决的问题的时候,他会直接替换编码的人进行编程。

结对编程(PairProgramming,PP)是一个非常直观的概念,是指两位程序员肩并肩地坐在同一台电脑前,面对同一个显示器,使用同一个键盘、同一个鼠标一起工作。他们一起进行分析、设计、写测试用例、编码、单元测试、集成测试、编写文档等工作,基本上所有的开发环节都是面对面、平等、互补地进行,并且两人的角色可以随时交换。结对编程的实施方式分为面对面结对和远程结对两种方式。面对面结对编程是指两个程序员肩并肩坐在同一台电脑前、在同一个软件制品上一起工作的软件开发方式。面对面结对编程的好处在于,程序员可以直接快速地交流,获得高质量的代码并增强程序员工作的乐趣。面对面结对编程最大的优势就是交流非常方便,因为两个人靠得很近,言语和手势的交流非常自然,效果非常好。面对面交流没有隔阂,两个人互相看到对方的表情,产生和谐的气氛,合作也非常愉快。面对面结对编程效率较高,因为一方看着另一方在工作,因此编程的一方就不会想别的事情或停下来关注其他事情,因而能集中精力完成工作,即存在一种“结对压力”。面对面结对编程需要不定期地进行角色交换,以发挥两个人的能力。当面对面结对编程环境配置不当的时候,交换角色时需要双方一同站起来互换位置,然后再继续工作,这样就会导致停顿,引起不便和不顺畅,往往会打断双方的思路。这个问题可以通过提供宽敞的结对环境来解决,例如,提供一个较大的电脑桌,双方交换时只需要移动键盘和鼠标即可。环境受限的情况下,可以通过提供双键盘和双鼠标的方式解决,结对者可以在各自的键盘上工作,可通过系统来控制键盘和鼠标的切换。

鉴于全球化软件发展趋势的继续,要求两名开发者进行面对面的交流并不符合全球化软件发展的需求。这就要求两名程序员虽然在不同的地点,但是他们还能一起合作使用结对编程编写代码,这种方法被称为分布式结对编程。

分布式结对编程是一种编程风格,两个程序员在地理上是分布的,通过网络在同一个软件制品上同步工作。分布式结对编程可以克服面对面结对的一些不足,结对者通过网络可以随时随地结对工作,提高了结对的机会。为了进行分布式结对编程,需要功能较为强大的结对工具支持结对者高效地工作。首先,需要共享的代码编辑工具支持,一方的编辑工作能够被另一方实时地看到,同时,代码能够进行编译,以便能够检查语法错误,因此需要与现有的开发环境集成。第二,结对者需要充分地交流由于双方在不同的地方,合适的交流工具是必要的,基本的交流工具包括基于文本的交流和基于语音的交流。基于文本的交流比较容易实施,但由于一方在编程,文本交流会造成干扰。语音交流是一个必然选择,交流起来也比较自然,只是对网络带宽有一定的要求。语音交流只能听到声音,看不到对方的表情,影响进一步的了解。随着网络技术的发展,基于视频的交流是今后的必然选择。第三,角色交换支持。结对双方经过一段时间交换角色,这是结对编程的特定要求。分布式结对编程的角色交换本质上就是对编辑器的控制,允许一方处于编辑状态,另一方则处于察看状态。第四,分布式结对编程还要支持用户管理、发起结对等功能基于上述的内容分析,笔者将软件工程研究性教学内容确定为结对编程方法与实践的探索内容。首先,要求学生从理论上理解结对编程的特点、优势和不足,然后,通过亲身结对活动体会其中存在的不足和影响结对的重要因素,进而提出解决结对过程中的问题和设计方案,最后,通过软件来实现这些方案。

3软件工程研究性教学实施过程

根据以上的思路,笔者设计了软件工程研究性教学的实施步骤。

(1)要求学生分析敏捷方法相比传统的软件过程方法的优势,进而理解结对编程式敏捷方法的重要实践原则。分发材料让学生深入理解结对编程的优势和实施过程。

(2)要求学生亲身体验结对过程,通过不同的学生结对编程,发现存在的问题和影响结对效果的因素

阅读有关结对编程的文献,了解影响结对效果的因素。学生通过个性、能力和性别等因素进行结对,发现存在的问题,例如,交换角色的不便因素和结对模式效率影响因素等。

(3)学生针对存在的问题提出解决方案。例如,根据不同的影响因素,可以开发结对模式评测软件系统,匹配最佳的结对组合;结对环境拥挤带来交换角色的不便,可以设计合适的设备环境,如采用双显示器、双键盘和双鼠标的硬件结构,开发相应的控制系统。在后续的教学中,利用软件工程开发过程与方法来开发学生提出的结对系统。在分析阶段,学生根据自己的体会提出软件系统的需求;在设计阶段,设计该系统的结构和算法;在实现阶段,进行编码和测试;在部署阶段,进行安装运行和修改不足。

(4)总结研究性学习效果。进行结对对比实验,分析效果。学生总结一个学期的研究性学习过程,通过提出问题和解决问题的过程来理解软件工程的方法和工程化思想,理解如何分析软件的需求、设计、实现和部署。

4结语

从2011年开始,在本科生三年级的软件工程课程教学中实施了软件工程研究性教学。学生通过分组进行结对编程的实验,发现实施过程中的问题,提出改进方案,并设计了软件系统。在实施过程中,教师提供了研究资料,并给予了启发式引导。学生积极性非常高,积极参与个性评测,总结结对组合模式,提出许多建设性的意见和系统方案。有部分组最终完成了系统的开发和软件部署工作,开发的软件入选结对实验室的示范系统中,并被后续的学生使用,效果非常好。学生的一些工作被作者写入软件工程方法与实践教材中。今后工作室将把这些经验进一步扩展到其他课程(如程序设计课程、计算机基础实验课程)的教学实践当中。

作者:窦万峰 吉根林 单位:南京师范大学计算机学院

相关文章阅读