馮桂蓮,祝延波
(青海民族大學 物理與電子信息工程學院,青海 西寧 810007)
敏捷開發(fā)在任務(wù)驅(qū)動實驗教學中的應(yīng)用
馮桂蓮,祝延波
(青海民族大學 物理與電子信息工程學院,青海 西寧 810007)
敏捷開發(fā)是哲學理念和一系列開發(fā)指南的綜合,推崇讓客戶滿意和軟件的早期增量發(fā)布,強調(diào)開發(fā)團隊與業(yè)務(wù)專家之間的緊密協(xié)作和面對面的溝通.《軟件工程》及《信息系統(tǒng)分析與設(shè)計》兩門課程是信息系統(tǒng)與信息管理專業(yè)的核心課程.通過任務(wù)驅(qū)動及案例教學的方式,讓學生認真完成基于MVC的JSP軟件開發(fā),從而大大提高了學生的工程實踐水平和團隊合作能力.同時還可加強這些課程的教學效果,進一步提高教師的科研和教學水平.
敏捷開發(fā);實驗教學;任務(wù)驅(qū)動;極限編程;信息管理系統(tǒng)
2001年,Kent Beck和其他16位知名軟件開發(fā)者、軟件工程師以及軟件咨詢師(稱為敏捷聯(lián)盟)共同簽署了“敏捷軟件開發(fā)宣言”[1],敏捷開發(fā)就此誕生.與傳統(tǒng)的軟件開發(fā)方法相比,敏捷方法更強調(diào)開發(fā)人員之間的交互,是哲學理念和一系列開發(fā)指南的綜合.開發(fā)的指導(dǎo)方針強調(diào)超越分析和設(shè)計的發(fā)布以及開發(fā)人員和客戶之間主動和持續(xù)的溝通敏捷開發(fā)模式非常適合APPS項目,國內(nèi)外許多領(lǐng)域的項目開發(fā)都采用此種模式.在國內(nèi),應(yīng)用開放式創(chuàng)新模式的小米公司的開發(fā)口號就是“快速迭代,隨做隨發(fā)”.他們依據(jù)的理念就是敏捷開發(fā)[2].創(chuàng)新性移動應(yīng)用最大特點是未來市場的不確定性和難以預(yù)測性.在開發(fā)中,采用敏捷開發(fā)的循環(huán)迭代流程,幫助開發(fā)者實現(xiàn)高效率、低成本,盡可能貼近市場需求[3].文獻[4]中研究了基于可復(fù)用技術(shù)的敏捷開發(fā)流程,文獻[5]中研究了以用戶為中心進行敏捷開發(fā)的方法.在今后的理論和實驗教學過程中,如何將敏捷開發(fā)的其他方法,如自適應(yīng)軟件開發(fā)(ASD)、Scrum、動態(tài)系統(tǒng)開發(fā)方法(DSDM)及特征驅(qū)動開發(fā)(FDD)應(yīng)用于軟件開發(fā)類課程教學將是進一步學習和研究的重點.
《軟件工程》及《信息系統(tǒng)分析與設(shè)計》兩門課程是高校信息系統(tǒng)與信息管理專業(yè)的核心課程.學習其課程的目的是培養(yǎng)學生綜合應(yīng)用基礎(chǔ)理論知識和有關(guān)技術(shù)工具,掌握軟件的分析、設(shè)計的基本方法,旨在提高學生的工程實踐水平和團隊合作能力,將敏捷開發(fā)應(yīng)用于軟件工程及相關(guān)課程的教學過程是勢在必行且有意義的.本文論述了將敏捷開發(fā)模式應(yīng)用于課程實驗教學的整個過程及其具體作用.通過任務(wù)驅(qū)動及案例教學的方式,讓學生認真完成基于MVC的JSP軟件開發(fā),加強了這些課程的教學效果,進一步提高了教師的教學和科研水平.
1.1 敏捷宣言
敏捷聯(lián)盟在“宣言”中聲明:“我們正在通過親身實踐及幫助他人實踐的方式來揭示更好的軟件開發(fā)之路,通過這項工作,我們認識到:個人和這些個人之間的交流勝過了開發(fā)過程和工具;可運行的軟件勝過了寬泛的文檔;客戶合作勝過了合同談判;對變更的良好響應(yīng)勝過了按部就班地遵循計劃[1]”.從本質(zhì)上講,敏捷方法是為了克服傳統(tǒng)軟件工程中認識和實踐的弱點而形成的.
1.2 敏捷
敏捷是有效地響應(yīng)變化,同時也是一種哲學理念.它鼓勵能夠使組員之間、技術(shù)和商務(wù)人員之間、軟件工程師和經(jīng)理之間的溝通,更便利的團隊結(jié)構(gòu)和協(xié)作態(tài)度;它強調(diào)可運行軟件的快速交付而不那么看重中間產(chǎn)品;它將客戶作為開發(fā)團隊的成員以消除一直普遍存在于多數(shù)軟件項目中的“區(qū)分你我”的態(tài)度,它意識到在不確定的世界里計劃是有局限性的,項目計劃必須是可以靈活調(diào)整的,敏捷可以應(yīng)用于任何一個軟件過程.敏捷方法最具強制性的特點就是它能夠通過軟件過程來降低由變更所引起的代價.
2.1 實施策略
文獻[6~7]從不同角度、用不同方法對《信息系統(tǒng)分析與設(shè)計》這門課程教學進行了一些改革,也取得了良好的教學效果.本文將敏捷開發(fā)應(yīng)用于《軟件工程》及《信息系統(tǒng)分析與設(shè)計》課程的實驗教學過程中,通過任務(wù)驅(qū)動及案例教學相結(jié)合的方式,讓學生完成基于MVC的JSP軟件開發(fā),從而大大提高了學生的工程實踐水平和團隊協(xié)作能力,同時加強了課程的教學效果,進一步提高了教師的教學水平.具體的教學過程如圖1所示.
圖1 敏捷開發(fā)應(yīng)用于實驗教學過程示意圖
2.2 實施過程
2.2.1 任務(wù)驅(qū)動
在《軟件工程》和《信息系統(tǒng)分析與設(shè)計》兩門課程的教學過程中,實踐性教學環(huán)節(jié)占重要地位,因此在教學初期就應(yīng)強調(diào)課程設(shè)計的重要性.第1周第1節(jié)課,任課教師在介紹課程的教學目的和教學要求的同時,布置課程設(shè)計任務(wù),說明課程的考核辦法和依據(jù),并要求盡快分組和選題或組內(nèi)自擬題目.
課程的考核要測重于課程設(shè)計(也即項目研發(fā)),筆者規(guī)定的考核總成績=課堂出勤*10%+理論作業(yè)*10%+課堂表現(xiàn)*10%+課程設(shè)計*70%.其中課程設(shè)計的測評又按具體的各項指標進行.
課程設(shè)計題目可以由教師指定或?qū)W生自擬,通常情況下,作者在教學過程中,指定文獻[8]中附錄A《關(guān)于課程設(shè)計的建議》中的課題.根據(jù)實際情況和地域特色、民族特色,讓學生自行選擇與學習、生活及工作聯(lián)系比較緊密的,業(yè)務(wù)功能比較直觀的課題,如民族院校宿舍管理系統(tǒng)、青藏高原土特產(chǎn)品管理系統(tǒng)及少數(shù)民族飾品管理系統(tǒng)等,其中有些系統(tǒng)的分析和設(shè)計還有助于后續(xù)課程,如《電子商務(wù)網(wǎng)站建設(shè)》的教學和實踐.
本文主要以民族院校宿舍管理系統(tǒng)為例,高校學生宿舍管理能力和服務(wù)水平的高低直接關(guān)系到學生生活質(zhì)量和學校辦學能力,因此按課程要求開發(fā)了相應(yīng)信息系統(tǒng),預(yù)期用于輔助宿舍管理、優(yōu)化宿舍資源、提高宿舍資源利用率和后勤管理水平[9].
2.2.2 設(shè)置分組
課程設(shè)計小組一般以4~5人為一組,如果人數(shù)過多,不能使每位學生都充分參與分析與設(shè)計過程;如果人數(shù)太少,負擔較重,不便體驗團隊合作精神,也不符合敏捷開發(fā)模式“小而高度自主的項目團隊”特點.小組的設(shè)置主要以自由組合為主,教師再根據(jù)實際情況及學生能力分布進行適當?shù)恼{(diào)整,以便在整個設(shè)計過程中“緊密協(xié)作和面對面的溝通”.
在實驗教學過程中,任課教師的角色比較豐富,一方面要指導(dǎo)學生完成相應(yīng)的課題,一方面要作為客戶和學生進行交互,提出需求、討論交流及項目驗收等,任務(wù)比較繁重.按每個教學班30人左右計算,每次課程設(shè)計都分為六組左右.在教師人力緊張的情況下,可以將有些任務(wù)分派給各個小組長(項目負責人),這樣教師就可以從繁雜的任務(wù)中解脫出來,重點指導(dǎo)綜合性比較強的2~3個項目,并以案例的形式進行課堂討論和演示.每個小組長定期向教師匯報項目進展,提出存在的問題,教師給予指導(dǎo).該任務(wù)在第2周完成.
2.2.3 極限編程
極限編程(XP)是敏捷軟件開發(fā)使用最廣泛的方法.為了在軟件工程師和其他利益相關(guān)者之間獲得有效的溝通,XP強調(diào)在用戶和開發(fā)者之間進行緊密的、非正規(guī)的口頭合作.連續(xù)的反饋,避免以大量的文檔作為交流媒介XP使用面向?qū)ο蠓椒ㄗ鳛橥扑]的開發(fā)模式,包含策劃、設(shè)計、編碼和測試四個框架活動的規(guī)則和實踐.各個模塊極限編程過程如圖2所示.
圖2 極限編程過程
下面以民族院校學生宿舍管理系統(tǒng)為例,詳細論述該過程.
1)策劃.目前本校(青海民族大學)的學生宿舍管理依然采用人工管理方式,學生住宿信息以學生宿舍登記冊(一個宿舍一張表的手工記錄形式)和Excel電子表格相結(jié)合的方式記錄.因此,查找、添加、刪除及修改信息比較費時、費力,且難以保證工作效率.同時還存在數(shù)據(jù)冗余、容易產(chǎn)生錯誤等缺點.因此,手工記錄、人工管理的學生宿舍管理方式難以適應(yīng)高校信息化、數(shù)字化建設(shè)的要求和趨勢.具體的學生宿舍Excel電子表格見表1所示.
相比之下,新的學生宿舍管理系統(tǒng)可以使相關(guān)管理人員在使用過程中方便查找需要的信息,進行快速檢索,提高正確率和可靠性,減少數(shù)據(jù)冗余.該課題以本校學生宿舍管理需求為背景,分析、設(shè)計并開發(fā)了基于MVC的JSP信息管理系統(tǒng).該系統(tǒng)界面友好、操作簡單、運行穩(wěn)定.在這一階段,課題組同時要撰寫可行性分析報告,在第3至4周完成.
2)設(shè)計.XP設(shè)計鼓勵使用CRC卡(類—責任—協(xié)作者)卡確定和組織與當前軟件增量相關(guān)的面向?qū)ο蟮念?
表1 學生宿舍信息卡
系統(tǒng)的主要功能包括對學生住宿信息的查詢和更新、宿舍信息管理、學生考勤管理以及系統(tǒng)用戶管理.對宿舍管理系統(tǒng)的功能進行模塊劃分,分別以系統(tǒng)管理員、宿舍管理員及輔導(dǎo)員,為系統(tǒng)用戶進行分析與設(shè)計,系統(tǒng)組織結(jié)構(gòu)圖如圖3所示.
圖3 學生宿舍管理系統(tǒng)組織結(jié)構(gòu)圖
根據(jù)系統(tǒng)功能進行組內(nèi)分工及角色分配.其中組長為課題項目負責人,其他組員根據(jù)自己特長進行模塊分管,組成極限編程團隊,具體任務(wù)分配如下:
同學A(組長兼項目負責人):結(jié)構(gòu)設(shè)計、數(shù)據(jù)庫設(shè)計、代碼設(shè)計和調(diào)試、界面設(shè)計.
同學B:數(shù)據(jù)庫設(shè)計、開發(fā)環(huán)境搭建、備份優(yōu)化.
同學C:頁面框架設(shè)計、E-R model、數(shù)據(jù)庫優(yōu)化.
同學D:系統(tǒng)優(yōu)化、數(shù)據(jù)庫優(yōu)化、甘特圖、界面設(shè)計.
XP團隊將用以下三種方式之一對系統(tǒng)功能進行排序.
A:所有功能將在幾周內(nèi)盡快實現(xiàn).
B:具有最高權(quán)值的功能將移到進度表的前面并首先實現(xiàn).
C:高風險的功能將首先實現(xiàn).
該系統(tǒng)數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)庫的設(shè)計主要包括學生宿舍信息表、宿舍管理員表、輔導(dǎo)員信息表、缺勤記錄表、宿舍信息表及系統(tǒng)管理員表以及它們之間的關(guān)系.學生宿舍信息表為例,見表2所示.
在該階段,根據(jù)系統(tǒng)功能和實體聯(lián)系,繪制E-R圖、數(shù)據(jù)流圖,同時撰寫系統(tǒng)說明書和系統(tǒng)設(shè)計說明書,在第5至6周完成.
3) 編碼.XP編碼活動中關(guān)鍵是結(jié)對編程,這種方式在編碼過程中強化了詳細設(shè)計,強調(diào)不斷重構(gòu),提高代碼質(zhì)量和可讀性,降低修正代碼缺陷的代價[10].這一方案提供了實時解決問題和實時質(zhì)量保證的機制.這在宿舍管理系統(tǒng)開發(fā)小組中是不難實現(xiàn)的,因為小組成員通常以宿舍為單位(多為同一宿舍學生),并且實驗室環(huán)境也滿足此模式的要求.同時,采取結(jié)對編程,以強帶弱,學生更容易樹立信心,并能從學習中獲得更多的友誼、快樂和滿足感[11].
表2 學生住宿信息表
在該XP團隊中,結(jié)對情況為:(同學A,同學C),(同學B,同學D),這與他們的分工任務(wù)性質(zhì)密切相關(guān).當結(jié)對的兩人完成工作時,他們所開發(fā)的代碼將與其他人的工作集成起來.在有些情況下,結(jié)對者自己負責集成,這種“連續(xù)集成”策略有助于避免兼容性和接口問題.該階段是主要階段,要求貫串第7至16周,也是耗時最長的階段,開發(fā)人員和客戶之間、開發(fā)人員之間要始終保持主動和持續(xù)的溝通,要確定迭代的順序和周期,把項目的核心功能放在迭代周期之前,經(jīng)過多次迭代后可以顯著提高核心功能的可靠性,從而提高整個項目的可靠性[12].
4)測試.測試有模塊測試、聯(lián)合測試、驗收測試及系統(tǒng)測試四種類型.在編碼開始之前建立單元測試,是XP方法的關(guān)鍵因素,所建立的單元測試應(yīng)當使用一個可以自動實施的框架.這種方式支持代碼修改之后的回歸測試策略測試環(huán)節(jié)既要保證構(gòu)件質(zhì)量,又要保證滿足整個項目復(fù)用需求.每個構(gòu)件都將進行單獨測試,并且給出測評方案[4].在該階段,單元測試由XP團隊自行完成,驗收測試由任課教師完成,在第17至18周進行第19周根據(jù)意見和建議進行修改完善,并發(fā)布最終軟件增量,準備交付結(jié)題.
2.2.4 綜合測評
第20周課程結(jié)束時,要求學生提交課程設(shè)計(信息管理系統(tǒng))和相關(guān)文檔,并準備PPT進行項目答辯.教師及全體同學共同聽取每個項目組長的匯報后,進一步驗收確認預(yù)期功能的實現(xiàn)情況.測評內(nèi)容包括查閱相關(guān)文檔,檢查其規(guī)范性;總結(jié)并點評小組及個人的表現(xiàn);表揚優(yōu)點,給予鼓勵;提出不足之處,要求改進,最終從界面設(shè)計(10%)、數(shù)據(jù)庫設(shè)計(20%)、功能模塊劃分及實現(xiàn)(50%)、文檔撰寫(10%)、團隊成員分工及合作情況(10%)幾個方面綜合評定.小組總成績和成員個人成績這兩項成績再按各占50%的原則加權(quán)求和就是學生的課題設(shè)計(項目研發(fā))成績.該成績在課程成績中又占70%.至此,課程設(shè)計(項目研發(fā))完成,課程結(jié)束,整個敏捷開發(fā)方法貫串始終.
在信息管理與信息系統(tǒng)專業(yè)的軟件開發(fā)類課程《軟件工程》和《信息系統(tǒng)分析與設(shè)計》中引入敏捷開發(fā)方法后,取得了較好的教學效果,并得到了學生和同行的一致好評.學生經(jīng)過系統(tǒng)的理論學習和實踐編程,提高了工程實踐水平和團隊合作能力.運用軟件工程思想和敏捷開發(fā)方法來分析和解決問題完成該課程設(shè)計后,一方面可以整理發(fā)表科技論文;另一方面可以再進一步完善,考慮將該課程設(shè)計作為畢業(yè)設(shè)計,準備畢業(yè)論文及答辯.對于較優(yōu)秀的設(shè)計和有進一步研究興趣的學生,教師在輔導(dǎo)并給予改進意見和建議的同時(必要的情況下教師也可以參與開發(fā)團隊),完善設(shè)計產(chǎn)品后推薦參加全國大學生程序設(shè)計大賽或者各級大學生創(chuàng)新比賽、技能競賽等.另外,這種教學過程對教師的要求較高,一方面應(yīng)該具備扎實的理論基礎(chǔ)和系統(tǒng)思想,另一方面應(yīng)該具備很強的動手編程能力和組織領(lǐng)導(dǎo)能力.這對教師自身水平來說也是一種考驗和提升.
[1] 蔡珉官.敏捷開發(fā)在高校軟件開發(fā)中的實踐研究[J].計算機光盤軟件與應(yīng)用,2013,06:164-165.
[2] 李愛新.小米靠什么贏[J].企業(yè)管理,2013,10:96-99.
[3] 魏穎琪,林瑋平,楊少龍.移動終端應(yīng)用軟件開發(fā)技術(shù)探討[J].電信科學,2013,05:11-18.
[4] 賈寧,鄭純軍,高志君.基于可復(fù)用技術(shù)的敏捷開發(fā)流程研究[J].計算機科學,2015,S1:557-560.
[5] 季鐵,謝琪,陳憲濤.將以用戶為中心引入敏捷開發(fā)的方法探究[J].包裝工程,2013,06:50-54.
[6] 陳偉,劉軍,谷凌雁.以案例驅(qū)動信息系統(tǒng)分析與設(shè)計課程教學[J].教育教學論壇,2015,18:152-153.
[7] 李紅.《信息系統(tǒng)分析與設(shè)計》課程教學改革研究與實踐[J].沈陽師范大學學報(自然科學版),2013,04:548-551.
[8] 王曉敏,鄺孔武.信息系統(tǒng)分析與設(shè)計(第4版)[M].北京:清華大學出版社,2013.8,305-307.
[9] 于一梅,文捷,田鵬,周偉強,陳翼,宓詠.高校學生宿舍資源整合與協(xié)同管理研究[J].實驗技術(shù)與管理,2011,04:236-239.
[10] 邵山,付塍強,姚方圓,鄭義.敏捷開發(fā)在戰(zhàn)機飛控系統(tǒng)軟件研制中的應(yīng)用[J].計算機應(yīng)用與軟件,2015,01:44-46+54.
[11] 張志敏,杜景龍,連達軍.基于敏捷開發(fā)模式的“GIS軟件工程”實驗教學[J].實驗室研究與探索,2014,11:205-208.
[12] 胡文生,趙明,楊劍鋒,龍士工.基于UML模型的敏捷開發(fā)迭代順序的確定[J].計算機科學,2013,12:215-218.
Application of Agile Development in Experimental Teaching for Task Driven
FENG Gui-lian, ZHU Yan-bo
(Institute of Physics and Electronic Information Engineering, Qinghai University for Nationalities, XiNing, 810007, China)
Agile development is the integration of philosophy and a series of development guides, which esteems for the customers' satisfaction, the increases early publishing of software, as well as emphasizes the close coordination and the communication face to face between the development team and the business experts. Both Software Engineering and Analysis and Design of Information System are two central courses of information system and information management. The paper discussed the process and function for applying agile development to the experiment teaching for these courses, by task driven and case teaching, to let the students finish the development of the software based on MVC and JSP, and to improve the level for engineering practice and the ability for team cooperation of student greatly. Meanwhile, it will strengthen the teaching effect of these courses, and improve the level for teaching and research of teachers.
Agile development; Experiment teaching; Task driven; Extreme programming; Information management system
2016-09-20
2015年度教育部“春暉計劃”合作項目;青海民族大學2016—2017年教學改革項目
馮桂蓮(1979—),女(藏),青海湟源人,副教授,主要從事軟件工程和圖像處理方面的研究.
G64
A
1009-2102(2016)04-0071-06