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