文章編號:1672-5913(2008)08-0067-02
摘要:本文提出了一個適合國內軟件工程專業的教育方案,并給出了軟件工程專業教學應該涵蓋的基本內容和計劃。
關鍵詞:軟件工程教育;軟件工程教育培養目標;教學計劃;軟件工程課程
中圖分類號:G642
文獻標識碼:B
1引言
隨著軟件行業對人才的需求,軟件工程的教育隨之興起,國家示范性軟件學院的建設就是一個重要的標志。然而在軟件工程教育中存在著諸多的問題,主要體現在:
(1) 軟件工程與計算機科學和傳統工程學科的關系界定不清楚
普遍存在兩種觀點。一種觀點認為,軟件工程作為一個專業,與計算機科學沒有本質區別,它是計算機科學的一個分支,只是軟件工程專業在教學上需要增加一些軟件工程方面的課程而已。另一種觀點認為,軟件工程就是軟件開發,是完全的應用學科,需要的是工程背景,而不是計算背景,在軟件工程中具體的軟件的開發技術和工具比計算機科學專業知識更重要。
(2) 軟件工程專業的培養目標與計算機科學專業沒有本質區別
在國內許多高校,軟件工程專業和計算機科學專業并存,由于沒有很好地區分軟件工程專業和計算機科學專業,在培養目標上也只有很小的差異,幾乎都是培養計算機專業的研究和應用人才,沒有體現軟件工程專業的培養特性。
(3) 軟件工程專業教學內容缺乏系統性和完備性
由于培養目標的近似,許多軟件工程專業的課程設置也與計算機科學專業沒有大的區別,開設了大量計算機科學專業的課程,而軟件工程方面的課程開設比較少,且只注重具體軟件的編程技術和工具,而忽略數學和工程方面的基礎。在教學上也往往把精力花一個具體的開發軟件的使用、一種方法學的詳細步驟和編程語言的語法等,忽略了基本原理和方法的教授。
(4) 以課程實驗代替軟件工程實踐
軟件工程專業學生的工程實踐是非常重要的教學環節,但目前大部分學生的軟件工程實踐只局限在課程實驗和課程設計上,達不到軟件工程的工程化要求,也就是說學生需要經歷大、中型項目的開發過程,需要有團隊工作訓練,而這些往往在教學環節中被忽略。
針對以上目前在軟件工程專業教育中普遍存在的問題,根據作者多年的軟件工程教學經驗,提出了一個適合國內軟件工程專業的教育方案,明確了軟件工程專業的培養目標和培養計劃,對從事軟件工程專業教學計劃制定和實施者有一定的參考價值。
2軟件工程教育的基本原則
軟件工程專業的培養目標應該是滿足軟件行業的社會需求,面向應用、面向工程培養從事軟件應用和開發的中、高級軟件工程師,包括軟件分析和設計人員、軟件開發人員、軟件集成和測試人員、軟件維護人員、技術支持人員、軟件項目策劃和管理人員、系統架構師等。依據此培養目標,在軟件工程專業培養計劃制定和課程設置上需要堅持幾個基本的原則。
(1) 將軟件工程作為計算學科和工程學科兩者來教學
軟件工程是計算學科和工程學科的綜合,在教學內容上需要考慮在這兩門學科之間平衡,避免偏向任何一方。軟件工程作為計算學科,它建立在計算機科學理論的基礎上,軟件開發需要運用計算機科學領域的研究成果,包括基本的概念、理論、方法、技術和工具等。作為工程學科,軟件開發是一項工程,需要運用工程化的方法進行抽象、建模、信息組織和表達、變更管理,也涉及一般工程中的決策、實現和質量控制活動等。
(2) 選擇軟件工程成熟的理論、方法和技術作為教學內容
軟件工程是新興的應用型學科,發展迅速,這為軟件工程教學提出了挑戰,需要在新技術與成熟技術之間平衡。強調教授先進的、持久的軟件工程原理,而不是最新的或具體的技術和工具的細節。但在教授基本原理和方法時,需要結合具體的應用,理論必須與實踐結合。這樣才能使學生有一個良好的基礎,能適應技術的發展和知識的更新,而且成熟的技術在教學資源上也比較豐富,有利于教學實施。
(3) 將軟件工程原理和方法與具體的技術和工具相結合
軟件工程是解決問題的學科,強調實踐。軟件工程的實踐環節包括硬件、軟件工具、技術和過程。在教授軟件工程基本原理和方法的同時介紹新技術和工具是必要的(只是不把具體技術和工具的使用細節作為教學重點),讓學生實踐并獲得經驗,以便更好地理解和掌握所學知識,使學生養成選擇和使用工具的習慣,也增強學生的學習興趣。
以上是一些最基本的原則,在這些原則的基礎上制定培養計劃,就可以保持軟件工程專業的培養方向,不至于偏離到計算機科學或應用工程上去,從而保障軟件工程專業的培養目標的達到。
3軟件工程教育的基本內容和計劃
軟件工程課程應該涵蓋計算基礎、數學和工程基礎、專業實踐、軟件工程等四個方面,具體包含的知識點和所占比例如表1所示。

依據這一知識結構,結合前面所述的基本原則,在課程設置上可以考慮開設以下課程。
計算基礎方面:開設計算機系統導論,程序設計基礎,算法和數據結構,面向對象技術,計算機組成原理,高級語言程序設計,操作系統基礎,數據庫基礎,網絡通信基礎,軟件構造,軟件開發環境與工具,軟件形式化方法等課程。
數學和工程基礎方面:開設微積分,離散數學,概率統計,線性代數,數理邏輯,實驗方法和實驗技術,工程設計,工程經濟等課程。
專業實踐方面:開設團隊互動和溝通,軟件工程專業實踐,軟件工程職業道德,畢業設計等課程。
軟件工程方面:開設軟件工程導論,軟件需求分析,軟件設計和體系結構,軟件軟件質量保證和測試,軟件過程,軟件項目管理,軟件工程項目開發等課程。
此外,為了使學生有較強的應用能力,在課程設計上還應該考慮軟件工程之外的應用領域知識,包括自然科學,社會科學,商務,人文科學等,以開展學生的知識面。針對軟件工程的應用領域,可以開設系統和應用專題,介紹典型的應用系統,包括以網絡為中心的系統,信息系統和數據處理,金融和電子商務系統,生物醫學系統,多媒體、游戲和娛樂系統,嵌入式和實時系統,容錯和免疫系統等。
在軟件工程專業的整個課程體系中,開設課程的順序安排建議從計算機科學基礎學習入手,到最終畢業設計為結束,如表2所示。
