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

?

基于Scrum敏捷開發(fā)模型的軟件工程實踐課程探索

2015-05-30 22:30:57徐建軍等
大學(xué)教育 2015年4期

徐建軍等

[摘 要]軟件工程的工程教育屬性決定了其對實踐環(huán)節(jié)要求非常高。針對傳統(tǒng)瀑布模型在軟件工程實踐課程教學(xué)中存在的問題,探索使用Scrum敏捷軟件開發(fā)模型指導(dǎo)學(xué)生進行軟件項目開發(fā)的方法,并根據(jù)實際情況在選題、分組、Scrum實踐和考核等方面進行改革,有效提高了學(xué)生的學(xué)習(xí)積極性、軟件開發(fā)能力和軟件工程素質(zhì)等。

[關(guān)鍵詞]軟件工程實踐 敏捷開發(fā)方法 Scrum

[中圖分類號] TP311.5-4;G642 [文獻標(biāo)識碼] A [文章編號] 2095-3437(2015)04-0115-03

軟件工程的工程教育屬性決定了其對實踐環(huán)節(jié)要求非常高。學(xué)生只有真正地去開發(fā)一個具有一定規(guī)模的軟件項目,才能夠掌握并加深對軟件工程基本理論知識的理解;才能通過具體工程實踐熟練使用相應(yīng)的工具完成需求分析、設(shè)計建模、協(xié)作開發(fā)、測試和評估各個環(huán)節(jié),掌握主流的軟件開發(fā)方法和軟件項目管理方法,全面提高軟件工程素質(zhì)和能力,為將來從事軟件項目的研發(fā)奠定基礎(chǔ)。

軟件工程實踐課程為軟件工程專業(yè)學(xué)生提供了必不可少的實踐環(huán)節(jié)。目前一般指導(dǎo)學(xué)生按瀑布模型進行開發(fā),使學(xué)生能夠體驗到完整的軟件開發(fā)過程。但學(xué)生通常沒有項目開發(fā)經(jīng)驗,難以一步到位,過多的文檔極大地增加了學(xué)生的工作量,組內(nèi)分工不均,往往過多依賴少數(shù)優(yōu)秀學(xué)生工作。在教學(xué)過程中不同程度地存在重結(jié)果輕過程、重技術(shù)輕管理、重個人能力輕團隊作用的現(xiàn)象。[1]

軟件工程實踐課程需要一種能夠提高開發(fā)效率,適合小團隊并能夠充分調(diào)動團隊成員積極性的實踐方法。敏捷軟件開發(fā)方法是一種以人為本、輕文檔重產(chǎn)品的軟件開發(fā)方法,與“非敏捷”方法相比,敏捷軟件開發(fā)方法強調(diào)適度的過程管理、高效的溝通、快速的適應(yīng)變化能力和緊湊自組織的團隊等。Scrum作為敏捷開發(fā)方法的一種實踐框架,提出了敏捷開發(fā)過程的預(yù)定義角色和最佳實踐方案。筆者近幾年在軟件工程實踐教學(xué)中指導(dǎo)學(xué)生應(yīng)用Scrum模型進行項目開發(fā),本文介紹這方面的探索經(jīng)驗。

一、Scrum敏捷開發(fā)方法

Scrum于1993年由Jeff Sutherland和Ken Schwaber創(chuàng)立,是一種迭代式增量敏捷軟件開發(fā)框架,為敏捷開發(fā)實踐提供了具體的行動綱領(lǐng)[2],目前Scrum已在Google、華為等大型軟件公司得到廣泛應(yīng)用。如圖1所示,Scrum模型需要將整個項目周期劃分為多個Sprint(沖刺),Spritn為一個迭代過程,每個Sprint從整個項目的待開發(fā)產(chǎn)品Backlog(清單)中選出多個構(gòu)成Sprint Backlog,迭代完成后則發(fā)布一個可交付的軟件版本。

