趙愛美 孫茂鋒
摘 要: 針對瀑布模型在軟件開發(fā)綜合實訓課程教學中存在的問題,分析敏捷開發(fā)的特點和優(yōu)勢。探索在軟件開發(fā)綜合實訓課程中采用Scrum敏捷開發(fā)的實施過程。通過項目分解,Sprint增量迭代,頻繁交付可運行的軟件,培養(yǎng)學生團隊合作精神和主動學習能力,從而提高教學質量。
關鍵詞: 敏捷開發(fā); Scrum; 軟件開發(fā); 項目
中圖分類號:G642 文獻標志碼:A 文章編號:1006-8228(2015)11-81-03
Abstract: Aiming at the problems in the teaching of comprehensive practice training course of software development for the waterfall model, the characteristics and advantages of agile development are analyzed. This paper explores the application of the Scrum agile development process in comprehensive practice training of software development. Through the project decomposition, sprint incremental iteration and frequent delivery of the working software, cultivate students' team spirit and initiative learning ability, so as to improve the quality of teaching.
Key words: agile development; Scrum; software development; project
0 引言
在軟件技術專業(yè)和計算機應用技術專業(yè)中都會開設軟件開發(fā)綜合實訓課程,讓學生通過完成1-3個簡化的企業(yè)項目掌握主流的開發(fā)方法和軟件開發(fā)過程,為將來步入社會打下知識與技能的基礎。為了更好更快的開發(fā)出符合客戶要求的軟件,開發(fā)過程中一般會采用某個開發(fā)模型,教學中為了實現(xiàn)學校與企業(yè)的無縫對接,在開發(fā)項目時也會采用某個開發(fā)模型。本文簡要分析了目前軟件開發(fā)綜合實訓課程采取的開發(fā)模型及其存在的問題,在簡單了解敏捷開發(fā)模型的基礎上,探索軟件開發(fā)綜合實訓課程中采用Scrum敏捷開發(fā)的具體實施過程,研究利用Scrum敏捷開發(fā)的優(yōu)勢。
1 目前開發(fā)模型和存在的問題
在高校軟件開發(fā)綜合實訓課程的教學中,大都仍采用傳統(tǒng)的“瀑布模型”開發(fā)模式。該模型將項目分成需求分析、概要設計、詳細設計、編碼實現(xiàn)、軟件測試和運行維護六個階段。各個階段嚴格按自上而下的線性順序實施。每個階段都需撰寫大量詳細文檔,這占用了大量的實訓時間,前一個階段完成后才能開始下一階段。雖然學生急于看到的軟件運行效果帶著盡早編程的急切心情,也必須等到需求分析、概要設計、詳細設計三個階段驗收完成后才能開始,這極大挫傷了學生學習的積極性。
這種瀑布模型是解決上世紀六十年代軟件危機的很好方案,也是開發(fā)模型中的經(jīng)典。但是瀑布模型強調文檔的作用,以文檔為核心,用戶只有等到整個過程結束才能見到全部成果,嚴重延遲的反饋信息無疑增加了項目延期或失敗的風險。在當今的軟件開發(fā)中,很難看到完全實施“瀑布模型”的企業(yè),越來越多的公司采用了敏捷開發(fā)。
據(jù)VersionOne[1]公司2013年的調查顯示,在全球收集的3501份調查報告顯示有88%的公司采用敏捷開發(fā)方法,Google、華為等大型軟件公司也采用了敏捷開發(fā)。越來越多的國內中小軟件企業(yè)也通過敏捷開發(fā)提升自身競爭力,包括筆者頂崗實習的北京盛安德科技有限公司。與傳統(tǒng)軟件過程、開發(fā)方法、傳統(tǒng)項目管理方法相比,敏捷開發(fā)方法具有以人為本、成本低、開銷小、效率高、靈活和響應快等優(yōu)勢。為了與企業(yè)接軌,使學生學以致用,我們應該密切與行業(yè)企業(yè)合作,改革目前過時的實訓開發(fā)模式。
2 敏捷開發(fā)模型
2001年Kent Beck等17名專家共同簽署了“敏捷軟件開發(fā)宣言”,敏捷軟件運動隨之產(chǎn)生和發(fā)展。“敏捷”代表了互聯(lián)網(wǎng)時代軟件開發(fā)過程模式的一種先進理念和價值觀。與傳統(tǒng)開發(fā)模式相比,“敏捷”更強調溝通性、快速靈活地響應,關鍵在于持續(xù)交付可工作的軟件[2]。敏捷開發(fā)積極主動地迎接和適應客戶變化,允許和支持需求的不斷變化,主張軟件開發(fā)人員應緊密與客戶合作、溝通和交流,把客戶作為開發(fā)組成員,它集合了一整套價值觀、原則和實踐方法。敏捷開發(fā)的價值觀[3]:個人和交互勝過過程和工具;工作的軟件勝過面面俱到的文檔;與客戶合作勝過合同談判;響應變化勝過遵循計劃。目前有許多敏捷開發(fā)過程可供選擇:XP(eXtreme Programming,極限編程)、Scrum、水晶方法等。Scrum軟件開發(fā)模型是敏捷開發(fā)中的一種,應用最為廣泛。
3 Scrum敏捷開發(fā)簡介
Scrum敏捷開發(fā)過程是以人為核心、迭代、增量、循序漸進的開發(fā),整個開發(fā)過程由若干個短的迭代周期組成,每個迭代周期稱為一個Sprint,每個迭代實現(xiàn)不同的任務,迭代中重大的、優(yōu)先級高或風險高的任務優(yōu)先實現(xiàn),每個迭代周期都有明確的目標,每次迭代都經(jīng)過測試,具備集成和可運行的特征[4]。每個Sprint周期結束后可以交付一個可運行的軟件。
采用Scrum敏捷開發(fā)的項目參與人員主要分三種角色,即產(chǎn)品負責人(Product Owner)、Scrum Master、開發(fā)團隊。其中Scrum Master對項目全過程負責,是項目的推動者和組織者,確保Scrum流程正常運轉。開發(fā)團隊成員一般不多于7人,主要有設計、開發(fā)和測試人員組成,團隊成員不能只負責自己擅長的領域,需要有配合全局的合作意識,如開發(fā)人員不能只負責編寫代碼,還需要進行測試。
Scrum敏捷開發(fā)項目執(zhí)行的流程[5]。首先在產(chǎn)品負責人的帶領下篩選出產(chǎn)品的總需求條目(Product Backlog),通過全體人員共同討論對總需求條目進行優(yōu)先級別排序,供團隊進行開發(fā)工作。然后以1-4個星期為一個開發(fā)周期Sprint,團隊根據(jù)Product Backlog確定Sprint周期內的任務,生成Sprint Backlog(周期內任務列表,Sprint Backlog為Product Backlog的一部分),確定Sprint目標。每個Sprint周期(一次迭代)分為設計、實現(xiàn)、測試等工作,團隊成員主動認領工作任務,每天在不超過20分鐘的站立會議上講述自己的昨天工作內容、今天工作計劃和當前工作難點。在一個Sprint周期結束時,整個團隊對照Sprint Backlog列表演示新功能,完成演示和Sprint回顧總結,發(fā)布一個可執(zhí)行交付的有價值軟件,才可開始下一個Sprint周期的循環(huán)。這樣原本幾個月甚至幾年的開發(fā)周期縮短至一個星期到一個月,讓用戶可以盡早體驗軟件的應用并及時提出問題或調整需求。
4 Scrum敏捷開發(fā)具體設計過程
學校的實訓環(huán)境和公司的工作環(huán)境,以及學生和員工的工作能力有很大的差別,因此高校軟件開發(fā)綜合實訓教學中不能拘泥于Scrum過程的全部形式,教師應對Scrum開發(fā)進行修改和優(yōu)化。
4.1 分組和角色分配
Scrum主要有三類角色,一是Product Owner(產(chǎn)品負責人),該角色可安排熟悉產(chǎn)品需求的教師承擔,負責產(chǎn)品需求的提煉、優(yōu)化和優(yōu)先級排序。二是Scrum Master(團隊負責人),有開發(fā)能力強的學生擔任,主要負責本項目成員的溝通和協(xié)調,老師協(xié)助Scrum Master的工作,監(jiān)控項目執(zhí)行。三是開發(fā)團隊成員,一般由3-4名學生組成。團隊成員注意開發(fā)能力強弱分配、男女搭配等元素,另外項目是在課余進行開發(fā),所以要考慮宿舍因素。
4.2 項目選題和項目啟動會議
軟件開發(fā)綜合實訓課程分成兩個階段,第一個階段(2-3個月)是教師給出固定題目,如:公司網(wǎng)站;第二個階段(2-3個月)由學生自主選擇項目,征求教師認可,如:畢業(yè)生管理系統(tǒng)、大學生報到系統(tǒng)等。
在項目的啟動會議上,介紹敏捷開發(fā)的思想和執(zhí)行流程,約定統(tǒng)一的開發(fā)規(guī)范和流程,以便學生掌握團隊開發(fā)方法,并養(yǎng)成良好的編碼習慣。
4.3 Scrum敏捷開發(fā)的執(zhí)行流程
如圖1所示,教師和項目組成員將整個軟件項目分解成多個子項目(Product Backlog),開發(fā)過程中選擇優(yōu)先級高和重大的子項目進行開發(fā),一個子項目為一個Sprint迭代周期,子項目又可以分成若干個工作任務(Sprint Backlog)。在每個Sprint周期內,學生主動認領任務,進行計劃、編碼和測試。每日項目組有一個不超過20分鐘的會議,主要匯報三個問題:上堂課到目前為止做了什么?有什么難點和問題?今天打算做什么?并更改自己的Sprint燃盡圖(Sprint burn down)。通過該會議讓項目組成員了解目前項目進度。每個Sprint 周期結束后,開一次Sprint評審和回顧會,對照Sprint Backlog演示軟件的功能,看是否完成了本次Sprint目標,會上每位學生回顧自己所做工作以及需要改進的地方,教師給予點評和總結。會議的成果可以交付一個可運行的軟件。下一個Sprint周期是現(xiàn)有軟件的增量迭代,因此可以持續(xù)交付包含新功能的軟件版本。總之,敏捷開發(fā)就是把一個大項目分為多個相互聯(lián)系,但也可獨立運行的小項目,并分別完成,在此過程中軟件一直處于可使用狀態(tài)。
4.4 結對編程
一個任務交給兩個開發(fā)人員。兩個開發(fā)人員同時坐在一臺電腦前面,一個編程,另一個實時檢查,然后互換角色。與傳統(tǒng)一個人一個任務相比,兩個人一起協(xié)作可以互相促進、相互學習,實現(xiàn)提高。
5 Scrum敏捷開發(fā)在軟件開發(fā)綜合實訓教學中的優(yōu)勢
在軟件開發(fā)綜合實訓教學中使用Scrum敏捷開發(fā)主要有以下優(yōu)勢。
Scrum提高了學生學習積極性和主動性。Scrum敏捷開發(fā)模型要求盡早編碼這恰好迎合了學生軟件開發(fā)實訓時急切渴望進行編程的心理,激發(fā)學生學習的積極性。同時能夠頻繁交付可運行的軟件,使學生有極大的成就感。同時在項目的開發(fā)中,開發(fā)成員主動認領開發(fā)任務,每日的站立會議會使落后的學生意識到自己的差距,這在團隊中能夠形成良好的競爭機制,主動學習和提高。
Scrum提高了學生的軟件開發(fā)技能。瀑布開發(fā)模型在整個開發(fā)過程中都需要撰寫大量的開發(fā)文檔,比如在需求文檔寫出來后,開發(fā)人員根據(jù)需求文檔來編寫代碼,一切以文檔為依據(jù)。敏捷開發(fā)只寫必要文檔,這節(jié)省了大量的實訓時間,使學生有時間專注于編碼和測試工作,從而提高學生的開發(fā)技能。
6 結束語
作為一種新興的開發(fā)模型,Scrum敏捷開發(fā)方法的理論和實踐還在不斷的完善創(chuàng)新之中。教師在教學中使用Scrum敏捷開發(fā)模型組織教學時,更應該根據(jù)實際情況進行修剪和完善。實踐證明,在軟件開發(fā)綜合實訓課程中,我們嘗試采用修剪的Scrum敏捷開發(fā)模型能夠激發(fā)學生學習興趣,提高學生開發(fā)能力和團隊協(xié)作精神。
參考文獻(References):
[1] 資料來源:http://www.versionone.com/.
[2] Robert C. Martin.敏捷軟件開發(fā)-原則、模式與實踐[M].清
華大學出版社,2003.
[3] 王敏.基于Scrum敏捷開發(fā)的軟件過程管理研究 [D].昆明理
工大學,2010.
[4] 林曉宇.基于Scrum敏捷方法的軟件工程實踐教學探索[J].
電腦知識與技術,2011.19:4762-4765
[5] Henrik Kniberg. Scrum and XP from the Trenches[M].
C4Media Inc,2007.