羅海麗
(內蒙古科技大學信息工程學院,內蒙古包頭014010)
“軟件工程”是計算機科學與技術專業的一門重要的專業必修課程,它的內容主要涉及與軟件開發和維護相關的概念、原理和方法,這些概念、原理、方法對于實際的軟件開發起重要的指導作用。近幾年軟件工程學科發展較快,出現了許多新技術、新分支。現有的軟件工程教材種類很多,但所涉及的側重點各不相同,有必要根據不同學校計算機專業的專業方向及培養目標,選擇適合的教學內容,以做到有針對性的教學;“軟件工程”課程內容主要涉及與軟件開發維護相關的原理和方法,這些內容若沒有軟件開發實踐做支撐,勢必顯得空洞乏味。因此有必要從課堂教學、實驗教學、實踐教學這三個環節入手探索“軟件工程”課程的一種新的教學模式。這種新的教學模式通過案例教學、實訓式實驗及綜合實踐相結合,幫助學生更好地掌握“軟件工程”課程內容,并培養學生實際軟件開發的能力。
軟件工程領域的知識體系如圖1所示。

圖1 軟件工程領域的知識體系
按照教育部計算機科學與技術專業規范,計算機科學與技術專業分為計算機科學、計算機工程、軟件工程、信息技術這四個專業方向。不同的專業方向的特點及培養目標不同,因此不同的專業方向中“軟件工程”課程的內容應有所不同。
計算機科學方向研究計算機和可計算系統的理論、設計、開發技術,著重于理論知識的教學和分析問題、解決問題能力的培養,以培養計算機科學研究型人才為目標。“軟件工程”課程是該方向的核心課程。該方向中“軟件工程”課程的內容應包括軟件過程、軟件過程的改善、項目管理、軟件分析、軟件設計、工具與環境等知識。
計算機工程方向研究計算機系統的理論、設計、實現、開發和應用。著重于理論和工程知識的教學,使學生掌握較高層次的計算機系統的分析、設計能力。軟件工程是計算機系統工程的重要組成部分,因此“軟件工程”課程是該方向的核心課程。該方向中“軟件工程”課程的內容應包括軟件過程、軟件開發的方法與技術、工具與環境、軟件生命周期。
軟件工程方向研究如何用系統的、規范的、可度量的方法開發、維護軟件。該方向的教學既重視理論知識和較高層次分析問題、解決問題的方法,也重視軟件設計和工程實踐。軟件工程方向的知識要求幾乎覆蓋了軟件工程領域的知識體系的全部。該方向只設一門“軟件工程”課程是不夠的,應設立一系列軟件工程相關課程。應開設“軟件工程導論”課程,用于綜述軟件工程知識體系及各部分知識;應開設“軟件過程管理”課程,用于講授軟件開發工程、項目管理、軟件質量管理、軟件度量等知識;應開設“面向對象軟件開發方法”課程,用于講授目前應用廣泛的面向對象的軟件開發方法及該方法涉及的工具;此外,軟件生命周期中的各重要階段(如需求分析階段,總體設計階段,詳細設計階段,編碼階段,測試階段)均需對應一門獨立的課程,用于講授該階段的任務及涉及的工具方法[1]。
信息技術方向著重培養學生運用信息技術領域的核心技術、工具來構造滿足需求的計算機應用系統的能力,即培養應用型人才。這一方向中的“軟件工程”課程內容的選擇應更具有實用性。“軟件工程”課程內容應包括軟件生命周期、軟件開發方法與技術、軟件開發過程中涉及的重要工具與環境。
在計算機科學與技術專業的四個專業方向中“軟件工程”課程都是重要的專業必修課,該課程的教學效果直接影響到專業的發展,因此有必要從課堂教學、實驗教學、實踐教學這三個環節入手探索“軟件工程”課程的一種新的教學模式。
“軟件工程”課程主要內容涉及指導軟件開發的原理、方法、工具。若脫離了軟件開發實踐,這些原理、方法、工具會變得枯燥、難懂。在“軟件工程”課程教學中引入案例輔助教學能有效地提高教學質量。課程中的每個重要知識點都應配備若干相關案例。在整個課程的教學中應有1到2個貫穿始終的綜合案例。綜合案例應為一個較為實際的軟件系統的開發過程,包括問題定義、可行性研究、需求分析、總體設計、詳細設計、編碼、測試。綜合案例中應包含各開發階段中涉及的任務、技術、方法及工具。學生應在課余時間認真閱讀案例,并進行分析,老師同步在課堂上講授案例,然后學生在實驗課中,按照案例中的步驟重視案例中的系統開發過程,最后總結歸納[2]。
實訓式實驗是通過實例演示及模擬、課堂練習、課后作業這三個環節使學生通過實驗訓練很好地掌握相關技術及方法。實訓式實驗包含如下三個環節:
(1)實例演示及模擬
每個實驗,教師應先講解實驗步驟及要求。之后教師講解并演示一個案例,在此過程中學生同步模擬每個實驗步驟。教師做一步,學生跟一步,若有學生出現問題,教師及實驗員應及時輔導使其能跟上大家的進度。
(2)課堂練習
案例講解演示之后,教師應布置1到2個類似練習題,學生參照前面所講解的案例,按步驟完成這些練習。學生練習過程中教師應全程指導,實驗課結束時學生應將實驗結果以電子郵件形式發給教師,并書寫實驗報告。
(3)課后作業
實驗課結束時,教師應布置一個相關作業,學生在課下參照教師講解的實例及課堂練習完成作業,以鞏固相關知識。
“軟件工程”課程的教學中應注重綜合實踐環節的建設。綜合實踐環節包括以下三個方面:
(1)“軟件工程”課程設計
“軟件工程”課程應設置兩周左右的課程設計。課程設計的目標是讓學生體驗軟件開發的全過程,且學會與他人合作,培養團隊精神。課程設計過程中,學生分成若干小組,每個小組選擇一個項目,該項目的規模應與課程綜合案例的規模類似。每個小組應完成項目的問題定義、可行性研究、需求分析、總體設計、詳細設計這些階段。各個小組由組長負責組織、分工、控制進度等,對小組成員的最終課程設計成績有一定的分數浮動調整權;組長帶領全組順利完成任務,總評可加一定分數。小組完成項目之后,應提交項目開發各階段文檔及課程設計報告。
(2)與其它課程的課程設計相結合
計算機專業的很多課程(如數據庫原理、信息系統開發、數據結構、C語言等)的課程設計都與軟件開發相關,可將這些課程的課程設計作為“軟件工程”課程的輔助課程設計。在這些相關課程的課程設計中,可通過恰當地選擇設計題目,將軟件工程的原理、方法、工具應用于這些課程設計中,使學生體會到軟件工程方法與各種軟件開發的關系。
(3)與畢業設計相結合
計算機專業的畢業設計主要是進行實際的軟件開發。目前畢業設計中學生一般面臨全新的題目,設計過程中學生既要分析研究系統又要熟悉開發工具,這樣很多學生會覺得頭緒太多,忙不過來,最終不能完成一個理想的系統。鑒于此可將畢業設計作為“軟件工程”課程設計的延續,延用課程設計中的分組,每個小組延用課程設計中的題目。由于課程設計時間較短,課程設計時各小組只進行了粗略并且簡化的項目開發,在畢業設計的半年中,各小組可在課程設計的基礎上進一步完善擴充已有成果,按照軟件工程的步驟最終得到比較理想的系統。
“軟件工程”課程應根據不同學校的專業方向及培養目標合理地選擇教學內容,這樣才能做到重點突出;“軟件工程”課程的教學中應通過案例教學、實訓式實驗及綜合實踐相結合,幫助學生掌握“軟件工程”課程內容,并培養學生實際軟件開發能力。
[1] 計算機科學與技術專業規范起草小組.計算機科學與技術專業(軟件工程方向)規范與專業建設研究報告[M].北京:高等教育出版社,2005.
[2] 王忠群,劉濤.《軟件工程》教學方法的研究[J].現代計算機,2009,05:86-87.
[3] 陳昊,明仲.在軟件工程實驗教學中引入敏捷方法的探索[J].計算機教育,2008,24:46-47.