項目參與人員在Scrum模型中被劃分為3種角色:產(chǎn)品負責(zé)人、Scrum Master和開發(fā)團隊。產(chǎn)品負責(zé)人是客戶利益的代表,主要負責(zé)確定產(chǎn)品功能、合理安排功能實現(xiàn)優(yōu)先級以及評估開發(fā)團隊的工作成果等;Scrum Master作為項目經(jīng)理同產(chǎn)品負責(zé)人緊密工作,確保開發(fā)過程按計劃進行、排除遇到的困難、保證開發(fā)團隊的工作效率和成員間的合作不受外界影響;開發(fā)團隊包括設(shè)計人員、開發(fā)人員、測試人員等,具體負責(zé)按承諾及時完成開發(fā)任務(wù),有高度的自我組織能力。

在Scrum模型中,還包括3個制品和4種會議。[3]3個制品為:①產(chǎn)品Backlog,以用戶故事形式表示的產(chǎn)品需求列表,由產(chǎn)品負責(zé)人維護具體條目,開發(fā)團隊估算工作量;②Sprint Backlog,定義了一個Sprint的開發(fā)目標(biāo),在Sprint過程中不允許發(fā)生變更;③燃盡圖,公開展示的圖表用于記錄任務(wù)完成情況,直觀反映了Sprint的執(zhí)行過程。4種會議為:①Sprint計劃會議,產(chǎn)品負責(zé)人向開發(fā)團隊介紹和分析產(chǎn)品Backlog,開發(fā)團隊挑選出本次Sprint承諾要完成的條目;②每日站立會議,團隊所有成員參加的短會,所有人站立開會,交流項目進展情況;③Sprint評審會議,開發(fā)團隊向產(chǎn)品負責(zé)人和其他相關(guān)人員演示產(chǎn)品功能;④Sprint回顧會議,所有人員都要反思這個Sprint,為了進行持續(xù)的過程改進。

二、軟件工程實踐教學(xué)

由于Scrum模型適用于規(guī)模較小的團隊,并具有可檢查、適應(yīng)性強、透明性好和學(xué)習(xí)成本低等優(yōu)點,適合在軟件工程實踐課程中指導(dǎo)項目開發(fā)。[4] [5]然而,學(xué)校環(huán)境與軟件公司環(huán)境有所不同,學(xué)生在能力和經(jīng)驗方面與公司員工的也存在差距,課程的主要任務(wù)還是培養(yǎng)和鍛煉學(xué)生。因此,應(yīng)結(jié)合實際教學(xué)情況對Scrum模型進行適當(dāng)調(diào)整。

(一)分組和選題

首先根據(jù)自愿原則把學(xué)生分為多個項目組,每組5-7人,劃分小組時需考慮溝通效率和學(xué)生開發(fā)能力等因素。Scrum模型要求團隊成員之間密切溝通,而且項目開發(fā)更多是在課外時間進行,所以要求學(xué)生根據(jù)所在宿舍、選課等情況分組,確保小組內(nèi)部交流順暢。同時每組應(yīng)至少安排1-2名軟件開發(fā)經(jīng)驗較豐富的學(xué)生,以保證項目開發(fā)的順利進行。分組后需按Scrum框架給組內(nèi)學(xué)生分派角色,剛開始每個組內(nèi)軟件開發(fā)能力最強的學(xué)生往往被選為Scrum Master,此處需要糾正的是,Scrum Master更注重管理和協(xié)調(diào)能力。

實踐題目一般由教師提供,也鼓勵項目組向教師推薦,但要征得教師的認(rèn)可。實踐選題的難度不宜太大,最好是開發(fā)團隊熟悉并感興趣的領(lǐng)域,課程的目標(biāo)是體驗軟件開發(fā)的過程,并注重軟件的完成質(zhì)量,要求作品質(zhì)量能達到與市場上的產(chǎn)品媲美的程度。已有的選題包括:二手交易、網(wǎng)上書店、社交平臺、新聞聚合、手機游戲等。

(二)Scrum實踐

我校軟件工程實踐課程安排兩個月左右的時間,被劃分成3個Sprint,每個Sprint約3周。這里介紹其中關(guān)鍵環(huán)節(jié)的實施情況。

(1)制訂Sprint計劃

