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