趙淑芳 陳立潮
[摘 要]軟件工程課程理論性和實踐性都非常強。目前課堂教學過程中存在問題較多。基于“項目導向的啟發式”的軟件工程教學模式不僅能激發學生學習的主動性和積極性,活躍教學氣氛,而且提高了學生的實踐動手能力,取得了非常顯著的教學效果。
[關鍵詞]軟件工程 項目導向 啟發式 教學模式
[中圖分類號] G642[文獻標識碼] A[文章編號] 2095-3437(2015)11-0165-02
一、引言
隨著軟件工程和物聯網技術在各領域的廣泛應用,軟件工程開發的規模也在日益增大,因此,對軟件設計及運行維護人員的工程能力要求越來越高。而在大多數計算機和軟件工程專業的課程設置中,對學生的軟件設計、開發及運行維護能力的培養往往只體現在軟件工程這門課上,如何通過軟件工程的教學最大限度地提高學生的實踐能力是擺在我們教學中的一個重要課題。鑒于此,我們提出了基于項目導向的啟發式軟件工程教學模式,以最大潛能的提高學生的學習積極性,增強學生的實踐開發能力。[1]
二、目前教學中存在的主要問題
(一)教學內容較抽象,方法單一
目前的軟件工程課堂教學主要以教師課堂授課為主,又以理論講授為主,忽視了學生主觀能動性的發揮,大部分學生對軟件工程的理解為只要掌握了基本概念、原理,就能達到軟件工程課程的要求。單一的課堂授課、枯燥無味的理論加上較抽象的內容無疑影響了實際教學效果。[2]隨著軟件規模不斷擴大以及不斷向各領域的滲透,對軟件質量保障要求越來越高,這對軟件工程課程的教學內容及教學模式提出了新的要求。從教學內容上看,我們既要注重軟件設計的基本原理與方法,同時還要注重軟件開發的整個過程與軟件的質量保證措施。
(二)實踐教學環節薄弱
軟件工程是一門理論性與實踐性比較強的綜合性課程,很多軟件工程學院只注重理論課程的教學,教學內容比較抽象,學生幾乎沒有實踐的機會;有的學院雖然設有一定比例的實驗課程,但課時比較少,幾個實驗下來,學生也只是能撰寫一些相關的文檔資料,沒有真正體會到軟件工程在軟件開發中所發揮的作用。
(三)教學中采用的案例缺乏完整性和實用性
部分教師在教學時,由于缺乏實際軟件項目的設計、開發及項目管理的經驗,導致教學案例的選取偏離學生實際,即使講授一些例子,由于學生缺少實際開發經驗,也很難理解軟件開發的全過程。有的教師所選案例要么規模較小,如簡單的學生成績管理系統。在學生看來,不需要完全遵循軟件工程的設計過程,如不需按可行性研究等三個時期8個階段來執行,而是直接進行設計和源代碼的編寫,學生還不清楚可行性研究和需求分析的目的及意義。這導致學生對軟件項目、軟件工程沒有建立系統完整的概念體系,缺乏對所學知識的整體認識。[5]
三、項目導向的啟發式教學模式
針對上述問題,要使軟件工程的教學真正能充分調動學生的積極性,改變以往難學、難教的局面,不斷提高學生的實踐動手能力,有效地改善教學效果,我們必須從教學理念的更新、教學模式的改革等方面著手。由于軟件的不可預見性,定義“需要做什么”成為軟件開發的根本問題。
項目導向的啟發式教學方法是在建構主義學習理論基礎上,有別于傳統教學的新型教學方法。建構既是對新知識的理解與掌握,同時又包含對原有經驗和知識的改造和重組,形成新的綜合知識建構。該方法提倡以學生為中心,教師在整個教學過程中起組織者、指導者和促進者的作用。[3]
(一)理論教學
基于項目導向的啟發式軟件工程教學過程主要包括軟件項目的選取、教學內容的選取及教學方法、教學組織,整個過程是教師與學生相互討論、共同參與的過程。
1.教學內容的選取。項目導向的啟發式教學關鍵是選擇好設計開發的項目,所選項目要與所講授的內容息息相關,教學內容選取要以教學大綱以及人才培養目標為依據,所選教學內容的理論與技術應包括課程的核心知識點,確保理論與實踐能緊密結合在一起,同時保證所選案例是可實現的,學生容易理解的,具有一定規模且可操作性比較強的。
軟件工程的教學內容主要講授將軟件過程模型、可行性研究、需求分析、軟件設計、軟件構造、測試以及軟件維護等內容,同時融入數據庫設計、數據結構設計及網絡拓撲結構設計等相關課程知識,按照面向數據流和面向對象兩個方向構建組合式的、模塊化的教學內容。
在教學的開始階段選擇一些典型的“軟件危機”案例作為這門課程的導入,如Ariane5火箭、美國愛國者導彈防御系統曾經應用于海灣戰爭對抗伊拉克的飛毛腿導彈等,讓學生們真正了解軟件失敗問題癥結所在,認識到軟件的本質特性造成了軟件開發的諸多問題,軟件本質上的復雜性使軟件產品難以理解,影響軟件過程的有序性和軟件產品的可靠性,并初步建立規范化的軟件開發意識。
在教學過程中,選取1-2個典型的,具有一定規模的案例(如高校教務管理系統)作為典型案例,分別采用傳統的結構化設計方法和面向對象的設計方法,分別講授軟件生命周期中的可行性研究、需求分析、總體設計、詳細設計、編碼實現及測試等核心過程,并著重介紹每個階段中要重點解決的問題,以及所采用的方法和工具。[4]
2.教學方法的設計。在教學方法上,以培養學生獨立思考和創新思維為主要目標,以項目為主體,組織學生以團隊的形式參加項目分析、設計、開發和運行,啟發式的將抽象的理論知識融入教學實踐的講解中,通過分析、模擬、仿真,引導學生分析項目中所體現的軟件工程本質的問題,讓學生真正能掌握軟件工程的設計思想。[3]
(二)實踐教學
在課堂講授的同時,每個環節我們都配備了相應的實驗環節,實驗教學與課堂教學保持同步進行,以更好地激發學生的學習興趣,鞏固所學的理論知識,真正掌握軟件工程的設計、開發和維護管理的全過程。
軟件工程項目實踐教學的實施包括項目實踐教學方法、項目實踐內容和項目實踐要求。項目實踐進度與課堂教學同步,項目組根據項目需求,制訂項目計劃,進行分析與設計,進一步熟悉軟件開發過程及方法,同時提交規范的軟件分析與設計文檔。學生在鞏固課堂所學的理論知識的基礎上,結合實際項目進行實踐,使學生的應用能力、合作能力和全局觀念等專業素質得到有效提高。[3] [5]
1.學生分組。學生按照項目的分析、設計、編碼實現、測試各個角色組成2-3人的開發團隊,同時選取一人作為項目負責人,同時明確各自的分工,并協作完成,以培養學生的團隊合作精神、溝通能力和協調管理等能力。
2.項目設計。各小組首先應選擇一個比較了解且具有一定規模的實際MIS管理系統,便于學生進行現場調研,獲取準確而可靠的需求,也可參與到教師的科研項目中,然后嚴格按照軟件工程的設計思想、軟件過程的規范,獨立完成項目的可行性分析、需求分析、設計、實現與測試。各小組在每個階段結束后應提交相應的設計文檔,教師對其進行檢查并在全班討論交流,對檢查中發現的問題和不足,要進行改進和完善,然后進入下一個階段的設計,直至最終提交產品,完成各階段的任務。
3.模擬演示。在項目結束后組織答辯與演示,首先由小組長對項目的功能及基本情況作一個簡要講解,并介紹其本人在項目中所做的工作。然后讓每個同學說明在整個項目開發過程中自己所完成的任務,并進行演示。教師在其間可以針對每個同學在項目中實際負責的部分進行提問,現場進行評分并計入期末總成績,最后項目組提交系統和設計的總體報告。[5]
四、結束語
基于項目導向的啟發式軟件工程教學模式提高了學生的主動性和積極性,采用理論與實踐相結合、案例講解、項目實踐并重的教學模式能真正讓學生理解掌握基本理論。同時,學生又經歷了軟件開發的全過程,鍛煉了學生對MIS管理系統的分析設計能力、編程測試能力和軟件維護的能力,真正做到了學以致用,有效解決了以往軟件工程教學中存在的理論與實踐嚴重脫節、學生學習興趣不高等教學難題,取得了較好的教學效果。
[ 注 釋 ]
[1] 郁書好,蘇守寶,劉正余,等.基于項目驅動的軟件工程教學模式研究[J].皖西學院學報,2009(10).
[2] Jacob Sukhodolsky.Teaching So ftwar e Eng ineeringTo Under gr aduates[C].Pro ceeding s of the 2003 Int ernationalCo nfer ence o n Informat ion Sy st ems and Eng ineer ing,Montreal,Quebec,Canada pp.165-173,2003.
[3] 秦放等.案例驅動與項目導向結合的軟件工程課程教學模式[J].計算機教育,2013(5).
[4] 趙輝,等.“項目導向案例驅動”的軟件工程教學模式[J].計算機教育,2012(5).
[5] 張海藩.軟件工程導論[M].北京:清華大學出版社,2008:9.
[責任編輯:鐘 嵐]