Scrum和Robocode在C#教学中的应用探索
2016-05-30顾家铭
顾家铭
摘 要 现有的C#课堂教学方式已经不能激发学生的兴趣。一方面,Scrum得到实践者的欢迎,在软件项目中得到越来越多的应用。另一方面,Robocode在原有Java语言基础上开始支持C#语言。在C#课程中,引入Scrum和Robocode,采用競赛考核机制。实践证明,创新的改革模式可以改善教学效果,提高学习效率,培养“计算思维”能力,并且激发团队责任感。教师可以不必采用Scrum的全部形式,优化Scrum,从而更好地实现教学目标。
关键词 Scrum Robocode C# 实践教学
中图分类号:G424 文献标识码:A DOI:10.16400/j.cnki.kjdks.2016.06.056
Abstract The existing C# classroom teaching mode has been unable to stimulate students' interest. On the one hand, Scrum practitioners welcome more and more used in software projects. On the other hand, Robocode based on the original Java language to support the C# language. In the C# curriculum, the introduction of Scrum and Robocode, the use of competition assessment mechanism. Practice has proved that the reform mode of innovation can improve the teaching effect, improve learning efficiency, cultivate the computational thinking ability, stimulate the sense of responsibility and team. Teachers can use some forms of Scrum, the optimization of Scrum, so as to better achieve the goal of teaching.
Key words Scrum; Robocade; C#; practice teaching
0 引言
敏捷开发是一种全新的开发模式,自从2001年以来开始获得IT企业的欢迎。实践者通常认为,敏捷开发可以显著降低开发成本、提高生产效率、缩短开发周期、提升最终产品的质量。敏捷方法使得开发团队具有更强的适应需求变更的能力。①Scrum被认为是目前全球最流行与最有效的敏捷项目管理理念与方法之一。Scrum不是开发产品的一种流程或一项技术,而是一个框架,在这个框架里可以应用各种流程和技术。②
Robocode是2001年7月在美国IBM 的Web alphaWorks上发布的坦克机器人战斗仿真引擎。Robocode要求使用Java语言对坦克机器人的动作进行编程,并设计不同的决策方案指挥坦克机器人的运行。③在此过程中,Java初学者掌握Java语言,提高程序设计能力。目前Robocode也开始支持C#语言。
1 C#课程中存在的问题
C#语言是.NET平台的第一语言,它几乎集中了所有关于软件开发和软件工程研究的最新成果。各大高校均将C#程序设计开设为计算机专业教学体系中的一门重要课程。传统的C#课程学习方式主要以课堂教学为主,很多老师感觉到学生学习兴趣不大,缺乏解决问题的能力。在程序设计课程中,我们应该注重培养学生的计算思维能力,使学生能够运用计算思维解决实际问题,而不只是编程语法。④
针对现有的教学中的问题,我们尝试引入敏捷开发中的Scrum模式和Robocode游戏平台。用Scrum帮助学生提高学习效率,让学生以高效、愉悦的方式相互协作。Robocode游戏平台可以为学习者提供一个充满乐趣与挑战的学习环境,更能强化学习动机,加快知识的充分吸收。台湾学者将这种学习方式译为“悦趣化学习”。⑤
2 基于Scrum和Robocode的教学改革实践
在“C#程序设计”课程中,根据敏捷开发的思想,以学生为核心,引入Scrum模式和Robocode游戏平台,提高学生的兴趣,培养学生的编程能力、“计算思维”能力以及团队协作精神。
2.1 项目分组与角色扮演
Scrum团队由产品所有者(Product Owner,简称PO)、Scrum主管(Scrum Master,简称SM)和开发团队(Scrum Team)组成。
(1)产品所有者。产品所有者是任课教师,他们是技术、结果和验证的负责人。产品所有者为一个为期2周的Sprint定义学习目标。产品所有者决定做什么;而Scrum Master和Scrum Team决定怎么做。
(2)Scrum Master。Scrum Master是由其他学生根据品质和技能选出来的,由学生担任。任课教师会担任 Super Scrum Master,帮助Scrum Master理解Scrum的各种知识等。
(3)Scrum Team。Scrum Team是由Scrum Master根据品质和技能自发组织的。这样形成由4名学生组成的团队。借助Scrum,学生们可以用一种愉悦的、高效的方式合作,并且可以相互学习自己没有的技能。Scrum会激发他们为团队做出贡献,成为有价值的成员。
2.2 项目具体实施过程
在Scrum中,整个开发周期包含若干个小的迭代周期,每个小的迭代周期称为一个Sprint。Sprint是Scrum的核心,在一个Sprint中完成需求、设计、实现、测试的任务。一个Sprint的时间长度通常是两周。
教学中,我们决定采用一个Sprint的长度是8节45分钟的课。先有任课教师进行示范Scrum会议,学生按照相同的方式去做。Scrum框架中包括4种会议:计划会议、每日站会、评审会议和反思会议。
(1)计划会议。每次Sprint开始时召开Sprint计划会议,由任课老师决定每个Sprint完成的教学目标。而且Scrum Master和Scrum Team决定如何实现教学目标。以第一个Sprint为例,每个小组需安装开发环境与Robocode平台、以及研发第一个Robocode机器人,并且熟悉Robocode的各种规则。
(2)每日站会。每日Scrum站会是以15分钟为限的事件,团队成员在这里分享各自的工作情况,并为接下来的24小时制定计划。⑥会议上,每个学生都需要说明:
昨天我做了什么?
今天我准备做什么?
有什么事情阻碍了我?
每日站会之后,由Scrum Master记录工作量,并绘制燃尽图。燃尽图方便教师和团队成员查看项目进度,并且方便维护。
(3)评审会议。在每个Sprint结束时,由Scrum Master主持评审会议,团队需要向教师演示本次Sprint团队的所完成的任务,由教师检视是否达到教学目标。
(4)回顾会议。在评审会议之后,由Scrum Master主持回顾会议。各团队成员总结教训,提出改革措施。按照同样的步骤,开始下一次Sprint。教师必须教会学生如何回顾,回顾其实就是评估学习过程。
2.3 Robocode平台的规则
(1)类和对象、属性、方法。面向对象思想的重点是类的设计。Robocode里的每个机器人都由一个或多个类构成。学生可以创建属于自己的机器人类,更形象地理解类的定义。
封装是面向对象的特点。坦克机器人类具有三个属性:机器人坦克车(Vehicle)、炮(Gun)和雷达(Radar)。
面向对象中将类的操作封装为方法。通过调用turnRight( )和turnLeft( )实现机器人旋转,调用ahead( )和back( )实现机器人向前或向后移动。
(2)继承。学生创建的每个坦克机器人类都继承Robot类,Robot本身提供了很多方法,比如上面介绍过的ahead( )和back( )等。
结合Robocode,学生更加理解继承的含义。继承是在现有类的基础上建立新类。子类的对象既可以使用新的属性和方法,也可以使用父类的属性和方法。继承使得复用代码变得容易,缩短了开发周期。
(3)多态。Robot类本身具有一些常用的方法,如onScannedRobot( )、onHitByBullet( )、onHitRobot( )、onHitWall( )等。
每个学生在创建自己的坦克机器人类时,通过编写策略代码,覆盖现有的方法如来躲避敌方坦克的炮火,敌方坦克的雷达等。结合Robocode,学生更加理解多态的含义。
2.4竞赛考核方式
本文针对“C#程序设计”的特点,对传统的考核方式进行改革。基于Scrum 和Robocode的教学考核分为三部分:竞赛实战占50%,团队小组成员互评占20%,平时课堂表现与考勤占30%。
在最终竞赛中,学生开发的各类坦克机器人将一决高下。以每班40人为例,每组4人,共分为10组,以小组为单位参加比赛。采取单循环赛制,得到最后竞赛排名,根据排名给出竞赛实战成绩。冠军小组讲解设计思路,教师进行点评。
教学过程中,采取Scrum方式,分组学习。团队小组成员根据各自表现进行打分。通过这个环节的互评,小组成员形成一个相互监督、相互促进的良好工作氛围。
3 结语
敏捷开发是一种新兴的软件开发方法,很多实际方法还在研究中。在C#课程中,使用Scrum方式,学生会感到学习的快乐,提高学习效率。自组织的Scrum 团队按照Sprint形式学习C#,激发每名成员的责任感。Scrum团队和教师采用计划会议设置教学目标,采用回顾会议评估学习过程。学生不仅要掌握编程语法,還需要具备沟通能力、团队协作精神等各项技能,这些恰好都是在Scrum中有明显的体现。为了更好地实现教学目标,教师可以优化Scrum。
Robocode是一个很容易使用的机器人战斗仿真器,并且开始支持.NET开发。使用Robocode平台,学生在玩游戏的过程中,深入理解面向对象的技术特点,还会涉及数据结构、人工智能等技术。为了赢得坦克机器人大战,学生必须自我探究,相互交流,提高了解决问题的能力,培养了编程能力,同时培养了学生的“计算思维”能力。
基金项目:湖北省职教学会课题“基于Scrum的物联网专业实践改革”(ZJGB201515);武汉市教育局课题“基于敏捷开发的物联网专业实践教学改革”(2015118)
注释
① 荣国平,刘天宇,谢明娟,陈婕妤,张贺,陈道蓄. 嵌入式系统开发中敏捷方法的应用研究综述.软件学报,2014(2).
② KEN SCHWABER, JEFF SUTHERLAND. Software in 30 Days: How Agile Managers Beat the Odds, Delight Their Customers, And Leave Competitors In the Dust[M]. Hoboken: Wiley,2012.
③ 冀津.悦趣化学习在面向对象程序设计教学中的应用研究.计算机教育,2013(18).
④ 何钦铭.计算机基础教学的核心任务是计算思维能力的培养——《九校联盟(C9)计算机基础教学发展战略联合声明》解读.中国大学教学,2010(9).
⑤ 张文兰.悦趣化学习的研究现状与热点分析.现代教育技术,2011(6).
⑥ MIKE COHN.Scrum敏捷软件开发[M].廖靖斌,译.北京:清华大学出版社,2010.