国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

軟件開發(fā)實訓(xùn)教學(xué)中Scrum敏捷開發(fā)方法的應(yīng)用研究

2015-01-28 05:35蒙煥念
廣西教育·C版 2014年12期
關(guān)鍵詞:軟件開發(fā)實訓(xùn)教學(xué)應(yīng)用

【摘 要】在軟件開發(fā)實訓(xùn)教學(xué)中實施Scrum敏捷開發(fā)方法,比使用傳統(tǒng)的“瀑布模型”更有利于學(xué)生實踐能力的培養(yǎng)。具體實施辦法為:組建開發(fā)團(tuán)隊,實行雙教師教學(xué);約定開發(fā)規(guī)范,精簡開發(fā)流程;結(jié)對編程,以強(qiáng)帶弱,相互促進(jìn);持續(xù)集成、交換測試。

【關(guān)鍵詞】Scrum 敏捷開發(fā)方法 ?軟件開發(fā) ?實訓(xùn)教學(xué) ?應(yīng)用

【中圖分類號】 G ?【文獻(xiàn)標(biāo)識碼】 A

【文章編號】0450-9889(2014)12C-0059-03

一、問題的提出

1970年溫斯頓·羅伊斯在軟件開發(fā)中提出了著名的“瀑布模型”。該模型將軟件生命周期劃分為制訂計劃、需求分析、軟件設(shè)計、程序編寫、軟件測試和運(yùn)行維護(hù)等六個基本階段,各階段工作必須按次序自上而下開展,每個階段要撰寫大量文檔,并對工作結(jié)果進(jìn)行嚴(yán)格驗證,只有上一階段工作結(jié)束,才能開啟下一階段工作。這種開發(fā)模式應(yīng)對上世紀(jì)60年代出現(xiàn)的軟件危機(jī)問題,是一種很好的解決方案,成為了軟件開發(fā)模型的經(jīng)典。

當(dāng)前,隨著軟件開發(fā)技術(shù)的進(jìn)步,人們發(fā)現(xiàn)“瀑布模型”靈活性差,不適用于需求不明確的軟件項目,很多軟件企業(yè)已不再使用“瀑布模型”,但它作為軟件開發(fā)模型的經(jīng)典仍廣泛應(yīng)用在高校軟件開發(fā)實訓(xùn)課堂中。實際上,應(yīng)用“瀑布模型”進(jìn)行教學(xué)的高校計算機(jī)軟件開發(fā)相關(guān)專業(yè)學(xué)生畢業(yè)時的動手能力遠(yuǎn)遠(yuǎn)達(dá)不到企業(yè)的要求,這說明該教學(xué)方法和實訓(xùn)模式存在問題。為了提高學(xué)生實踐能力,很多高校與計算機(jī)軟件開發(fā)培訓(xùn)機(jī)構(gòu)或企業(yè)進(jìn)行聯(lián)合辦學(xué),以彌補(bǔ)學(xué)校實訓(xùn)教學(xué)能力的不足。

二、“瀑布模型”實訓(xùn)教學(xué)存在的問題

應(yīng)用“瀑布模型”進(jìn)行的實訓(xùn)教學(xué)中主要存在如下問題:

首先,學(xué)生把握項目需求的能力差,難以達(dá)到“瀑布模型”對開發(fā)者的要求?!捌俨寄P汀边m用于需求明確的項目,要求開發(fā)者具有很強(qiáng)的整體把握能力和前瞻性。但是對于初學(xué)開發(fā)的學(xué)生來說,需求再明確的項目,他們也不能很準(zhǔn)確地把握細(xì)節(jié),導(dǎo)致實訓(xùn)進(jìn)程不能按計劃正常開展,影響了實訓(xùn)效果。在實際教學(xué)中,雖然很多實訓(xùn)項目在以往的教材中有類似的解決方案,但是區(qū)別還是存在的,學(xué)生看不到軟件在實際應(yīng)用中可能出現(xiàn)的問題,到了項目開發(fā)后期才發(fā)現(xiàn)錯誤,導(dǎo)致實訓(xùn)項目失敗。

