崔霄+陳明+胡春暉
摘要:高校軟件學(xué)院基于項目驅(qū)動教學(xué)方法中存在的實踐性偏弱、項目實訓(xùn)中文檔過多、項目與軟件工程完整的課程體系的關(guān)聯(lián)不足等問題,探索極限編程理論在項目驅(qū)動沉浸式教學(xué)模式的應(yīng)用。沉浸式教學(xué)方法是一種貫穿軟件工程專業(yè)課程教學(xué)全過程、基于極限編程理論的教學(xué)法。采用極限編程理論,可以使學(xué)生避開枯燥的軟件工程文檔,避免學(xué)生因看不到前期成果而失去興趣。而沉浸式教學(xué)則可以將課程知識點分散在完整項目的各個子項目中,從而提高學(xué)生學(xué)習(xí)效率。
關(guān)鍵詞:極限編程;沉浸式教學(xué);項目驅(qū)動;軟件工程
一、引言
高校工科計算機軟件專業(yè)的本科教學(xué)人才培養(yǎng)目標(biāo)是:培養(yǎng)出具有一定工程實踐能力的高端技能型人才。國內(nèi)高校軟件學(xué)院蓬勃發(fā)展,其發(fā)展方向主要是加強校企聯(lián)合,并積極推進基于項目案例的軟件工程專業(yè)教學(xué)實踐。然而,從企業(yè)反饋的情況來看,軟件學(xué)院畢業(yè)的學(xué)生,其知識和能力與企業(yè)的實際需求還存在一定的落差。
二、當(dāng)前項目驅(qū)動教學(xué)模式分析
(一)項目驅(qū)動教學(xué)模式
項目驅(qū)動教學(xué)(Project Based Teaching) 模式是一種建立在建構(gòu)主義教學(xué)理論基礎(chǔ)之上的教學(xué)方法,同時也是CDIO(Conceive、Implement、Design、Operate,即構(gòu)思、設(shè)計、實現(xiàn)、運行)理念所倡導(dǎo)的教學(xué)模式。與傳統(tǒng)教學(xué)方式不同,項目驅(qū)動教學(xué)模式要求以學(xué)生為中心,培養(yǎng)學(xué)生的積極性、主動性和創(chuàng)新精神,教師在整個教學(xué)過程中,主要起組織和指導(dǎo)的作用。從根本上將傳統(tǒng)課堂上教師“滿堂灌”的教學(xué)方式,轉(zhuǎn)變?yōu)橐詫W(xué)生自主學(xué)習(xí)、獨立分析問題、解決問題為主導(dǎo)的教學(xué)方式。
(二)當(dāng)前項目驅(qū)動教學(xué)存在的問題
當(dāng)前,基于項目驅(qū)動案例教學(xué)主要存在以下問題:第一,重文檔而輕結(jié)果,項目實施過程中文檔過多,學(xué)生在冗長、枯燥的項目文檔編寫過程中,逐漸失去學(xué)習(xí)樂趣和學(xué)習(xí)主動性;第二,弱實踐而重理論,隨著計算機軟件技術(shù)的發(fā)展,教學(xué)實踐項目脫離應(yīng)用背景,學(xué)生雖然能夠理解并基本掌握課程理論知識,但是,在工程實踐中遇到實際問題時卻無處下手;第三,知識點孤立而不系統(tǒng),軟件工程是計算機科學(xué)與技術(shù)方向的一級學(xué)科,需要有相互關(guān)聯(lián)的課程體系來支撐。學(xué)生在學(xué)習(xí)過程中,由于無法建立計算機軟件工程專業(yè)的整體聯(lián)系,對不同課程間的關(guān)聯(lián)理解不夠深入。因此,由于輕視軟件工程、算法設(shè)計等理論指導(dǎo)性課程,重視具體的程序設(shè)計類,造成學(xué)生學(xué)習(xí)缺乏整體感和層次感。
(三)基于極限編程理論的沉浸式教學(xué)模式
針對以上問題,需要不同的解決方案。針對問題一,采用基于極限編程的沉浸式項目驅(qū)動教學(xué)模式,以最快的速度讓學(xué)生看到項目實施結(jié)果,減少前期文檔工作量,提高學(xué)習(xí)興趣;針對問題二,采用基于企業(yè)實際生產(chǎn)環(huán)境部署的項目案例進行教學(xué),理論與實踐相結(jié)合;針對問題三,筆者提出沉浸式教學(xué),即課程進度嵌入子項目中,當(dāng)課程結(jié)束時子項目完成,當(dāng)多門相關(guān)課程結(jié)束則完整項目完成。可以讓學(xué)生在學(xué)習(xí)理論知識的同時,知道如何靈活運用這些理論知識來解決具體的工程問題。
筆者提出的基于極限編程的沉浸式項目驅(qū)動教學(xué)模式,可以貫穿軟件工程專業(yè)學(xué)生的不同課程知識,讓學(xué)生建立起系統(tǒng)、整體的知識結(jié)構(gòu)體系。
三、基于極限編程理論的沉浸式教學(xué)模式
(一)項目驅(qū)動教學(xué)
項目驅(qū)動是以學(xué)生為中心,教師結(jié)合項目案例講解課程知識,引導(dǎo)學(xué)生完成具體項目案例的教學(xué)模式。基于項目驅(qū)動的教學(xué)模式,可以把完整項目劃分成若干個子項目,每個子項目都與這個項目有著密切的關(guān)聯(lián),把課程相關(guān)的知識點融入到這些子項目中,在項目迭代開發(fā)的過程中,加深學(xué)生對課程知識的理解,提高實踐動手能力。
(二)沉浸式教學(xué)
沉浸式教學(xué),即在語言類教學(xué)中,將學(xué)生“浸泡”在目的語言環(huán)境中。筆者借用了“沉浸式”的概念,讓軟件工程專業(yè)的學(xué)生在學(xué)習(xí)中始終“沉浸”在一個具體的項目工程中。學(xué)生在課程學(xué)習(xí)之初、學(xué)習(xí)過程中和學(xué)習(xí)結(jié)束后,始終貫穿著以下幾個問題:本課程在項目開發(fā)過程中能做什么,能解決什么問題等,通過本課程在項目開發(fā)過程中的位置,理解本課程在實際中能解決什么工程問題,從整體上把握軟件工程專業(yè)體系結(jié)構(gòu)。
沉浸式教學(xué)通常運用在語言類、文學(xué)類專業(yè)課程教學(xué)方式中,在這些學(xué)科中已經(jīng)有了大量的研究成果和實踐應(yīng)用,在計算機專業(yè)本科主干理論課中卻很少采用。
筆者提出的沉浸式教學(xué)基本思路是貫穿課程教學(xué)始終,從課程學(xué)習(xí)的初期開始進行沉浸式教學(xué)。教學(xué)過程可以劃分為三種類型:早期浸入式、中期浸入式和晚期浸入式。一般而言,早期浸入式是在本課程開始時,從實際項目中的應(yīng)用開始導(dǎo)入課程的基本概念,闡述項目開發(fā)遇到的問題和本課程所能解決的問題;中期浸入式是指在教學(xué)過程中,以問題驅(qū)動模式來逐漸講解課程章節(jié)內(nèi)容,并逐次解決項目中遇到的問題;晚期浸入式是指在課程結(jié)束時對項目的總結(jié)和課程的復(fù)習(xí)相結(jié)合,使學(xué)生對本課程建立起相對完整的概念,解決學(xué)生對知識應(yīng)用缺乏整體感的問題。
(三)極限編程
Kent Beck在1996 年提出極限編程( Extreme Programming,簡稱XP)的概念,極限編程是一種靈巧、重結(jié)果而輕文檔的軟件開發(fā)方法。XP將任務(wù)、系統(tǒng)細分為可以在較短周期解決的一個個子任務(wù)、子模塊,并且強調(diào)測試、代碼質(zhì)量和及早發(fā)現(xiàn)問題。它將復(fù)雜的開發(fā)過程分解為一個個相對比較簡單的小周期,提高了項目開發(fā)的靈活性。
傳統(tǒng)的軟件開發(fā)工程項目實施過程中,一般都遵循“可行性分析,系統(tǒng)設(shè)計、詳細設(shè)計、項目編碼、系統(tǒng)測試”等一系列步驟,由于最終實現(xiàn)需要長時間分析、建立文檔,而前期的文檔類工作冗長、枯燥,學(xué)生的積極性逐漸降低并失去主動性。XP 這種“短周期,常發(fā)布”的開發(fā)方式,能在較短時間內(nèi)做出系統(tǒng)原型,使得學(xué)生很快看到項目開發(fā)的“成果”,從而提高學(xué)習(xí)積極性,進而主動產(chǎn)生學(xué)習(xí)、開發(fā)、完善項目的興趣。
四、基于極限編程的項目驅(qū)動沉浸式教學(xué)模式分析
(一)項目案例的選擇
一個完整、基于實際應(yīng)用的項目案例,首先應(yīng)該基于企業(yè)實際需求,其次,應(yīng)盡可能涵蓋軟件工程專業(yè)學(xué)科課程體系。項目案例選取,應(yīng)遵循如下原則:
第一,系統(tǒng)性:項目內(nèi)容應(yīng)基本涵蓋軟件工程課程的絕大部分知識點。
第二,實用性:選擇的項目應(yīng)有一定的綜合性、實踐性,即項目選擇應(yīng)基于實際應(yīng)用的項目。
第三,漸進性:項目選擇在實施過程中,應(yīng)該符合軟件工程基本流程,從易到難,逐次推進,項目完成應(yīng)能看到具體的效果。
(二)項目案例與軟件工程學(xué)科群的知識映射
一個符合項目案例選擇系統(tǒng)性原則的項目案例,應(yīng)該在項目實施的不同階段,涵蓋軟件工程教學(xué)課程體系的大部分重要知識點。以企業(yè)ERP系統(tǒng)為例,企業(yè)實施ERP系統(tǒng),需要將企業(yè)資源,如用戶、客戶、外協(xié)商、供貨商、日程、業(yè)務(wù)、出入庫、賬務(wù)、車間制作、員工信息、業(yè)務(wù)溝通和基礎(chǔ)信息等,進行統(tǒng)一管理,系統(tǒng)分別實現(xiàn)客戶端、管理端和移動端。
研究所示的企業(yè)ERP對應(yīng)傳統(tǒng)項目驅(qū)動的教學(xué)方法,分為需求分析、概要和詳細設(shè)計、系統(tǒng)實現(xiàn)、系統(tǒng)測試等?;跇O限編程的項目驅(qū)動沉浸式教學(xué)模型,則省略前期文檔階段,直接開始項目分析和實施,表格說明一個具體的企業(yè)ERP項目案例與軟件工程教學(xué)課程體系的知識映射關(guān)系,本表省略了項目實施部分階段,如系統(tǒng)測試階段。
(三)貫穿項目周期的沉浸式教學(xué)
根據(jù)表格所示,在項目實施的每個階段,都需要軟件工程不同課程的相關(guān)知識,因此,可以將完整的項目分解為多個子項目,子項目可繼續(xù)細化,每一個子項目或更進一步細化的子項目,對應(yīng)軟件工程同一門課程,或不同課程中的不同知識點。因此,這種教學(xué)模式,可以貫穿軟件工程專業(yè)的大部分科目,不同科目,可以通過選擇其中的一個子項目來進行教學(xué)、演示和實訓(xùn)。
教學(xué)過程中將學(xué)生分組實施具體的子項目,引導(dǎo)學(xué)生一步步分析項目,弄清在完成項目的過程中,哪些可以運用已有知識解決,哪些是未知的并提出問題,充分調(diào)動學(xué)生的好奇心和學(xué)習(xí)積極性。
當(dāng)學(xué)生完成本課程體系中的大部分課程時,整個項目也順利完成。由于具體課程教學(xué)需要較為全面的子項目,因此系統(tǒng)基于實際應(yīng)用的完整項目選擇尤其重要。
五、結(jié)論
實施基于極限編程理論下的項目驅(qū)動、沉浸式教學(xué)模型,通過選取貫穿全課程體系的、基于企業(yè)實際應(yīng)用的完整項目案例,用極限編程的思想,忽略部分細節(jié),減少項目文檔工作量,可以讓學(xué)生聚焦主要問題,迅速得到項目實施的結(jié)果。
通過建立課程群知識點與項目之間的映射關(guān)系,把完整項目分解成不同的子項目,建立不同的子目標(biāo)。通過講解、演示每一個子目標(biāo)的具體知識點,可以促進學(xué)生從學(xué)習(xí)知識向提高能力上轉(zhuǎn)化,發(fā)揮學(xué)生創(chuàng)造潛能,從而提高學(xué)生學(xué)習(xí)主動性,培養(yǎng)出更符合社會需求的軟件工程類人才。
參考文獻:
[1]徐雅斌,周維真,施運梅,等.項目驅(qū)動教學(xué)模式的研究與實踐[J].遼寧工業(yè)大學(xué)學(xué)報(社會科學(xué)),2011,(3).
[2]蔡琴,張凱.項目驅(qū)動教學(xué)模式在軟件工程教學(xué)中的應(yīng)用[J].實驗科學(xué)與技術(shù),2014,(4).
[3]殷海明,魏遠旺.極限編程和項目驅(qū)動相結(jié)合的軟件工程教學(xué)方法探究[J].新余學(xué)院學(xué)報, 2012,(3).
[4]唐成華,張瑞霞,張凈.基于認知曲線的項目案例實踐教學(xué)法研究[J].實驗科學(xué)與技術(shù), 2016,(6).
[5]蘇統(tǒng)華,李全龍,涂志瑩,等.校企共建模式的創(chuàng)新實驗課程建設(shè)體系[J].計算機教育, 2017,(8).