摘要:目前,軟件工程課程教學(xué)中的教學(xué)實(shí)踐與實(shí)際軟件開發(fā)環(huán)境存在較大差距,在國外,采取模擬教學(xué)法是解決這一問題的重要舉措,在軟件工程課程教學(xué)中采用模擬教學(xué)法受到學(xué)術(shù)界越來越多的關(guān)注。本文闡述基于模擬的軟件工程教學(xué)法的背景、種類及其基本過程,并給出一個(gè)實(shí)例加以說明,對今后在國內(nèi)開展這一教學(xué)有借鑒作用。
關(guān)鍵詞:軟件工程;模擬教學(xué)法;教學(xué)改革;教學(xué)方法
長期以來,軟件工程課程教學(xué)是一個(gè)難點(diǎn),其主要表現(xiàn)是教學(xué)實(shí)踐環(huán)節(jié)與現(xiàn)實(shí)軟件開發(fā)的環(huán)境不一致,教學(xué)不能適應(yīng)軟件開發(fā)特別是大型軟件開發(fā)的需要。在傳統(tǒng)的軟件工程課程教學(xué)中,教師主要是通過書本和教案以板書的形式給學(xué)生傳授理論知識,這種傳統(tǒng)的教學(xué)方式難以為學(xué)生傳授解決現(xiàn)實(shí)軟件工程項(xiàng)目若干典型問題的方法和實(shí)踐技能,這些問題主要包括:采用非線性的解決方法常常面臨多個(gè)沖突的目標(biāo),從多變量中擇優(yōu),涉及多個(gè)利益相關(guān)者,以及項(xiàng)目實(shí)施后可能獲得的非常大的效果等[1]。在傳統(tǒng)的教學(xué)中,雖然學(xué)生也參與一定的實(shí)踐練習(xí),但由于受時(shí)間以及實(shí)踐項(xiàng)目各種條件限制,課程實(shí)踐難以在廣度和深度上反映軟件工程的復(fù)雜性和內(nèi)在本質(zhì)。鑒于此,有學(xué)者認(rèn)為,在教學(xué)中,能夠使學(xué)生以一種接近實(shí)際軟件工程開發(fā)環(huán)境來學(xué)習(xí)軟件工程知識的唯一可行的方法是采用模擬的教學(xué)法。
1模擬教學(xué)法
在工程項(xiàng)目的設(shè)計(jì)與實(shí)施過程中,由于受到主客觀條件的限制,為了估計(jì)項(xiàng)目設(shè)計(jì)和實(shí)施的風(fēng)險(xiǎn),或?qū)?xiàng)目實(shí)施后的效果進(jìn)行評價(jià)等,人們常常采用模擬的方法,這一方法在工程界已經(jīng)運(yùn)用了很多年,并獲得了很大的成功,顯示出其極大的優(yōu)勢。從軟件工程的觀點(diǎn)來看,大型軟件開發(fā)方法也借鑒工程學(xué)的原理和技術(shù)來進(jìn)行,因而也可以采用模擬的方法,比如在成本估算、項(xiàng)目支持的度量信息的收集、建立項(xiàng)目成員間一致的交流方式、需求管理、項(xiàng)目管理、人員培訓(xùn)、軟件過程改進(jìn)、風(fēng)險(xiǎn)管理以及收益管理等[2],均可采用模擬的方法來實(shí)施。
1.1目標(biāo)
在軟件工程課程教學(xué)中,采用模擬的教學(xué)法,主要目標(biāo)是讓學(xué)生能夠在課堂教學(xué)實(shí)踐中以一種貼近現(xiàn)實(shí)的軟件開發(fā)環(huán)境來學(xué)習(xí)軟件工程原理和技術(shù),模擬教學(xué)必須緊緊圍繞著知識和技能來進(jìn)行,所使用的模擬器至少應(yīng)該具備以下一些功能和特點(diǎn)[3]。
1) 應(yīng)該恰當(dāng)?shù)胤从耻浖こ痰幕驹砼c技術(shù)。
2) 應(yīng)該反映通用和專用的軟件工程過程。
3) 應(yīng)該能夠讓模擬器的使用者反饋信息。
4) 應(yīng)該容易操作,響應(yīng)快速。
5) 應(yīng)該允許操作者之間進(jìn)行交流。
1.2種類
國外所采用的模擬教學(xué)法可以劃分為3種模擬教學(xué),即采用業(yè)內(nèi)使用或?qū)S玫哪M器教學(xué)、以游戲作為形式的模擬器教學(xué)和支持群參與的模擬器教學(xué)。下面簡要地概述這3種模擬器教學(xué)法[4]。
1.2.1采用業(yè)內(nèi)使用或?qū)S玫哪M器教學(xué)法
這是一種比較簡單的快捷的方法,業(yè)內(nèi)使用的模擬器是針對特定問題的模擬器,它通常綜合考慮一個(gè)通用的或目前正在做的專用軟件項(xiàng)目開發(fā)各方面的問題,比如成本計(jì)算、數(shù)據(jù)收集、需求分析、項(xiàng)目管理、風(fēng)險(xiǎn)管理、軟件過程改進(jìn)等,通常,它提供給操作者相關(guān)的輸入指令,讓操作者通過輸入指令,如項(xiàng)目的規(guī)模、軟件處理流程等,根據(jù)操作者的輸入信息,輸出相應(yīng)的結(jié)果。在模擬的過程中,操作者還可以根據(jù)中間結(jié)果,調(diào)整相關(guān)參數(shù),改變處理流程,這類模擬器通常從模擬最簡單的任務(wù)開始,隨著模擬過程的深入,學(xué)習(xí)任務(wù)也變得越來越復(fù)雜,而整個(gè)模擬過程覆蓋軟件生命期的各個(gè)階段。
1.2.2基于游戲形式的模擬器教學(xué)法
業(yè)內(nèi)用的模擬器通常是面向較復(fù)雜的問題,往往不太適合教學(xué)使用,這類模擬器,在模擬的中間過程中,雖然可以調(diào)整相關(guān)參數(shù)外,但使用者與模擬器之間的交互并不是很好,這增加了學(xué)習(xí)者使用的難度,而使用以游戲?yàn)樾问降哪M器,除了可以調(diào)動學(xué)生學(xué)習(xí)的積極性外,最重要的是讓學(xué)生容易接受。這類模擬器通常具有以下一些功能:1)能恰當(dāng)?shù)厥褂密浖こ碳夹g(shù)來引導(dǎo)學(xué)生完成模擬的軟件的設(shè)計(jì)與開發(fā);2)能夠演示一般的和專用的軟件過程技術(shù);3)能夠?qū)W(xué)生做出的決策提供反饋信息;4)容易操作并且響應(yīng)速度較快;5)提供交互功能。模擬器配有圖形用戶接口界面來顯示被模擬的物理環(huán)境,設(shè)計(jì)者希望采用這種游戲的方式來學(xué)習(xí),效果會更好。
1.2.3支持群參與的模擬器教學(xué)法
實(shí)際的軟件開發(fā)都是在一個(gè)團(tuán)隊(duì)下完成的,一個(gè)項(xiàng)目的成功開發(fā)與團(tuán)隊(duì)成員的交流與協(xié)作是密不可分的。支持群參與的模擬器可以模擬在實(shí)際軟件開發(fā)中團(tuán)隊(duì)工作的情形,模擬器被設(shè)計(jì)成群體討論和群體交互過程。在模擬的環(huán)境里,操作者和所有或部分的參與者通過模擬器進(jìn)行討論。文獻(xiàn)[5]描述一種交互式VIDEO代碼檢查模擬器,該模擬器包括一個(gè)VIDEO和一個(gè)自然語言接口供使用者參與討論。這類模擬器通常也模擬物理環(huán)境,操作者可以從一個(gè)地方轉(zhuǎn)到另一個(gè)地方來討論,每一個(gè)地方都為特定的任務(wù)所設(shè)計(jì),操作者可以和其他角色進(jìn)行對話,操作者可以從一個(gè)角色轉(zhuǎn)換到另一個(gè)角色。
2實(shí)例
下面給出一個(gè)用于軟件工程教學(xué)的基于游戲的模擬器的實(shí)