(懷化學(xué)院 計(jì)算機(jī)工程系,湖南 懷化 418008)
軟件工程(Software Engineering)課程是大學(xué)本科軟件工程專業(yè)的核心課程,在軟件工程專業(yè)課程教學(xué)中占有重要地位.該課程教學(xué)不僅在于將學(xué)生培養(yǎng)成為具備較好工程技術(shù)能力和深厚基礎(chǔ)知識(shí)的工程師,而且能為其它專業(yè)課程的學(xué)習(xí)打好基礎(chǔ),對(duì)培養(yǎng)學(xué)生的工程實(shí)踐能力、團(tuán)隊(duì)協(xié)作能力及創(chuàng)新能力具有重要作用,其教學(xué)效果直接影響軟件工程專業(yè)的人才培養(yǎng)質(zhì)量.
國(guó)內(nèi)很多高校都開設(shè)了軟件工程專業(yè),為社會(huì)培養(yǎng)軟件人才.但是從整體上看,軟件工程專業(yè)畢業(yè)生的結(jié)構(gòu)性就業(yè)矛盾依然很凸出:有很多軟件工程專業(yè)的畢業(yè)生就業(yè)困難,而軟件企業(yè)卻找不到所需人才.高校培養(yǎng)的畢業(yè)生質(zhì)量與企業(yè)對(duì)人才的需求不符是矛盾的直接原因.但是軟件工程專業(yè)的本科生是軟件企業(yè)未來(lái)的“主力軍”,因此,如何讓學(xué)生在本科階段打下堅(jiān)實(shí)的軟件工程理論基礎(chǔ)并具有一定的工程實(shí)踐能力,是軟件工程課程教學(xué)必須認(rèn)真思考的問題.
將CDIO (Conceive,Design,Implement,Operate)理念引入軟件工程課程教學(xué),是一種全新的工程化教學(xué)模式.它以軟件生命周期為載體,集構(gòu)思(C)、設(shè)計(jì)(D)、實(shí)現(xiàn)(I)和應(yīng)用(O)于一體,讓學(xué)生主動(dòng)地、各階段緊密聯(lián)系地實(shí)踐與學(xué)習(xí),貫穿從構(gòu)思到設(shè)計(jì)、從設(shè)計(jì)到實(shí)現(xiàn)、從實(shí)現(xiàn)到應(yīng)用的全過程,力求解決傳統(tǒng)教學(xué)中重視理論和技術(shù)、輕視實(shí)現(xiàn)與應(yīng)用,或者過于強(qiáng)調(diào)實(shí)踐環(huán)節(jié)、忽視理論、輕視應(yīng)用等問題.軟件工程作為一門研究如何按工程化的原則和方法組織軟件開發(fā)的學(xué)科,理應(yīng)借鑒CDIO 原理,豐富軟件工程教學(xué)的內(nèi)涵與外延[1],培養(yǎng)學(xué)生利用工程化的原則和方法去發(fā)現(xiàn)問題、分析問題和解決問題的能力[2-4].CDIO 教學(xué)模式應(yīng)用于我國(guó)的一些高校,已經(jīng)取得了初步的成果[5-6].本文主要針對(duì)CDIO的首個(gè)環(huán)節(jié)——構(gòu)思在軟件工程教學(xué)過程的運(yùn)用進(jìn)行了探索與實(shí)踐.
軟件工程課程所包含的原理、原則與方法都是實(shí)際項(xiàng)目中其它專業(yè)課程具體應(yīng)用的經(jīng)驗(yàn)總結(jié),掌握了這些原理、原則與方法對(duì)軟件項(xiàng)目的研發(fā)具有重要指導(dǎo)作用.這完全符合“理論來(lái)源于實(shí)踐,反過來(lái)又指導(dǎo)實(shí)踐”的基本哲學(xué)原則.在軟件工程課程教學(xué)過程中,學(xué)生普遍反映該課程內(nèi)容過于抽象,難以理解和消化,課程學(xué)完了,腦子里只殘留了一些模糊的概念,無(wú)法運(yùn)用它指導(dǎo)軟件項(xiàng)目的開發(fā),做實(shí)際項(xiàng)目時(shí)總感覺頭緒不清、無(wú)從著手.這種現(xiàn)象其實(shí)不難理解,因?yàn)檐浖こ淌窃诮鉀Q軟件危機(jī)中產(chǎn)生,軟件危機(jī)是大型軟件系統(tǒng)的建設(shè)(即開發(fā)、運(yùn)行與維護(hù))過程中所面臨的各種影響軟件產(chǎn)品質(zhì)量及項(xiàng)目成敗的矛盾問題,而軟件工程課程重點(diǎn)關(guān)注的是抽象、建模、變更控制、過程管理、質(zhì)量保證、成本與進(jìn)度控制等.學(xué)生如果沒有在大型系統(tǒng)開發(fā)過程中體驗(yàn)過該課程的關(guān)鍵領(lǐng)域知識(shí),則難以理解這些內(nèi)容.另外,如果授課教師也沒有大型系統(tǒng)開發(fā)經(jīng)歷,同樣難以向?qū)W生講清楚這些內(nèi)容.軟件工程課程的特殊性表現(xiàn)如下:
(1)課程較為抽象.軟件工程的理論是對(duì)實(shí)際項(xiàng)目開發(fā)經(jīng)驗(yàn)的提煉和總結(jié),導(dǎo)致很多理論過于抽象.學(xué)生沒有實(shí)際的軟件開發(fā)經(jīng)驗(yàn),更缺少大型項(xiàng)目的經(jīng)歷,因而難以理解.
(2)知識(shí)更新頻繁.軟件工程學(xué)科至今還只有40多年歷史,產(chǎn)學(xué)界在不斷提出最新理論和最佳實(shí)踐,知識(shí)更新快.要有效地結(jié)合課程大綱主線和前沿知識(shí)與技術(shù),并運(yùn)用領(lǐng)域經(jīng)驗(yàn)進(jìn)行授課,對(duì)主講教師提出了較高要求.
(3)內(nèi)容廣、信息量大、知識(shí)體系復(fù)雜.軟件工程發(fā)展至今,提出了許多過程、方法和工具,它的傳統(tǒng)理論與現(xiàn)代業(yè)界主流方法以及學(xué)術(shù)界提出的最新工程理論相互交織,涉及范圍廣、內(nèi)容比較龐雜.在有限的課時(shí)內(nèi),能選擇主流的、適用的、適合本科生的內(nèi)容來(lái)組織教學(xué),也是專業(yè)教師面臨的一個(gè)很大挑戰(zhàn).
因此,如果教師缺乏相關(guān)領(lǐng)域知識(shí),授課案例陳舊、缺少真實(shí)性、創(chuàng)新性不足,則難以激發(fā)學(xué)生的學(xué)習(xí)興趣、達(dá)到理想的教學(xué)效果,從而導(dǎo)致用人單位對(duì)高校培養(yǎng)的軟件人才不滿意.所以,探索軟件工程課程教學(xué)模式、教學(xué)方法、教學(xué)內(nèi)容的改革已然刻不容緩.
現(xiàn)在學(xué)生普遍存在的困惑是:學(xué)校開設(shè)的某些課程到底有什么用,或者學(xué)它用來(lái)干什么?針對(duì)學(xué)生上述疑惑,筆者分別對(duì)我校2010~2012級(jí)計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)、軟件工程專業(yè)的3屆學(xué)生進(jìn)行了專題訪談?wù){(diào)查.整理、匯總了學(xué)生反饋的部分問題,如表1所示.
表1 軟件工程課程教學(xué)情況學(xué)生訪談部分問題反饋表
通過對(duì)表1中問題的認(rèn)真分析,發(fā)現(xiàn)癥結(jié)在于學(xué)生“沒想過要用所學(xué)技術(shù)去做些什么”,不能夠?qū)W以致用.既沒有動(dòng)腦去思考過,又沒有動(dòng)手去實(shí)踐過,當(dāng)然難以理解學(xué)習(xí)這門課程的重要作用.因此,必須首先解決“想做什么”的問題,即想辦法引導(dǎo)學(xué)生去思考自己感興趣的東西,明確“做”的目標(biāo),即在頭腦中構(gòu)思出要完成的項(xiàng)目.如果很好地解決了CDIO 教學(xué)模式的構(gòu)思環(huán)節(jié),其后續(xù)的設(shè)計(jì)、實(shí)現(xiàn)、應(yīng)用各環(huán)節(jié)的實(shí)施自然就能水到渠成,CDIO 工程化教育模式就可以很好地貫徹到軟件工程的教學(xué)過程中以激發(fā)學(xué)生學(xué)習(xí)興趣、提高課程教學(xué)質(zhì)量.
軟件工程課程的內(nèi)容廣,而且相對(duì)抽象,該課程教學(xué)的課時(shí)安排只有48~52課時(shí),內(nèi)容多課時(shí)少的矛盾非常凸出.所以,為了緩解這一矛盾,我們將CDIO構(gòu)思環(huán)節(jié)安排在課外完成,主要采用以下兩種形式:
(1)在課程開始階段,以課外作業(yè)的形式要求學(xué)生獨(dú)立思考,每人完成8~10個(gè)點(diǎn)子.
(2)以3~5人自由組合成小團(tuán)隊(duì),通過課外集體交流、討論共同完成25~40個(gè)點(diǎn)子.
所有點(diǎn)子主要來(lái)源于學(xué)生所熟悉的、利用計(jì)算機(jī)軟件能夠?yàn)槿藗兲峁┍憬莘?wù)的各個(gè)領(lǐng)域,如人們?nèi)粘5纳a(chǎn)、生活、學(xué)習(xí)、工作、娛樂、健康等方面.要求學(xué)生將自己思考的點(diǎn)子形成文檔在規(guī)定的時(shí)間內(nèi)提交,根據(jù)點(diǎn)子質(zhì)量的高低進(jìn)行評(píng)分,計(jì)入平時(shí)作業(yè)成績(jī).全部點(diǎn)子最后匯總形成點(diǎn)子庫(kù),供所有學(xué)生共享.
接下來(lái),再讓興趣相同或相近的學(xué)生自由組隊(duì),2~3人一組,從點(diǎn)子庫(kù)中去整合與發(fā)掘創(chuàng)意,孵化出各組的自主創(chuàng)新項(xiàng)目,為后續(xù)的設(shè)計(jì)、實(shí)現(xiàn)及應(yīng)用環(huán)節(jié)的順利實(shí)施提供基礎(chǔ),以解決“學(xué)生不知道為什么要學(xué)習(xí)這門課程”的問題.
針對(duì)學(xué)生創(chuàng)新思維與能力素質(zhì)的培養(yǎng),教學(xué)過程中構(gòu)思環(huán)節(jié)設(shè)計(jì)的目標(biāo)如下:
(1)有效地調(diào)動(dòng)學(xué)生的思維,想自己喜歡的事情,從而調(diào)動(dòng)起學(xué)生的學(xué)習(xí)興趣和熱情,克服教師布置的題目學(xué)生不能完全理解或者沒有興趣的問題.
(2)以2~3人組隊(duì)完成項(xiàng)目需求分析的全過程,有效鍛煉學(xué)生的團(tuán)隊(duì)意識(shí)以及團(tuán)隊(duì)協(xié)作的能力.
(3)在項(xiàng)目需求分析過程中,提高學(xué)生主動(dòng)探索、尋找新的知識(shí)和技術(shù)解決遇到的實(shí)際問題的能力.
(4)通過項(xiàng)目實(shí)施過程中所需各種技術(shù)的運(yùn)用,帶動(dòng)學(xué)生對(duì)其它專業(yè)課程的學(xué)習(xí).
(5)通過“做中學(xué)”鍛煉能力,彌補(bǔ)學(xué)生項(xiàng)目經(jīng)驗(yàn)的不足,在實(shí)踐中加深對(duì)軟件工程課程內(nèi)容的理解和掌握,為今后的發(fā)展奠定堅(jiān)實(shí)的基礎(chǔ).
(6)在實(shí)踐中培養(yǎng)學(xué)生的綜合能力與素質(zhì),提升未來(lái)就業(yè)的核心競(jìng)爭(zhēng)力.
(7)通過課外反哺課內(nèi),解決課時(shí)安排嚴(yán)重不足的問題.
(8)通過引導(dǎo)和指導(dǎo)學(xué)生課外完成項(xiàng)目,促進(jìn)教師工程能力的提高,改善教學(xué)質(zhì)量.
按照構(gòu)思環(huán)節(jié)的上述設(shè)計(jì)方案與目標(biāo),結(jié)合軟件工程課程教學(xué)計(jì)劃,在最近2 輪的教學(xué)過程中貫徹實(shí)施,取得了初步效果.在匯總的點(diǎn)子庫(kù)中共收集196名學(xué)生1640個(gè)點(diǎn)子,通過對(duì)點(diǎn)子的歸類統(tǒng)計(jì)形成如圖1所示的思維導(dǎo)圖,涉及醫(yī)療、電子、語(yǔ)音、圖像、軟件、物聯(lián)網(wǎng)等眾多領(lǐng)域的主題,每個(gè)主題又細(xì)分為子主題,對(duì)各級(jí)主題涉及的學(xué)生人數(shù)進(jìn)行統(tǒng)計(jì),統(tǒng)計(jì)結(jié)果如表2所示.從圖1與表2中可以看出:
(1)學(xué)生課外構(gòu)思出的100 多個(gè)相關(guān)子主題,表明已有效調(diào)動(dòng)起了學(xué)生的主動(dòng)思維,為引導(dǎo)他們實(shí)現(xiàn)自己的目標(biāo)奠定了基礎(chǔ).另外,對(duì)于這些主題涉及的領(lǐng)域內(nèi)容,教師在有限課時(shí)內(nèi)難以完成講授,甚至還不完全具備所有這些主題的領(lǐng)域知識(shí).
(2)各個(gè)領(lǐng)域被關(guān)注的主題數(shù)與學(xué)生人數(shù)反映出軟件工程方向的學(xué)生跟蹤當(dāng)前主流技術(shù)的現(xiàn)狀,符合學(xué)生實(shí)際情況.比如,“軟件”領(lǐng)域三個(gè)主題中,編譯技術(shù)確實(shí)難度很大,只有2個(gè)子主題被2人關(guān)注;移動(dòng)APP是當(dāng)前熱門技術(shù),有21名學(xué)生關(guān)注;Web 應(yīng)用受到32人關(guān)注,是因?yàn)榛ヂ?lián)網(wǎng)應(yīng)用的廣泛使用,同時(shí)它們也是移動(dòng)APP的數(shù)據(jù)源.另外,關(guān)注“物聯(lián)網(wǎng)”、“語(yǔ)音”領(lǐng)域的學(xué)生人數(shù)明顯多于關(guān)注“電子”、“圖像”領(lǐng)域的人數(shù),這也符合軟件專業(yè)學(xué)生能力層次的實(shí)際情況.
圖1 由點(diǎn)子形成的思維導(dǎo)圖
表2 主題-學(xué)生統(tǒng)計(jì)表
(3)軟件工程課程教學(xué)中CDIO構(gòu)思環(huán)節(jié)的實(shí)施產(chǎn)生了明顯效果,學(xué)生能主動(dòng)思考各領(lǐng)域中可能面臨的實(shí)際問題,選擇自己感興趣的內(nèi)容去實(shí)踐,充分調(diào)動(dòng)起了學(xué)生學(xué)習(xí)的積極性.
此外,CDIO的后續(xù)環(huán)節(jié)產(chǎn)生的效果也很明顯.通過共享點(diǎn)子庫(kù),由2~3個(gè)興趣相同或相近的學(xué)生自由組成團(tuán)隊(duì),整合多個(gè)小點(diǎn)子形成小組創(chuàng)意,孵化出團(tuán)隊(duì)自主創(chuàng)新項(xiàng)目40余項(xiàng),參與的學(xué)生100余人.其中被立項(xiàng)的項(xiàng)目有Google 大學(xué)生創(chuàng)新項(xiàng)目1項(xiàng),湖南省大學(xué)生創(chuàng)新性項(xiàng)目1項(xiàng),懷化學(xué)院大學(xué)生創(chuàng)新性項(xiàng)目10項(xiàng),計(jì)算機(jī)系大學(xué)生創(chuàng)新性項(xiàng)目6項(xiàng).從部分已完成項(xiàng)目情況來(lái)看,學(xué)生作品參加各種課外科技競(jìng)賽活動(dòng)獲省級(jí)以上獎(jiǎng)項(xiàng)20余項(xiàng),其中國(guó)家級(jí)2、3 等獎(jiǎng)3項(xiàng),省級(jí)1、2、3 等獎(jiǎng)17項(xiàng),獲獎(jiǎng)學(xué)生50余人.
實(shí)踐表明,CDIO構(gòu)思環(huán)節(jié)的實(shí)施在軟件工程課程教學(xué)中收到了預(yù)期效果,學(xué)生對(duì)軟件工程課程內(nèi)容的掌握與運(yùn)用效果較理想,軟件開發(fā)與組織能力顯著提高.
通過2年多的實(shí)踐探索,對(duì)軟件工程課程的教學(xué)改革積累了一些經(jīng)驗(yàn)和體會(huì),尤其在CDIO 工程化教學(xué)模式、教學(xué)方法與運(yùn)用的探索方面,提出了融通課內(nèi)與課外教學(xué)、強(qiáng)化了課外實(shí)踐,通過“做中學(xué)”培養(yǎng)創(chuàng)新能力的立體化方法.在軟件工程課程教學(xué)過程中引入CDIO 方法具有重要意義,通過構(gòu)思環(huán)節(jié)引導(dǎo)學(xué)生主動(dòng)思考,明確學(xué)習(xí)目標(biāo),提升學(xué)生在軟件工程方面的學(xué)習(xí)興趣和積極性,為培養(yǎng)學(xué)生實(shí)踐創(chuàng)新能力、提升學(xué)生未來(lái)就業(yè)競(jìng)爭(zhēng)力打下了較好的基礎(chǔ).
[1]李彤,趙娜.軟件工程國(guó)家精品課程建設(shè)的思考與實(shí)踐[J].計(jì)算機(jī)教育,2010 (24):29-32.
[2]查建中.面向經(jīng)濟(jì)全球化的工程教育改革戰(zhàn)略[J].高等教育研究,2008 (1):21-27.
[3]王麗芳.對(duì)軟件工程教學(xué)改革的探究[J].計(jì)算機(jī)教育,2009 (10):26-27.
[4]Crawley E F,Malmqvist J,Ostlund S,et al.Rethinking Engineering Education:The CDIO Approach[M].New York,USA:Springer,2007:8-22,29.
[5]查建中.論“做中學(xué)”戰(zhàn)略下的CDIO 模式[J].高等工程教育研究,2008 (3):1-9.
[6]和薇.CDIO 模式在數(shù)據(jù)結(jié)構(gòu)課程中的運(yùn)用[J].計(jì)算機(jī)教育,2009 (20):122-123.