摘要:為提高教學質量,深入開展教學研究,本文就北京電子科技學院開設的軟件工程課程進行說明和總結,并從課程簡介、國內外軟件工程課程的現(xiàn)狀、北京電子科技學院的開設情況、教學方法與手段、不足之處對軟件工程課程的開設情況進行探討,最后總結和思考今后的努力方向。
關鍵詞:軟件工程;教學研究;教材;方法和手段;實踐
1課程簡介
軟件工程(Software Engineering,簡稱為SE)是一門研究用工程化方法構建和維護有效的、實用的和高質量的軟件的學科。它涉及工程概論、項目管理、程序設計語言、面向對象的需求、分析、設計、測試、維護、數(shù)據(jù)庫、軟件開發(fā)工具、系統(tǒng)平臺、標準、設計模式等,是一門綜合性很強的軟件課程,在計算機教學體系中占有十分重要的地位。
2國內外軟件工程課程的現(xiàn)狀
2009年9月,高等教育出版社正式出版、教育部高等學校計算機科學與技術教學指導委員會編制的《高等學校計算機科學與技術專業(yè)發(fā)展戰(zhàn)略研究報告暨專業(yè)規(guī)范(試行)》(以下簡稱試行規(guī)范)中列出的“計算機科學與技術”專業(yè)方向之一就是軟件工程。據(jù)信息查閱,目前有“軟件工程”方向的教育部國家示范性軟件學院有38所,全國高校開設“軟件工程”專業(yè)方向授課的學校有兩百多所。
以美國卡耐基#8226;梅隆大學為代表的國外大學已經開發(fā)出非常實用的工程軟件人才培養(yǎng)課程體系,它包括10個知識體系、58個知識領域[1]。2007年開始,國內的軟件學院紛紛引進他們的課程體系,意在培養(yǎng)出中國的國際化工程型軟件人才。各高校的軟件工程方向本科教育也正在加快向工程型教育轉變。以使課程教育緊密結合現(xiàn)代軟件產業(yè)需求,課程內容結合一些實際工程項目[2]。
事實上,軟件工程是一門教學難度比較大的課程,主要原因在于其以下4個特點。
(1) 軟件工程作為指導計算機軟件開發(fā)與維護的工程學科,研究范圍廣,包括技術方法、工具和管理等方面;
(2) 軟件工程是一門邊緣學科,內容豐富,涉及領域廣,包括計算機科學、計算機技術、系統(tǒng)工程、管理學及經濟學等。
(3) 軟件工程還是一個相對比較年輕的學科,尚未形成成熟的教學模式,教材上例題零零散散,幾乎沒有較為成熟的實踐內容。
(4) 軟件工程是一項不斷發(fā)展的技術,相關課程內容更替很快,如果繼續(xù)偏重傳統(tǒng)的成熟理淪,會造成與最新技術的嚴重脫節(jié)。但是完全講解新技術,也不適合軟件開發(fā)的實際需要,而且,課堂上也沒有時間講述全部新舊知識點。
國內高校的軟件工程課程教學實踐仍處在一種探索和發(fā)展階段。在實施過程中,仍然以教師的思路為主,以此帶領學生進行知識的學習。學生不可能獨立面對一項完整的項目開發(fā),仍然處于被動接受知識狀態(tài),缺少自主思考,很難體會到一個完整的項目開發(fā)過程。這種教學狀態(tài)培養(yǎng)的學生在實際應用中不知道如何開展項目,也不懂如何推進項目。另外,課程的考試大多以筆試為主,一張試卷就決定學生課程學習成績,這在很大程度上導致學生在軟件工程課程學習中重理論輕實踐。
為了彌補校園軟件工程教育弱的現(xiàn)狀,很多公司開設軟件工程教育實習基地,把學生編入一個具體項目開發(fā)組,讓他們在實際項目開發(fā)中建立工程概念,熟悉項目開發(fā)流程,參與項目具體代碼和文檔的書寫,為勝任未來公司實際工作積累經驗。為了適應外包軟件人才的需要,2007、2008年市場上甚至出現(xiàn)了不少軟件工程人才培育公司。
另外,大學為了培養(yǎng)學生職業(yè)技能也增設了專業(yè)實習,很多軟件工程專業(yè)的學生被輸送到相關的培訓公司參加項目實習,而校園的實習也主要是引進公司的實訓項目,以培養(yǎng)學生工程意識。
3電科院開設本課程的情況
軟件工程課程包括的主要內容如下。
軟件工程理論概述、軟件開發(fā)過程、軟件開發(fā)工具(建模技術)、項目管理、軟件需求、面向對象、軟件過程、軟件建模、模式設計、極限編程、敏捷軟件工程等。
作為一門獨立課程,軟件工程課程首先需要解決的問題是根據(jù)需要選擇合適的授課內容;在具體教學過程中選用多本教材,它們的內容對比如表1所示。
北京電子科技學院開設本課程已有多年,經過對歷屆計算機科學與技術系學生的授課,課程教學處在不斷摸索和進步之中。結合其他高校開設該課程的情況,并考慮到就業(yè)學生參與計算機項目開發(fā)的人不多這一情況,我們在課程內容上有所選擇,主要是加大對軟件工程項目的介紹和講解,對軟件合同中的甲方內容進行講述,用政府電子政務項目做舉例來說明軟件工程的用處。從2008年開始,我們確定了軟件工程課程的內容及基本要求,見表2。
通過本課程的學習,我們希望學生掌握軟件工程的有關概念,了解各階段的主要技術、方法與工具,具備協(xié)助和管理軟件開發(fā)的基本能力。同時,強調文檔,學習文檔模板的學習。另外,在更加細化的內容上面,如分析方法之數(shù)據(jù)流圖、分析工具之UML語言、測試方法之黑盒測試、白盒測試等方面,我們會根據(jù)實際的技術發(fā)展作適當?shù)恼{整,以便跟上新技術發(fā)展和市場需求。
4教學方法和手段
軟件工程課程的教學難度大,要講好則需要下很大的功夫。
4.1軟件工程第一堂課
課程定位:軟件工程是計算機學科中一個年輕并且充滿活力的研究領域。20世紀60年代末期以來,為克服“軟件危機”,人們在這一領域做了大量工作,逐漸形成了系統(tǒng)的軟件開發(fā)理論、技術和方法,它們在軟件開發(fā)實踐中發(fā)揮了重要作用。今天,現(xiàn)代科學技術將人類帶入信息社會,計算機軟件扮演著十分重要的角色,軟件工程已成為信息社會高技術競爭的關鍵領域之一,而軟件工程已成為高等學校計算機教育計劃中的一門核心課程。
突出課程的核心地位,從“工程”角度去引導學生對本課程的認識;從“就業(yè)”角度去闡述本課程的重要性;從“大型軟件”開發(fā)的興趣來看本課程[3-4]。
4.2軟件工程的實踐
軟件工程實踐是很重要的環(huán)節(jié),理論結合實際才能讓學生真正體會課程的魅力。在數(shù)據(jù)庫課程設計這個環(huán)節(jié),我們要求學生應用軟件工程的知識,盡量用工程化的思想來指導自己的設計。
4.3軟件工程的案例
從實際出發(fā),用軟件開發(fā)的實際例子進行講解,讓學生體會大型軟件開發(fā)的過程、方法、手段和控制。
從微軟、IBM、用友等知名軟件公司的軟件開發(fā)看軟件工程的開展。
從學生以前的計算機試驗看軟件的開發(fā),并進行比較,從中看到弱點和不足。
4.4軟件工程和項目管理
引進國外項目管理的概念,從別的項目管理到軟件工程的項目管理。將兩者進行比較,講清不同點和相同點,讓學生受到啟發(fā)。突出項目管理的重要性,軟件開發(fā)同樣需要項目管理。從成本、風險、利益、控制角度看軟件工程[5]。
4.5軟件工程和畢業(yè)設計
從學生畢業(yè)前的畢業(yè)設計環(huán)節(jié)看軟件工程的重要性。“畢業(yè)設計”不是一個小的計算機試驗,而是一次對學生四年學習的全面考核,而軟件工程正是可以利用的知識。
5實踐安排與不足
為了培養(yǎng)學生工程概念,也是鑒于軟件工程課程實踐性強的特點。我們在2003年制定軟件工程課程教學大綱時,特將該課程的實踐環(huán)節(jié)與數(shù)據(jù)庫課程設計相結合。本著在實踐中體會、在實踐中落實的原則,我們要求學生在多人合作開發(fā)數(shù)據(jù)庫應用系統(tǒng)的課程設計中,運用軟件工程學到的軟件項目管理方法和軟件設計與實現(xiàn)技術,并撰寫必要的文檔,以便使開發(fā)軟件有較好的、完整的技術檔案,并使其不斷升級換代。另外,從各高校的情況看,實踐環(huán)節(jié)非常重要,它需要實踐環(huán)節(jié)的輔助教學。
6教學實施情況
開設課程實驗是一個探索的過程,我們在反復摸索,以便增長學生的工程項目開發(fā)經驗。我們曾要求1999級、2000級的學生將軟件工程課程學習作為一個項目來管理,要求學生寫課程學習日志,記錄每周投入課程學習的具體時間、當時設計的目標、完成情況等。為了彌補學生缺乏項目開發(fā)經驗的缺陷,我們也開展課后讀書報告活動,即提供10~20個與畢業(yè)設計有關文檔或指定若干軟件工程發(fā)展的技術方向,讓學生分組閱讀文檔或查閱并閱讀有關文獻,寫出項目評價及專題讀書報告(參見附錄中當時讀書報告分組評分記錄)。但這也帶來一些負面影響,即學生越來越依賴計算機,讀書報告變成復制和粘貼文本,而不是認真閱讀,預設的訓練目的無法達成,因此,我們隨后取消了這一做法。
99級教學中的軟件工程實踐時間設計為6小時,這主要是考慮學生在同一個學期中還有數(shù)據(jù)庫課程設計30學時,不可能同時做兩項大實驗。因此,我們嘗試從99級開始,在數(shù)據(jù)庫課程設計中加入軟件工程實踐內容和要求,如需求報告完善、軟件質量評估、軟件測試具體檢驗等,并在課程設計答辯中設立軟件工程相關問題的回答。到2003年,教學大綱正式提出兩課實驗合并。
在此,我們還有兩個希望:(1)加大軟件工程課程的課時(目前是30課時的教學,沒有試驗課時),同時開設試驗環(huán)節(jié),針對軟件工程開設一個類似數(shù)據(jù)庫課程設計的環(huán)節(jié),加強學生動手能力的培養(yǎng)。(2)讓學生走出去(政府或企業(yè)),撰寫調查單位的軟件實施方案。
7結語
軟件工程蓬勃發(fā)展,學院的教學目標是培養(yǎng)服務于黨政機關機要事業(yè)的計算機應用型專業(yè)人才。在課程教學中不斷緊跟技術發(fā)展,緊緊抓住學院培養(yǎng)目標而設立課程教學目標,選好教學內容是個艱巨的任務,任重道遠,它需要我們長期的努力。
參考文獻:
[1]孫家廣,劉強. 軟件工程理論、方法與實踐[M]. 北京:高等教育出版社,2006.
[2]鐘珞. 軟件工程[M]. 北京:清華大學出版社,2005.
[3]胡飛,武君勝,杜承烈,等. 軟件工程基礎[M]. 北京:高等教育出版社,2008.
[4]錢樂秋,趙文耘,牛軍鈺.軟件工程[M]. 北京:清華大學出版社,2007.
[5]Carlo Ghezzi. 軟件工程基礎[M]. 施平安,譯. 2版. 北京:清華大學出版社,2002.
Reflection on Software Engineering Course in BESTI
JIANG Xiang-gang, ZHANG Xiao-li
(Beijing Electronic and Scientific Institute Applied Software Team, Beijing 100070, China)
Abstract: This paper has a general analysis of the course of software engineering in BESTI. It presents the various parts including the curriculum planning, classroom teaching approches, problems to be solved and the goals to be attained. As a result of this reflection followed by related practice, a more improved software engineering is expected in BESTI.
Key words: software engineering; course planning and giving; textbooks; teaching approaches; practice activities
(編輯:郭小明)