翟高粵
(蘇州經(jīng)貿(mào)職業(yè)技術(shù)學院 江蘇 蘇州 215009)
基于“敏捷開發(fā)法”的高職軟件實訓教學研究
翟高粵
(蘇州經(jīng)貿(mào)職業(yè)技術(shù)學院 江蘇 蘇州 215009)
從“敏捷開發(fā)法”軟件開發(fā)的思想出發(fā),本文闡述了該開發(fā)方法的特點和流程。通過實踐案例分析,總結(jié)出一套高效率的軟件實訓教學方法,證明采用該方法能提高軟件實訓的效率,調(diào)動學生參與軟件實訓的積極性,縮短軟件人才的培養(yǎng)周期。
敏捷開發(fā)法;高職;軟件實訓;教學方法
目前,各高職院校對于軟件專業(yè)類學生項目實訓主要采用傳統(tǒng)的“生命周期法”的開發(fā)模式,強調(diào)軟件開發(fā)之前的計劃,強調(diào)在編寫代碼之前做詳盡的需求分析、總體設(shè)計和詳細設(shè)計。在實訓過程中,強調(diào)文檔的編寫,從可行性研究、需求分析,到總體設(shè)計、詳細設(shè)計都要編寫大量的文檔。這種做法的弊端是:(1)在編寫這些文檔之前需要做大量的需求調(diào)查工作,而編寫這些文檔的過程又是十分枯燥的,許多學生都不愿意寫文檔。(2)在需求變動時,維護軟件工程中編寫的眾多文檔的一致性需要耗費大量的時間。實踐證明,采用該模式學生實訓效果較差。由于前期就需要編寫大量文檔,文檔的枯燥繁瑣導致學生對實訓興趣不高,而且還會造成時間和資源的浪費,更難以形成團隊協(xié)作精神。因此,對于高職軟件實訓教學,采用傳統(tǒng)的方法教學效果并不好。經(jīng)過兩年的實踐證明,采用“敏捷開發(fā)法”的實訓方法是一種行之有效的手段。筆者擬結(jié)合蘇州經(jīng)貿(mào)學院軟件人才培養(yǎng)的實際情況,對基于“敏捷開發(fā)法”的高職軟件實訓教學方法進行探討。
(一)“敏捷開發(fā)法”與“生命周期法”
“敏捷開發(fā)法”2004年初開始提出,是一種以人為核心、迭代、循序漸進的開發(fā)方法,符合快速工作、響應(yīng)變化能力的價值觀和原則。目前,“敏捷開發(fā)法”已在一些軟件企業(yè)中推行,效果顯著?!懊艚蓍_發(fā)法”要求文檔的數(shù)量最少,認為源代碼是最根本的文檔?!懊艚蓍_發(fā)法”過程和基于傳統(tǒng)“生命周期法”軟件工程開發(fā)的本質(zhì)區(qū)別在于以下兩點:(1)“敏捷開發(fā)法”是基于適應(yīng)的,而傳統(tǒng)“生命周期法”是基于預(yù)測的。傳統(tǒng)“生命周期法”試圖對一個軟件項目在很長的時間跨度內(nèi)做出最詳細的計劃,然后嚴格按照計劃進行開發(fā),當需求確定下來后,就不再修改了。所以,傳統(tǒng)“生命周期法”本質(zhì)上是抵制變化的,而“敏捷開發(fā)法”則是主動適應(yīng)變化。(2)“敏捷開發(fā)法”以人為導向,而傳統(tǒng)軟件工程方法則以過程為導向。
(二)基于“敏捷開發(fā)法”實訓的實施
筆者擬結(jié)合實際教學中的實例,說明“敏捷開發(fā)法”在實訓教學中應(yīng)如何實施。
本院高職軟件實訓的項目通常來自于軟件企業(yè)的實際商業(yè)項目,學生采用“項目組”的形式進行設(shè)計。根據(jù)項目的大小,一般按3~8人1組,每組的項目需求內(nèi)容相同。根據(jù)“敏捷開發(fā)法”的原則,在實施過程中應(yīng)遵循以下措施。
1.以人為本,合理分組?!懊艚蓍_發(fā)法”的思想認為,人的因素要遠遠大于過程和技術(shù)。在一個團隊之間,交流是最重要的。由此可見,在“敏捷開發(fā)法”實施中,更加注重團隊合作,具有較強的團隊協(xié)作力量,就具有最強大的軟件開發(fā)實力。在開始嘗試時,采用按學號分組或隨機抽簽的分組方式。有些小組在開發(fā)中合作得較好,但更多的小組由于團隊成員之間互不交流,缺乏合作,最終項目開發(fā)的結(jié)果不能令客戶滿意。后來,我們采用雙向選擇的分組方法,由學生相互填寫分組意向,再從技術(shù)實力的角度出發(fā),并征得小組成員同意由教師進行微調(diào),這樣,更能夠促進同學間的互幫互助,更有利于項目的開發(fā),同時,也為項目的順利進行打下了團隊合作的基礎(chǔ)。
2.SWOT分析。該方法是一種企業(yè)內(nèi)部分析方法,即根據(jù)企業(yè)自身的既定內(nèi)在條件進行分析,找出企業(yè)的優(yōu)勢、劣勢及核心競爭力之所在,從而將公司的戰(zhàn)略與公司內(nèi)部資源、外部環(huán)境有機地結(jié)合。以前,在做實訓項目時,學生大多是從技術(shù)角度考慮哪些功能模塊需要做,哪些功能模塊先做,而沒有一個系統(tǒng)化的分析方法。其結(jié)果是有些功能模塊投入很多資源,卻并不一定是客戶最想要的。在“敏捷開發(fā)法”中,更加注重客戶需求,如果對產(chǎn)品進行SWOT分析,就能事半功倍,付出最小工作量,但能獲得最具價值的模塊。
3.迭代的軟件開發(fā)方法。在“敏捷開發(fā)法”中,要求項目每隔一定的時間就進行一次迭代,每次迭代相當一次較小的交付和確認,也可能被棄用。開發(fā)者向客戶演示迭代的結(jié)果,迭代的取舍根據(jù)客戶的反饋結(jié)果確定。在項目實訓中,可以為學生設(shè)定迭代的時間。例如,如果整個項目設(shè)定的時間為5周,可以將迭代的時間確定為4~5天,這樣,可以避免可能出現(xiàn)的問題擴散,有效地避免傳統(tǒng)開發(fā)過程中出現(xiàn)的返工現(xiàn)象。在迭代的過程中,要求全體項目組成員都同時參加,最終確定迭代的結(jié)果,共同發(fā)布新的計劃,并分成若干個小任務(wù),確定各個任務(wù)的優(yōu)先級與所需要的時間。
4.輕文檔,但不是無文檔?!懊艚蓍_發(fā)法”強調(diào)溝通的重要性,而輕冗余文檔。但“敏捷開發(fā)法”并不意味著沒有文檔。在“敏捷開發(fā)法”的實施過程中,應(yīng)該有適量的文檔,大多是幾頁PPT,書寫和維護工作量都很小,但有助于加快整理思路、溝通及討論。
5.重概念和架構(gòu)設(shè)計,而輕詳細設(shè)計。在“敏捷開發(fā)法”的實施中,一般重概念和架構(gòu)設(shè)計,而輕詳細設(shè)計。概念設(shè)計可以看成是為什么要做該產(chǎn)品或模塊,強調(diào)的是產(chǎn)品的路線規(guī)劃、市場趨勢、客戶價值以及技術(shù)趨勢等。架構(gòu)設(shè)計指的是應(yīng)該用什么方式實現(xiàn)、分幾個層次、多少組件、不同層次與組件之間關(guān)系是什么。詳細設(shè)計則是具體的設(shè)計和做法、API接口等。
一個產(chǎn)品,特別是面向行業(yè)的產(chǎn)品,概念設(shè)計和架構(gòu)設(shè)計非常重要,需要考慮行業(yè)未來的發(fā)展方向,產(chǎn)品在市場中橫向與縱向的比較,技術(shù)的發(fā)展方向,以及每個模塊的投入產(chǎn)出比等,這樣,才能盡可能保證產(chǎn)品沿著正確的方向開發(fā)。所以,在開始正式開發(fā)之前,通過概念設(shè)計和架構(gòu)設(shè)計,梳理思路是非常必要的。
【實例分析】比較采用“生命周期法”與“敏捷開發(fā)法”兩種方法進行產(chǎn)品開發(fā)的各個階段流程。
圖1 野生命周期法冶項目開發(fā)流程圖
圖1是實訓中某個采用“生命周期法”項目開發(fā)流程,整個開發(fā)周期大概持續(xù)兩個月。從圖1中可以看出,流程中的大多數(shù)活動都是串行進行的。這樣的一種類似瀑布的開發(fā)流程,前提是需求在產(chǎn)品的初始階段就完整地被“捕獲”,并做出正確的分析,這樣才能保證最后交付的產(chǎn)品是客戶所需要的產(chǎn)品,但通常這樣的理想狀況很難實現(xiàn)。因此,“生命周期法”開發(fā)流程缺乏靈活性,無法在開發(fā)過程中發(fā)現(xiàn)不確定的需求,導致產(chǎn)品無法隨著業(yè)務(wù)人員和市場的反饋及時修改,難以開發(fā)出符合業(yè)務(wù)人員需求的產(chǎn)品。
圖2 野敏捷開發(fā)法冶項目開發(fā)流程圖
圖2為“敏捷開發(fā)法”項目開發(fā)流程,整個開發(fā)周期大概持續(xù)一個半月。它把項目切分成多個子項目,各個子項目具備集成與可運行的特征。簡言之,就是把一個大項目分為多個相互聯(lián)系但也可獨立運行的小項目,并分別完成,同一小組中,每人完成一個子項目。另外,在整個開發(fā)過程中,項目組人員與客戶均可以非常清楚開發(fā)進度、變化、待解決的問題和潛在的困難等,并根據(jù)實際情況及時地調(diào)整,縮短軟件開發(fā)的周期,提高軟件開發(fā)的效率和質(zhì)量。
“敏捷開發(fā)法”思想是近幾年在軟件領(lǐng)域興起的新思潮,使用該思想設(shè)計出來的軟件靈活、高效、高質(zhì),將其與傳統(tǒng)的開發(fā)原則結(jié)合起來,能有效地提高軟件開發(fā)的效率,是越來越多的軟件開發(fā)者所追捧的一種開發(fā)思想?!懊艚蓍_發(fā)法”對于教師的要求比較高,首先,要求教師應(yīng)當能夠靈活地應(yīng)用“敏捷開發(fā)法”的思想,其次,要求教師能夠正確地指導學生。在此過程中,教師既要作為項目管理者,也要扮演客戶的角色。盡管如此,如能將該思想引入高職軟件實訓課程中,就既能提高課堂效率,又可將最先進的軟件開發(fā)思想方法傳授給學生,在提高學生的實踐能力的同時,增強學生的就業(yè)自信心。
[1]戴浩.高職軟件開發(fā)專業(yè)綜合實訓課程教學模式探索[J].長沙通信職業(yè)技術(shù)學院學報,2007,(9):43-45.
[2]管林挺,顧沈明.基于敏捷開發(fā)的軟件工程教學研究[J].計算機時代,2009,(8):45-46.
[3]金敏,周翔.高級軟件開發(fā)過程-Rational統(tǒng)一過程、敏捷過程與微軟過程[M].北京:清華大學出版社,2009.
[4]胡霞.初探敏捷開發(fā)在《項目實踐》課程中的應(yīng)用[J].蘇州工業(yè)職業(yè)技術(shù)學院學報,2009,(3):41-43.
(本文責任編輯:尚傳梅)
G712
A
1672-5727(2011)01-0127-02
翟高粵(1975—),男,江蘇蘇州人,碩士,蘇州經(jīng)貿(mào)職業(yè)技術(shù)學院講師,研究方向為軟件工程。