摘要:“軟件工程”是一門理論性和實踐性非常強的課程。針對目前“軟件工程”的教學現狀,本文對軟件工程教學內容的更新、教學方式與考核方式的改進、理論結合實際以及加強實驗室建設等方面的改革提出了具體的觀點和實施方案。
關鍵字:軟件工程;教學改革;教學方法
“軟件工程”是指導計算機軟件開發和維護的工程學科,是培養學生軟件開發能力和項目管理能力的一門重要課程。其教學效果直接影響到學生畢業后從事軟件開發和項目管理的能力。然而,在實際教學中,學生總認為這門課內容枯燥無味、繁瑣,學習興趣不大,待到用時又不知如何運用。同時學生的課堂表現又極大地挫傷了老師講課的積極性,很難達到較好的教學效果和教學目的。因此,本課程急需改革,本文結合作者多年來從事軟件工程教學和科研的實際體會,對軟件工程的教學改革提出了若干建議。
1更新“軟件工程”的教學內容
目前,計算機行業需要的軟件工程師是既掌握軟件開發技術,又懂項目管理的復合型人才。我們認為“軟件工程”課程應強調軟件工程的思想與方法,突出軟件工程的過程概念,側重軟件工程應用能力的培養。因此,考慮不斷更新充實教學內容。根據美國計算學會ACM(Association for Computing Machinery)在2001年制定的ACM草案,軟件工程的七大核心專題為(1)軟件工程過程和軟件生命周期模型;(2)需求分析;(3)軟件設計(以面向對象系統分析——OOSA,面向對象系統設計——OOSD);(4)測試和評估;(5)軟件進化(強調可維護軟件的特征,軟件成熟度、軟件重構和軟件重用等);(6)軟件項目管理(強調軟件開發人員的組織、項目進度、軟件評估、項目風險、軟件質量保證、軟件配置管理、項目管理工具等);(7)軟件工具和環境(重點為編程環境、需求分析建模工具、測試工具)。這七大核心內容是掌握軟件工程理論的最小子集。然而,目前國內出版的教材基本上沒有覆蓋這七大核心內容,有的甚至還停留在面向過程的傳統軟件工程學的詳細論述上。為此,我們參考了國外經典教材和軟件工程學的最新研究成果,將軟件工程教學內容分為5個教學模塊,即軟件工程基礎、軟件項目管理、傳統的軟件工程、面向對象的軟件工程,軟件工程的最新技術[1]。其中軟件工程基礎包括軟件工程概論、軟件過程、建模語言、軟件項目、風險分析和管理內容。軟件項目管理包括項目進度計劃與控制、質量保證與配置管理內容。傳統的軟件工程包括需求工程、系統設計、軟件測試內容。面向對象軟件工程包括面向對象分析、面向對象設計、編碼實現、面向對象測試內容。軟件工程的最新技術包括基于組件的開發方法、基于構件的開發方法、敏捷開發(XP)等。其中每個模塊都是獨立的教學部分,模塊之間有一定的聯系,但可有選擇地進行教學。可根據不同的教學計劃,將幾個模塊組合講授[2]。
2學生學習中存在的問題
“軟件工程”課程涉及計算機、經濟學、管理學、工程學、市場學等多個領域的知識。由于涉及的內容太多、太寬,學生感覺這門課程包含的知識非常廣泛。在教學中,我們發現學生么涉及算法設計,邏輯推理較少,不像程序設計課程(如C/C++語言、JAVA語言)那樣能帶給學生智力上的快感,激發學生的興趣和熱情。在學習理論知識時,由于沒有開發經驗,學生很難將軟件工程的抽象理論與實際聯系起來,很難體會該門課程的指導實踐性,容易產生枯燥乏味的感覺。
(2) 學生輕視軟件工程的價值。在學校,學生開發的一些程序,一般都是小型軟件系統,在規模和復雜度上都遠遠不如實際開發的系統。對于這些系統,學生只需寫少量的代碼。在這些小規模的非正式系統中運用軟件工程,很難體會得到軟件工程的作用。因此,學生容易輕視軟件工程的價值。
3 “軟件工程”教學的改革措施
3.1理論結合實際,采用案例教學法
軟件工程講授的原理、技術、方法都是抽象的。為了使學生能夠深刻領會和理解軟件工程的思想和方法,在教學中創造條件引入案例,將復雜抽象的概念用具體案例進行解釋,能夠收到事半功倍的效果。例如,在講解需求分析內容時,我們以“教材購銷系統”作為教學案例,詳細介紹了需求分析四步驟:需求獲取、需求建模、編寫需求說明文檔、需求驗證。這樣將枯燥的理論與實際緊密結合,變抽象為具體,有利于學生充分理解和掌握各知識點。
其次,我們一改“一言談”,“一人談”的傳統教學模式。在講完每個知識點后,安排一次案例討論課。一般要求討論案例不同于教學案例。例如,講授完需求分析內容后,我們以學生較熟悉“圖書館借閱系統”作為討論案例。在課堂上將學生分成幾個小組,每組成員分別扮演用戶和開發者的角色,模擬實際開發情形,運用所學知識展開討論。討論之后,要求學生再根據需求調查過程整理出相應的需求文檔資料。這個過程增強了學生對軟件開發項目的感性認識和興趣,提高了他們分析問題和解決問題的能力。
3.2創建良好的軟件工程學習環境
(1) 加強軟件工程實驗室建設。軟件工程實驗室是“軟件工程”課程建設的主要方面。軟件工程實驗室需要配置適用的軟硬件設施和軟件開發工具,以便為軟件工程的教學和研究創造必要的條件。通過實驗室建設,一方面可以加強教學實踐環節。另一方面,能夠在實驗室積累一批優秀的實例,為老師的專業研究和學生理解、掌握課程內容提供良好的幫助。軟件工程實驗室的軟件環境建設應以工程化關鍵技術為重點,包括領域工程技術、軟件過程技術、工程環境技術、軟件構件技術和軟件標準化技術。另外,軟件工程實驗室建設應吸收有軟件開發經驗、科研能力的教師直接參與課程建設,把實際科研項目納入實踐性教學工作中。讓學生有機會參與軟件項目的開發,實現教學和實踐相結合。以便學生對軟件工程的思想、方法、工具和環境、軟件工程過程、軟件標準和規范有一個全面的了解和掌握。
(2) 探索校企合作,在軟件企業設立講壇。“軟件工程”課程具有顯著的實踐性,其教學內容必須與當前軟件行業的發展和需求保持同步。為此,我們安排1~2次課在軟件企業,請既有理論知識又有開發經驗的軟件工程師為學生上課,作有關先進工程技術和管理規范方面的專題報道。讓學生了解企業軟件工程的實際問題、行業現狀和發展趨勢,及時修正學習方向和端正學習態度,增強學習的主動性和對軟件開發工作的感性認識。
3.3改革課程考核方式
作為實踐性很強的課程,“軟件工程”的考核方法應該有別于其他課程,考核的重點不應該是理論考試成績,而是學生能否學會在軟件開發過程中貫徹軟件工程學的思想和方法[3]。因此,我們改革傳統的“一張試卷定成績”的考試方法,注重學生綜合知識和應用能力方面的考核。采用的方案是:平時作業10%,課堂討論20%,案例分析(分組模式)30%,筆試40%。課程設計單獨考核。采用這種考核方案,可以避免學生對知識的死記硬背,轉而重視對知識的理解與應用。課堂上踴躍發言,對學生學習的主動性和創造性思維具有很大的促進作用。
4結語
“軟件工程”課程具有發展迅速、實踐性強的特點。在教學實踐中,應該結合軟件工程的發展和軟件行業的人才需求現狀,不斷更新教學內容,設計合理的教學模式,理論與實踐相結合,側重培養學生的軟件工程應用能力。建立良好的軟件工程學習環境,培養學生的學習興趣,提高學生學習的主動性與創造性。
參考文獻:
[1] 王慶育. 軟件工程[M]. 北京:清華大學出版社,2004.
[2] 孫知信. 軟件工程課程模塊化教學改革的實踐與思考[J]. 南京郵電學院學報:社會科學版,2004(6):39-42.
[3] 齊治昌. 軟件工程學科的建立與軟件工程本科教學[J]. 中國大學教育,2006(2):20-30.
Discussion of Software Engineering Course Teaching Reform
ZHANG Xia
(Dept of Computer Science, Xiangnan University, Chenzhou 423000, China)
Abstract: Software engineering is a quite theoretical and pragmatic course. In this article, according to the problem in the course of teaching, several issues on the course have been discussed, namely, the update of teaching contents, the improvement on teaching and examination methods, how to integrate theory with practice and strengthening laboratory construction etc. Suggestions of reinforcing the teaching reform are also offered.
Key words: software engineering; teaching reform; teaching method
(編輯:白杰)