舒新峰 陳莉君
摘要:本文針對社會對軟件開人員的知識結構需求,給出了軟件工程教學內容的設置原則,并提出了基于項目驅動的理論教學和實踐教學模式,最后給出了課程考核指標與依據。實踐結果表明新的教學體系可明顯提高學生的學習興趣與軟件開發能力,教學效果顯著。
關鍵詞:軟件工程;教學改革;教學實踐;項目驅動
中圖分類號:G642文獻標識碼:B文章編號:1672-5913(2009)04-0059-02
1引言
軟件工程作為計算機科學各專業的核心專業課,旨在培養學生綜合應用所學的各種基礎知識來解決實際問題,使學生具備一定的軟件開發、維護與項目管理的能力。軟件工程的教學成效對學生畢業后從事軟件開發和管理有著十分重要影響,然而我國軟件工程教學普遍存在以下問題:(1)教學計劃陳舊,課程內容和社會需求脫節,導致學生的知識結構無法滿足軟件企業的需要;(2)教學偏重于理論講解,脫離了具體實例的授課模式使得軟件工程的基本原理、思想、方法和項目經驗,成為空洞、枯燥、乏味的概念和教條,不容易學習和掌握,無法調動學生的學習興趣。(3)缺乏足夠的軟件工程實踐。學生對軟件工程原則和方法的理解只能局限于書本,難以深入體會和把握知識的精髓和本質,無法達到預期的教學目標。
傳統教學模式已不能適應軟件開發人才培養的需要。針對這種情況,我們對軟件工程課程進行了系統的教學改革,在緊跟社會需求安排教學內容的同時,探索了基于項目驅動的理論教學與實踐教學模式。
2教學內容設置
在軟件工程教學內容設置上強調“新”。傳授軟件企業目前主流使用的開發技術、管理技術以及相關的CASE工具,使學生掌握的知識結構與社會需求一致:
(1)緊跟軟件企業所使用的主流技術,不斷更新授課內容。面向對象軟件開發方法已經成為當前業界的主流,在介紹傳統的面向過程的開發技術的同時,重點對使用UML(統一建模語言)和UP(統一過程)進行面向對象分析、設計及開發做深入分析和講解。此外,還對面向構件軟件工程、凈室軟件工程、形式化軟件工程、敏捷開發等新技術進行介紹。
(2)重視項目管理技術。中大型軟件開發是一項復雜的系統工程,離開了良好的組織與管理往往會導致開發的失敗。在授課中給學生傳輸軟件開發企業的管理流程和先進的管理方法和理念,實現學生從一個程序員上升到項目管理者的轉變。
(3)注重文檔編寫能力的培養。軟件工程一個重要的特點是規范化與文檔化。在軟件開發過程中需要撰寫大量的分析設計文檔來對軟件的開發過程與質量進行有效的控制與管理。對于理工科學生來說,往往文檔編寫能力較差,因此在教學中應要求學生高質量的完成相應開發文檔的編寫,以提高其文檔撰寫能力和水平。
(4)傳授優秀的CASE工具。計算機輔助軟件工程(CASE)工具為軟件開發提供了自動化或半自動化的支持,極大的提高了軟件開發、維護、管理的效率和質量。學生應熟練掌握常用優秀CASE工具的使用,如項目管理工具Project、UML分析建模工具Rational Rose、數據庫建模工具Power Designer、版本控制工具VSS、CVS,測試工具WinRurmer、LoadRunner、TestDirector、JUnit等。
3教學過程組織
在教學過程的組織上,強調理論與實踐相結合。采用基于項目驅動的教學模式,以一個典型的軟件項目開發實例作為授課主線,在軟件工程理論指導下,一步步完成系統的分析、設計、開發、測試及維護,并將各開發階段用到的軟件工程原理、技術、方法和CASE工具等知識融合到項目開發中,極大降低了課程內容的抽象性和難度,提高了學生的學習興趣。在開發案例的選擇上,應在學生比較熟悉的領域里選擇一個合適的項目,如飯卡管理系統、網絡自動售貨機系統、門禁系統等。此類軟件業務功能相對簡單,卻具備了信息管理系統、實時監控系統及分布式系統等常用軟件的特點,一方面便于學生整體把握待開發系統,另一方面通過案例學習可以掌握常見軟件分析設計方法。另外要求學生在課程的學習中,選擇一個合適的軟件項目進行同步開發,將學習到的軟件工程知識應用到實際項目開發中,以提高學生分析、設計和開發能力。
在授課方式上,充分利用各種現代化的教學手段:(1)使用多媒體教學課件,利用多媒體教學圖文并茂、信息量大的優點,增強了教學的質量和效果;(2)利用多媒體教學平臺直接給學生展示開發工具和CASE工具使用方法,以及教學案例的分析、設計和開發過程;(3)建立“軟件工程教學網站”,提供教學大綱、電子教案、業界動態、新技術介紹和課程實驗所需要的各種資源,并為廣大師生提供了方便快捷的網上交互式學習平臺,最大限度滿足學生自我學習、主動學習的需要。
4實驗環節安排
為了進一步提高軟件工程的教學效果,在實驗環節的安排上和組織上,盡可能的給學生提供一個近似于軟件開發公司的開發環境,將通常學生只有在畢業后參與實際項目開發中才能體驗到的軟件開發過程與軟件工程管理知識提前到在校期間的軟件工程課程實踐中。
在實驗環境的搭建上,安裝了當前軟件開發企業所使用的主流軟件開發平臺和CASE工具。在實驗環節的安排和組織上,強調模擬公司化管理。要求4~6名同學成立一個開發小組來模擬軟件公司(可以有自己個性化的公司名稱),并選擇一個合適的應用項目,按照軟件企業的正規開發流程組織實施,以開發實際可使用的軟件作為目標,結合課程的學習進行同步開發。在整個項目的開發中,授課教師擔任項目總監,以控制項目的進度和質量;小組成員可根據個人的能力特長扮演項目經理、配置管理員、數據庫管理員、軟件工程師、測試工程師等,以熟悉和掌握軟件項目開發團隊中的各角色的任務、作用、軟件開發過程、規范和執行方法。在鍛煉軟件設計和開發技能的同時,讓學生親身體驗到軟件開發企業的開發氛圍,并且培養學生多人之間的溝通能力和團隊協作精神。
授課教師參考國家標準制定詳細可行的《軟件開發規范》,規定項目開發流程,各開發階段的任務及標志性成果,遵循的規范和質量標準等。學生嚴格按照規范的要求,完成整個項目的分析、設計、實現及測試,并撰寫相應的文檔。指導教師對學生的開發工作進行必要的指導,并對學生提交的文檔、報告及程序進行質量審核與交流,對檢查中發現的問題和不足,要求進行改進和完善后方可進入下一個階段。項目完成后組織答辯,讓組長對他們的項目作概要陳述,并讓每個小組成員說明在整個項目開發過程中所完成的工作,教師和其他同學可針對其負責的部分進行提問,這樣可以幫助同學發現工作上的不足和潛在的問題,有助于提高對知識的理解與掌握。
5成績考核
軟件工程作為實踐性很強的工程學科,考查的重點不應是純粹的理論,而是學生能否真正具備運用所學知識進行軟件開發的能力,因此必須加大實踐能力考核的力度。我們的評定方案是平時與卷面考試各占總成績的50%。平時成績的以課內實驗的成績為主,評定依據是各軟件開發小組提交的文檔和最終的開發好的軟件,并參考每個小組成員在項目中的貢獻。在卷面考試里,除了考查一些軟件工程的重要原理和概念外,重點檢測學生的軟件分析與設計能力,綜合設計題目占到試卷分值的50%以上。目的是以考核手段為導向,促進學生對軟件工程知識的學習和軟件開發能力的提升。
6結束語
全新的軟件工程教學體系不僅極大的激發了學生學習的積極性、主動性和創新性,同時提前為學生進行了系統的軟件開發培訓,使他們的知識結構能夠適應軟件行業發展的需要,實現與社會的無縫連接。從近幾年的畢業生反饋信息看,經過軟件工程系統的學習與訓練后,他們的軟件開發能力與素質有了明顯的提高,增強了就業競爭力,特別是參加工作后能夠很快勝任企業分配的開發工作,為日后的事業發展打下了良好的基礎。