其次,在“瀑布模型”開發(fā)的每一個階段,都要求撰寫細(xì)致準(zhǔn)確的文檔,這大大占用了學(xué)生的實訓(xùn)時間。據(jù)統(tǒng)計,如果嚴(yán)格按瀑布模型的要求來撰寫文檔,消耗的時間至少是整個實訓(xùn)時間的1/5。本來實訓(xùn)課堂留給學(xué)生實訓(xùn)的時間就不多,對一些效率低的學(xué)生來說,文檔還沒寫完實訓(xùn)期就結(jié)束了,整個實訓(xùn)過程變成了紙上談兵的演練。

最后,“瀑布模型”實訓(xùn)方式過時,學(xué)生不能學(xué)以致用,實訓(xùn)技能與企業(yè)要求脫節(jié)。當(dāng)今的軟件開發(fā)中,已經(jīng)很難看見完全實施“瀑布模型”的企業(yè),大家都已對“瀑布模型”進(jìn)行了改進(jìn)或者實施其他更先進(jìn)的開發(fā)方法。教育部曾多次指出,高校教育應(yīng)服務(wù)地方和行業(yè),密切與行業(yè)、企業(yè)合作,為企業(yè)提供人才培養(yǎng)和技術(shù)服務(wù)支撐。這要求我們必須改革過時的實訓(xùn)模式,使教學(xué)與行業(yè)結(jié)合,與企業(yè)接軌。

三、Scrum敏捷開發(fā)方法概述

近年來,很多先進(jìn)的軟件開發(fā)模型在實際應(yīng)用中得到了推廣,這里要特別提出的是敏捷開發(fā)。著名IT組織VersionOne在2013年進(jìn)行的敏捷現(xiàn)狀調(diào)查結(jié)果顯示,在全世界收集的3501份調(diào)查報告中,使用敏捷開發(fā)方法的占88%,其中使用Scrum敏捷開發(fā)方法或Scrum變種開發(fā)方法的占73%。這個調(diào)查數(shù)據(jù)充分說明了敏捷開發(fā)方法在行業(yè)中的主導(dǎo)地位。

敏捷開發(fā)(Agile development)是一種以人為核心、迭代、循序漸進(jìn)的開發(fā)方法,它把項目分割分成多個子項目,各個子項目的成果都經(jīng)過測試,具備集成和可運(yùn)行的特征。敏捷開發(fā)方法包括Scrum、Crystal和極限編程(XP)等,是一組開發(fā)方法的總稱。它也是軟件開發(fā)的一個過程管理框架,遵循了敏捷開發(fā)的主要價值觀:個人與交互重于開發(fā)過程與工具;可用的軟件重于面面俱到的文檔;與客戶的合作重于對合同的談判;響應(yīng)變化勝過遵循計劃。

Scrum敏捷開發(fā)過程是迭代的增量開發(fā),整個開發(fā)過程由若干個短周期的迭代組成,每一個迭代周期稱為Sprint(沖刺),每個迭代實現(xiàn)不同的特性,迭代中重大的、優(yōu)先級高或風(fēng)險高的特性優(yōu)先實現(xiàn)。Scrum敏捷開發(fā)方法重視軟件的可用性,強(qiáng)調(diào)與客戶的溝通,開發(fā)過程能夠快速響應(yīng)用戶需求變更,盡早處理風(fēng)險問題。

四、Scrum敏捷開發(fā)方法在軟件開發(fā)實訓(xùn)教學(xué)中的優(yōu)勢

相對于“瀑布模型”,Scrum敏捷開發(fā)方法具有更多適合軟件開發(fā)實訓(xùn)教學(xué)的優(yōu)勢,主要表現(xiàn)在如下方面:

