顧家銘
摘 要 現(xiàn)有的C#課堂教學(xué)方式已經(jīng)不能激發(fā)學(xué)生的興趣。一方面,Scrum得到實(shí)踐者的歡迎,在軟件項(xiàng)目中得到越來越多的應(yīng)用。另一方面,Robocode在原有Java語言基礎(chǔ)上開始支持C#語言。在C#課程中,引入Scrum和Robocode,采用競賽考核機(jī)制。實(shí)踐證明,創(chuàng)新的改革模式可以改善教學(xué)效果,提高學(xué)習(xí)效率,培養(yǎng)“計(jì)算思維”能力,并且激發(fā)團(tuán)隊(duì)責(zé)任感。教師可以不必采用Scrum的全部形式,優(yōu)化Scrum,從而更好地實(shí)現(xiàn)教學(xué)目標(biāo)。
關(guān)鍵詞 Scrum Robocode C# 實(shí)踐教學(xué)
中圖分類號:G424 文獻(xiàn)標(biāo)識碼: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 引言
敏捷開發(fā)是一種全新的開發(fā)模式,自從2001年以來開始獲得IT企業(yè)的歡迎。實(shí)踐者通常認(rèn)為,敏捷開發(fā)可以顯著降低開發(fā)成本、提高生產(chǎn)效率、縮短開發(fā)周期、提升最終產(chǎn)品的質(zhì)量。敏捷方法使得開發(fā)團(tuán)隊(duì)具有更強(qiáng)的適應(yīng)需求變更的能力。①Scrum被認(rèn)為是目前全球最流行與最有效的敏捷項(xiàng)目管理理念與方法之一。Scrum不是開發(fā)產(chǎn)品的一種流程或一項(xiàng)技術(shù),而是一個框架,在這個框架里可以應(yīng)用各種流程和技術(shù)。②
Robocode是2001年7月在美國IBM 的Web alphaWorks上發(fā)布的坦克機(jī)器人戰(zhàn)斗仿真引擎。Robocode要求使用Java語言對坦克機(jī)器人的動作進(jìn)行編程,并設(shè)計(jì)不同的決策方案指揮坦克機(jī)器人的運(yùn)行。③在此過程中,Java初學(xué)者掌握J(rèn)ava語言,提高程序設(shè)計(jì)能力。目前Robocode也開始支持C#語言。
1 C#課程中存在的問題
C#語言是.NET平臺的第一語言,它幾乎集中了所有關(guān)于軟件開發(fā)和軟件工程研究的最新成果。各大高校均將C#程序設(shè)計(jì)開設(shè)為計(jì)算機(jī)專業(yè)教學(xué)體系中的一門重要課程。傳統(tǒng)的C#課程學(xué)習(xí)方式主要以課堂教學(xué)為主,很多老師感覺到學(xué)生學(xué)習(xí)興趣不大,缺乏解決問題的能力。在程序設(shè)計(jì)課程中,我們應(yīng)該注重培養(yǎng)學(xué)生的計(jì)算思維能力,使學(xué)生能夠運(yùn)用計(jì)算思維解決實(shí)際問題,而不只是編程語法。④
針對現(xiàn)有的教學(xué)中的問題,我們嘗試引入敏捷開發(fā)中的Scrum模式和Robocode游戲平臺。用Scrum幫助學(xué)生提高學(xué)習(xí)效率,讓學(xué)生以高效、愉悅的方式相互協(xié)作。Robocode游戲平臺可以為學(xué)習(xí)者提供一個充滿樂趣與挑戰(zhàn)的學(xué)習(xí)環(huán)境,更能強(qiáng)化學(xué)習(xí)動機(jī),加快知識的充分吸收。臺灣學(xué)者將這種學(xué)習(xí)方式譯為“悅?cè)せ瘜W(xué)習(xí)”。⑤
2 基于Scrum和Robocode的教學(xué)改革實(shí)踐
在“C#程序設(shè)計(jì)”課程中,根據(jù)敏捷開發(fā)的思想,以學(xué)生為核心,引入Scrum模式和Robocode游戲平臺,提高學(xué)生的興趣,培養(yǎng)學(xué)生的編程能力、“計(jì)算思維”能力以及團(tuán)隊(duì)協(xié)作精神。
2.1 項(xiàng)目分組與角色扮演
Scrum團(tuán)隊(duì)由產(chǎn)品所有者(Product Owner,簡稱PO)、Scrum主管(Scrum Master,簡稱SM)和開發(fā)團(tuán)隊(duì)(Scrum Team)組成。
(1)產(chǎn)品所有者。產(chǎn)品所有者是任課教師,他們是技術(shù)、結(jié)果和驗(yàn)證的負(fù)責(zé)人。產(chǎn)品所有者為一個為期2周的Sprint定義學(xué)習(xí)目標(biāo)。產(chǎn)品所有者決定做什么;而Scrum Master和Scrum Team決定怎么做。
(2)Scrum Master。Scrum Master是由其他學(xué)生根據(jù)品質(zhì)和技能選出來的,由學(xué)生擔(dān)任。任課教師會擔(dān)任 Super Scrum Master,幫助Scrum Master理解Scrum的各種知識等。
(3)Scrum Team。Scrum Team是由Scrum Master根據(jù)品質(zhì)和技能自發(fā)組織的。這樣形成由4名學(xué)生組成的團(tuán)隊(duì)。借助Scrum,學(xué)生們可以用一種愉悅的、高效的方式合作,并且可以相互學(xué)習(xí)自己沒有的技能。Scrum會激發(fā)他們?yōu)閳F(tuán)隊(duì)做出貢獻(xiàn),成為有價(jià)值的成員。
2.2 項(xiàng)目具體實(shí)施過程
在Scrum中,整個開發(fā)周期包含若干個小的迭代周期,每個小的迭代周期稱為一個Sprint。Sprint是Scrum的核心,在一個Sprint中完成需求、設(shè)計(jì)、實(shí)現(xiàn)、測試的任務(wù)。一個Sprint的時間長度通常是兩周。
教學(xué)中,我們決定采用一個Sprint的長度是8節(jié)45分鐘的課。先有任課教師進(jìn)行示范Scrum會議,學(xué)生按照相同的方式去做。Scrum框架中包括4種會議:計(jì)劃會議、每日站會、評審會議和反思會議。
(1)計(jì)劃會議。每次Sprint開始時召開Sprint計(jì)劃會議,由任課老師決定每個Sprint完成的教學(xué)目標(biāo)。而且Scrum Master和Scrum Team決定如何實(shí)現(xiàn)教學(xué)目標(biāo)。以第一個Sprint為例,每個小組需安裝開發(fā)環(huán)境與Robocode平臺、以及研發(fā)第一個Robocode機(jī)器人,并且熟悉Robocode的各種規(guī)則。
(2)每日站會。每日Scrum站會是以15分鐘為限的事件,團(tuán)隊(duì)成員在這里分享各自的工作情況,并為接下來的24小時制定計(jì)劃。⑥會議上,每個學(xué)生都需要說明:
昨天我做了什么?
今天我準(zhǔn)備做什么?
有什么事情阻礙了我?
每日站會之后,由Scrum Master記錄工作量,并繪制燃盡圖。燃盡圖方便教師和團(tuán)隊(duì)成員查看項(xiàng)目進(jìn)度,并且方便維護(hù)。
(3)評審會議。在每個Sprint結(jié)束時,由Scrum Master主持評審會議,團(tuán)隊(duì)需要向教師演示本次Sprint團(tuán)隊(duì)的所完成的任務(wù),由教師檢視是否達(dá)到教學(xué)目標(biāo)。
(4)回顧會議。在評審會議之后,由Scrum Master主持回顧會議。各團(tuán)隊(duì)成員總結(jié)教訓(xùn),提出改革措施。按照同樣的步驟,開始下一次Sprint。教師必須教會學(xué)生如何回顧,回顧其實(shí)就是評估學(xué)習(xí)過程。
2.3 Robocode平臺的規(guī)則
(1)類和對象、屬性、方法。面向?qū)ο笏枷氲闹攸c(diǎn)是類的設(shè)計(jì)。Robocode里的每個機(jī)器人都由一個或多個類構(gòu)成。學(xué)生可以創(chuàng)建屬于自己的機(jī)器人類,更形象地理解類的定義。
封裝是面向?qū)ο蟮奶攸c(diǎn)。坦克機(jī)器人類具有三個屬性:機(jī)器人坦克車(Vehicle)、炮(Gun)和雷達(dá)(Radar)。
面向?qū)ο笾袑㈩惖牟僮鞣庋b為方法。通過調(diào)用turnRight( )和turnLeft( )實(shí)現(xiàn)機(jī)器人旋轉(zhuǎn),調(diào)用ahead( )和back( )實(shí)現(xiàn)機(jī)器人向前或向后移動。
(2)繼承。學(xué)生創(chuàng)建的每個坦克機(jī)器人類都繼承Robot類,Robot本身提供了很多方法,比如上面介紹過的ahead( )和back( )等。
結(jié)合Robocode,學(xué)生更加理解繼承的含義。繼承是在現(xiàn)有類的基礎(chǔ)上建立新類。子類的對象既可以使用新的屬性和方法,也可以使用父類的屬性和方法。繼承使得復(fù)用代碼變得容易,縮短了開發(fā)周期。
(3)多態(tài)。Robot類本身具有一些常用的方法,如onScannedRobot( )、onHitByBullet( )、onHitRobot( )、onHitWall( )等。
每個學(xué)生在創(chuàng)建自己的坦克機(jī)器人類時,通過編寫策略代碼,覆蓋現(xiàn)有的方法如來躲避敵方坦克的炮火,敵方坦克的雷達(dá)等。結(jié)合Robocode,學(xué)生更加理解多態(tài)的含義。
2.4競賽考核方式
本文針對“C#程序設(shè)計(jì)”的特點(diǎn),對傳統(tǒng)的考核方式進(jìn)行改革?;赟crum 和Robocode的教學(xué)考核分為三部分:競賽實(shí)戰(zhàn)占50%,團(tuán)隊(duì)小組成員互評占20%,平時課堂表現(xiàn)與考勤占30%。
在最終競賽中,學(xué)生開發(fā)的各類坦克機(jī)器人將一決高下。以每班40人為例,每組4人,共分為10組,以小組為單位參加比賽。采取單循環(huán)賽制,得到最后競賽排名,根據(jù)排名給出競賽實(shí)戰(zhàn)成績。冠軍小組講解設(shè)計(jì)思路,教師進(jìn)行點(diǎn)評。
教學(xué)過程中,采取Scrum方式,分組學(xué)習(xí)。團(tuán)隊(duì)小組成員根據(jù)各自表現(xiàn)進(jìn)行打分。通過這個環(huán)節(jié)的互評,小組成員形成一個相互監(jiān)督、相互促進(jìn)的良好工作氛圍。
3 結(jié)語
敏捷開發(fā)是一種新興的軟件開發(fā)方法,很多實(shí)際方法還在研究中。在C#課程中,使用Scrum方式,學(xué)生會感到學(xué)習(xí)的快樂,提高學(xué)習(xí)效率。自組織的Scrum 團(tuán)隊(duì)按照Sprint形式學(xué)習(xí)C#,激發(fā)每名成員的責(zé)任感。Scrum團(tuán)隊(duì)和教師采用計(jì)劃會議設(shè)置教學(xué)目標(biāo),采用回顧會議評估學(xué)習(xí)過程。學(xué)生不僅要掌握編程語法,還需要具備溝通能力、團(tuán)隊(duì)協(xié)作精神等各項(xiàng)技能,這些恰好都是在Scrum中有明顯的體現(xiàn)。為了更好地實(shí)現(xiàn)教學(xué)目標(biāo),教師可以優(yōu)化Scrum。
Robocode是一個很容易使用的機(jī)器人戰(zhàn)斗仿真器,并且開始支持.NET開發(fā)。使用Robocode平臺,學(xué)生在玩游戲的過程中,深入理解面向?qū)ο蟮募夹g(shù)特點(diǎn),還會涉及數(shù)據(jù)結(jié)構(gòu)、人工智能等技術(shù)。為了贏得坦克機(jī)器人大戰(zhàn),學(xué)生必須自我探究,相互交流,提高了解決問題的能力,培養(yǎng)了編程能力,同時培養(yǎng)了學(xué)生的“計(jì)算思維”能力。
基金項(xiàng)目:湖北省職教學(xué)會課題“基于Scrum的物聯(lián)網(wǎng)專業(yè)實(shí)踐改革”(ZJGB201515);武漢市教育局課題“基于敏捷開發(fā)的物聯(lián)網(wǎng)專業(yè)實(shí)踐教學(xué)改革”(2015118)
注釋
① 榮國平,劉天宇,謝明娟,陳婕妤,張賀,陳道蓄. 嵌入式系統(tǒng)開發(fā)中敏捷方法的應(yīng)用研究綜述.軟件學(xué)報(bào),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.
③ 冀津.悅?cè)せ瘜W(xué)習(xí)在面向?qū)ο蟪绦蛟O(shè)計(jì)教學(xué)中的應(yīng)用研究.計(jì)算機(jī)教育,2013(18).
④ 何欽銘.計(jì)算機(jī)基礎(chǔ)教學(xué)的核心任務(wù)是計(jì)算思維能力的培養(yǎng)——《九校聯(lián)盟(C9)計(jì)算機(jī)基礎(chǔ)教學(xué)發(fā)展戰(zhàn)略聯(lián)合聲明》解讀.中國大學(xué)教學(xué),2010(9).
⑤ 張文蘭.悅?cè)せ瘜W(xué)習(xí)的研究現(xiàn)狀與熱點(diǎn)分析.現(xiàn)代教育技術(shù),2011(6).
⑥ MIKE COHN.Scrum敏捷軟件開發(fā)[M].廖靖斌,譯.北京:清華大學(xué)出版社,2010.