尹華 王志堅(jiān)
摘要:針對(duì)采用傳統(tǒng)過(guò)程控制的軟件實(shí)訓(xùn)類課程中開發(fā)文檔與編碼脫節(jié),學(xué)生無(wú)法深入理解和應(yīng)用分析與設(shè)計(jì)理念等問(wèn)題,介紹敏捷開發(fā)過(guò)程的基本思想以及Scrum敏捷開發(fā)過(guò)程引入軟件實(shí)訓(xùn)教學(xué)中的現(xiàn)狀,闡述新的基于Scrum敏捷開發(fā)過(guò)程的軟件實(shí)訓(xùn)教學(xué)方案以及一套完整的軟件實(shí)訓(xùn)案例,并總結(jié)分析該教學(xué)設(shè)計(jì)方案的有效性。
關(guān)鍵詞:軟件實(shí)訓(xùn);Agile;Scrum敏捷開發(fā);教學(xué)設(shè)計(jì)
引言
互聯(lián)網(wǎng)時(shí)代急需大量軟件人才,如何實(shí)現(xiàn)高校與產(chǎn)業(yè)界的銜接是軟件人才培養(yǎng)的一個(gè)核心問(wèn)題。軟件實(shí)訓(xùn)作為理論聯(lián)系實(shí)際的橋梁,具有舉足輕重的作用。目前,國(guó)內(nèi)大部分高校軟件實(shí)訓(xùn)課程以項(xiàng)目為載體,以編碼結(jié)果為導(dǎo)向,讓學(xué)生通過(guò)完成項(xiàng)目鍛煉動(dòng)手能力。信息技術(shù)發(fā)展飛速,當(dāng)下完成一個(gè)程序或是軟件(也就是說(shuō)編寫代碼)對(duì)于多數(shù)大學(xué)生而言并不困難,真正的難點(diǎn)在于如何開發(fā)一個(gè)具有可擴(kuò)展性、可維護(hù)性的優(yōu)質(zhì)軟件,這也是目前以及未來(lái)軟件實(shí)訓(xùn)課程轉(zhuǎn)換思路的方向。
從產(chǎn)業(yè)界看,優(yōu)質(zhì)軟件的前提是過(guò)程控制,這也意味著高校軟件實(shí)訓(xùn)課程的導(dǎo)向應(yīng)側(cè)重于課程過(guò)程控制。筆者在十幾年軟件實(shí)訓(xùn)課程的教學(xué)中發(fā)現(xiàn),傳統(tǒng)教學(xué)中采用的過(guò)程是瀑布模型,因?yàn)榇四P筒捎梅蛛A段的方式,適合學(xué)生逐步完成項(xiàng)目,但這僅是理想狀態(tài),瀑布模型在教學(xué)中同樣也面臨產(chǎn)業(yè)界相同的問(wèn)題。學(xué)生在經(jīng)歷了需求和設(shè)計(jì)等文檔撰寫階段后,往往難以將其與編碼匹配,到實(shí)際編碼階段又已臨近課程結(jié)束,只能草草完成。
2015年筆者在美國(guó)佩斯大學(xué)訪問(wèn)期間,旁聽了佩斯大學(xué)計(jì)算機(jī)系主任Christelle Scharff教授的軟件工程課程,她在課程中引入Agile開發(fā)過(guò)程,以Serum敏捷開發(fā)過(guò)程結(jié)合先進(jìn)開發(fā)應(yīng)用工具,使得學(xué)生將開發(fā)、管理和工具應(yīng)用在一個(gè)實(shí)際項(xiàng)目中聯(lián)結(jié)起來(lái)。Christelle教授采用Serum敏捷開發(fā)過(guò)程進(jìn)行教學(xué)已經(jīng)多年,成功實(shí)現(xiàn)了美國(guó)學(xué)生與柬埔寨、印度等地學(xué)生的同步開發(fā)和教學(xué)。受此啟發(fā),筆者回國(guó)后將Serum敏捷開發(fā)過(guò)程應(yīng)用于軟件實(shí)訓(xùn)課程中,從實(shí)踐中體會(huì)到基于敏捷開發(fā)過(guò)程的軟件實(shí)訓(xùn)的有效性,也發(fā)現(xiàn)了其存在的問(wèn)題。
1敏捷軟件開發(fā)
軟件過(guò)程模型是軟件開發(fā)過(guò)程控制的向?qū)?。傳統(tǒng)過(guò)程模型注重建立軟件過(guò)程中的軟件產(chǎn)品,尤其是軟件文檔,采用此類過(guò)程模型的軟件工程方法被稱為“重型軟件工程”?!爸匦蛙浖こ獭蓖ㄟ^(guò)建立完善的文檔系統(tǒng),實(shí)現(xiàn)細(xì)致的過(guò)程建模及檢測(cè),以備維護(hù)與修改。另一類以人為核心的軟件開發(fā)思想“敏捷開發(fā)”,被稱為“輕型軟件工程”。敏捷開發(fā)強(qiáng)調(diào)開發(fā)人員的溝通、可持續(xù)交付可工作的軟件,以及對(duì)軟件需求和開發(fā)問(wèn)題的快速靈活響應(yīng)。2001年,以Kent Beck等為代表的敏捷開發(fā)擁護(hù)者共同簽署了“敏捷軟件開發(fā)宣言”。據(jù)VersionOne公司2013年的調(diào)查顯示,在全球收集的3501份調(diào)查報(bào)告中有88%的公司采用敏捷開發(fā)方法,Google、華為等大型軟件公司也采用了敏捷開發(fā)。
1.1敏捷開發(fā)基本原則
敏捷宣言的價(jià)值陳述中,從過(guò)程和工具、文檔、合同談判以及遵循計(jì)劃4個(gè)基本原則,體現(xiàn)出一種現(xiàn)實(shí)的開發(fā)價(jià)值觀。軟件開發(fā)的終極產(chǎn)品是軟件,軟件產(chǎn)品的度量者是客戶,實(shí)現(xiàn)產(chǎn)品的是開發(fā)者,圍繞這3部分是開發(fā)的重點(diǎn)。所以,敏捷開發(fā)強(qiáng)調(diào)開發(fā)者的自主協(xié)作,強(qiáng)調(diào)可運(yùn)行軟件的快速迭代,強(qiáng)調(diào)對(duì)于軟件需求的適應(yīng)性。這要求敏捷開發(fā)團(tuán)隊(duì)成員的平衡性,也即只有具有自主開發(fā)意識(shí)、編程能力對(duì)等的成員才能夠較好地踐行敏捷開發(fā)過(guò)程。雖然敏捷開發(fā)適用于需求變化的場(chǎng)景,但對(duì)于大型項(xiàng)目而言,敏捷開發(fā)的實(shí)現(xiàn)還需要更為具體、完善和有針對(duì)性的過(guò)程。根據(jù)不同的應(yīng)用場(chǎng)景有不同的敏捷過(guò)程,如極限編程、Serum敏捷開發(fā)等。軟件開發(fā)中應(yīng)根據(jù)項(xiàng)目的具體情況選擇適當(dāng)?shù)拈_發(fā)過(guò)程。
1.2Scrum敏捷開發(fā)過(guò)程
在眾多敏捷開發(fā)方法中,成長(zhǎng)最快的方法之一就是Serum敏捷開發(fā)過(guò)程。Ken Schwaber和Jeff Sutherland于1993年正式確立Serum,這一過(guò)程已經(jīng)被Yahoo、微軟、谷歌、摩托羅拉、思科等公司使用。許多使用Serum的團(tuán)隊(duì)表示,Serum極大地提升了團(tuán)隊(duì)的產(chǎn)能和士氣,是一種有效的團(tuán)隊(duì)工程控制方法。
1.2.1Scrum基本要素
Serum是一個(gè)迭代增量框架,采用周期方式完成產(chǎn)品開發(fā),Serum將這些周期性的工作稱為Sprint,整個(gè)Serum框架都圍繞Sprint進(jìn)行。Sprint的持續(xù)時(shí)間通常是1~4周,且一個(gè)緊接一個(gè),一旦確定Sprint的完成周期,不論工作是否完成,結(jié)束時(shí)間都是特定的,永遠(yuǎn)不會(huì)延遲。Sprint開始之初,項(xiàng)目團(tuán)隊(duì)從需求的優(yōu)先列表中選擇需要完成的條項(xiàng)(item),并在Sprint結(jié)束前完成這些需求;Sprint期間,所需要交付的結(jié)果不會(huì)改變,每個(gè)工作日,團(tuán)隊(duì)成員簡(jiǎn)要匯報(bào)彼此的進(jìn)度,并根據(jù)剩余工作更新燃盡圖(bum downchart); 結(jié)束后,項(xiàng)目團(tuán)隊(duì)演示他們所做的工作,并且反饋需要融入下次,Sprint的工作。
1.2.2 Scrum角色
Serum有3類角色:產(chǎn)品負(fù)責(zé)人(productowner)、開發(fā)團(tuán)隊(duì)(the team)和流程管理員(Serum master)。產(chǎn)品負(fù)責(zé)人收集來(lái)自顧客、終端用戶、項(xiàng)目團(tuán)隊(duì)等多方面的需求信息,以獲得最大化商業(yè)價(jià)值為原則,得出需求優(yōu)先列表,以供后續(xù)開發(fā)團(tuán)隊(duì)實(shí)現(xiàn)。開發(fā)團(tuán)隊(duì)是軟件的實(shí)現(xiàn)者,具有高度自組織性。開發(fā)團(tuán)隊(duì)決定了最終提交產(chǎn)品的質(zhì)量。一個(gè)軟件項(xiàng)目中的開發(fā)團(tuán)隊(duì)包括分析師、開發(fā)者、接口設(shè)計(jì)者、測(cè)試員等。流程管理員是Serum成功最重要的元素,他需要全力以赴幫助開發(fā)團(tuán)隊(duì)成功完成項(xiàng)目。流程管理員和產(chǎn)品負(fù)責(zé)人不能是同一人。做流程管理員的人可以是以前的項(xiàng)目經(jīng)理,但所做的工作卻與項(xiàng)目經(jīng)理非常不同。流程管理員不是開發(fā)團(tuán)隊(duì)的管理員,而是為開發(fā)團(tuán)隊(duì)提供服務(wù)的,旨在保障開發(fā)團(tuán)隊(duì)不受干擾并引導(dǎo)團(tuán)隊(duì)使用好Serum,他并不分配任務(wù)也不指揮人工作,其職責(zé)核心本質(zhì)就是服務(wù)Serum項(xiàng)目團(tuán)隊(duì)的所有成員,為Serum過(guò)程掃清障礙。
1.2.3Scrum過(guò)程
Serum過(guò)程包括3大部分:
(1)開始Serum。由產(chǎn)品負(fù)責(zé)人列舉所有產(chǎn)品需求,根據(jù)全部需求明確優(yōu)先級(jí),形成productbacklog,開始Sprint迭代。
(2)Sprint迭代。每個(gè)Sprint之前,先進(jìn)行Sprint計(jì)劃會(huì)議(Sprint planning meeting)。第一件事由產(chǎn)品負(fù)責(zé)人和開發(fā)團(tuán)隊(duì)一起回顧productbacklog,彼此交換對(duì)此backlog的看法。第二件事由開發(fā)團(tuán)隊(duì)從product backlog中選擇此次Sprint結(jié)束需要提交完成的需求項(xiàng),通常按照優(yōu)先級(jí)順序來(lái)完成。第三件事由開發(fā)團(tuán)隊(duì)估計(jì)每個(gè)成員在此次sprint中完成任務(wù)需要投入的時(shí)間。確定時(shí)間后,開發(fā)團(tuán)隊(duì)將優(yōu)先級(jí)最高的需求項(xiàng)分解為單個(gè)任務(wù),并記錄到Sprint backlog文檔中。任務(wù)確定后,團(tuán)隊(duì)成員自愿認(rèn)領(lǐng)任務(wù),需要考慮任務(wù)順序,估計(jì)每個(gè)任務(wù)的時(shí)間并確保每個(gè)成員工作負(fù)載平衡,然后順序完成各項(xiàng)需求。Sprint迭代開始后,開發(fā)團(tuán)隊(duì)還需進(jìn)行每日Serum——個(gè)15分鐘以內(nèi)的站立會(huì)議,每個(gè)開發(fā)團(tuán)隊(duì)中的成員都要參加。這個(gè)會(huì)議主要是開發(fā)團(tuán)隊(duì)成員一個(gè)接一個(gè)匯報(bào)進(jìn)展和困難,由流程管理員記錄問(wèn)題并在會(huì)后解決問(wèn)題。站立會(huì)議不討論,只匯報(bào),會(huì)議結(jié)束后開發(fā)團(tuán)隊(duì)成員更新完成每項(xiàng)任務(wù)的剩余時(shí)間,由流程管理員繪制燃盡圖來(lái)顯示到提交還剩多少工作。一個(gè)Sprint結(jié)束后有一個(gè)Sprint評(píng)審(Sprint review)。在評(píng)審時(shí),開發(fā)團(tuán)隊(duì)需展示此次Sprint完成的demo,產(chǎn)品負(fù)責(zé)人、團(tuán)隊(duì)成員、流程管理員、客戶、專家、投資人都可參加評(píng)審會(huì)并提問(wèn)。評(píng)審結(jié)束后,項(xiàng)目團(tuán)隊(duì)一起進(jìn)行Serum回顧(Serum retrospective),發(fā)現(xiàn)此次Sprint中做得好或不好的地方。在Sprint評(píng)審結(jié)束后,產(chǎn)品負(fù)責(zé)人要為進(jìn)入下一個(gè)Sprint做準(zhǔn)備,根據(jù)上次完成的結(jié)果修改product backlog,重新確定優(yōu)先級(jí),完成新的product backlog后,進(jìn)入新Sprint過(guò)程。Sprint不斷迭代,直到產(chǎn)品負(fù)責(zé)人明確可以發(fā)布產(chǎn)品則停止迭代,進(jìn)行發(fā)布。
(3)發(fā)布產(chǎn)品。
1.3Scrum敏捷開發(fā)教學(xué)應(yīng)用
上述scrum過(guò)程由于迭代周期短,迭代時(shí)間可控,學(xué)生在整個(gè)學(xué)習(xí)過(guò)程中都可不斷看到可運(yùn)行的程序,減少了學(xué)習(xí)的挫敗感,非常適用于具有固定時(shí)間(通常2~4個(gè)月)的軟件實(shí)訓(xùn)教學(xué)。目前Scrum在軟件實(shí)訓(xùn)教學(xué)中已有不少應(yīng)用。文獻(xiàn)針對(duì)高職軟件開發(fā)課程提出了引人敏捷開發(fā)對(duì)于實(shí)訓(xùn)模式的創(chuàng)新優(yōu)勢(shì)。文獻(xiàn)從啟動(dòng)項(xiàng)目、實(shí)施項(xiàng)目和量化考核3個(gè)方面論述了引入Serum的軟件實(shí)訓(xùn),但其提供的方案過(guò)于籠統(tǒng),操作性不強(qiáng)。文獻(xiàn)從分組、實(shí)踐和評(píng)價(jià)3個(gè)方面給出了一套Serum軟件實(shí)訓(xùn)教學(xué)方案,并進(jìn)行了2個(gè)學(xué)期的教學(xué)實(shí)踐,其方案基本遵循Serum的標(biāo)準(zhǔn)過(guò)程,在評(píng)價(jià)上采用了小組互評(píng)的方式,并且以小組互評(píng)方式為主(80%),教師評(píng)價(jià)為輔(20%)。此種評(píng)價(jià)方式從學(xué)生角度獲得相對(duì)公平的評(píng)價(jià)結(jié)果,但是學(xué)生的視點(diǎn)不同于教師,其評(píng)價(jià)具有更大的主觀性而缺少專業(yè)性,且單次評(píng)價(jià)方式缺少教師反饋,難以較好實(shí)現(xiàn)過(guò)程驅(qū)動(dòng)與控制。文獻(xiàn)在同濟(jì)大學(xué)軟件工程課程中進(jìn)行了一學(xué)期的軟件工程實(shí)驗(yàn)實(shí)踐,提供了一套較為完整且有體系的Serum敏捷應(yīng)用框架,但該應(yīng)用框架主要是對(duì)Serum基本過(guò)程的細(xì)化。筆者在美國(guó)學(xué)習(xí)期間發(fā)現(xiàn),Serum過(guò)程的成功實(shí)施,更依賴基于軟件的過(guò)程控制以及教師的評(píng)價(jià)控制,因此,如何充分利用先進(jìn)信息技術(shù)以及合理評(píng)價(jià)機(jī)制,是Serum成功應(yīng)用于軟件實(shí)訓(xùn)類課程的關(guān)鍵所在。
2基于Serum的軟件實(shí)訓(xùn)設(shè)計(jì)方案
將Serum過(guò)程引入軟件實(shí)訓(xùn)類課程的核心要點(diǎn)是明確教學(xué)目標(biāo)。軟件實(shí)訓(xùn)類課程的教學(xué)目標(biāo)是通過(guò)教師引導(dǎo)與管理,使學(xué)生能夠運(yùn)用和掌握所學(xué)習(xí)的軟件開發(fā)原理和技能?;赟erum的軟件實(shí)訓(xùn)設(shè)計(jì)方案的精髓是把教師定位為教練,利用畢博平臺(tái)、Github、百度云盤等工具來(lái)實(shí)現(xiàn)項(xiàng)目管理控制,方案主要包括教學(xué)內(nèi)容、組織形式和評(píng)價(jià)方式。
2.1軟件實(shí)訓(xùn)內(nèi)容
軟件實(shí)訓(xùn)以項(xiàng)目為主導(dǎo)。項(xiàng)目選擇對(duì)于實(shí)訓(xùn)有很大影響,決定項(xiàng)目以及開發(fā)規(guī)范是軟件實(shí)訓(xùn)的主要內(nèi)容。實(shí)訓(xùn)項(xiàng)目選擇原則如下:
(1)項(xiàng)目來(lái)源:與學(xué)生生活和學(xué)習(xí)息息相關(guān)的領(lǐng)域。相關(guān)領(lǐng)域的需求可以讓學(xué)生作為使用者體會(huì)需求的有效性,作為開發(fā)者體會(huì)完成需求的難度。
(2)項(xiàng)目規(guī)模:小型可擴(kuò)展項(xiàng)目。項(xiàng)目應(yīng)具備幾點(diǎn)核心功能,學(xué)生根據(jù)自身能力在Serum過(guò)程中調(diào)整擴(kuò)展。
(3)開發(fā)規(guī)范:包括文檔規(guī)范和編碼規(guī)范。雖然Serum過(guò)程不強(qiáng)調(diào)文檔作用,但應(yīng)對(duì)product backlog和Sprint backlog中的內(nèi)容進(jìn)行編號(hào),在表達(dá)設(shè)計(jì)理念中應(yīng)采用UML描述。編碼規(guī)范推薦采用Google的lava編碼規(guī)范。
2.2軟件實(shí)訓(xùn)組織
基于Serum的軟件實(shí)訓(xùn)教學(xué)組織包括整體過(guò)程組織和過(guò)程實(shí)踐組織。整體過(guò)程分為3部分——基礎(chǔ)學(xué)習(xí)、過(guò)程實(shí)踐和評(píng)價(jià)反饋,如圖1所示。
在軟件實(shí)訓(xùn)的教學(xué)組織中,可以借助畢博平臺(tái)、GitHub管理、百度云盤等工具實(shí)現(xiàn)過(guò)程控制。畢博平臺(tái)負(fù)責(zé)學(xué)生的整體管理。作為教練,教師通過(guò)在畢博平臺(tái)上發(fā)布學(xué)習(xí)資源、學(xué)習(xí)時(shí)間進(jìn)度和學(xué)生階段評(píng)價(jià)來(lái)控制學(xué)習(xí)過(guò)程;作為學(xué)習(xí)者,學(xué)生通過(guò)Github實(shí)現(xiàn)軟件版本控制,通過(guò)Wild實(shí)現(xiàn)文檔保存與更新,通過(guò)百度云盤實(shí)現(xiàn)團(tuán)隊(duì)內(nèi)部文檔共享。評(píng)價(jià)反饋來(lái)自兩個(gè)部分:畢博平臺(tái),在關(guān)鍵時(shí)間節(jié)點(diǎn)上,教師根據(jù)學(xué)生的項(xiàng)目完成情況,給與分?jǐn)?shù)評(píng)價(jià);Github,在學(xué)生提交代碼和文檔到Github資源庫(kù)后,教師根據(jù)提交內(nèi)容進(jìn)行點(diǎn)評(píng)。
2.3軟件實(shí)訓(xùn)評(píng)價(jià)
軟件實(shí)訓(xùn)課程通常由多個(gè)學(xué)生組成團(tuán)隊(duì)完成項(xiàng)目開發(fā)工作,最大的難點(diǎn)就是如何量化每位成員的工作,無(wú)法公平地量化學(xué)生的工作量則很難驅(qū)動(dòng)不自覺(jué)的學(xué)生參與項(xiàng)目學(xué)習(xí)過(guò)程,這將導(dǎo)致由團(tuán)隊(duì)中某一人全權(quán)負(fù)責(zé)項(xiàng)目的情況出現(xiàn)?;赟erum的開發(fā)則不存在這樣的問(wèn)題,因?yàn)镾erum的會(huì)議中每位成員都需要總結(jié)自己在項(xiàng)目開發(fā)中所做的工作以及遇到的問(wèn)題,這樣教師就可以根據(jù)學(xué)生的記錄進(jìn)行控制。
項(xiàng)目的最終評(píng)價(jià)主要包含3部分內(nèi)容:過(guò)程、代碼和演講展示。過(guò)程評(píng)價(jià)是針對(duì)學(xué)生對(duì)于Serum實(shí)踐的完成情況;代碼是針對(duì)學(xué)生完成的軟件及其結(jié)構(gòu)的合理性;演講展示針對(duì)學(xué)生對(duì)于該次開發(fā)的認(rèn)識(shí)、陳述與總結(jié)。高質(zhì)量的實(shí)訓(xùn)應(yīng)該具備4點(diǎn)要素:團(tuán)隊(duì)精誠(chéng)合作;迭代式開發(fā)不論修正軟件;軟件的代碼結(jié)構(gòu)可維護(hù)性與擴(kuò)展性強(qiáng);演講陳述邏輯思路清晰。一個(gè)項(xiàng)目由團(tuán)隊(duì)完成,所以一切評(píng)價(jià)的基礎(chǔ)是團(tuán)隊(duì),團(tuán)隊(duì)成果強(qiáng)則評(píng)價(jià)基點(diǎn)高。在團(tuán)隊(duì)評(píng)價(jià)結(jié)果之上,再根據(jù)組員對(duì)項(xiàng)目的貢獻(xiàn)度來(lái)進(jìn)行區(qū)別式評(píng)價(jià)。組員的貢獻(xiàn)度體現(xiàn)在3個(gè)方面:Serum總結(jié);組員自身貢獻(xiàn)評(píng)價(jià);Github代碼貢獻(xiàn)度計(jì)量。在Github中,對(duì)于每位組員所提交的代碼都有量化,但由于代碼的難度不一,所以此部分的評(píng)價(jià)比重應(yīng)更為弱化?;谙嘈旁瓌t,可由組員自身給出貢獻(xiàn)度評(píng)價(jià),再由Serum總結(jié)給出最終評(píng)價(jià)。
3教學(xué)實(shí)踐分析
為了驗(yàn)證該教學(xué)理念和設(shè)計(jì)的有效性,在廣東財(cái)經(jīng)大學(xué)三年級(jí)軟件工程專業(yè)的軟件工程課程設(shè)計(jì)中進(jìn)行教學(xué)實(shí)踐試點(diǎn)。具體教學(xué)方案見表1。
之所以選擇開發(fā)App項(xiàng)目是因?yàn)槠淇焖俚奶攸c(diǎn),App開發(fā)周期短,同時(shí)其開發(fā)已經(jīng)具備較好的結(jié)構(gòu)。選擇兒童游戲App和公益項(xiàng)目App是因?yàn)檫@兩類App的需求都是由學(xué)生自身決定和修正的,貼近他們的生活,學(xué)生更容易體會(huì)開發(fā)出的軟件的可用性。之所以將項(xiàng)目規(guī)模確定為4~6個(gè)功能,是因?yàn)殚_發(fā)周期為8周,除去頭尾的講解與考核,只有6周可用于迭代,則每?jī)芍芡瓿梢淮蜸print迭代,對(duì)于學(xué)生而言,4~6個(gè)功能是6周的迭代可以控制的。本次實(shí)踐試點(diǎn)通過(guò)畢博平臺(tái)提供完整規(guī)范的文檔模板,學(xué)生直接填寫模板即可記錄整個(gè)開發(fā)過(guò)程。
一個(gè)學(xué)期的基于Scrum的軟件實(shí)訓(xùn)實(shí)踐后,學(xué)生反饋學(xué)會(huì)了使用有效工具來(lái)輔助管理,而且迭代式的開發(fā)降低了開發(fā)的難度,減少了實(shí)踐挫敗感,當(dāng)需求不明確時(shí),完成少量的工作增加了后續(xù)開發(fā)的信心。最為重要的是,學(xué)生能發(fā)現(xiàn)所做的需求和設(shè)計(jì)工作能否和后續(xù)的代碼聯(lián)系起來(lái)。但是,實(shí)踐中也存在一些問(wèn)題,主要體現(xiàn)在兩點(diǎn):工具使用(尤其是Github的使用),學(xué)生還不能很好地利用版本控制工具提高合作效率;軟件結(jié)構(gòu)性問(wèn)題,由于采用的是迭代增量開發(fā),學(xué)生暫時(shí)不具備良好的設(shè)計(jì)能力,往往在初期以完成為導(dǎo)向,在后階段的Sprint過(guò)程中發(fā)現(xiàn)軟件結(jié)構(gòu)的缺陷時(shí)難以及時(shí)修正,導(dǎo)致最終的軟件結(jié)構(gòu)可能存在不合理性。對(duì)于這兩點(diǎn)問(wèn)題,最佳的解決方案是由教師介入,指導(dǎo)學(xué)生使用工具并提供合理的設(shè)計(jì)結(jié)構(gòu)。
4結(jié)語(yǔ)
基于Serum的軟件實(shí)訓(xùn)教學(xué)方案在大三學(xué)生中進(jìn)行實(shí)踐應(yīng)用后顯示,引入敏捷過(guò)程的軟件實(shí)訓(xùn)課程可以使學(xué)生收獲更多有關(guān)軟件開發(fā)的應(yīng)用體會(huì),且可視的軟件成果也為學(xué)生進(jìn)行開發(fā)增強(qiáng)了信心。但是,此方案有正向反饋的同時(shí),也存在一定的不足。目前,該教學(xué)方案的瓶頸是如何在有限時(shí)間內(nèi)將軟件工程的基本理論與技術(shù)充分引入,這也是下一步工作需要考慮的問(wèn)題。