第一,能夠快速響應(yīng)需求變更。與實際開發(fā)相似,學(xué)生的實訓(xùn)項目都是在重復(fù)多次的修正需求、修改設(shè)計后才交付實現(xiàn)的。Scrum敏捷開發(fā)方法中的Sprint都很小,即使需求變更很大,也可以在短時間內(nèi)修改設(shè)計完成開發(fā)。而“瀑布模型”希望需求是穩(wěn)定的,但不變只是愿望,變化才是永恒。如果在軟件設(shè)計后期提出需求變更,那會是一種災(zāi)難。這種影響小則使實訓(xùn)進(jìn)度不可控,重則導(dǎo)致實訓(xùn)項目失敗。

第二,Scrum敏捷開發(fā)方法要求盡早編碼,盡快開發(fā)出系統(tǒng)原型,盡早使客戶見到可運(yùn)行的軟件,暴露項目的技術(shù)風(fēng)險,從而提出優(yōu)化意見。這恰好迎合了學(xué)生開發(fā)實訓(xùn)時急切渴望進(jìn)行編程實現(xiàn)的心理,激發(fā)了學(xué)生學(xué)習(xí)的積極性。而“瀑布模型”要求推遲實現(xiàn),要盡可能把需求分析透徹,設(shè)計完整,完成文檔編寫后才能進(jìn)行編碼實現(xiàn)。這個過程對急切渴望編程的學(xué)生無疑是一種打擊。

第三,Scrum敏捷開發(fā)方法不要求文檔面面俱到,更注重于軟件可用性設(shè)計。在敏捷開發(fā)中,很多文檔只是一個草圖,大部分文檔在集成測試階段產(chǎn)生,而且只寫有必要的文檔。所以實訓(xùn)團(tuán)隊不需要安排專人撰寫完備的開發(fā)文檔,從而使學(xué)生有時間專注于開發(fā)實訓(xùn)工作。

第四,Scrum敏捷開發(fā)方法能更全面地培養(yǎng)學(xué)生的軟件開發(fā)技能。在Scrum項目中,每個開發(fā)成員主動認(rèn)領(lǐng)開發(fā)任務(wù),開發(fā)過程涉及的設(shè)計、編碼和單元測試全部是個人獨立完成,實際上一個人承擔(dān)了傳統(tǒng)開發(fā)模式中系統(tǒng)架構(gòu)師、程序員、測試員和產(chǎn)品構(gòu)建經(jīng)理等角色工作。這種實訓(xùn)方式有助于提升學(xué)生軟件開發(fā)的單兵作戰(zhàn)能力,從而快速適應(yīng)企業(yè)軟件開發(fā)工作的各個環(huán)節(jié)。

五、Scrum敏捷開發(fā)方法在軟件開發(fā)實訓(xùn)教學(xué)中的實施

綜上所述,在軟件開發(fā)實訓(xùn)教學(xué)中使用Scrum敏捷開發(fā)方法,可以更好地促進(jìn)教學(xué),提高學(xué)生實踐能力,實現(xiàn)教學(xué)與行業(yè)結(jié)合,與企業(yè)接軌。具體實施方法如下:

(一)組建開發(fā)團(tuán)隊,實行雙教師教學(xué)

在實訓(xùn)中,可將教師和學(xué)生按Scrum敏捷團(tuán)隊角色分組,主要有以下三類角色:一是Product Owner(產(chǎn)品負(fù)責(zé)人)。該角色可安排熟悉產(chǎn)品需求的教師承擔(dān),負(fù)責(zé)產(chǎn)品需求的提煉、條目化和優(yōu)先級排序。二是Scrum Master(團(tuán)隊負(fù)責(zé)人)。該角色可安排熟悉Scrum開發(fā)流程的教師承擔(dān),負(fù)責(zé)整個Scrum團(tuán)隊的協(xié)作運(yùn)行,并協(xié)作解決非技術(shù)問題。三是Team團(tuán)隊成員。Team團(tuán)隊由Team小組長和3~5名小組成員組成。小組長由開發(fā)能力較強(qiáng)的學(xué)生擔(dān)任,其他成員根據(jù)開發(fā)能力強(qiáng)弱穿插分配。每班學(xué)生可分為若干個Team團(tuán)隊,每個開發(fā)實訓(xùn)項目由一個或多個開發(fā)小組的學(xué)生在老師指導(dǎo)下完成開發(fā)任務(wù)。

