馮愛祥 羅雄麟中國石油大學(xué)自動化系 北京 102249
?
敏捷軟件開發(fā)模式在計(jì)算機(jī)語言課程設(shè)計(jì)中的應(yīng)用
馮愛祥 羅雄麟
中國石油大學(xué)自動化系 北京 102249
摘 要:計(jì)算機(jī)語言課程設(shè)計(jì)是自動化及相關(guān)專業(yè)的一門重要的實(shí)踐課,旨在培養(yǎng)學(xué)生的創(chuàng)新能力和軟件開發(fā)能力。針對該實(shí)踐環(huán)節(jié)在教學(xué)過程中存在的問題,借鑒敏捷軟件開發(fā)模式的思路,在教學(xué)方法中引入突出團(tuán)隊(duì)合作的結(jié)隊(duì)編程實(shí)訓(xùn)新模式。實(shí)踐證明,該編程模式既調(diào)動了學(xué)生的積極性,又培養(yǎng)了學(xué)生的軟技能。
關(guān)鍵詞:敏捷軟件開發(fā);計(jì)算機(jī)語言課程設(shè)計(jì);團(tuán)隊(duì)合作
計(jì)算機(jī)語言課程設(shè)計(jì)是各大工科院校自動化及相關(guān)專業(yè)的必修實(shí)踐環(huán)節(jié),一般安排在計(jì)算機(jī)語言類課程之后開設(shè)。學(xué)生通過2~3周的編程集訓(xùn),完成一個小規(guī)模的軟件設(shè)計(jì),體驗(yàn)軟件的開發(fā)周期,從而獲得軟件開發(fā)綜合能力的提高,為后續(xù)專業(yè)課程的學(xué)習(xí)奠定編程基礎(chǔ)。
近年來,企業(yè)對本科畢業(yè)生的要求越來越高,畢業(yè)生不僅要有扎實(shí)的專業(yè)功底,而且要具備較強(qiáng)的計(jì)算機(jī)應(yīng)用、軟件開發(fā)、創(chuàng)新和團(tuán)隊(duì)合作等綜合能力。而且,團(tuán)隊(duì)合作能力越來越受到企業(yè)的重視。因此,高校應(yīng)根據(jù)現(xiàn)代企業(yè)和社會的需求進(jìn)行人才的全面培養(yǎng)。作為計(jì)算機(jī)語言課程設(shè)計(jì)的帶隊(duì)教師,應(yīng)在教學(xué)過程中不斷探索新的教學(xué)方法,尋求新的編程訓(xùn)練模式。
目前,我校開設(shè)的計(jì)算機(jī)語言課程設(shè)計(jì)實(shí)踐課歷時兩周,主要訓(xùn)練學(xué)生進(jìn)行Windows程序的開發(fā),編程語言由學(xué)生根據(jù)自己的情況自選。課程設(shè)計(jì)的題目分為兩類:一類由帶隊(duì)教師自己擬定;另一類由學(xué)生自己擬定。教師擬定的題目大多結(jié)合生活實(shí)際,且?guī)в须y度系數(shù),最終以題目庫的形式呈現(xiàn)給學(xué)生,學(xué)生可根據(jù)自己的情況進(jìn)行選題;考慮到有的學(xué)生對題目庫中的設(shè)計(jì)題目都不感興趣,影響編程的積極性,允許學(xué)生根據(jù)自己的興趣取向自擬題目,但是要得到教師的許可。這樣,學(xué)生才能真正體驗(yàn)到開發(fā)程序帶來的快樂,計(jì)算機(jī)綜合能力也會得到相應(yīng)的提高。經(jīng)過多年的教學(xué)實(shí)踐探索,計(jì)算機(jī)語言課程設(shè)計(jì)實(shí)踐雖然取得了一定的成績,也得到了學(xué)生的認(rèn)可,但是還存在一些不足之處需要進(jìn)一步改進(jìn)。
(1)每個設(shè)計(jì)題目均指定單個學(xué)生獨(dú)立完成,學(xué)生從查閱資料到完成程序設(shè)計(jì)的整個實(shí)踐過程中同學(xué)間的交流、合作機(jī)會少。
(2)帶隊(duì)教師很重視計(jì)算機(jī)編程能力的培養(yǎng),但是忽視了社會實(shí)踐、團(tuán)隊(duì)合作之類的軟技能[1]培養(yǎng)。
分析上述的不足之處,可以看出以往的教學(xué)模式不利于學(xué)生團(tuán)隊(duì)合作綜合能力的提高。因此,為了進(jìn)一步提高教學(xué)質(zhì)量,令學(xué)生既能體驗(yàn)最流行的編程模式,同時又能在實(shí)踐過程中培養(yǎng)創(chuàng)新探索能力、團(tuán)隊(duì)合作能力,在本課程設(shè)計(jì)的教學(xué)方法改革中引入敏捷軟件開發(fā)模式[2],給學(xué)生創(chuàng)造溝通的機(jī)會,增強(qiáng)學(xué)生的團(tuán)隊(duì)意識,讓學(xué)生在團(tuán)隊(duì)互動的實(shí)踐過程中得到最好的編程鍛煉,使得軟件開發(fā)能力和軟技能綜合能力得到最大的提升。
2.1 敏捷軟件開發(fā)模式
敏捷軟件開發(fā)模式[2]是從2001年2月開始興起的軟件開發(fā)模式,屬于輕載軟件模式。因?yàn)樗拈_發(fā)效率高于重載軟件開發(fā)模式,已成為全球流行的軟件開發(fā)模式。2010年12月10日,中國敏捷軟件開發(fā)聯(lián)盟正式成立[3],從此,國內(nèi)的軟件界也加入了敏捷軟件開發(fā)模式的行列。
敏捷開發(fā)模式有一個突出的優(yōu)點(diǎn)——非常重視團(tuán)隊(duì)合作。該開發(fā)模式有很多子方法[2]:如極限編程(Extreme Programmin)、特性驅(qū)動開發(fā)(Feature Driven Developmen)、水晶方(Crystal Methodologie)、Scrum方法、動態(tài)系統(tǒng)開發(fā)(Dynamic Systems Development Methodolog)等,每個子方法中都內(nèi)含了團(tuán)隊(duì)編程。和傳統(tǒng)的軟件開發(fā)方法不同,敏捷軟件開發(fā)的團(tuán)隊(duì)成員在每天開始工作前,都要進(jìn)行一次集體的面對面的討論與交流[2]。所以,為了保證整個開發(fā)過程的順利進(jìn)行,團(tuán)隊(duì)的每個成員必須要學(xué)會主動和他人交流。
2.2 敏捷軟件開發(fā)子模式的選擇
在所有敏捷開發(fā)的子模式中,開發(fā)團(tuán)隊(duì)一般為5~6人。如果在計(jì)算機(jī)語言課程設(shè)計(jì)中規(guī)定5~6名學(xué)生組建一個編程團(tuán)隊(duì),那么肯定有些學(xué)生會變得不主動。
仔細(xì)研究敏捷開發(fā)的子模式,發(fā)現(xiàn)極限編程中的結(jié)對編程方法非常適合小規(guī)模團(tuán)隊(duì)的編程訓(xùn)練。這種編程模式通常由兩個學(xué)生組成一個編程小組,在同一臺計(jì)算機(jī)前共同完成一個軟件的開發(fā)。具體分工是:一個學(xué)生負(fù)責(zé)寫代碼,另一個學(xué)生負(fù)責(zé)檢查代碼的正確性。在開發(fā)過程中, 負(fù)責(zé)輸入代碼和檢查代碼的角色可以根據(jù)需要靈活地調(diào)換。在整個編程過程中,一旦發(fā)現(xiàn)語法和運(yùn)行錯誤,須及時討論并調(diào)試。
在計(jì)算機(jī)語言課程設(shè)計(jì)的實(shí)踐過程中采用結(jié)對編程這種敏捷方法,相對于以往的訓(xùn)練方式,是一種新的教學(xué)方法。這種結(jié)對方式既可以提高程序的開發(fā)效率、縮短代碼的開發(fā)周期,又有利于建立起良好的團(tuán)隊(duì)合作和學(xué)習(xí)氛圍。這也符合現(xiàn)在的以CDIO(Conceive Design Implement Operat)理念[4]培養(yǎng)工程技術(shù)人員的要求。
3.1 組建團(tuán)隊(duì)
在課程設(shè)計(jì)開始之前,首先要進(jìn)行團(tuán)隊(duì)組建,即結(jié)對。敏捷宣言的原則中提到[3]:“最好的架構(gòu)、需求和設(shè)計(jì)出于自組織團(tuán)隊(duì)”。所以,組建團(tuán)隊(duì)時,教師從不強(qiáng)行指定,而是讓學(xué)生本著自愿結(jié)對的原則,這樣形成的小團(tuán)隊(duì)才是最有潛力的團(tuán)隊(duì)。在接下來的兩周時間內(nèi),結(jié)對的學(xué)生將在整個課程設(shè)計(jì)過程共同完成軟件的前期調(diào)研、設(shè)計(jì)開發(fā)、調(diào)試和成果答辯匯報等。學(xué)生將在所選項(xiàng)目的開發(fā)過程中通過親身體驗(yàn)團(tuán)隊(duì)合作學(xué)會如何發(fā)現(xiàn)問題、共同分析問題和解決問題,同時提高自身的項(xiàng)目分析能力、創(chuàng)新思維能力和合作交流能力。
3.2 選題與構(gòu)思
結(jié)對以后,小組成員要通過初步討論進(jìn)行選題和方案構(gòu)思。如果對題目庫中的題目不太感興趣,允許學(xué)生根據(jù)自己的興趣自擬題目。待題目確定后,繼續(xù)進(jìn)行查閱資料、調(diào)研,并設(shè)計(jì)出初步的方案。如果兩個人對設(shè)計(jì)方案意見不一致,需要進(jìn)一步進(jìn)行溝通交流。必要時請老師參與討論,最終的設(shè)計(jì)方案必須是通過結(jié)對的兩人討論一致好方案。在整個選題構(gòu)思過程中,學(xué)生都處于主動地位。
3.3 具體實(shí)踐
這一階段,結(jié)對的學(xué)生要根據(jù)第二步的設(shè)計(jì)方案開始編程。按照經(jīng)典的結(jié)對編程流程,兩個學(xué)生須在同一臺計(jì)算機(jī)前一起編程。由于在本課程設(shè)計(jì)開設(shè)之前學(xué)生從沒有經(jīng)過系統(tǒng)的軟件開發(fā)訓(xùn)練,所以在課程設(shè)計(jì)的過程中,不能照搬經(jīng)典的結(jié)對編程流程。我們?yōu)槊總€結(jié)對組配備兩臺計(jì)算機(jī),結(jié)對的雙方要合理地利用兩臺計(jì)算機(jī):一臺用來顯示資料和代碼實(shí)例;另一臺主要用來結(jié)對編程實(shí)現(xiàn)。這樣整個代碼的開發(fā)仍在一臺計(jì)算機(jī)上完成,負(fù)責(zé)輸入代碼的學(xué)生要保證代碼輸入的快速性,負(fù)責(zé)校驗(yàn)代碼的學(xué)生要保證代碼的正確性。編程中如果遇到了不懂的地方,可以利用另外一臺計(jì)算機(jī)隨時進(jìn)行資料查閱和代碼實(shí)例的比照。在整個編程實(shí)現(xiàn)的過程中,結(jié)對編程的兩個人要相互信任、互相督促,共同學(xué)習(xí)編程的技能,這樣編程能力弱的學(xué)生也能在結(jié)對過程中學(xué)到編程的方法,共同完成團(tuán)隊(duì)的任務(wù)。
在整個實(shí)踐階段,為了掌握學(xué)生編程的進(jìn)度,帶隊(duì)教師將以客戶的身份全程參與到每個結(jié)對小組的實(shí)訓(xùn)中。建議每個小組在開始一天的工作前,必須開會決定當(dāng)天的任務(wù),并做成計(jì)劃文檔;每天的工作完成后,需將當(dāng)天的編程結(jié)果給帶隊(duì)教師看,教師會根據(jù)每天的進(jìn)展對每個結(jié)對小組當(dāng)天的結(jié)果提出反饋的意見和改進(jìn)的要求。
3.4 檢查與提交
具體實(shí)踐完成后,結(jié)對小組邀請教師來檢查已完成的軟件。通常,帶隊(duì)教師先檢查代碼的正確性,保證程序能順利運(yùn)行;然后,從使用者的角度來檢查軟件是否符合設(shè)計(jì)要求。如果發(fā)現(xiàn)問題,則再次討論修改,直到通過教師的認(rèn)可方可提交代碼。
3.5 考核
作為一門實(shí)踐課,成績考核是非常重要的,不能光靠最后提交的程序評定成績,這樣就會造成成績的不公平。采用了敏捷軟件的結(jié)對開發(fā)模式后,由于帶隊(duì)教師全程參與了各個小團(tuán)隊(duì)的開發(fā)過程,掌握了每個團(tuán)隊(duì)成員的平時表現(xiàn),設(shè)計(jì)成績由程序運(yùn)行情況(40%)、答辯情況(10%)、平時表現(xiàn)(30%)和報告文檔(20%)四部分組成,每一部分又分為五個等級,具體評分標(biāo)準(zhǔn)見表1。
表1 計(jì)算機(jī)語言課程設(shè)計(jì)評分表
表1(續(xù))
面對用人單位對人才的高要求,高校對程序設(shè)計(jì)之類的實(shí)訓(xùn)課應(yīng)不斷探索新的教學(xué)方法。將敏捷軟件開發(fā)模式應(yīng)用到計(jì)算機(jī)語言課程設(shè)計(jì)的教學(xué)中,已在我校自動化12級、13級的學(xué)生中進(jìn)行了兩年的實(shí)踐。從兩年的教學(xué)效果來看,在新的教學(xué)模式要求下,學(xué)生學(xué)會了相互間的交流、相互間的合作,學(xué)會和別人一起分享成功。從小團(tuán)隊(duì)的組建到課題的選擇,從方案的設(shè)計(jì)再到實(shí)現(xiàn),均通過結(jié)對的兩人合作完成,給學(xué)生提供了很大的自主空間。相對于以前的教學(xué)模式,學(xué)生在課程實(shí)踐中獲得計(jì)算編程能力的極速提升,軟技能也得到了培養(yǎng),極大地提高了學(xué)生的積極性和創(chuàng)新性。后續(xù)專業(yè)課的任課教師也反饋:學(xué)生經(jīng)過本教學(xué)模式的編程訓(xùn)練,在專業(yè)課需要編程的實(shí)驗(yàn)環(huán)節(jié)表現(xiàn)出了很強(qiáng)的程序開發(fā)能力和組織能力。
參考文獻(xiàn)
[1] 袁華,張凌.網(wǎng)絡(luò)工程設(shè)計(jì)實(shí)踐課程能力培養(yǎng)初探[J].計(jì)算機(jī)工程與科學(xué),2014,36(A2):242-245.
[2] [美]Robert C.Martin.敏捷軟件開發(fā):原則、模式與實(shí)踐[M].北京:清華大學(xué)出版社,2003.
[3] 張志麗.軟件開發(fā)生命周期法比較之敏捷與傳統(tǒng)[J].電腦開發(fā)與應(yīng)用,2013,26(12):32-37.
[4] 顧佩華,包能勝,康全禮.CDIO在中國[J]. 高等工程教育研究.2012(3):24-40.
[5] 鐘揚(yáng),劉業(yè)政,馬向輝.小團(tuán)隊(duì)結(jié)對編程實(shí)踐研究和重構(gòu)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2007,17(11):160-163.
Application of Agile Software Development Mode in Course Exercise of Computer Programming
Feng Aixiang, Luo Xionglin
Department of Automation,China University of Petroleum, Beijing, 102249, China
Abstract:The course exercise of computer programming is an important pratical training of automation and other similar fields.It aims at to cultivate students’ innovation ability and software development capabilities.According to the problems existing in the practical teaching,after using the idea of agile software development,the mode of pair-programming which outstands team cooperation in training is introduced.The results show that the teaching mode can not only mobilize the enthusiasm of the students' programming, but also cultivate the students' soft skills.
Key words:agile software development; course exercise of computer programming; team cooperation
收稿日期:2015-10-16
作者簡介:馮愛祥,博士,講師。羅雄麟,博導(dǎo),教授。
基金項(xiàng)目:中國石油大學(xué)(北京)校級教改項(xiàng)目“計(jì)算機(jī)語言課程設(shè)計(jì)實(shí)踐教學(xué)方法研究”。