一、實踐驅(qū)動,激活教學(xué)
針對這種情況,采取“實踐驅(qū)動”的方法,將實踐嵌入到教學(xué)中,把實踐活動提升到與課堂教學(xué)同等的地位,用實踐活動驅(qū)動課堂教學(xué),邊練邊學(xué),邊學(xué)邊教,讓實踐活動和課堂教學(xué)同步進行,貫穿軟件工程實踐領(lǐng)域,包括制定計劃、需求分析、軟件設(shè)計、程序編寫、軟件測試等整個生存周期。為了提高教學(xué)效果,將實踐活動提前到授課之前開始,而不是授課之后的簡單驗證或者考查,力圖讓學(xué)生在思考中進行實踐,帶著問題聽課,充分激發(fā)學(xué)生學(xué)習(xí)的主觀能動性,同時讓學(xué)生在聽完課后有豁然開朗的欣喜感。總而言之,就是讓學(xué)生練而有惑,學(xué)以解惑。在課程剛開始的時候,把學(xué)生酌情分成若干人為一小組(通常以6到8人一組),提供一定數(shù)量的課題做為選擇,課題不應(yīng)該太復(fù)雜,畢竟是軟件工程課而不是編程課。每個小組根據(jù)自己的喜好選擇一個課題。第一堂課,通常會向?qū)W生講授軟件工程概論,軟件生存周期的六個步驟。課后,可以要求學(xué)生開始自己的課程實踐。這時候?qū)W生雖然知道軟件生存周期的第一個步驟是制定計劃,卻又不知道從何下手,如何制定計劃以及計劃的內(nèi)容。這種情況下大多數(shù)學(xué)生會對教材的相應(yīng)章節(jié)進行學(xué)習(xí),并在課堂上積極提問。于是將課堂教學(xué)的效果最大化,最大程度地聚焦了學(xué)生的注意力。學(xué)生先在實踐中遇到疑難,然后在課堂上提出疑難,最后在實踐中解決疑難,這樣才能保證學(xué)生牢固掌握所學(xué)到的知識,并能在今后的學(xué)習(xí)生活中加以運用。
二、針對企業(yè),模擬實戰(zhàn)
僅僅強調(diào)以課程實踐驅(qū)動課堂教學(xué),還遠遠不夠。比如就曾有學(xué)生說:“到底為什么要做需求分析呢,我在項目中并沒有覺察到需求分析的作用”。也有學(xué)生覺得制定計劃很沒有必要,可有可無,相應(yīng)的文檔也處理得很簡單。相對于軟件設(shè)計和程序編寫來說,其他步驟都受到了一定程度的忽視。這又間接使軟件工程課變成了一門加強版的編程課。然而在企業(yè)的現(xiàn)實應(yīng)用中,情況并非如此。制定軟件項目計劃,做好需求分析,恰恰是決定一個項目成敗的至關(guān)重要的因素。軟件工程課講授的知識應(yīng)該是面向企業(yè),面向?qū)崙?zhàn)的,不是紙上練兵,也不應(yīng)該是閉門造車,應(yīng)該讓上過這門課的學(xué)生都知道,實際企業(yè)中的軟件工程是什么樣子的,他們以后參與的可能是一個什么樣的過程,而不是上完這門課以后只是會用RationalRose畫幾張用例圖、活動圖。針對這種情況,采取“模擬實戰(zhàn)”的方法,在每個軟件生存周期的階段,老師將模擬不同的角色來推動課程實踐向?qū)崙?zhàn)靠攏。在制定計劃階段,老師將擔(dān)任“上司”的角色,對風(fēng)險分析,開發(fā)計劃都要進行評閱,如果此階段進行得不成功的話,老師可以對此課題喊停,該小組將不得不另選一個課題重新進行課程實踐。在需求分析階段,老師將搖身一變?yōu)?ldquo;用戶”,各小組需要制定相應(yīng)的調(diào)查綱要,對用戶的需求進行調(diào)查了解。同時仍然擁有“上司”的身份,各小組需要向上提交一份可行性研究報告,以決定該課題是否繼續(xù)。在軟件設(shè)計階段,老師將以“用戶“的身份對需求隨時進行調(diào)整,讓學(xué)生充分理解迭代的過程,這時候過程不規(guī)范的小組將深受其苦。在其后的編程和測試階段,老師都將以“上司“的身份參與實踐,使實踐過程受控。每個小組都需設(shè)一名組長,并將小組的集體討論貫穿整個課程實踐,同時進行討論紀錄,附在文檔之后。這樣能使小組所有成員對開發(fā)過程有一個清晰一致的認識,從而實現(xiàn)整體能力的提高,獲得更佳的效果。這對強調(diào)團隊精神的軟件開發(fā)尤為重要。
作者:周翔 劉曉強 單位:江西南昌大學(xué)軟件學(xué)院