摘要:軟件工程課程由于其較強(qiáng)的理論性和實(shí)踐性,歷來(lái)是教學(xué)的難點(diǎn)。根據(jù)軟件工程課程的特點(diǎn),人們提出了不少有效的教學(xué)方法。本文闡述國(guó)外學(xué)者提出的若干軟件工程教學(xué)方法,以期對(duì)我們的教學(xué)提供有益的借鑒和參考。最后談一點(diǎn)體會(huì)。
關(guān)鍵詞:軟件工程;教學(xué)方法;教學(xué)改革
軟件工程課程由于其較強(qiáng)的理論性與實(shí)踐性,歷來(lái)是教學(xué)的難點(diǎn)。掌握軟件工程原理和技術(shù)對(duì)軟件開(kāi)發(fā)有著重要的指導(dǎo)作用。高校是承擔(dān)軟件人才培養(yǎng)的主要場(chǎng)所,但長(zhǎng)期以來(lái),一個(gè)不爭(zhēng)的事實(shí)是,IT用人單位常常對(duì)剛進(jìn)入工作崗位的畢業(yè)生不滿意,他們認(rèn)為學(xué)生在學(xué)校里并沒(méi)有為自己將來(lái)所從事的工作做好必要的準(zhǔn)備,而學(xué)術(shù)界也意識(shí)到存在的問(wèn)題,采取措施進(jìn)行教學(xué)改革。軟件工程課程教學(xué)改革的一個(gè)主要方向是使軟件工程的實(shí)踐教學(xué)環(huán)節(jié)與現(xiàn)實(shí)軟件開(kāi)發(fā)中的情形更加相符。Mehdi Jazayeri在第十九屆國(guó)際軟件工程會(huì)議上談到,現(xiàn)在課堂上所采用的實(shí)踐教學(xué)內(nèi)容,與實(shí)際的軟件開(kāi)發(fā)環(huán)境相差甚遠(yuǎn),主要表現(xiàn)在:由教師指定用戶需求,預(yù)先定義好軟件架構(gòu),固定的處理流程,以及把項(xiàng)目限制在可控的范圍內(nèi),同時(shí)不會(huì)出現(xiàn)不兼容或不合法的用戶需求等[1]。顯然實(shí)踐教學(xué)內(nèi)容與現(xiàn)實(shí)軟件開(kāi)發(fā)情形存在較大差距,為此,圍繞著如何使課堂教學(xué)以一種更貼近現(xiàn)實(shí)軟件開(kāi)發(fā)環(huán)境的方式來(lái)進(jìn)行,使學(xué)生得到應(yīng)有的軟件工程實(shí)踐能力的培養(yǎng),人們提出了各種改進(jìn)軟件工程教學(xué)的方法。本文闡述一些國(guó)外學(xué)者提出的若干軟件工程教學(xué)法和教學(xué)手段,以期對(duì)我們的教學(xué)提供有益的借鑒和參考,最后提出我們的一些建議。
1面向?qū)嵺`的教學(xué)法
面向?qū)嵺`的軟件工程教學(xué)法旨在引進(jìn)實(shí)際軟件開(kāi)發(fā)環(huán)境中的特定元素,使傳統(tǒng)的軟件工程課堂實(shí)踐教學(xué)與現(xiàn)實(shí)軟件開(kāi)發(fā)更相符??梢酝ㄟ^(guò)以下一些方法和手段來(lái)達(dá)到某種程度的相似性。
1.1與行業(yè)人員合作的教學(xué)法
文獻(xiàn)[2]給出了一個(gè)與行業(yè)人員合作的教學(xué)法模型。與行業(yè)人員合作是使課堂教學(xué)內(nèi)容貼近現(xiàn)實(shí)的一種最常見(jiàn)的教學(xué)方法,邀請(qǐng)行業(yè)人員走進(jìn)課堂與學(xué)生互動(dòng)交流,在教學(xué)過(guò)程中,行業(yè)者可以扮演老師的角色,為學(xué)生設(shè)計(jì)課堂教學(xué)與實(shí)踐內(nèi)容;或定期舉辦技術(shù)專題講座,談從事軟件開(kāi)發(fā)應(yīng)具備的技能以及個(gè)人從業(yè)的經(jīng)驗(yàn)和感想,通過(guò)技術(shù)專題講座,讓學(xué)生了解當(dāng)前軟件開(kāi)發(fā),特別是大規(guī)模軟件開(kāi)發(fā)面臨的挑戰(zhàn)及對(duì)策。行業(yè)人員也可以扮演客戶角色,向?qū)W生提出各種需求問(wèn)題和回答學(xué)生提出的問(wèn)題。在交流過(guò)程中,一方面,學(xué)生可以學(xué)到在課堂教學(xué)上很可能學(xué)不到的知識(shí)和技能。另一方面,通過(guò)課堂的互動(dòng)交流,有助于培養(yǎng)人際交往的能力,最重要的是,能夠從行業(yè)專家那里學(xué)到實(shí)際的經(jīng)驗(yàn),有些經(jīng)驗(yàn)在教科書(shū)上是找不到的。
1.2基于項(xiàng)目維護(hù)的教學(xué)法
軟件維護(hù)是軟件生命期中的一個(gè)重要階段。基于項(xiàng)目維護(hù)的教學(xué)法[3],是基于這樣一個(gè)認(rèn)識(shí),即目前大多數(shù)軟件的開(kāi)發(fā)是在現(xiàn)有系統(tǒng)基礎(chǔ)上進(jìn)行,軟件開(kāi)發(fā)通常不是從零開(kāi)始。課堂教學(xué)可以采用兩種方式進(jìn)行教學(xué),一種方法是正在學(xué)習(xí)課程的班級(jí)負(fù)責(zé)對(duì)某個(gè)項(xiàng)目進(jìn)行維護(hù),而該項(xiàng)目是上一學(xué)年某個(gè)班級(jí)留下來(lái)的;第二種方法是可以把項(xiàng)目分解成多個(gè)模塊,正在學(xué)習(xí)的每個(gè)班固定維護(hù)其中的一個(gè)模塊。也可以把項(xiàng)目劃分給一個(gè)班的若干小組來(lái)實(shí)施,每個(gè)小組的工作嚴(yán)格按照軟件維護(hù)的要求來(lái)進(jìn)行,最后留一個(gè)小組負(fù)責(zé)檢查每個(gè)模塊實(shí)現(xiàn)的正確性。在對(duì)項(xiàng)目進(jìn)行維護(hù)時(shí),要求學(xué)生編寫(xiě)相關(guān)的文檔,比如采用什么方法進(jìn)行軟件維護(hù),維護(hù)結(jié)果如何,還存在什么問(wèn)題等等;也可以選擇一個(gè)來(lái)自業(yè)內(nèi)的正在開(kāi)發(fā)的項(xiàng)目作為實(shí)踐項(xiàng)目,這有利于激發(fā)學(xué)生開(kāi)發(fā)項(xiàng)目的興趣,通過(guò)對(duì)項(xiàng)目進(jìn)行維護(hù)達(dá)到獲得軟件工程知識(shí)和技能的目的。
1.3強(qiáng)調(diào)團(tuán)隊(duì)合作的教學(xué)法
軟件開(kāi)發(fā)通常是在一個(gè)團(tuán)隊(duì)成員的合作下來(lái)完成。據(jù)此,有學(xué)者提出基于團(tuán)隊(duì)合作的教學(xué)方法[4]。采用該方法,學(xué)生在入學(xué)時(shí)就被分成若干個(gè)小組,在今后幾年的學(xué)習(xí)里,幾個(gè)小組共同合作開(kāi)發(fā)軟件。在第一年的學(xué)習(xí)中,把實(shí)踐項(xiàng)目設(shè)計(jì)得比較簡(jiǎn)單,涉及的知識(shí)點(diǎn)比較少,學(xué)習(xí)相對(duì)比較容易,隨著學(xué)習(xí)過(guò)程的深入,逐年增加項(xiàng)目的內(nèi)容和復(fù)雜度,這種教學(xué)方法,是一種增量式的教學(xué)方法。對(duì)學(xué)生來(lái)說(shuō),比較容易接受。團(tuán)隊(duì)合作教學(xué)法,是以小組為單位,每個(gè)小組在幾年的學(xué)習(xí)中,人員相對(duì)固定,人員可以來(lái)自同一專業(yè)的,也可來(lái)自不同專業(yè),甚至可以來(lái)自不同學(xué)校,這是基于在現(xiàn)實(shí)軟件開(kāi)發(fā)中,一個(gè)項(xiàng)目不僅僅涉及編程,還有大量的工作要做,而做這些工作是需要掌握其他方面的知識(shí)的。這種團(tuán)隊(duì)合作教學(xué)法,有利于培養(yǎng)良好的團(tuán)隊(duì)合作精神,并且采用增量式教學(xué)方法及安排在多個(gè)學(xué)期內(nèi)進(jìn)行,使得學(xué)生有充分的時(shí)間來(lái)學(xué)習(xí),如果只安排一個(gè)學(xué)期的課程,學(xué)生也許沒(méi)有太多的學(xué)習(xí)動(dòng)力,因?yàn)轫?xiàng)目一結(jié)束,團(tuán)隊(duì)馬上解散。
1.4增加非技術(shù)性技巧的教學(xué)內(nèi)容
在今天的軟件行業(yè)中,一方面要求軟件工程師不僅要掌握軟件設(shè)計(jì)與開(kāi)發(fā)的專業(yè)技能,而且要能夠解決當(dāng)面臨不同軟件開(kāi)發(fā)環(huán)境時(shí)所引起的非技術(shù)性問(wèn)題。為使學(xué)生今后能夠應(yīng)對(duì)在工作中出現(xiàn)的各種問(wèn)題,有些教師提倡在課堂實(shí)踐教學(xué)中增加一些非技術(shù)性技巧訓(xùn)練的內(nèi)容,這些技巧主要有問(wèn)題域的定義、顧客需求分析、團(tuán)隊(duì)如何協(xié)調(diào)、如何決策、問(wèn)題求解策略、面臨時(shí)間急迫情況下如何處理相關(guān)事宜[5]。教學(xué)過(guò)程不過(guò)分注重如何編寫(xiě)代碼,設(shè)計(jì)算法,因?yàn)檫@些內(nèi)容可以安排在相關(guān)課程的學(xué)習(xí),如程序設(shè)計(jì)、算法設(shè)計(jì)與分析等課程。在學(xué)習(xí)過(guò)程中,始終強(qiáng)調(diào)人際交流、合作、問(wèn)題求解和決策,而這些非技術(shù)性技巧正是傳統(tǒng)教學(xué)內(nèi)容所缺乏的。
1.5Open-Endedness教學(xué)法
軟件工程課程教學(xué)的目的不是讓學(xué)生熟記軟件工程概念和術(shù)語(yǔ),而是通過(guò)課程學(xué)習(xí),讓學(xué)生今后能應(yīng)用所學(xué)知識(shí)解決軟件開(kāi)發(fā)中面臨的各種問(wèn)題。在現(xiàn)實(shí)當(dāng)中,軟件開(kāi)發(fā)所遇到的問(wèn)題往往難以事先預(yù)測(cè),解決這些問(wèn)題通常沒(méi)有一個(gè)固定的程式,為了培養(yǎng)學(xué)生運(yùn)用所學(xué)知識(shí)靈活處理問(wèn)題的能力,課堂實(shí)踐教學(xué)應(yīng)鼓勵(lì)學(xué)生獨(dú)立思考,大膽創(chuàng)新。文獻(xiàn)[6]給出一個(gè)所謂的Open-Endedness方式進(jìn)行的項(xiàng)目實(shí)踐教學(xué)方法,它是對(duì)傳統(tǒng)教學(xué)方法的一個(gè)補(bǔ)充,其主要思想是,設(shè)計(jì)一個(gè)軟件項(xiàng)目,預(yù)先沒(méi)有定義好各種要求和處理流程,讓學(xué)生自己去定義、設(shè)計(jì)、實(shí)現(xiàn)。或者教師把需求設(shè)計(jì)成不明確或者沒(méi)有完全定義好,讓學(xué)生自己去完成大部分的工作,這種教學(xué)法的目的是讓學(xué)生不能僅僅沿著別人設(shè)計(jì)好的方向去做,而是根據(jù)自己的設(shè)計(jì)去努力完成,這是一種開(kāi)放式的教學(xué),提倡這種教學(xué)方法的學(xué)者認(rèn)為,這有利于激發(fā)學(xué)生參與的熱情,鼓勵(lì)學(xué)生不要按照別人已設(shè)計(jì)好的方向去做,而是著眼于自己去創(chuàng)造。
1.6項(xiàng)目驅(qū)動(dòng)教學(xué)法
項(xiàng)目驅(qū)動(dòng)的教學(xué)法認(rèn)為,學(xué)習(xí)理論知識(shí)應(yīng)該通過(guò)實(shí)踐來(lái)學(xué)習(xí),從錯(cuò)誤和失敗當(dāng)中來(lái)學(xué)習(xí),傳統(tǒng)的基于教案或報(bào)告只是一種輔助形式。文獻(xiàn)[7]提供一個(gè)軟件工程項(xiàng)目實(shí)踐課程,該項(xiàng)目的目標(biāo)是為學(xué)生提供一些實(shí)踐,以獲得類似于在行業(yè)中開(kāi)發(fā)軟件得到的一些實(shí)踐經(jīng)驗(yàn)。一個(gè)典型的軟件開(kāi)發(fā)過(guò)程會(huì)面臨諸多的挑戰(zhàn):如,怎樣定義問(wèn)題域;需求前后可能不一致而必須和用戶一起來(lái)解決;一些成員可能對(duì)項(xiàng)目開(kāi)發(fā)所采用的技術(shù)不是很熟悉,需要學(xué)習(xí),還要能夠處理不可預(yù)見(jiàn)的技術(shù)問(wèn)題。此外,成員之間如何溝通,他們是否適應(yīng)對(duì)方的工作方式甚至生活習(xí)慣等,都是需要解決的問(wèn)題。圍繞這些問(wèn)題,只有通過(guò)實(shí)踐來(lái)學(xué)習(xí),才能深刻理解軟件工程過(guò)程。利用項(xiàng)目驅(qū)動(dòng)教學(xué)法,是給學(xué)生更多的實(shí)踐機(jī)會(huì),以便在學(xué)生走進(jìn)社會(huì)后可以更快地適應(yīng)工作的需要。利用做項(xiàng)目來(lái)進(jìn)行教學(xué),可以由學(xué)生對(duì)項(xiàng)目進(jìn)行問(wèn)題定義,而不必由老師預(yù)先定義好。項(xiàng)目可以來(lái)自業(yè)內(nèi)的在研項(xiàng)目,如果是來(lái)自業(yè)內(nèi)的項(xiàng)目,在軟件開(kāi)發(fā)各階段,可以邀請(qǐng)來(lái)自行業(yè)的人員來(lái)進(jìn)行指導(dǎo)。
2基于模擬的教學(xué)法
以教案結(jié)合案例的傳統(tǒng)的軟件工程教學(xué)法不能較好地向?qū)W生傳授與實(shí)際軟件開(kāi)發(fā)中復(fù)雜、動(dòng)態(tài)過(guò)程相關(guān)的知識(shí),因?yàn)檫@些復(fù)雜、動(dòng)態(tài)的過(guò)程主要表現(xiàn)在項(xiàng)目實(shí)施的過(guò)程是非線性的;當(dāng)中,往往存在著多目標(biāo)沖突;或需要從多變量中擇優(yōu),等等;學(xué)生是以一種被動(dòng)的方式來(lái)學(xué)習(xí),在傳統(tǒng)的教學(xué)中,雖然學(xué)生也參與了課堂實(shí)踐的練習(xí),但由于受時(shí)間以及項(xiàng)目的各種條件限制,使得課程實(shí)踐難以在廣度和深度上反映軟件工程的復(fù)雜性和內(nèi)在本質(zhì)。鑒于此,有學(xué)者認(rèn)為,學(xué)生在校園環(huán)境里能夠接觸到與實(shí)際軟件開(kāi)發(fā)環(huán)境相近的唯一可行的辦法是采用模擬的教學(xué)方法。采用模擬的教學(xué)方法使學(xué)生能在一個(gè)較大規(guī)模的層次上以一種更快捷的方式在學(xué)術(shù)環(huán)境里參與現(xiàn)實(shí)軟件工程實(shí)踐,而這種大規(guī)模的軟件開(kāi)發(fā)環(huán)境只有在現(xiàn)實(shí)的軟件開(kāi)發(fā)中才可能出現(xiàn)?;谀M的教學(xué)法是值得進(jìn)一步深入研究的方法。
2.1采用業(yè)內(nèi)使用或?qū)S玫哪M器
課堂教學(xué)用的模擬器可以使用業(yè)內(nèi)用的模擬器,這是一種比較簡(jiǎn)單快捷的方法。這些專業(yè)用的模擬器通常用于預(yù)測(cè)由于改變軟件處理流程而對(duì)軟件最終的輸出會(huì)產(chǎn)生什么樣的影響,文獻(xiàn)[8]給出了一個(gè)用于軟件項(xiàng)目管理訓(xùn)練用的模擬器。實(shí)際上,在軟件工程實(shí)踐中,采用模擬器可以對(duì)軟件成本計(jì)算、數(shù)據(jù)收集、需求分析、項(xiàng)目管理、風(fēng)險(xiǎn)管理、軟件過(guò)程改進(jìn)等方面進(jìn)行模擬,以減少在實(shí)際操作中可能出現(xiàn)的錯(cuò)誤,同時(shí)提供了一個(gè)在缺乏相應(yīng)條件下,如人力和物力,對(duì)軟件工程各階段進(jìn)行分析與評(píng)判的手段。模擬器是根據(jù)實(shí)際軟件開(kāi)發(fā)積累的經(jīng)驗(yàn)數(shù)據(jù)來(lái)建立的,模擬器接受操作者的指令,可以輸入項(xiàng)目的規(guī)模,軟件處理流程以及輸出結(jié)果,在模擬器工作過(guò)程中,隨時(shí)可以調(diào)整各種參數(shù),最后還能夠顯示項(xiàng)目完成的正確率。也可以開(kāi)發(fā)專門(mén)用于課堂教學(xué)的模擬器,這類模擬器通常從最簡(jiǎn)單的任務(wù)開(kāi)始,隨著模擬過(guò)程的深入,學(xué)習(xí)任務(wù)也變得越來(lái)越復(fù)雜,而整個(gè)模擬過(guò)程覆蓋軟件生命期的各個(gè)階段。
2.2基于游戲形式的模擬器教學(xué)
用于教學(xué)用的模擬器通??梢阅M整個(gè)軟件生命期,使用業(yè)內(nèi)用的模擬器可能并不適合教學(xué)用,因?yàn)檫@類模擬器常常過(guò)于復(fù)雜,對(duì)學(xué)生的要求太高,操作起來(lái)有時(shí)也不是很直觀,這時(shí)可以采用另一種類型的模擬器,就是基于游戲形式的模擬教學(xué)法[9]。這類模擬器具有以下功能:1)能恰當(dāng)?shù)厥褂密浖こ碳夹g(shù)來(lái)引導(dǎo)學(xué)生完成模擬的軟件設(shè)計(jì)與開(kāi)發(fā);2)能夠演示一般和專用的軟件過(guò)程技術(shù);3)能夠?qū)W(xué)生作出的決策提供反饋信息;4)操作容易并且響應(yīng)比較快;5)給學(xué)生在操作過(guò)程中提供交互功能。這類模擬器操作方便,操作界面比較生動(dòng)直觀,操作者可以一步一步地通過(guò)接口來(lái)驅(qū)動(dòng)模擬器完成特定的任務(wù)。模擬器配有圖形用戶接口界面來(lái)顯示被模擬的物理環(huán)境,設(shè)計(jì)者希望采用這種游戲的方式來(lái)學(xué)習(xí),效果會(huì)更好。
2.3支持群參與的模擬器教學(xué)
支持群參與的模擬器可以模擬在實(shí)際軟件開(kāi)發(fā)中團(tuán)隊(duì)工作的基本情形,模擬器被設(shè)計(jì)成群體討論和群體交互過(guò)程[10]。在模擬的環(huán)境里,操作者和所有或部分的參與者通過(guò)模擬器討論問(wèn)題,參與者是被模擬的。由軟件工程模擬器提供問(wèn)題進(jìn)行討論,例如檢查代碼是否正確以及召開(kāi)需求分析會(huì)等。文獻(xiàn)[11]描述一種交互方式VIDEO代碼檢查模擬器,該模擬器包括一個(gè)VIDEO和一個(gè)自然語(yǔ)言接口供使用者參與討論。該模擬器模型由4個(gè)角色組成:主持人或仲裁者(moderator)、閱讀者(reader)、記錄員(recorder)、生產(chǎn)者(producer),主持人的職責(zé)是安排會(huì)議、設(shè)置代碼檢查時(shí)間和進(jìn)度、負(fù)責(zé)成員溝通等;閱讀者負(fù)責(zé)檢查代碼是否正確,有錯(cuò)進(jìn)行改正,并把結(jié)果告訴記錄員;記錄員負(fù)責(zé)記錄代碼錯(cuò)誤之處,并報(bào)告給主持人;而生產(chǎn)者的職責(zé)是最后檢查代碼是否滿足各種評(píng)判標(biāo)準(zhǔn),并在需要的時(shí)候?qū)Ξa(chǎn)品進(jìn)行說(shuō)明。此類模擬器通常也模擬物理環(huán)境,操作者可以從一個(gè)地方進(jìn)到另一個(gè)地方進(jìn)行討論,每一個(gè)地方都為特定的任務(wù)所設(shè)計(jì),操作者可以和其他角色進(jìn)行對(duì)話,操作者也可從一個(gè)角色轉(zhuǎn)換到另一個(gè)角色。支持群參與的模擬器可以運(yùn)用到基于團(tuán)隊(duì)合作、基于項(xiàng)目驅(qū)動(dòng)的教學(xué)法過(guò)程中。
3增加“缺失性”教學(xué)內(nèi)容的教學(xué)法
有學(xué)者認(rèn)為軟件工程教學(xué)之所以低效,主要是課堂教學(xué)缺失了一些重要內(nèi)容的講授,如果能夠很好地補(bǔ)上這些內(nèi)容,那么學(xué)生的軟件工程知識(shí)會(huì)更加全面。有人認(rèn)為由于軟件開(kāi)發(fā)越來(lái)越復(fù)雜,所以應(yīng)該強(qiáng)調(diào)軟件開(kāi)發(fā)的形式化方法[12],形式化的主要優(yōu)點(diǎn)在于它能夠用數(shù)學(xué)符號(hào)邏輯地描述問(wèn)題和軟件實(shí)現(xiàn)過(guò)程,可以借助其他一些工具來(lái)輔助形式化方法,如用CASE工具支持形式化軟件開(kāi)發(fā)。也有學(xué)者建議應(yīng)該講授傳統(tǒng)工程學(xué)方面的內(nèi)容,作為軟件工程內(nèi)容的一部分。學(xué)生不僅僅能夠沿著一個(gè)特定的軟件過(guò)程去完成給定的任務(wù),而應(yīng)該利用工程處理方法和項(xiàng)目管理技巧來(lái)創(chuàng)造軟件過(guò)程和使用改進(jìn)了的各種技術(shù)來(lái)改善軟件過(guò)程。有學(xué)者建議應(yīng)采用一種更為廣泛的教學(xué)方法,要求學(xué)生全面、系統(tǒng)地學(xué)習(xí)項(xiàng)目管理技術(shù)。還有學(xué)者強(qiáng)調(diào)應(yīng)關(guān)注特定的軟件工程,重視基于維護(hù)、進(jìn)化的軟件工程和實(shí)時(shí)的軟件工程原理和技術(shù)。此外,人際交流、群體協(xié)同處理、個(gè)人技巧、項(xiàng)目管理、超越技術(shù)能力之上的問(wèn)題求解等,都應(yīng)成為軟件工程教學(xué)內(nèi)容的一部分。學(xué)生還應(yīng)該接受更多的課程以外的訓(xùn)練,如商業(yè)方面的內(nèi)容,例如產(chǎn)品的市場(chǎng)調(diào)研和項(xiàng)目投資方面的知識(shí)。
4結(jié)論
本文闡述了國(guó)外學(xué)者有關(guān)軟件工程課程教學(xué)法的一些見(jiàn)解,這些方法對(duì)于我們今后的教學(xué)和改革有著指導(dǎo)和借鑒的作用。軟件工程由于其理論性強(qiáng)、實(shí)踐要求高,對(duì)老師和學(xué)生都提出了很高的要求,所以歷來(lái)是教學(xué)的難點(diǎn)。我們認(rèn)為,軟件工程教學(xué)方法不應(yīng)是單一的,它們之間要相互融合,根據(jù)軟件生命期的不同階段的特點(diǎn),采用不同的教學(xué)方法,根據(jù)學(xué)生個(gè)人能力和學(xué)校條件,采用不同的教學(xué)方法。與行業(yè)專家合作是一個(gè)很好的教學(xué)方法,我們的老師往往缺乏的是實(shí)踐經(jīng)驗(yàn),因而照本宣科式的教學(xué)在軟件工程教學(xué)中并不少見(jiàn)。請(qǐng)業(yè)內(nèi)專家來(lái)授課,可以建立長(zhǎng)期的合作關(guān)系,可以選派老師到公司企業(yè)學(xué)習(xí),積累一些實(shí)踐的經(jīng)驗(yàn),回來(lái)后再培訓(xùn)其他老師,要形成一個(gè)長(zhǎng)效機(jī)制。
基于模擬的教學(xué)方法相對(duì)于國(guó)內(nèi)教學(xué)來(lái)說(shuō),是一個(gè)全新的方法??梢院托袠I(yè)合作或者聯(lián)合一些有研發(fā)條件的高校共同開(kāi)發(fā)適應(yīng)國(guó)內(nèi)軟件工程教學(xué)需要的教學(xué)模擬器,充分利用各校的資源,探索一條適合國(guó)內(nèi)的軟件工程課程教學(xué)法。要改革軟件工程教學(xué)內(nèi)容,應(yīng)該讓學(xué)生掌握軟件工程的結(jié)構(gòu)化與非結(jié)構(gòu)化、邏輯性與社會(huì)性方面的知識(shí)。在一個(gè)學(xué)期學(xué)完軟件工程應(yīng)學(xué)內(nèi)容,或許有些困難,可以把軟件工程這門(mén)課分解為幾個(gè)大專題,或者幾門(mén)小課,分散到幾個(gè)學(xué)期來(lái)教學(xué),比如,可以分解成系統(tǒng)分析和需求、軟件設(shè)計(jì)和實(shí)現(xiàn)、軟件測(cè)試、軟件維護(hù)、軟件工程組織與管理、項(xiàng)目預(yù)算與實(shí)施等。講授軟件工程課程的老師要相對(duì)固定,不要過(guò)于頻繁變動(dòng),相對(duì)固定有利于積累教學(xué)經(jīng)驗(yàn)。要形成一個(gè)教學(xué)梯隊(duì),經(jīng)常研究和總結(jié)教學(xué)方法。
鑒于軟件工程課程在軟件人才培養(yǎng)方面的重要作用,計(jì)算機(jī)軟件類專業(yè)可以圍繞軟件工程實(shí)踐的要求設(shè)計(jì)培養(yǎng)目標(biāo)和各科教學(xué)內(nèi)容,結(jié)合本校實(shí)際情況開(kāi)展教學(xué)工作,為培養(yǎng)高素質(zhì)的專業(yè)人才打好基礎(chǔ)。
參考文獻(xiàn):
[1] Jazayeri M. The Education of a Software Engineer[C]//Proceedings of the 19th International Conference on Automated Software Engineering. L