項目組通過Sprint計劃會議制訂工作計劃,確定本次Sprint的目標(biāo)。產(chǎn)品負責(zé)人首先需要與客戶代表(即教師)充分溝通后,創(chuàng)建整個產(chǎn)品的Backlog,然后在計劃會議上向開發(fā)團隊詳細介紹每個條目,并說明完成的優(yōu)先級。開發(fā)團隊從產(chǎn)品Backlog挑選出本次Sprint承諾要完成的條目構(gòu)成Sprint Backlog,并估算完成各個條目所需的工作量,將其分解成具體的開發(fā)任務(wù),然后通過自愿領(lǐng)取的方式分派給開發(fā)團隊的某個成員。由于課堂時間有限,選擇一個準(zhǔn)備充分的項目組在課上進行展示,其余組在課后完成,并向教師提交會議成果。

(2)每日站立會議

每日站立會議由項目組的Scrum Master組織,教師旁聽,僅在必要時給出意見。按Scrum框架要求,會上每個人必須解釋和回答3個問題:昨天完成了什么?今天計劃做什么?還需要哪些幫助?會議限定時間少于15分鐘,Scrum Master會后根據(jù)進展情況相應(yīng)更新燃盡圖。由于每周僅一次課,要求項目組每周至少進行3次站立會議。

(3)結(jié)對編程

在校學(xué)生沒有太多的軟件開發(fā)經(jīng)驗,編程能力參差不齊,所以筆者在教學(xué)過程還引入極限編程中的結(jié)對編程方法。讓兩名學(xué)生構(gòu)成一個開發(fā)小組,他們之間能夠有效交流、相互學(xué)習(xí)和傳遞經(jīng)驗,提高整個團隊的工作效率。

(4)Sprint評審及回顧

在一個Sprint完成后,由開發(fā)團隊中的測試人員向產(chǎn)品負責(zé)人和客戶代表(即教師)演示階段成果,產(chǎn)品負責(zé)人和教師給出改進意見。Scrum Master匯報本次Sprint的完成情況,并展示燃盡圖,教師進行點評。在Sprint回顧會議上,項目組通過投票的方式選出本次Sprint做得好的3個環(huán)節(jié)和下次Sprint迫切需要改進的3個問題。

(5)文檔撰寫

敏捷開發(fā)方法強調(diào)可用的軟件重于完備的文檔,但并不意味著不寫文檔。軟件工程實踐課程要求學(xué)生編寫適量的文檔,這也是培養(yǎng)軟件工程能力的一方面。文檔撰寫按照Scrum的角色進行分配,Scrum Master負責(zé)軟件開發(fā)計劃和實施過程文檔,產(chǎn)品負責(zé)人負責(zé)可行性論證報告和需求分析文檔,開發(fā)團隊負責(zé)軟件設(shè)計文檔、軟件測試文檔和安裝手冊等。

(三)考核方式

為使課程考核盡可能客觀、公正,在課程驗收階段,每個項目組都要進行公開演示,其余項目組和教師一起對該組進行量化打分,評價內(nèi)容包括難度、質(zhì)量、創(chuàng)新和界面四個方面。教員結(jié)合演示情況和文檔對項目進行綜合評價,小組互評占80%,教員評價占20%。其次,Scrum Master要給出組內(nèi)每個成員的具體業(yè)績系數(shù),然后在項目組總成績的基礎(chǔ)上再確定每個成員的最終成績。

三、教學(xué)效果

我們已經(jīng)在2個學(xué)期的軟件工程實踐課程中使用了Scrum模型,在激發(fā)學(xué)生學(xué)習(xí)興趣、提高軟件開發(fā)質(zhì)量等方面取得了較好的效果,主要體現(xiàn)在以下幾個方面。

(1)激發(fā)了學(xué)生的創(chuàng)造力和主動性。在實踐過程中,開發(fā)團隊是通過自愿領(lǐng)取的方式分派開發(fā)任務(wù),每日例會和燃盡圖將小組成員的開發(fā)進度公開展示出來。后進學(xué)生體會到項目壓力,努力上進,使項目組內(nèi)部形成一種良性競爭機制,從而使學(xué)生更積極主動地參與項目開發(fā)。