在實訓(xùn)開發(fā)課堂中,之所以要實行雙教師教學(xué),一是開發(fā)團(tuán)隊角色需要,二是為了讓教師能在實訓(xùn)過程中相互討論,取長補(bǔ)短,彌補(bǔ)高校教師在實踐經(jīng)驗上的不足,提高實訓(xùn)教學(xué)的整體質(zhì)量。

(二)約定開發(fā)規(guī)范,精簡開發(fā)流程

實訓(xùn)開始前,開發(fā)團(tuán)隊?wèi)?yīng)約定統(tǒng)一的開發(fā)規(guī)范和流程,以便學(xué)生掌握團(tuán)隊開發(fā)方法,并養(yǎng)成良好的編碼習(xí)慣。圖1為經(jīng)過精簡的Scrum實訓(xùn)開發(fā)過程模型。

圖1 ?Scrum開發(fā)過程模型

圖1是Scrum開發(fā)的一個迭代周期。其中,Product Backlog為軟件產(chǎn)品總的需求條目,這些需求多以用戶故事(User story)的形式展現(xiàn),Product Owned負(fù)責(zé)維護(hù);Sprint Backlog是Product Backlog的一部分,通過計劃會議(Planning Meeting)討論選定,是需要在當(dāng)前迭代(Sprint)中完成的需求條目;圓環(huán)為迭代開發(fā)(Sprint)的過程,一般周期為2~4周,迭代過程包含分析—設(shè)計—實現(xiàn)—測試等工作。迭代開發(fā)過程中,Team成員每天進(jìn)行15分鐘的站立會議(Daily meeting),主要匯報昨天做了什么、今天要做什么和遇到了什么問題。Scrum master每天負(fù)責(zé)繪制任務(wù)燃盡圖(Burn Down Chart),以曲線展現(xiàn)當(dāng)前Sprint任務(wù)的剩余量,這對團(tuán)隊開發(fā)有很大的鼓舞作用。每一次迭代開發(fā)完成后,教師要組織Team團(tuán)隊成員召開評審會議(Review Meeting),發(fā)布一個可執(zhí)行的軟件版本(Release),并讓相關(guān)人員和團(tuán)隊成員提出優(yōu)化意見。

(三)結(jié)對編程,以強(qiáng)帶弱,相互促進(jìn)

學(xué)生的學(xué)習(xí)能力和實踐能力是強(qiáng)弱不一的。在實訓(xùn)過程中,教師的指導(dǎo)作用固然重要,但師生間的溝通往往沒有學(xué)生間的溝通那么自如。因此,可以安排一個能力強(qiáng)的學(xué)生與一個能力弱的學(xué)生結(jié)對編程,充分發(fā)揮先進(jìn)學(xué)生的帶頭作用,讓后進(jìn)學(xué)生有機(jī)會學(xué)習(xí)別人優(yōu)秀的學(xué)習(xí)方法和實踐經(jīng)驗,互相監(jiān)督,互相促進(jìn),最終實現(xiàn)實訓(xùn)目標(biāo)。

(四)持續(xù)集成,交換測試

在我們的實訓(xùn)中,并沒有設(shè)立專門的軟件測試小組,開發(fā)團(tuán)隊只是對軟件進(jìn)行了簡單的單元測試。如果整個項目都要等到軟件開發(fā)后期才進(jìn)行集成測試,項目失敗的風(fēng)險就會很高。Scrum要求團(tuán)隊開發(fā)要盡可能頻繁地進(jìn)行集成測試,也就是持續(xù)集成。持續(xù)集成可以盡可能快地發(fā)現(xiàn)集成錯誤,通常每個成員每天至少集成一次,也可能進(jìn)行多次集成。每次集成都通過自動化的構(gòu)建(包括編譯、發(fā)布、自動化測試)來驗證,減少開發(fā)團(tuán)隊進(jìn)行集成測試的時間消耗。實踐基礎(chǔ)好的團(tuán)隊可嘗試實施測試驅(qū)動開發(fā)(TDD),即先編寫測試代碼,后編寫功能代碼,用測試代碼驅(qū)動功能開發(fā),這可以降低自動化測試的出錯率,提高軟件運(yùn)行質(zhì)量。如要進(jìn)行人工測試,可安排各個開發(fā)團(tuán)隊進(jìn)行交換測試,因為他人測試比自己測試更容易發(fā)現(xiàn)軟件存在的錯誤。 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (下轉(zhuǎn)第87頁)(上接第60頁)

