极限编程课程教学

更新时间:2024-02-15 作者:用户投稿原创标记本站原创 点赞:32539 浏览:154940

摘 要 :极限编程是敏捷开发方法的一种,是适用于中小型团队进行软件开发的轻量级方法学,正在被越来越多的公司和团队所选择.极限编程课程是一门实践性非常强的课程,因而在进行讲授时要特别重视实验教学的作用.该文对极限编程教学过程中的教学方法进行了初步探索,从教学目标、教学内容的安排、教学方法和手段、期终考核方式几个角度来探讨如何有效地开展极限编程课程的教学.

关 键 词 :极限编程,敏捷开发,教学,实验,分组

中图分类号:TP311文献标识码:A文章编号:1009-3044(2012)10-2292-02

Research on Extreme Proramming Course Teaching

DONG Xin-zheng

(Computer Science and Technology department, Zhuhai College of Jilin University, Zhuhai 519041, China)

Abstract:As a type of agile software development, Extreme programming is light-weight methodology for all-to-medium-sized teams developing software, and is selected by more and more panies and teams. Extreme programming is a very strong practical course, so particular attention should be paid to the role of experiment. This paper explores how to effectively carry out the teaching of extreme programming from the teaching objectives, teaching content, teaching methods and assesent methods.

Key words:extreme programming, agile development, teaching, experiment, grouping

极限编程(eXtreme Programming,缩写为XP),是一种软件工程方法学,是敏捷软件开发中最富有成效的几种方法之一.如同其他敏捷方法学,极限编程和传统方法学的本质不同在于它更强调可适应性而不是可预测性.20世纪90年代初,Kent Beck、Cunningham、Jeffries等人提出了极限编程的概念[1].时至今日,越来越多的公司和团队选择了极限编程,同时,极限编程的理论也在实践中得到不断的完善和发展.

极限编程是适用于中小型团队在需求不明确或者迅速变化的情况下进行软件开发的轻量级方法学.极限编程课程在我院是首次开设,在国内公开发表的刊物上也还未见有关于该课程的教学研究.

1教学目标

通过本课程的学习,使学生理解敏捷开发的价值和原则,了解极限编程的基本概念,熟悉极限编程的各个实践,掌握极限编程的主要实践,理解极限编程的价值和原则;理解各种XP实践的优点及限制,明确其适用条件,能够把恰当的XP实践应用到自己参与的软件工程中,或者改进相应的XP实践以适应实际的工程需要;使学生可以快速融入采用极限编程的团队或把极限编程方法带给新的团队,提高学生的就业竞争力.

2教学内容安排

本课程共68学时,其中18学时为实验部分.

关于极限编程的著作很多,但大都不适合用作教材,目前还没有专门针对大专院校的极限编程教材.比较经典的是Kent Back的《解析极限编程――拥抱变化》[2],也是第一本关于XP的图书,介绍了XP背后的思想,但成书较早,也很抽象,不适合用作教材.经过反复比较,最终选择了《敏捷开发的艺术》[3],该书详细描述了每一种XP实践,讨论了XP的原则和敏捷开发的原则,为团队使用XP提供了实用的指导.

2.1理论教学内容安排

理论教学内容分为三个部分:极限编程的基本概念、XP的37种实践、共同的价值和原则.

第一部分极限编程的基本概念包括五方面内容:敏捷开发的背景、敏捷开发宣言和原则、XP生命周期与传统生命周期的对比、XP团队组成、XP基本概念.

第二部分是本课程的核心内容,具体介绍37种XP实践的概念、作用、实施建议与禁忌.37种XP实践又分为思考、协作、发布、计划、开发五个单元.思考单元包括5种实践:结对编程、精力充沛地工作、信息化工作场所、根源分析、回顾;协作单元包括8种实践:信任、坐到一起、真实客户参与、统一协作语言、站立会议、编码规范、迭代演示、汇报;发布单元包括7种实践:全部完成、没有bug、版本控制、十分针构建、持续集成、代码集体所有制、文档;计划单元包括8种实践:愿景、发布计划、计划博弈、风险管理、迭代计划、松弛、故事、估算;开发单元包括9种实践:增量式需求、客户测试、测试驱动开发、重构、简单设计、增量设计和架构、试验方案、性能优化、探索性测试.

第三部分介绍各种敏捷开发方法共同的价值和原则,以指导对37种XP实践的灵活运用与改进.共同的价值和原则包括五大主题:改善过程、以人为本、消除浪费、交付价值和寻求技术卓越.

2.2实验教学内容安排

在实践中,根据教学内容和课时要求,安排了9个实验题目:Ja单元测试工具JUnit的使用、结对编程、版本控制工具SVN和Git的使用、自动编译脚本Ant的使用、自动编译脚本Men的使用、持续集成工具Hudson的使用、测试驱动开发、代码重构、客户测试工具FitNesse的使用.实验教学的目标是让学生体会并加深理解极限编程实践的实施过程、熟练掌握团队常用开发工具的使用、掌握极限编程的主要实践.

3教学方法和手段

3.1分组和团队学习

极限编程是一种软件开发方法学,是指导软件开发实践的理论,实践性和可操作性很强.为了调动学生的兴趣与热情,尽可能给学生提供实践环境,我们以小组的形式来进行任务的分配、完成与分享讨论.一个班的学生自由分为9组,每组6至8人,然后由组员推荐一名组长,负责组内的分工与协调.按照自愿的原则,每个小组分配一个实验题目作为任务,每一个任务都有具体要求.小组确定任务后,在规定的时间内,负责收集整理该主题相关资料,按要求形成文档、演示等成果,并记录每位成员的工作内容和工作量.

3.2课堂分享与讨论

根据课程进度和实验题目的顺序,安排各个小组在课堂上给大家分享他们的工作成果,可能是概念的介绍、方法和示例的演示、参考手册等.每次分享时,要提前通知学生下次要分享的任务和时间安排,以便负责该任务的小组及时准备,不负责该任务的小组提前了解.分享结束之后是关于该主题的讨论,分为三个阶段:其他小组成员对该小组的提问、老师对该小组的提问、老师的总结.针对提问中发现的问题和不足,负责分享的小组在课堂下进行补充和完善,并提交完善后的工作成果.

3.3实验验证

实验课上,老师把完善后的工作成果共享给所有学生,大家参考该成果进行实验,并验证该成果的正确性.如果仍然存在问题,则有负责该任务的小组继续完善,并提交最终版本的工作成果,作为实验评分的依据.

4期终考核方式

为了引导学生积极参与到完成小组任务的团队工作中,对考核方式进行了相应调整.考核成绩分为两部分:实验成绩占30%,以小组的工作成果和实验结果为依据;期末成绩占70%,以期末考试试卷为依据.这种考核方式大大激励了学生的学习热情,也给优秀学生提供了施展他们创新能力的机会.

5结束语

参考极限编程的教学目标进行了本门课程的教学内容安排,采用课堂讲授与小组学习、分享讨论、实验验证相结合的教学方法,最后根据课程特点制定了相对灵活的期终考核标准.教学实践中,学生对该课程兴趣浓厚,参与小组任务和课堂讨论的热情较高,在完成小组任务和实验的过程中,掌握了极限编程的主要实践,锻炼了自学能力和团队配合意识,提高了动手解决实际问题的能力.从平时的课堂表现和期终的考核结果来看,取得了良好的教学效果.

相关论文范文