張忠林
文章編號:1672-5913(2009)02-0053-03
摘要:本文介紹了我院針對軟件工程傳統(tǒng)教學模式的弊端,以項目為驅動,結合案例教學、團隊合作等教學方法,使學生能夠系統(tǒng)地掌握軟件開發(fā)的過程、方法和工具,從而具備計算機軟件系統(tǒng)開發(fā)和維護的能力,為學生將來的工作打下堅實的基礎。
關鍵詞:軟件工程;教學改革;項目驅動教學模式;教學方法
中圖分類號:G64
文獻標識碼:A
1引言
軟件工程發(fā)展非???,與其形成鮮明對比的是,近幾年來軟件工程人才的培養(yǎng)卻陷入了停滯不前的狀態(tài),致使軟件工程這門學科的發(fā)展與軟件工程人才的培養(yǎng)嚴重脫節(jié)。導致這種狀況的原因可歸結為:(1)高校的教學模式單調;(2)教學內容落后。目前大多數學校采用的教學方式重理論、輕實踐,以教師講授為主,學生只是知識的被動接受者[1],學生接受起來比較困難。導致學生學習軟件工程時難以深入體會和把握軟件工程知識的精髓和本質,更不知道如何運用軟件工程的技術和方法來開發(fā)、維護軟件。
2課程特點
軟件工程的定義:將系統(tǒng)的、規(guī)范的、可度量的工程化方法應用于軟件開發(fā)、運行和維護的全過程及上述方法的研究[2]。從定義可以看出軟件工程是一門集方法性、思想性、標準性和規(guī)范性于一身的學科,包含大量在長期的工程實踐中總結、提煉出來的原則和經驗,以及規(guī)模龐大、操作復雜的實踐要求。軟件工程研究的范圍很廣、涉及的領域很多,內容十分豐富,很關鍵的一點是軟件工程還很年輕,尚未形成成熟的教學模式,教材也少有提供較為成熟的設計、訓練和實踐內容。軟件工程的這些特點導致了軟件工程的教學面臨著諸多困難。
3教學改革方案
對軟件工程教學模式進行改革的目的是為了讓學生能夠積極主動地參與到軟件工程課堂學習,激發(fā)學生學習的熱情和興趣,進一步提高課堂教學效果,提高學生的實踐能力,以期培養(yǎng)高素質的軟件工程專業(yè)人才。以上分析了軟件工程課程的特點,并列舉了教學中存在的一些問題,高校應結合自身的現實情況,以社會需求為動力,積極創(chuàng)新,探索適合自己的軟件工程教學方式。本文立足于培養(yǎng)優(yōu)秀的軟件工程人才,針對軟件工程傳統(tǒng)教學模式的弊端,對該門課程的教學改革進行了研究,認為課堂教學模式在打牢基礎、提高實踐能力的方針指導下,以項目為驅動,結合案例教學、團隊合作等教學方法,根據社會需求大膽嘗試改革軟件工程教學模式。讓學生系統(tǒng)地學習軟件開發(fā)過程、方法和工具,理解軟件開發(fā)的原理,掌握軟件開發(fā)的技術,從而具備軟件開發(fā)和維護的能力,為學生以后的工作打下良好的基礎。
3.1教學方針
(1) 打牢基礎
軟件工程是總結于實踐的抽象理論,是對軟件開發(fā)的總結和指導,涉及到計算機技術、工程學、管理學等多領域的知識[3]。這就要求我們在做好軟件工程這門課程教學的同時,還要加強計算機科學與軟件基礎理論等其他計算機專業(yè)課程的教學。而且,數學是所有理工科的基礎,對軟件工程也同樣不例外,沒有好的數學基礎,就不可能學好軟件工程。所以,必須重視數學基礎教學,另外,培養(yǎng)學生對問題空間分析和建模的能力,以及運用算法求解問題的能力也同樣重要。
(2) 提高實踐能力
提出本方針是因為:(1)軟件工程課程不涉及具體軟件項目,學生在學習過程中很難將抽象的理論與實際軟件項目聯系起來;(2)教師在實際授課過程中采用傳統(tǒng)的單一的課堂講授方式,忽視對學生實踐能力的培養(yǎng);(3)學生在畢業(yè)以后無法快速地適應自己的工作。這有違高校的辦學宗旨。
要更好地貫徹本方針需要:(1)在教學過程中以具體的項目為驅動,培養(yǎng)學生將所學理論知識應用于實踐的能力,體驗項目開發(fā)的規(guī)范與原則,積累寶貴的項目開發(fā)經驗;(2)通過案例教學讓學生對實際的項目開發(fā)有最初的印象,提高學生的學習興趣(目前大型的軟件公司都有自己一套成熟的軟件工程理論,他們之間有共性但又有不同,在課堂上挑選典型成功的案例讓同學們揣摩學習,找出失敗的案例給同學們以警示[3]);(3)通過團隊合作教學方法培養(yǎng)學生的團隊意識。
3.2以項目為驅動的教學模式
以項目為驅動的教學模式,目的在于提高學生在今后工作中需要的計算機專業(yè)技術技能,讓學生在項目實現過程中體會團隊合作的意義,培養(yǎng)與其他學生交流、合作的能力,獲得項目開發(fā)的經驗,同時不斷提高學生的創(chuàng)新能力。重點培養(yǎng)學生將所學理論知識應用于實踐的能力,體驗項目開發(fā)的規(guī)范與原則,積累寶貴的項目開發(fā)經驗,培養(yǎng)學生的團隊意識。
如果情況允許,鼓勵學生參與到教師的實際項目中,這樣不僅可以讓學生盡早接觸軟件工程的實際問題,了解軟件開發(fā)的全過程,提高實踐能力,增強對軟件工程技術、方法和原理的理解,使學生切實感受到該課程的重要性,而且有利于培養(yǎng)學生從事該專業(yè)工作所必需的職業(yè)道德和行為規(guī)范。本文中將以寵物商店電子商務網站為例,介紹教學改革的具體實現
3.3教學改革方法
(1) 案例教學
考慮到軟件工程課程特點和教學中存在問題,課堂教學時采用了案例教學,改變教師主導、學生被動接受的教學方式為學生為主導、而教師輔助學生學習的教學方式。授課過程中以案例為背景,以教材為基礎。首先,以具體的相關聯的案例為引,誘導學生自主學習、獨立思考、相互討論、自由表達觀點、對案例提出質疑、從案例中分析應該理解和掌握哪一些理論知識等;最后,由教師對學生思考和質疑探究中無法解決或難以理解的問題給予指導和建議。這種方法可以實現啟發(fā)式教學,能夠極大地提高學生的學習興趣,實現教與學的相互促進、相互增長,而且它更是實現了理論聯系實際。案例教學法在軟件工程教學中的應用將在更大程度上激發(fā)學生的學習興趣和參與的積極性。同時,案例教學也有利于學生掌握理論知識,并運用知識解決軟件開發(fā)中的實際問題。
(2) 團隊合作法教學
每個學期挑選一個較為大型的項目,模擬實際工作中的角色給同學們分工,要求學生按照軟件開發(fā)真實流程做出這個項目,每個項目最后演示他們的成果,其他小組作為裁判給出評價。該方法雖然操作復雜但效果極為顯著,實踐證明,這是讓學生學會合作的最好的方法。在實際操作中還可以接受真實的軟件開發(fā)項目,讓學生在實際工作中體會團隊合作的意義。
以上方法總的出發(fā)點是夯實理論基礎、提高學生興趣、增強社會實踐、給學生相互合作、相互信任的機會,當然這些方法還需要在實踐中不斷磨合和優(yōu)化。
3.4實現過程
以項目為驅動教學模式有兩條主線組成,一是上課,既是教師教課的過程,在此教師為學生傳授軟件工程的相關理論知識;二為項目實現過程,通過實現具體項目來提高學生的動手能力。兩條主線同時進行,即重視實踐能力,又不放松對理論知識的把握。以寵物商店電子商務網站為例,下面具體介紹本教學方案的具體實施流程。
3.4.1準備
(1) 將班級按“項目小組”形式進行分組,每組不得超過6人;
(2) 每個項目小組成員按照真實項目開發(fā)過程進行分工;
(3) 項目中的每項任務要落實到人且規(guī)定該任務的起止日期和時間;
(4) 由老師為每個小組準備不同的項目(項目必須根據企業(yè)實踐產生)。
3.4.2授課
課程根據軟件生命周期劃分為六個階段,分別為可行性研究與計劃制定階段、需求分析階段、軟件設計階段、實現階段、測試階段、運行和維護。課程的一個階段也是教學過程中的一個階段,每個階段結束給學生一定的時間來實現PetStore系統(tǒng)中相關內容。講課過程中教師以一個具體的程序案例引入,由學生自己理解這個程序,發(fā)現其中優(yōu)點與不足。對于這段代碼每個人的理解肯定不同,采用辯論方式,讓學生交流自己的不同觀點,以期從討論中發(fā)現自己不足和別人的優(yōu)點,同時也能活躍課堂氣氛。這一步最關鍵的是怎樣讓每個學生積極地參與到討論中來,建議采用先小組討論再集體討論的方法,由教師在旁邊指導。討論結束后,由教師總結本次討論和講解相關概念。學生在課后也寫出總結,以便學生充分理解和掌握課堂討論內容。
3.4.3項目實現
(1) 可行性研究與計劃制定階段:小組成員模擬現實中軟件開發(fā)場景,確定PetStore系統(tǒng)的開發(fā)目標和總的要求,給出它的功能、性能、可靠性以及接口等方面的可能方案,制定完成開發(fā)任務的實施計劃。
(2) 需求分析階段。小組成員深入了解和分析需求,根據自己的經驗和需求用Word或相關的工具再做出一份文檔系統(tǒng)的功能需求文檔,清楚列出系統(tǒng)大致的大功能模塊,大功能模塊有哪些小功能模塊,并且還列出相關的界面和界面功能。例如PetStore可以分為用戶、寵物商店和維護庫存數據庫三大模塊,每個大功能模塊又可分為若干小模塊。寵物商店需要用戶登錄界面、管理員登錄界面、客戶選擇寵物界面等。
(3) 軟件設計階段:項目小組在反復理解PetStore系統(tǒng)需求的基礎上,給出軟件的結構、模塊的劃分、功能的分配以及處理流程,并編寫設計說明書。在系統(tǒng)比較復雜的情況下,設計階段可分解成概要設計階段和詳細設計階段。
(4) 實現階段:小組成員根據實際說明書中所列出的功能一個一個地編寫,把軟件設計轉換成計算機可以接受的程序代碼,既完成源程序的編碼。同時,編寫用戶手冊、操作手冊等面向用戶的文檔,編寫單元測試計劃。
(5) 測試階段:小組成員為PetStore系統(tǒng)設計測試用例,檢驗軟件的各個組成部分。并編寫測試分析報告。由小組成員模擬現實客戶來使用系統(tǒng),并一個一個的確認每個功能。
(6) 運行和維護階段:將已交付的軟件投入運行,并在運行中不斷地維護,對發(fā)現的問題進行修改,并不斷為系統(tǒng)添加功能來完善系統(tǒng)。
此教學模式具體實施過程中應結合校園網絡?,F在高校的校園網絡已經普及,校園網成了學生與學生、學生與教師之間交流和學習的一個平臺,為學生的學習帶來了極大的方便。通過在校園網上開通軟件工程論壇、FTP站點等,為學生提供一些與教學計劃相關的文件和資料,最主要的是提供一些國內外優(yōu)秀的軟件工程文獻的電子版本。學生還可通過軟件工程相關論壇跟其他學生或者老師及時交流一段時間的學習收獲、對某一個問題的體會、請教自己不懂的問題等。與校園網絡的結合使軟件工程的教學變得更加靈活。
此外,教材是教學內容的載體,現今軟件工程的發(fā)展日新月異,而教材卻存在一定的滯后性。這就要求我們在教學過程中需要參考國外已經比較成熟的教材以及軟件工程最新成果以彌補教材的不足[4]。不過這種補充終究不是長遠之計,應當將教材的建設納入軟件工程教學改革的研究范疇,在國內外文獻、資料以及軟件工程最新成果的基礎上編制適合自身的教學用書。而且,要善于借助各種形式拓展教學內容,使學生在現有條件下能夠掌握比較先進實用的知識。在軟件工程的課程講解過程中實時地穿插關于軟件工程最新研究成果的專題講座。同時,根據具體條件考慮與業(yè)界公司聯合,安排學生與企業(yè)員工進行交流,邀請企業(yè)技術專家參加講座,組織學生到相關企業(yè)實習參觀等。通過以上方法和途徑,使軟件工程課程內容跟緊學科的最新發(fā)展,更貼近社會需求。軟件工程課程不僅涉及軟件開發(fā)的理論和技術,而且涉及項目管理,因此軟件工程教學承擔了培養(yǎng)既懂工程化管理又懂技術的復合型人才的任務。因此我們必須制定相應的教學策略,講授軟件工程的原理、方法、過程的同時,應該重視技術管理的相關知識的傳授,包括項目管理、質量管理、配置管理、過程管理等方面[4]。
4結論
目前軟件工程領域中各種技術快速發(fā)展,而軟件工程傳統(tǒng)教學模式卻存在嚴重滯后的弊端。所以,通過積極改革現有的教學體系,完善和豐富教學模式、緊跟軟件工程的發(fā)展步伐,以項目為驅動,結合案例教學,加強學生實踐能力的培養(yǎng)。這樣經過一系列學習,使學生能夠系統(tǒng)地掌握軟件開發(fā)的過程、方法,培養(yǎng)計算機軟件系統(tǒng)開發(fā)和維護的能力,為學生將來的就業(yè)和工作打下堅實的基礎,使其成為社會需要的高素質軟件工程人才。
參考文獻
[1] 溫春友,敖廣武. 對軟件工程課程自底向上教學模式的探索[J]. 遼寧高職學報,2008,3(3):27-28.
[2] 齊治昌,譚慶平,寧洪. 軟件工程(第二版)[M]. 北京:高等教育出版社,2006.
[3] 李紅梅,盧葦,張紅延. 軟件人才培養(yǎng)模式的探索與實踐[J]. 計算機教育,2008,(8):114-115.
[4] 張舒,陳昱. 軟件工程課程教學改革研究[J]. 福建電腦,2008,(6):196-200.
Software engineering Teaching Reform based on project-driven
ZHANG Zhong-lin
(School of Electronic and Information Engineering, Lanzhou jiaotong University, Lanzhou 730070, China)
Abstract: For the drawbacks of traditional teaching model of software engineering, this paper, based on project-driven, is combination of CASES teaching, TEAM teaching methods, and so on. Through the study, students can grasp the Systematic knowledge about process, methods and tools of software engineering. Thus, students have the ability of computer software development and maintenance of the system. And it lay a solid foundation for students to work in the future.
Key wards: Software Engineering, Teaching Reform, Teaching Mode based on Project-driven, Teaching Methods