摘要:通過分析軟件行業對軟件人才實踐能力的新要求,提出軟件工程課程以學生為主體的教學改進方案。該方案提升學生的學習興趣,提高課內實踐的教學質量,增強學生對軟件工程專業知識的實際運用能力。
關鍵詞:軟件工程;教學研究;學生為主體
軟件工程是一門研究用工程化方法構建和維護有效的、實用的和高質量的軟件的學科。它涉及工程概論、項目管理、程序設計語言、面向對象的需求、數據庫、軟件開發工具、系統平臺、標準、設計模式等,是一門綜合性很強的軟件課程,在計算機教學體系中占有十分重要的地位[1]。上世紀90年代以來,計算機科學蓬勃發展的同時,我國計算機軟件行業也進入了快速發展時期。軟件行業呼喚計算機教學方面的改革,希望走出校門時,新一代軟件人才能在更好掌握軟件工程理論知識的同時擁有一定的實踐經驗。這就對軟件工程這門計算機專業核心課程提出了更高的要求。目前,軟件工程課程的教學改革已經在各高校開展多年,其中引入案例教學,解決理論與實際應用銜接的問題[2];以及引入項目式實踐教學,提高學生動手能力和感性認識等[3],都是比較有效的教學方式。但對于如何以學生為主體,提高學生自主學習軟件工程的教學方式,目前還沒有系統的經驗總結。本文從軟件工程教學存在的問題開始,介紹在五邑大學計算機學院開展的以學生為主體的軟件工程教學,討論提高軟件工程課程教學質量的途徑和方法。
1軟件工程教學的困難
要提高軟件工程課程的教學質量,還存在一定困難。
從軟件工程的學科發展上看,軟件工程的學術研究和教學過程本身有著不同的動作機制,學術界的最新成果和正在進行的軟件設計很難直接相互滲透。另外一方面,從學生的認識結構看,在軟件工程的教材中添加大篇幅的工程經驗,雖然可以一定程度地解決學生缺乏實踐經驗的問題,但這些內容并不能完全構成學生對軟件工程的認知結構。教材和課程大綱中的學術成果和經驗理論,是知識的結果,不是知識的形成過程。經典理論不能代替學生從動手實踐中獲得自我認知的能力。軟件工程教學不能離開實際的體驗,否則就容易造成類似人文學科中學術成果和經典閱讀脫節的情況[4]。
因此,在傳統的軟件工程課程中,由于課堂教學方式具有局限性,學生學會了軟件工程的原理和方法,但不會在實踐中運用所學知識解決實際問題。引入項目式教學后,課本當中的例子多數是為概念和原理而設立的,無法在規模和復雜程度上與真正的軟件開發項目相提并論。這就導致學生缺乏對軟件工程實踐過程的感性認識,學完課程后仍不知道應如何著手一個軟件項目的開發[5]。而實踐又是掌握工程科學的最佳方式。對于不斷發展的軟件理論,其中的知識與經驗只能通過實踐者自己親身執行后,才能被理解和掌握。
為了提高軟件工程課程的教學質量,從根本上提高學生的學習興趣,五邑大學計算機學院在近年的軟件工程教學中,強調以學生為主體,實施學生自主體驗的教學改革。目的就是提高學生對軟件工程經典理論的感性認識,不讓項目式的實踐教學流于形式,使學生在完成軟件工程的學習后,能適應軟件行業的工程化需求。
2以學生為主體的自主體驗式教學設計
為了體現學生自主體驗的過程,我們在軟件工程的課程教學大綱中提出了以學生為主體的教學方案,其目的是使學生能主動投入到軟件工程的學習中,使教學內容能與學習體驗更緊密地結合。同時,在實踐教學中,軟件工程的教學設有學生自選項目的實踐環節。新的教學設計,關鍵就在于引導學生自主參與項目式教學。
為了強調學生自主體驗,該課內實踐的選題范圍要求來源于五邑大學校內的具體軟件需求,并將軟件開發的工作量控制在一定的范圍之內,使項目實踐內容能覆蓋整個軟件生命周期。最后,參考國家軟件開發的標準文檔要求,要求學生在各階段完成后提交階段性書面總結。具體地,以學生為主體的教學改革主要包括以下5個方面。
2.1提出注重互動的理論教學
互動式的理論教學首先要求教師要少講,把學習的機會留給學生。理論的學習和掌握依然是項目式教學的基礎,這些經典公式和行業標準通常是學生最不容易用心學習的部分,而引入互動式的課堂理論教學可以較好地解決這一問題。傳統的軟件工程教學大綱存在項目實踐方面內容的缺失,而補充了項目式教學后的軟件工程,往往更像是一種“基于項目活動的研究性學習”,這就使教師更注重項目經驗的傳授。其實,“最好的教學是對話式的教學”,教師應該從自身開始改變觀念,不再一成不變地重復教學。學生通過與教師的對話式交流,可以在互動中解決項目中的實際問題,完成教學大綱中要求的理論學習部分。
2.2要求學生完成真實可見的軟件項目
在課內實踐中,教師要求學生完成一個來自校內的實際軟件需求,這個軟件的需求通常是學生可以在日常生活中直接感受到的,這樣可以提高軟件開發中需求調研的真實性,更有利于增強學生的自主體驗。在以往的教學中,我們沒有提出這樣的選題范圍要求,而學生一開始對軟件開發的理解又有限,因此選題往往是教師熟悉的領域,或是學生從網絡上找到的參考題目。結果是部分學生在實踐中積極性不高,還出現有學生照搬參考書和網絡上已有案例的情況。新的實踐選題范圍要求必須來源于校內實際需求,這可以更方便教師控制實踐項目選題與某些參考書中案例之間的重復度,也加強了學生調研工作的真實性。
2.3在理論與實踐教學中開展深入的專題討論
專題討論的前提是學生的課外學習和總結,討論時的主體應該是學生而不是教師。長期以來,在軟件工程的理論與實踐教學中,基本是教師單向傳授,教師講學生聽,教師布置課題學生完成,學生離開了教師就不知道干什么,不利于提高學生的綜合素質。因此,在軟件工程教學時,教師必須要少講,目的是要把實踐過程留給學生去體驗。軟件的開發過程并不是一成不變的,每次軟件開發都是對軟件工程系統框架進行的一次創造性實踐,真實的開發過程往往不都能完全遵循教科書中建議的軟件開發流程。因此,在學生的課內實踐中,教師首先讓學生通讀教材和講義,然后鼓勵學生根據課程學習的要求去尋找來自生活中的實踐項目,也就是自己找到想解決什么問題,并進一步閱讀課本和參考資料,在教師、學生之間開展專題討論,用問答和辯論的方式完成理論學習和項目體驗。另外,專題討論的題目并不需要預先定好,而是應該在項目實踐的進程中挖掘出有討論必要的題目,同時鼓勵學生在討論前進行充分準備,查閱相關的期刊和論文,并在討論后進行總結。
2.4注重項目實踐中對軟件項目管理的體驗
軟件工程是一門鍛煉學生綜合能力的課程,工程實踐性非常強,而工程總離不開項目管理。學生一開始知道課程中包含項目實踐后,往往最先關心應該在軟件開發中使用什么技術和工具。但軟件工程的實踐教學并不應把實踐側重于軟件開發技術的應用,更不應指定實踐項目使用的開發技術。指定開發語言和開發工具容易使學生混淆軟件工程課內項目的實踐方式和其他專業課,如數據結構、數據庫、操作系統和Web體系結構的課內項目實踐。軟件工程教學的目標應是在講授軟件工程經典理論和工程經驗的同時,讓學生體驗軟件項目的開發過程,提高對軟件項目的整體把握能力,增強軟件項目管理理念。因此,教師應當引導學生把注意力集中在軟件工程的知識框架和對軟件過程的實踐上,并在實踐環節適當增加如成本控制、進度管理、風險分析以及人員管理等有關軟件項目管理的體驗。
2.5靈活的成績評價方式
學生完成軟件項目的分析、設計、編程和測試后,可以在課程答辯中展示已掌握的知識和在項目中實現的能力鍛煉。在課程答辯中,學生可以發現其他項目小組的優缺點,教師也可以在答辯過程中提出項目實踐中的不足之處,幫忙學生找出差距,彌補不足[6]。
3教學效果
五邑大學計算機學院在施行新的旨在激發學生自主體驗的教學方法后,學生普遍反映在學習軟件工程更有興趣的同時獲得了更多的實踐經驗。新的選題范圍使學生不出校園即可以做軟件項目的需求調研,大大提高了學生參與實踐的積極性,也激發了學生軟件開發創作的熱情。選題范圍的縮小反而使課內項目選題的多樣性得以實現,涌現出一批來自學生視角的新課題,如AP07064班的選題《宿舍網上自主充電系統》,以及AP07102班的選題《學生飲水管理系統》,都有一定的實際應用價值,也獲得了校內有關部門的關注。客觀上,學生在軟件工程課程中的成績穩步提升的同時,對教學的評價也不斷提高,2009-2010學年軟件工程的課程評價超過了9.2分,滿分為10分。
4結語
目前,軟件行業正在飛速的發展過程中,軟件工程教育的理念、教學形式也處于發展階段。學生為主體的教學形式作為一種嘗試,運用于軟件工程的課內實踐環節中,取得了一定的教學效果。如何立足于我國軟件行業的現狀、特點,采取相應的教學手法,提高軟件工程的學生學習體驗,提高教學質量,值得我們不斷探討和研究。
參考文獻:
[1]