文章編號:1672-5913(2008)10-0128-02
摘要:本文從“軟件工程”課程的特點和目標出發,從調整課程結構、加強工程實踐、規范文檔三個方面進行了詳細的闡述,并對課程改革中的重要問題及細節作了分析與解決。
關鍵詞:軟件工程;課程改革;分階段課程;工程實踐訓練
中圖分類號:G642
文獻標識碼:B
1引言
目前,在國內1900多所普通高校中有500多所開設了計算機科學與技術專業,有40所左右的院校開設了軟件工程專業?!败浖こ獭笔擒浖こ虒I的專業核心課程,是一門綜合性很強的課程,幾乎包含了SWEBOK的全部領域。在教學中為了教學課時的安排和突出重點,通常是以軟件需求、軟件設計、軟件工程工具和方法為主,再加上各種條件的限制,較多地強調理論學習,所講授知識相對當前的新技術來講有些滯后,雖然也有一定的實踐相配合,但實踐與當前軟件工程技術的發展還有較大差距。
再加上由于軟件工程的優勢在訓練學生的小型項目上體現不充分,學生普遍認為軟件工程就是畫畫圖,學與沒學差別不大,導致學習效果不好,使得軟件方向的學生只重視編碼,面向對象的開發方法重視不夠,建模方法使用混亂,文檔不規范,影響了對學生工程素質的培養和能力的提高,與社會對畢業生需求的能力相差較大。這些暴露出的問題說明“軟件工程”課程的教學結果不令人滿意,教與學的付出和收獲沒有成正比,沒有得到社會的認可。此外,隨著軟件工程技術的發展,軟件工程領域的教學內容不斷更新、豐富,軟件企業對軟件工程能力的要求越來越高。為改變這一現狀,適應技術的發展,對現行的“軟件工程”課程進行改革勢在必行。
2以培養工程型應用人才為課程目標
開設軟件工程專業的大部分院校通常會把培養目標定位于應用型人才。但是,對于軟件工程專業來說,僅局限于應用型人才是不夠的,這是由軟件工程專業的特點(即它是計算機科學為基礎的新興交叉學科,具有鮮明的工程特色,與應用領域結合緊密)決定的。軟件工程專業的培養目標應當是培養信息化社會需要的工程型應用人才。學生通過理論和實踐的學習,應具備軟件工程師從事軟件工程實踐所需要的素質、知識和能力。
對軟件工程專業核心課程的“軟件工程”來說,課程目標應同專業的培養目標一致,也就是培養學生的軟件工程素質,提高學生的軟件工程能力,促進工程型應用人才的培養。
3調整課程結構,不斷強化工程能力
現行軟件工程課通常是以軟件生命周期為主線進行教學,在內容上,以需求分析、軟件設計、編碼為主,輔以軟件測試、軟件維護、軟件項目管理的一般知識;在方法上,面向過程和面向對象均有;課程安排,通常集中在一學期內完成,課時通常較其他專業課程多,配套的實踐課通常是與理論在同一學期完成,課時較理論課時少,題目一般較簡單。在保留現行課程教學優點的基礎上,主要從調整課程結構、加強工程實踐、規范文檔三個方面進行“軟件工程”課程的教學改革。
3.1調整課程結構,延長教學的時間和空間
這里對課程結構的調整不是要打亂軟件生命周期,而是增大課程的時空跨度,將原來在一學期內開設的課程擴展為兩個學期的課程,增加案例教學與實踐訓練題目的綜合度,進一步充實課程內容,通過連續性教學的刺激,使工程的意識和方法得到正強化。從而在較長時期的潛移默化中培養學生的工程素質,在不斷的實踐中提高學生的工程能力。具體措施是:將現行課程分為基礎和提高兩個階段,基礎階段理論和實踐相結合,以理論為主,高級階段以實踐為主,適當補充理論,兩個階段之間是螺旋上升的關系。
課程基礎階段的內容是軟件工程的基礎知識,以軟件生命周期為主線,目的是讓學生對軟件工程課程的內容、結構有一個較全面的了解,掌握基本知識,熟悉基本方法,為后續的學習打好基礎,課時數可以在50~60學時之間。理論講授以需求分析、軟件設計、編碼為主,注意小案例的運用,配套實踐以訓練基本技能為主,包括對Visio或者Rose等工具的使用。課程基礎階段應盡量早地開始,可以在第四或第五學期,這個時候程序設計課、數據結構等重要前驅課程都已經開過了;更重要的是,在其后的其他課程學習中,特別是實踐環節,很多時候都要用到軟件工程的知識和方法,這樣可以讓學生在不斷的練習中強化基礎知識,加強知識之間的聯系,培養工程意識。
課程的提高階段主要是以項目小組為單位的實踐訓練,仍然是以軟件生命周期為主線,以較綜合的貼近實際的軟件項目進行訓練,包括完整的軟件過程,目的是讓學生在強化訓練中,把軟件工程課的基礎知識與包括軟件程序設計技術、項目管理、數據庫、軟件測試等各相關課程的知識聯系起來,以文檔和程序系統為手段,提高工程能力,形成一定的工程素質。提高階段課程應稍后一些,可以在第七學期,以學生課外完成為主,課堂上主要是答疑性指導,課時數可以在40左右,在實驗室進行。同時,教師應根據學生的掌握情況,查漏補缺,并適當補充一些知識,比如較新軟件過程模型、軟件開發方法和CMM的實施等。
在進行課程結構調整時,必須注意兩個階段的連續性,否則容易造成理論與實踐脫節的后果。注意到在兩個階段課程之間的長達兩三個學期的時段,因此必須有相應的課程安排與之配合,這就是知識與能力不斷線原則。課程安排可以是在其他課程的實驗里面規定使用基礎階段所講授的內容,也可以是單獨的課外實踐,一定要保證正強化。
3.2加強工程實踐,切實提高學生的工程能力
理論結合實際的能力是當前畢業生的一個軟肋,滿足不了社會的需要,造成當前計算機相關專業特別是軟件工程專業學生畢業后的就業“低潮”。只有從低年級開始大力加強以“軟件工程”課程實踐為代表的實踐環節,提高能力,才能使學生具備一定的工程素質和工程能力。這里以課程提高階段的實踐進行說明。
課程提高階段的實踐訓練是整個課程的總結,課程的成敗很大程度上依賴于綜合實踐,因此,在進行實踐訓練安排時,訓練形式、內容、要求等都很重要,用于訓練的項目要有一定的規模和綜合度。
實踐訓練在一學期之內完成,以項目小組的形式進行,每個組按照項目管理的方式進行組織和管理,充分發揮學生的主動性。按軟件生命周期分為需求分析、軟件設計(也可再分為總體設計、詳細設計)、編碼、軟件測試與改進四個階段,每一階段都要進行驗收,驗收時盡量推行學生論講,最后階段完成后要進行答辯,對每一階段都要嚴格要求。
實踐訓練的內容實際上就是需求分析、總體設計、詳細設計、編碼、軟件測試與改進,其中,可以需求分析與詳細設計為重點。方法上應以面向對象的分析與設計為主。除編碼外,每一內容都應有相應的文檔訓練,而且對文檔應嚴格要求,在小組完成項目后,應該有一個總結報告。根據專業的特色和條件,訓練的項目最好與某些應用領域相結合,這樣能使訓練更接近實際。在訓練過程中,不僅要考慮系統的性能,還要考慮建造系統的代價以及可能帶來的副作用,逐步培養學生的工程素質。此外,可以適當引入一些中小IT企業的方法和管理,可以建議學生在詳細設計和編碼階段寫程序員日志(或叫開發日志),提前讓學生感受到企業的工作氛圍。
軟件測試對軟件環境和師資條件要求較高,有條件時可以使用WinRunner、QTP等軟件進行訓練,條件不具備時,可以使用JUnit等進行單元測試訓練。
在學生負擔不重而且有相應的條件時,可以按照CMM2實施,從中抽取初五個關鍵過程:需求管理、軟件項目計劃、軟件項目跟蹤與監控、軟件質量保證、軟件配置管理,對其加以改造或者適當降低要求進行訓練。
3.3文檔的規范化引導
軟件工程的文檔編寫一直是學生的難點,好多學生都認為太麻煩,這是因為他們對文檔的重要性認識不夠。因此,在整個“軟件工程”課程中都要強調并加強引導,在各個驗收階段要嚴格要求。
軟件文檔的標準本身對師生來說就是一個較困難的事情,因為學校跟IT業界是有距離的。很多主流的文檔格式或者說模版,比如CMM標準的文檔,如果沒有跟企業合作的話,是很難了解或拿到的。在這種情況下,可以按照國標GB-85系列來進行。
實際上,對學生的文檔規范性引導,并不是一定要有了最新的業界標準文檔格式才能進行,因為格式這個東西很容易學會,關鍵是要訓練學生常規的編寫經驗,培養文檔意識,把文檔作為驗收的內容和階段結束的標志。因此,在訓練過程中一定要詳細地給學生講解怎么寫文檔,需要注意些什么,在驗收后一定要對學生的文檔進行點評,對典型問題要注重回頭看,教師要用自己的嚴謹、負責的態度感染學生,突出文檔規范的重要性。
4結束語
“軟件工程”課程自身的綜合性以及在軟件工程專業中的重要地位決定了課程必須跟上時代的發展,符合社會的需求,因此對“軟件工程”課程必須以培養工程型應用人才為目標,不斷向前推進改革。只有在教學過程中注重理論與實踐的結合,不單純地以“軟件工程”課程的基本知識為內容,而是綜合軟件工程專業的多個相關課程,對學生進行綜合訓練,加強文檔訓練,把握好課程改革的度,穩步推進,才能有效改進目前的課程教學。
參考文獻
[1] 中國計算機科學與技術學科教程2002研究組. 中國計算機科學與技術學科教程2002[M]. 北京:清華大學出版社,2002:7-52.
[2] 汪斌,湯文亮. 軟件工程教學改革初論[J]. 華東交通大學學報,2006,(10):152-153.
[3] 潘婭. 軟件工程教學方法探索[J]. 西南科技大學學報(哲社版),2006,(6):28-30.