鄭大鵬+王琳+路良剛



摘 要:基于建構主義認知學說,分析課程融合問題及其研究方法,提出課程融合的綜合方案,具體闡述在軟件工程綜合實訓中穿插軟件開發過程、數據庫設計與管理、軟件測試實踐、系統分析與設計、Web軟件實現技術等理論課程的實施過程,并說明教學效果。
關鍵詞:建構主義;軟件工程;綜合實訓;課程融合
文章編號:1672-5913(2017)07-0135-05
中圖分類號:G642
0 引 言
為了改善應用型軟件工程人才培養現狀,文獻[1]提出一種創新的人才培養模式,這種模式主張在教學計劃中引入長周期的軟件工程綜合實訓。在實訓中,學生以小組為單位完成一個較具規模的項目,并同步學習多門軟件工程課程。文獻[2]對這種綜合實訓的過程和內容進行探討,指出這種綜合性實訓應采用迭代的軟件開發過程并將20周的實踐分為6次迭代,整個過程中學生開展10個領域共30項活動,教師講授軟件開發過程、數據庫設計與管理、軟件測試實踐、系統分析與設計、Web軟件實現(編程)技術等課程的內容。將如此多的課程組合在一起進行教學,究竟教學效果如何,教師又該如何選取各門課程的教學內容并將其合理組織到實訓過程中,這些是我們要探討的問題。
1 課程融合問題及研究方法
按照傳統的課程建設和教學方法,軟件工程的專業知識被組織在多門課程中。各門課程獨立施教,教學內容由課程負責人根據課程目標確定,且各門課程所采用的教學案例也相互獨立,因此學生學習一門課程時,難以與其他課程的內容對照和結合。從建構主義認知理論和實際教學的效果看,采用這種方式進行教學,學生學習起來有困難,學習興趣降低,教學效果不理想。將軟件工程主要學習內容融合在一個大型綜合性實訓中,可以克服上述弊端。學生在綜合實訓中可以邊做項目邊學習,所學知識可以馬上應用于項目中,有利于學生將所學各類知識重新構建,形成自己對軟件工程的認知。在文獻[1—2]所建議的綜合性實訓中,需要融合的內容按照其內聚性可組織為軟件開發過程、數據庫設計與管理、軟件測試實踐、系統分析與設計、Web軟件實現(編程)技術5個模塊。這些模塊所要培養的學生能力見表1。
上述模塊內容與綜合實訓之間的關聯和在時間順序上的穿插,即本文所指的課程融合問題。模塊內容如何選取和安排是該大型綜合性實訓能否成功的關鍵,我們也將重點探討上述課程融合的方案及其合理性和有效性。
我們采用的研究方法是首先根據理論給出融合的原則和具體方案,然后按照方案實際執行,最后通過對比未執行課程融合的綜合實訓調查結果與執行了課程融合的綜合實訓調查結果,分析方案的實際應用效果及合理性。
2 課程融合原則
根據對建構主義認知學說的理解,基于實踐經驗,在考慮軟件工程綜合實訓中的課程融合時,我們主要遵循以下幾項原則。
(1)為了提高學習效率,達到最好的學習效果,知識的學習與應用應該同步,即所學知識應盡可能立即應用到項目開發過程中。這樣做不僅有利于學生準確理解知識,還可以讓他們在實踐中加深對知識的認識,從而做到牢固掌握。因此,軟件工程有關的知識內容應該按照項目開發過程來組織,做到所學即所用,急用先學,學完即用。
(2)教學內容的選取應以項目開發需要為依據,即項目中需要用到哪些知識和技能,就在課程中加入相應的內容;項目開發中不會用到的知識和技能,就排除在課程內容之外。綜合實訓中學習的內容一般不屬于基礎知識,不存在既定的知識體系或完備性要求。如果脫離項目實際需要,而按照選擇的教材照本宣科,效果往往不好。
(3)項目開發案例選取以承載必要的教學內容為宗旨。為了增強學生學習和實踐的效果,課程內容以項目需求為剪裁原則。為了滿足國家軟件工程專業教學指導委員會對本專業的要求,參考國際有關工程專業認證標準,軟件工程綜合實訓的教學內容應該具有一定的目標或最低要求,并且這些目標和要求只能通過選取合適的教學案例和項目開發任務予以實現;如果隨意選擇案例或開發項目,有可能造成實踐內容或理論內容的重要缺失,導致最終不能符合相關組織對軟件工程專業的定義及要求。
(4)區分適合用理論課傳授的顯性知識和只能在工作中感悟和學習的隱性知識。顯性知識作為理論課教學內容進行安排;隱性知識則通過項目開發中的要求、紀律或者指南來體現。例如,如何獲取和識別系統需求、如何文檔化需求等,可以作為系統分析與設計課的內容;如何領導一個項目小組、如何在項目小組中協作等,則比較適合作為項目開發中的要求和指南提出,讓學生自己在實踐中摸索和體會。
(5)對于比較復雜深奧的學習內容,不應采用一次性灌輸的方式,即一開始就將全部內容和要求傾注給學生;相反,可以通過多次迭代,逐步向學生解說有關知識和奧秘,在重復中加強學生對相關內容的理解,便于他們充分理解和牢固掌握。
3 課程融合方案
為了達到實訓目標,我們在綜合實訓中選用的教學案例是一個網上送花電子商務系統,包含了電子商務網站的基本功能,如商品選購、購物車維護、訂單確認、網上支付、訂單查詢、個人信息修改維護等。為了實現網上支付功能,教師預先實現了一個模擬支付網站。支付功能的實現,在數據庫技術方面,需要用到事務處理;在Web編程方面,為了實現電商網站與支付網站的對賬,需要使用Web Services、Windows Services等技術;在分析設計方面,為了適應不同的支付方式,需要考慮使用設計模式。這個案例可以使各門課程的內容達到期望的深度和廣度。本實訓中需要融合各門課程的具體內容如下。
(1)軟件開發過程:小組軟件開發活動,包括每日晨會、周例會和項目專題會;開發團隊建設,包括小組角色分工和角色轉換;每日集成、配置管理、迭代計劃等。
(2)系統分析與設計:業務建模、需求、領域建模、軟件邏輯架構、用例實現(軟件設計)、設計模式、架構文檔等。
(3)數據庫設計與管理:數據庫創建、管理、安全控制、編程等。
(4)軟件測試實踐:測試環境搭建、測試計劃、測試用例編寫、自動化測試、性能測試等。
(5)Web軟件實現(編程)技術:客戶端編程技術,如HTML、CSS、JavaScript、JQuery、Ajax等;ASP.NET、Web服務、Windows服務、.NET框架編程,如加密/解密、反射、屬性等。
為了讓學生實踐迭代開發,我們根據學期實際歷時共19周的現狀,將實訓項目劃分成幾次迭代過程,見表2。
對應以上迭代,按照各次迭代目標和各理論課知識點的內在邏輯,將各門課程的知識點交叉編排,見表3。此課程融合方案具有以下特點。
(1)軟件開發過程課程貫穿始終,但開始以介紹軟件過程為主。課堂上主要學習顯性過程管理知識,如配置管理、計劃、溝通等;而有關團隊協作、角色劃分和角色職責方面的問題,讓學生參考有關資料主要是《小組軟件過程》來體會和學習。
(2)系統分析與設計課是實訓課的主軸,從項目開始到結束,在需要的時候適時講授相關知識。有些知識需要分步多次介紹,逐步深入,如關于軟件架構的內容。
(3)數據庫設計與管理及軟件測試實踐課出現在特定的時間段。前者偏向項目前期,當需要建立數據庫和進行數據庫編程時介紹有關內容;后者偏向項目后期,當程序設計有一定成果時,適時開始測試工作。
(4)有關程序設計的內容按照開發順序和由淺入深的認知順序推進,通過代碼重構,逐步、反復提升各專題編程知識。
4 實施效果
如文獻[3]所述,2014年春季學期,我們針對2011級軟件工程專業.NET技術方向的59名學生實施了基于上述課程融合方案的綜合實訓教學,課后,采用與2013年針對未采用課程融合方案的軟件工程綜合實訓相同的調查問卷對學生進行了調查。在課程結束時,基于學生自愿和匿名原則,由已完成課程答辯的學生填寫調查問卷。問卷由15道學生對課程教學效果的主觀評價問題組成,每道問題的答案有從強烈贊同到強烈反對的5個選項,其中關于融合課程的學習效果主要有以下問題(其他編號的問題與本文討論的課程融合沒有關系,故沒有選取):
2.本課程提高了我的文檔寫作能力;
3.本課程提高了我的編程能力;
4.本課程提高了我的分析設計能力;
5.本課程提高了我的數據庫應用能力;
6.本課程提高了我的軟件開發管理能力;
7.本課程提高了我的軟件測試技能;
8.本課程提高了我的團隊協作能力;
9.本課程讓我理解了團隊中的不同角色。
以上8道問題的調查結果如圖1—圖8所示。2013年的課程未采用課程融合方式,其數據僅作為對照。
從以上結果看出,課程融合后的綜合實訓對學生的編程能力、軟件開發管理能力、團隊協作能力及學生對團隊中角色的認識有顯著提高;對學生的數據庫應用及測試方面能力只是略有提高;對學生的文檔寫作能力亦略有提高,但是在系統分析與設計能力提升上,表示贊同和強烈贊同的學生百分比之和與未進行融合的綜合實訓相比略有降低,究其原因主要是大多數學生將主要精力集中在編程實現方面,而分析設計參考教師提供的案例,基本上不需要花太多精力即可完成。這說明如果綜合實訓中融合的課程太多,由于學生精力有限,即使有的課程十分重要,那么也極有可能被忽略;將系統分析與設計這門重要的專業必修課融合在該實訓中就有此弊端,因此開展后續實踐時應加以調整。
5 結 語
根據課程實際執行效果和課后對參與課程學生的調查,我們認為采用課程融合方法,在進行軟件工程綜合實訓的過程中同步穿插理論課教學,可以獲得較好的教學效果,如軟件開發過程、Web軟件實現技術等課程教學效果較明顯,但是穿插的理論課如果太多,由于學生的學習精力有限,個別重要課程反倒可能被淡化或忽略,因此穿插的課程數量要適度。對于系統分析與設計這樣的核心專業課而言,還是在綜合實訓課開展之前單獨授課較好。
參考文獻:
[1] 鄭大鵬, 林國璋, 張克軍. 一種創新的獨立學院軟件專業人才培養模式[J]. 計算機教育, 2010(8): 1-3.
[2] 鄭大鵬, 肖友清, 張曉燕, 等. 軟件工程綜合實訓軟件過程初探[J]. 計算機教育, 2011(8): 107-110.
[3] 鄭大鵬, 張曉燕, 張申勇. 基于課程融合和企業環境模擬的軟件工程綜合實訓[J]. 計算機教育, 2015(10): 74-77.
(編輯:宋文婷)