(2)提高了學(xué)生的軟件工程素質(zhì)。將項目開發(fā)過程拆分為多個Sprint,最終形成一個軟件產(chǎn)品,這符合軟件開發(fā)的基本規(guī)律,而且這種“計劃、實施、評價、改進”的迭代開發(fā)體驗對于經(jīng)驗不多的軟件工程專業(yè)學(xué)生來說幫助非常大。一般而言,第一個Sprint效果不會太好,到第三個Sprint基本上每個項目組都有很大改進。

(3)學(xué)生的軟件開發(fā)能力得到明顯增強。在敏捷開發(fā)框架下,學(xué)生只編寫一些重要文檔,能夠?qū)⒕χ攸c放在編碼和調(diào)試上。通過結(jié)對編程,基礎(chǔ)差的學(xué)生可以向好的學(xué)生學(xué)習(xí)(實踐證明相互學(xué)習(xí)的效果很好),也提供更好的設(shè)計質(zhì)量和代碼質(zhì)量,改善了工作紀(jì)律性,。

(4)評價更加客觀公正。由于Scrum透明性好的特點,每位學(xué)生的工作完成情況在實踐過程中一目了然,所以對學(xué)生的評價相對是比較容易的。項目組之間互評的機制也保證了評價的公正性。

但目前也還存在一些不足,主要體現(xiàn)在:計劃制訂不盡合理,項目組成員之間的交流還不夠積極,課后工作落實不到位,文檔作用體現(xiàn)不明顯,部分學(xué)生因為基礎(chǔ)差、自覺性差等原因參與度不高。這些都是我們下一步重點解決的問題。

四、結(jié)語

Scrum敏捷開發(fā)模型具有可檢查、適應(yīng)性強和學(xué)習(xí)成本低等優(yōu)點,適用于小規(guī)模的軟件開發(fā)團隊。在軟件工程實踐課程教學(xué)中,我們嘗試用改進的Scrum模型指導(dǎo)學(xué)生進行軟件項目開發(fā),能夠有效激發(fā)學(xué)生的積極性和主動性,使其參與開發(fā)互動,從而了解軟件項目開發(fā)過程,提高軟件開發(fā)能力和軟件工程素質(zhì),項目完成質(zhì)量和教學(xué)效果有明顯改進。

[ 注 釋 ]

[1] 曾紅衛(wèi),劉悅,劉煒.軟件工程實踐教學(xué)方法探索[J].計算機工程與科學(xué),2011(A1):15-18.

[2] Scrum(software development)[J / OL].http://en.wikipedia.org / wiki / Scrum_(software_development), lasted visited ,2014

-10-20.

[3] Henrik Kniberg著.李劍譯.硝煙中的Scrum和XP——我們?nèi)绾螌嵤㏒crum[M].北京:清華大學(xué)出版社.http://infoq.com / cn / minibooks / scrum-xp-from-the-trenches,lasted visited 2014-10-20.

[4] 林曉宇.基于Scrum敏捷方法的軟件工程實踐教學(xué)探索[J].電腦知識與技術(shù),2011(19):4762-4765.

[5] 徐海濤,吳昊.基于Scrum和極限編程結(jié)合的軟件項目實踐課程教學(xué)改革與實踐[J].福建電腦,2013(4):44-46.

[責(zé)任編輯:覃侶冰]

南澳县| 志丹县| 安阳县| 美姑县| 常熟市| 浮梁县| 东阿县| 石嘴山市| 霸州市| 凤庆县| 满洲里市| 通城县| 新兴县| 澄城县| 禄劝| 宁河县| 乌鲁木齐市| 北碚区| 枣庄市| 通化市| 且末县| 保亭| 台江县| 玉山县| 高雄县| 沂源县| 镇原县| 山东省| 安西县| 东平县| 阜平县| 宜黄县| 荣昌县| 亚东县| 灵璧县| 昌江| 五原县| 宿迁市| 丰顺县| 湖南省| 清流县|