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