總之,Scrum敏捷開發(fā)方法是一種新興的軟件開發(fā)方法,很多實踐方法和理論還在不斷地研究中。實訓(xùn)教學(xué)終究是以傳授技能為主,不需要拘泥于Scrum開發(fā)的全部形式,教師可對Scrum開發(fā)方法進(jìn)行修剪和優(yōu)化,從而更好地實現(xiàn)教學(xué)目標(biāo)。自2013年起,柳州師范高等??茖W(xué)校在軟件開發(fā)實訓(xùn)教學(xué)中實施Scrum敏捷開發(fā)方法,現(xiàn)已成功開發(fā)了教學(xué)質(zhì)量監(jiān)控系統(tǒng)、科研工作管理系統(tǒng)兩個真實項目,用戶對軟件的滿意度很高,實訓(xùn)教學(xué)取得了良好的效果,但相關(guān)管理制度和實訓(xùn)措施還需要進(jìn)一步探索和優(yōu)化。

【參考文獻(xiàn)】

[1]VersionOne Inc.8th Annual State of Agile[R]. VersionOne Inc,2013

[2]Mike Cohn. Scrum敏捷軟件開發(fā)[M].北京:清華大學(xué)出版社,2010

[3]Freder ick P.Brooks,Jr.人月神話[M].北京:清華大學(xué)出版社,2007

[4]陳國棟,羅省賢. Scrum敏捷軟件開發(fā)方法實踐中的改進(jìn)和應(yīng)用[J].計算機(jī)技術(shù)與發(fā)展,2011(12)

[5]Henrik Kniberg. Scrum and XP from the Trenches[M]. C4Media Inc,2007

[6]商惠華.計劃驅(qū)動下敏捷開發(fā)過程的軟件質(zhì)量管理[J].汕頭大學(xué)學(xué)報(自然科學(xué)版),2011(4)

【基金項目】廣西高等教育教學(xué)改革工程項目(2013JGB301)

【作者簡介】蒙煥念(1981- ?),男,廣西賓陽人,柳州師范高等??茖W(xué)校教務(wù)處系統(tǒng)分析師(高級工程師),碩士,研究方向:軟件工程、教育信息化。

(責(zé)編 王 一)

猜你喜歡
軟件開發(fā)實訓(xùn)教學(xué)應(yīng)用
信息安全環(huán)境下的計算機(jī)軟件開發(fā)研究
高職商品學(xué)課程實訓(xùn)教學(xué)探討
核電廠定期試驗管理軟件開發(fā)
分析任務(wù)式教學(xué)在中職會計實訓(xùn)教學(xué)中的應(yīng)用
FPGA軟件開發(fā)過程中編碼規(guī)范的作用
GM(1,1)白化微分優(yōu)化方程預(yù)測模型建模過程應(yīng)用分析
煤礦井下坑道鉆機(jī)人機(jī)工程學(xué)應(yīng)用分析
氣體分離提純應(yīng)用變壓吸附技術(shù)的分析
會計與統(tǒng)計的比較研究
息烽县| 岢岚县| 获嘉县| 余姚市| 怀集县| 读书| 伊宁县| 吉安县| 那曲县| 江阴市| 霍邱县| 岑溪市| 剑河县| 和硕县| 彭阳县| 长白| 张掖市| 昭通市| 筠连县| 汶上县| 怀柔区| 柯坪县| 江油市| 扶余县| 武威市| 凤台县| 买车| 莲花县| 彰化县| 鹤壁市| 金昌市| 福州市| 曲松县| 锦州市| 邹平县| 酒泉市| 土默特右旗| 图木舒克市| 敦化市| 赣榆县| 东乌|