王素琴 王新 石敏
摘 要:《軟件工程》課程理論性強(qiáng)、比較抽象,難以理解和掌握。文章采用CDIO和翻轉(zhuǎn)課堂相結(jié)合的教學(xué)模式,將軟件工程的理論教學(xué)和實(shí)踐教學(xué)有機(jī)結(jié)合起來,同步開展課堂教學(xué)和課程設(shè)計(jì)實(shí)踐活動(dòng)。在教學(xué)中采用翻轉(zhuǎn)課堂教學(xué)模式,學(xué)生在課前通過觀看視頻、回答問題等形式學(xué)習(xí)軟件工程的基礎(chǔ)理論知識(shí),在課堂上通過教師講解和分組討論讓學(xué)生深入理解和掌握如何運(yùn)用這些基礎(chǔ)知識(shí)解決實(shí)踐問題。這種教學(xué)模式能夠激發(fā)學(xué)生學(xué)習(xí)興趣,顯著提高《軟件工程》的教學(xué)效果。
關(guān)鍵詞:CDIO;翻轉(zhuǎn)課堂;軟件工程
中圖分類號(hào):G642 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1673-8454(2017)08-0050-03
一、引言
《軟件工程》是指導(dǎo)計(jì)算機(jī)軟件開發(fā)和維護(hù)的工程學(xué)科。軟件人才所需要掌握的系統(tǒng)理論和方法,所需要具備的軟件項(xiàng)目的理解與掌控能力、全面的實(shí)踐開發(fā)能力以及良好的溝通協(xié)調(diào)能力都與《軟件工程》課程的教學(xué)內(nèi)容和教學(xué)目標(biāo)緊密相關(guān),因此《軟件工程》課程在軟件工程專業(yè)人才的培養(yǎng)上具有重要地位。
《軟件工程》教學(xué)內(nèi)容理論性強(qiáng),表面上一看就懂,實(shí)際上很難掌握。近年來,該課程的教學(xué)方法和手段不斷改進(jìn),在教學(xué)效果上有了明顯提高,但仍然存在諸多問題。例如,將基礎(chǔ)理論和方法的學(xué)習(xí)與軟件開發(fā)實(shí)踐割裂開來;在教學(xué)方法上以教師講授為主,忽視了對(duì)學(xué)生積極性、主動(dòng)性、創(chuàng)新性的培養(yǎng);強(qiáng)調(diào)學(xué)生個(gè)人軟件開發(fā)能力的發(fā)展,忽視了團(tuán)隊(duì)協(xié)作精神的培養(yǎng)等。
CDIO[1-3]教育模式是近年來國際工程教育改革的最新成果,CDIO代表構(gòu)思(Conceive)、設(shè)計(jì)(Design)、實(shí)現(xiàn)(Implement)和運(yùn)作(Operate),注重通過實(shí)做來加深對(duì)理論知識(shí)的理解和掌握,培養(yǎng)學(xué)生的創(chuàng)新意識(shí)、項(xiàng)目開發(fā)能力和團(tuán)隊(duì)協(xié)作精神?!盾浖こ獭愤@門課程對(duì)于沒有開發(fā)經(jīng)驗(yàn)的學(xué)生來說枯燥抽象,無法產(chǎn)生共鳴。學(xué)生只有通過實(shí)踐才能理解并掌握其理論知識(shí),才能熟練運(yùn)用相關(guān)工具完成軟件建模和軟件開發(fā)。其次,隨著軟件規(guī)模越來越大,軟件開發(fā)工作必須以團(tuán)隊(duì)形式進(jìn)行,但是很多大學(xué)生都缺乏良好的溝通能力和團(tuán)隊(duì)精神。采用CDIO的教學(xué)模式,學(xué)生以小組形式共同完成軟件開發(fā)任務(wù),必然會(huì)提高學(xué)生的溝通協(xié)調(diào)能力。因此,將CDIO模式引入《軟件工程》課程教學(xué)勢(shì)在必行。
翻轉(zhuǎn)課堂[4-6]是一種新型的教學(xué)模式。傳統(tǒng)情況下,學(xué)生的學(xué)習(xí)過程分為兩個(gè)階段:第一階段是“知識(shí)傳授”,通過教師在課堂上的講解來實(shí)現(xiàn);第二個(gè)階段是“吸收內(nèi)化”,在課后由學(xué)生通過復(fù)習(xí)、寫作業(yè)等形式來實(shí)現(xiàn)?!拔諆?nèi)化”的過程需要靈活運(yùn)用所學(xué)知識(shí)解決問題,相對(duì)于“知識(shí)傳授”階段來講難度更大,但此時(shí)卻缺乏教師的支持和輔導(dǎo),學(xué)生常常感到挫敗,漸漸失去了學(xué)習(xí)動(dòng)力,作業(yè)抄襲成了普遍現(xiàn)象?!胺D(zhuǎn)課堂”對(duì)學(xué)生學(xué)習(xí)過程進(jìn)行了重構(gòu),“知識(shí)傳授”在課前由學(xué)生自主進(jìn)行;“吸收內(nèi)化”是在課堂上通過教師講解和師生互動(dòng)來完成。在學(xué)習(xí)《軟件工程》課程時(shí),學(xué)生普遍感到看書時(shí)仿佛理解了,合上書本后卻什么也沒有留下,說明學(xué)生并沒有掌握軟件工程思想的精髓,知識(shí)的吸收與內(nèi)化沒有做好,需要教師在這一過程中提供及時(shí)的幫助。
因此,在CDIO模式下融入翻轉(zhuǎn)課堂的思想,要求學(xué)生課前完成知識(shí)的了解,課堂上對(duì)學(xué)生理解不了的難點(diǎn)問題重點(diǎn)講解、討論,同時(shí)利用先進(jìn)的實(shí)踐環(huán)境進(jìn)行實(shí)操訓(xùn)練,一定能夠有效提高課程的教學(xué)效果。
二、CDIO教育模式在《軟件工程》課程教學(xué)中的實(shí)施
在以往的教學(xué)中,理論教學(xué)在前十二周進(jìn)行,然后到學(xué)期末尾進(jìn)行軟件工程的課程設(shè)計(jì),為期兩周,這兩部分完全脫節(jié)。在理論教學(xué)中,由于沒有實(shí)踐環(huán)節(jié),學(xué)生單純學(xué)習(xí)理論知識(shí),感覺枯燥乏味,不知所云,學(xué)習(xí)效果差。到了課程設(shè)計(jì)環(huán)節(jié),由于前期沒有打下堅(jiān)實(shí)的理論基礎(chǔ),學(xué)生只是重視代碼的編寫,對(duì)分析和設(shè)計(jì)往往是在課程設(shè)計(jì)驗(yàn)收時(shí)才匆忙寫一寫,應(yīng)付了事,并沒有得到應(yīng)有的訓(xùn)練,沒有領(lǐng)會(huì)軟件工程的思想精髓。
采用CDIO教學(xué)模式后,將《軟件工程》的理論教學(xué)和實(shí)踐教學(xué)有機(jī)地融合在一起,同步進(jìn)行。
1.學(xué)生組建若干個(gè)軟件項(xiàng)目開發(fā)小組
授課之初,將學(xué)生以自愿為原則分成若干組,每組3~5人,確定一名負(fù)責(zé)人,然后大家共同選定一個(gè)軟件開發(fā)項(xiàng)目,這些項(xiàng)目可以由教師指定,也可以由各組同學(xué)按興趣自行選定,教師給出指導(dǎo)意見,確定項(xiàng)目范圍。
2.隨著理論教學(xué)的推進(jìn),同步開展項(xiàng)目實(shí)踐活動(dòng)
軟件開發(fā)分為需求分析、軟件設(shè)計(jì)、編碼和測(cè)試等階段。按照這些階段的先后順序安排教學(xué)內(nèi)容,并同步開展實(shí)踐活動(dòng)。例如,學(xué)習(xí)需求分析時(shí),要求學(xué)生圍繞自己的項(xiàng)目進(jìn)行充分的需求分析,包括查閱資料、實(shí)地調(diào)研和分析建模,并撰寫需求分析文檔。學(xué)習(xí)軟件設(shè)計(jì)時(shí),要求學(xué)生進(jìn)行項(xiàng)目的概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)和設(shè)計(jì)建模,撰寫軟件設(shè)計(jì)文檔。
在開展軟件工程各個(gè)階段的工作時(shí),要求學(xué)生采用業(yè)界常用的軟件建模和開發(fā)工具,例如Enterprise Architect、MyEclipse、Visual Studio等。
3.充分利用課堂教學(xué)和課程設(shè)計(jì)之間的空檔時(shí)間進(jìn)行軟件編碼
軟件工程理論教學(xué)結(jié)束后和課程設(shè)計(jì)開始前的這段時(shí)間是編碼階段的工作時(shí)間,每個(gè)項(xiàng)目組根據(jù)之前的分析和設(shè)計(jì)結(jié)果,選擇程序設(shè)計(jì)語言和開發(fā)工具進(jìn)行編碼工作,實(shí)現(xiàn)系統(tǒng)的核心部分。
4.在課程設(shè)計(jì)時(shí)間段進(jìn)行軟件測(cè)試,編寫課設(shè)報(bào)告
在軟件工程課程設(shè)計(jì)的兩周時(shí)間里,采用人工測(cè)試和機(jī)器測(cè)試相結(jié)合的方法進(jìn)行軟件測(cè)試,記錄整個(gè)測(cè)試過程,包括測(cè)試用例和測(cè)試結(jié)果,形成測(cè)試報(bào)告。最后,根據(jù)課程設(shè)計(jì)文檔的要求撰寫課程設(shè)計(jì)報(bào)告。
采用這種教學(xué)模式,在理論教學(xué)中采用案例教學(xué)方式,讓學(xué)生直觀地感受軟件工程的基本原理與方法;在課程設(shè)計(jì)中,通過動(dòng)手實(shí)踐使學(xué)生深入理解和掌握軟件工程的基本原理與方法;通過研究性和探索性學(xué)習(xí)進(jìn)行課題研究等形式,培養(yǎng)學(xué)生的研究能力和創(chuàng)新精神。
在實(shí)施CDIO教學(xué)模式時(shí)應(yīng)該注意的是,學(xué)生的實(shí)踐活動(dòng)不應(yīng)該著眼于一個(gè)個(gè)孤立的小任務(wù),而應(yīng)該定位在一個(gè)完整的項(xiàng)目上,隨著課程內(nèi)容的進(jìn)展,一步步地完成軟件項(xiàng)目的各個(gè)階段任務(wù)。這部分的難點(diǎn)在于項(xiàng)目規(guī)模的控制,項(xiàng)目過小學(xué)生無法體會(huì)軟件工程的重要性,項(xiàng)目過大會(huì)占用學(xué)生過多的時(shí)間。可行的方法是將一個(gè)規(guī)模較大的軟件項(xiàng)目劃分成若干個(gè)子系統(tǒng),每個(gè)小組負(fù)責(zé)一個(gè)子系統(tǒng)的研發(fā),各個(gè)小組之間分工合作、協(xié)調(diào)配合。在實(shí)踐過程中,一定會(huì)遇到各種各樣的問題甚至是失敗,正是這些問題和失敗使學(xué)生充分認(rèn)識(shí)到軟件工程方法的重要作用。
三、翻轉(zhuǎn)課堂在《軟件工程》課程教學(xué)中的應(yīng)用
1.翻轉(zhuǎn)課堂網(wǎng)絡(luò)教學(xué)系統(tǒng)
實(shí)行翻轉(zhuǎn)課堂教學(xué)需要一個(gè)教學(xué)軟件系統(tǒng)的支持,現(xiàn)在有很多軟件公司都提供了功能豐富、使用方便的教學(xué)系統(tǒng)。如果要實(shí)現(xiàn)特定的要求,可以自行開發(fā)。軟件工程教學(xué)系統(tǒng)運(yùn)用Java Web技術(shù)基于SSH框架開發(fā),分為數(shù)據(jù)訪問層、業(yè)務(wù)邏輯層和表示層,其體系結(jié)構(gòu)如圖1所示。使用本系統(tǒng),學(xué)生可以方便地查看教師的任務(wù)單、觀看視頻、與教師進(jìn)行交互和提交文檔和作業(yè)等,教師可以發(fā)布任務(wù)單、上傳視頻、及時(shí)了解和掌握學(xué)生學(xué)習(xí)的情況以調(diào)整授課策略。
2.確定適合翻轉(zhuǎn)課堂教學(xué)模式的教學(xué)內(nèi)容
本科的《軟件工程》教學(xué)主要講述傳統(tǒng)的軟件開發(fā)方法和面向?qū)ο蟮能浖_發(fā)方法,適合翻轉(zhuǎn)課堂模式的教學(xué)內(nèi)容比較多,如結(jié)構(gòu)化分析、結(jié)構(gòu)化設(shè)計(jì)、面向?qū)ο蠓治龊兔嫦驅(qū)ο笤O(shè)計(jì)等。這些內(nèi)容都包含了建模技術(shù)的學(xué)習(xí),如UML等,這些技術(shù)及其工具都比較簡(jiǎn)單,容易掌握,難的是如何將這些技術(shù)應(yīng)用到具體的軟件項(xiàng)目分析與設(shè)計(jì)中。因此,將建模技術(shù)的學(xué)習(xí)放在課前通過觀看視頻進(jìn)行,將較難掌握的分析和設(shè)計(jì)方法結(jié)合具體項(xiàng)目在課堂教學(xué)中展開,通過師生之間的交流討論,使學(xué)生能夠?qū)@些理論和方法有更深刻的理解和掌握。
3.制作教學(xué)視頻
教學(xué)視頻是實(shí)現(xiàn)翻轉(zhuǎn)課堂的基礎(chǔ)和前提。教學(xué)視頻的制作,需要一個(gè)功能強(qiáng)大的視頻制作軟件,例如Camtasia Studio、OBS Studio等。視頻內(nèi)容要求體現(xiàn)重點(diǎn)和難點(diǎn),將時(shí)間控制在20分鐘以內(nèi)??梢郧‘?dāng)使用背景音樂來營(yíng)造良好的學(xué)習(xí)氛圍。視頻畫面要求簡(jiǎn)潔清晰,富于變化。在視頻中最好有一些分析和推導(dǎo)過程,教師通過手寫板等工具對(duì)重點(diǎn)內(nèi)容進(jìn)行勾畫并配以細(xì)致的講解,吸引學(xué)生的注意力。教師的影像可以出現(xiàn)在畫面中,增強(qiáng)面對(duì)面進(jìn)行交互的感覺。在視頻中放置一些問題,學(xué)生回答后才可繼續(xù)觀看視頻,這一方面能夠引導(dǎo)學(xué)生總結(jié)和思考,另一方面能使教師了解學(xué)生對(duì)知識(shí)的理解和掌握程度,從而更好地安排后續(xù)的課堂教學(xué)內(nèi)容。
4.課堂教學(xué)
在課堂教學(xué)中,教師首先針對(duì)學(xué)生課前提出的問題和學(xué)習(xí)任務(wù)單完成的情況,有針對(duì)性地講解相關(guān)知識(shí)點(diǎn)。然后以一個(gè)實(shí)際的軟件開發(fā)項(xiàng)目的分析或設(shè)計(jì)為目標(biāo)組織學(xué)生分組討論。在此過程中,教師可以參加各組的討論并進(jìn)行答疑,對(duì)存在的共性問題統(tǒng)一講解[7]。最后,隨機(jī)抽取2~3組學(xué)生匯報(bào)其工作成果,并請(qǐng)其他組的同學(xué)發(fā)現(xiàn)存在的問題,然后教師再對(duì)這些問題進(jìn)行點(diǎn)評(píng),提供更多有針對(duì)性的幫助。
5.反饋與評(píng)價(jià)
教師根據(jù)學(xué)生掌握知識(shí)的情況以及反饋的各種意見,總結(jié)教學(xué)環(huán)節(jié)存在的不足,以此調(diào)整教學(xué)內(nèi)容和教學(xué)方式。教師在評(píng)價(jià)學(xué)生時(shí)主要考慮兩方面,一是根據(jù)學(xué)生觀看視頻、回答問題的情況以及在網(wǎng)上交流的情況;二是根據(jù)學(xué)生在課堂上的表現(xiàn),包括學(xué)生所負(fù)責(zé)工作的難度和工作量,在組里的參與程度,和教師、其他學(xué)生的互動(dòng)情況等。教師將評(píng)估結(jié)果及時(shí)反饋給學(xué)生,促使學(xué)生發(fā)現(xiàn)自身存在的問題,不斷進(jìn)步。
四、結(jié)束語
通過在《軟件工程》課程中實(shí)施CDIO和翻轉(zhuǎn)課堂相結(jié)合的教學(xué)模式,解決了傳統(tǒng)教學(xué)模式的缺點(diǎn),使學(xué)生成為主動(dòng)的參與者,激發(fā)了學(xué)生的學(xué)習(xí)興趣,發(fā)揮了學(xué)生的主觀能動(dòng)性,更有效的促進(jìn)學(xué)生對(duì)知識(shí)的內(nèi)化,教學(xué)效果得到了顯著提高。不過,翻轉(zhuǎn)課堂教學(xué)模式要求學(xué)生必須進(jìn)行課前自學(xué),否則教學(xué)效果很差,如何保證學(xué)生能夠自覺地學(xué)習(xí)需要進(jìn)一步探索。
參考文獻(xiàn):
[1]李彤,趙娜.基于CDIO的軟件工程國家精品課程建設(shè)[J].計(jì)算機(jī)教育,2012(1):14-19.
[2]韓智,張振虹,李興娟.基于CDIO 理念的軟件工程課程教學(xué)改革[J].計(jì)算機(jī)教育,2010(11):56-59.
[3]汪軍,強(qiáng)俊.基于CDIO理念的軟件工程專業(yè)人才培養(yǎng)模式的研究[J].重慶工商大學(xué)學(xué)報(bào)(自然科學(xué)版),2015(6):70-74.
[4]宋朝霞,俞啟定.基于翻轉(zhuǎn)課堂的項(xiàng)目式教學(xué)模式研究[J].遠(yuǎn)程教育雜志,2014(1):96-104.
[5]曾明星,周清平,蔡國民等.軟件開發(fā)類課程翻轉(zhuǎn)課堂教學(xué)模式研究[J].實(shí)驗(yàn)室研究與探索,2014(2):203-209.
[6]趙興龍.翻轉(zhuǎn)課堂中知識(shí)內(nèi)化過程及教學(xué)模式設(shè)計(jì)[J].現(xiàn)代遠(yuǎn)程教育研究,2014(2):55-61.(編輯:魯利瑞)