徐傳運,張 楊,涂 飛,王 森,龍 華,張小川
(1.重慶理工大學(xué) 計算機科學(xué)與工程學(xué)院, 重慶 400054;2.重慶師范大學(xué) 計算機與信息科學(xué)學(xué)院,重慶 400030)
?
【博士論壇】
CDIO驅(qū)動的軟件工程課程案例庫建設(shè)研究
徐傳運1,張 楊2,涂 飛1,王 森1,龍 華1,張小川1
(1.重慶理工大學(xué) 計算機科學(xué)與工程學(xué)院, 重慶 400054;2.重慶師范大學(xué) 計算機與信息科學(xué)學(xué)院,重慶 400030)
針對軟件工程教學(xué)過程中理論與實踐分離、離散的知識學(xué)習(xí)與綜合的軟件系統(tǒng)開發(fā)能力相矛盾、當(dāng)前案例偏于輔助理解理論而輕于能力培養(yǎng)、課程組織順序與軟件工程實踐順序不一致等問題,基于CDIO思想的軟件工程課程案例設(shè)計階梯模型,提出CDIO驅(qū)動的課程案例庫建設(shè)方案,并以軟件工程課程案例庫為依托開展了專業(yè)課程教學(xué)方法的綜合改革。
CDIO;階梯模型;課程案例庫;軟件工程
作為一個新近發(fā)展起來的專業(yè),軟件工程專業(yè)在學(xué)生培養(yǎng)理論、方法、實踐等方面國內(nèi)外都處于探索階段,相關(guān)的教育實體都以自己的教學(xué)實踐,在探索行之有效的教學(xué)方法[1-14]。
當(dāng)前軟件工程課程教學(xué)中普遍存在以下4種主要問題:
(1)理論教學(xué)與實踐教學(xué)分離:即理論知識脫離工程實踐,導(dǎo)致學(xué)生在實踐時迷茫、蠻干、低效、質(zhì)量低、不規(guī)范、不可控;具體實踐沒有結(jié)合理論,導(dǎo)致學(xué)生只能算是“工匠”,無法在實踐中去驗證、理解和提升理論,只能完成小工程,難以勝任大工程。
(2)離散的知識學(xué)習(xí)與軟件系統(tǒng)開發(fā)必需的綜合能力相矛盾:當(dāng)前軟件工程課程體系通常分為基礎(chǔ)課、專業(yè)基礎(chǔ)課、專業(yè)課幾個層次,每門課程都各自為中心的講授理論、開設(shè)驗課,而沒有把提高學(xué)生的軟件項目開發(fā)能力直接聯(lián)系起來,致使學(xué)生即使每門課都學(xué)得很好,但仍然存在不能開發(fā)軟件系統(tǒng)的問題。
(3)當(dāng)前案例的目標(biāo)偏向輔助理解理論而輕于能力培養(yǎng):當(dāng)前的軟件工程案例通常只與單門課程配套,大部分是針對單個知識點設(shè)計(為了學(xué)生更好地理解知識點),而與軟件工程專業(yè)最終的教學(xué)目標(biāo)(培養(yǎng)學(xué)生的軟件系統(tǒng)開發(fā)能力)較少有直接的關(guān)聯(lián)。
(4)教學(xué)課程的組織順序與軟件工程實踐順序不一致:軟件工程專業(yè)的教學(xué)課程是根據(jù)軟件工程知識結(jié)構(gòu)的內(nèi)在關(guān)系進行組織的(即從基礎(chǔ)到專業(yè),從先導(dǎo)到后續(xù)的順序),但軟件工程實踐是按照軟件系統(tǒng)開發(fā)活動的先后(即主要的順序是系統(tǒng)分析、設(shè)計、實現(xiàn)、測試、發(fā)布、實施)。然而,如果軟件工程教學(xué)直接從實現(xiàn)技術(shù)(即程序設(shè)計,主要涉及C語言程序設(shè)計、JAVA語言程序設(shè)計、數(shù)據(jù)結(jié)構(gòu)等課程)開始,必將導(dǎo)致學(xué)生在學(xué)習(xí)了程序設(shè)計的基本能力之后需要進行較大規(guī)模的程序設(shè)計實踐,但較大規(guī)模的程序又需要系統(tǒng)分析與設(shè)計的綜合能力(而此時學(xué)生還不具備這樣的素質(zhì)和能力),最終使得學(xué)生的程序設(shè)計能力沒有得到實質(zhì)的鍛煉和有效的提升。
以上4種問題的本質(zhì)在于:理論知識的傳統(tǒng)學(xué)習(xí)軌跡(先搞清楚基本原理,再動手實施)與工程實踐的具體操作流程(先動手做,實踐過程中發(fā)現(xiàn)問題,再思考解決方案)正好相反,因此應(yīng)該將其組合成環(huán)環(huán)相扣的階梯模型,其核心思想為:軟件工程專業(yè)培養(yǎng)從基礎(chǔ)技能的原理性課程啟程,快速學(xué)習(xí)后就進入運用所學(xué)理論知識的虛擬項目中實踐;學(xué)生在具體的項目開發(fā)中發(fā)現(xiàn)其對理論知識的理解和基礎(chǔ)技能的使用存在的種種問題,再進一步學(xué)習(xí)訓(xùn)練專業(yè)技能的理論和實踐課程,以完善其專業(yè)技能和職業(yè)素養(yǎng);周而循環(huán),在專業(yè)技能實踐環(huán)節(jié)中發(fā)現(xiàn)的自身不足,有機會在研習(xí)綜合設(shè)計類課程的時候進行修正,而綜合素質(zhì)的欠缺還能夠在最后的創(chuàng)新創(chuàng)業(yè)環(huán)節(jié)中彌補。
基于CDIO的軟件工程課程案例庫建設(shè),以及基于此的教學(xué)方法改革是一種行之有效的解決方案。CDIO代表構(gòu)思(Conceive)、設(shè)計(Design)、實現(xiàn)(Implement)和運作(Operate),以產(chǎn)品研發(fā)到產(chǎn)品運行的生命周期為載體,將工程畢業(yè)生的能力分為工程基礎(chǔ)知識、個人能力、人際團隊能力和工程系統(tǒng)能力4個層面,讓學(xué)生以主動的、付諸實踐的,且將相關(guān)課程加以有機聯(lián)系的方式學(xué)習(xí)軟件工程。基于CDIO的基本思想,本文原創(chuàng)性地提出“CDIO”(即IDCO,代表實現(xiàn)(Implement)、設(shè)計(Design)、構(gòu)思(Conceive)和運作(Operate))這一概念,用以實現(xiàn)如圖1所示的軟件工程課程案例設(shè)計模型。
在任何理論尚未完全成熟的專業(yè)領(lǐng)域,案例教學(xué)法是把理論與實踐結(jié)合的有效方法。比如古代建筑業(yè)理論尚不成熟的時候,“師傅帶徒弟”參與建筑項目就是最優(yōu)的人才培養(yǎng)模式。本文所建設(shè)的課程案例庫,就是讓軟件工程專業(yè)的學(xué)生有機會在各類課程教師的全程指導(dǎo)下充分參與到各個層次的案例項目中,通過一個個具體的軟件案例,分階段地逐步掌握軟件工程開發(fā)所需的思維模式和綜合能力。
CDIO驅(qū)動的軟件工程課程案例庫建設(shè)總體思路為:
(1)多渠道收集切實可行的項目案例,把多門課程的多個知識點有機融入到同一個項目案例中,對課程案例庫中的所有項目案例進行有利于技能培養(yǎng)的改造。各門課程在講授理論時,以解決案例中相關(guān)子問題作為教學(xué)目標(biāo)之一。完成一系列相關(guān)課程后,學(xué)生就能徹底解決和充分理解項目案例中所有子問題,就能開發(fā)項目案例所依托的軟件系統(tǒng),從而把多門課程的相關(guān)知識點在項目案例的全程引導(dǎo)下有機結(jié)合起來。
(2)以培養(yǎng)學(xué)生軟件系統(tǒng)開發(fā)綜合能力為中心建設(shè)軟件工程課程案例庫,在項目案例的基礎(chǔ)上設(shè)計針對單門課程的課程案例,每個課程案例都服務(wù)于學(xué)生軟件系統(tǒng)開發(fā)能力的提高。例如:設(shè)計“公務(wù)員招聘報名系統(tǒng)”項目案例,該項目案例涉及到所有專業(yè)基礎(chǔ)課和專業(yè)核心課,比如“數(shù)據(jù)庫原理及應(yīng)用”這門課的課程案例就是“公務(wù)員招聘報名系統(tǒng)”的數(shù)據(jù)庫設(shè)計部分,其培養(yǎng)目標(biāo)就是提高學(xué)生軟件系統(tǒng)的數(shù)據(jù)設(shè)計能力。
(3)基于CDIO設(shè)計軟件工程綜合案例庫,其中項目案例的每一個階段都可以獨立抽取出來作為課程案例,而課程案例所需的理論知識由其所屬課程提供。例如:在設(shè)計“JAVA程序設(shè)計”的課程案例時,指導(dǎo)教師應(yīng)該提供系統(tǒng)分析、設(shè)計、數(shù)據(jù)設(shè)計的相關(guān)內(nèi)容,學(xué)生僅需要根據(jù)案例提供的內(nèi)容編程實現(xiàn)相應(yīng)的軟件系統(tǒng)。
基于CDIO的基本思想,分階段設(shè)置基礎(chǔ)型(培養(yǎng)學(xué)生基礎(chǔ)知識的應(yīng)用能力)、設(shè)計型(養(yǎng)學(xué)生綜合運用知識的軟件開發(fā)能力)、綜合/探究型(培養(yǎng)學(xué)生的綜合設(shè)計能力)、創(chuàng)新創(chuàng)業(yè)型(培養(yǎng)學(xué)生項目研發(fā)能力)4個層次的課程案例和項目案例,把學(xué)科建設(shè)成果轉(zhuǎn)化為本科教學(xué)的優(yōu)質(zhì)資源,實現(xiàn)從驗證型向技能型、從單一知識點向復(fù)合知識點的轉(zhuǎn)變,打造多層次合理遞進、各階段無縫連接的培養(yǎng)模式。
基于上述思想,CDIO驅(qū)動的軟件工程課程案例庫的核心工作主要分為兩個方面:
(1)案例建設(shè)。案例庫中的項目案例和課程案例:首先是一個基本的軟件系統(tǒng),建設(shè)時盡量讓案例保持普通軟件系統(tǒng)本就具有的所有特性,盡量讓系統(tǒng)與真實的商用系統(tǒng)一致;其次是一個經(jīng)過精心設(shè)計、與教學(xué)內(nèi)容和教學(xué)過程緊密結(jié)合的軟件系統(tǒng),應(yīng)該在確保前一點的基礎(chǔ)上,對案例進行適當(dāng)而不失本真的改造,使其能有效應(yīng)用于具體的教學(xué)過程中。
(2)案例系統(tǒng)的開發(fā),即開發(fā)用于案例教學(xué)的軟件系統(tǒng)本身。為了保持普通商用系統(tǒng)的基本特性、開發(fā)過程、開發(fā)方法,應(yīng)該使用普通商用系統(tǒng)的開發(fā)工具讓學(xué)生能經(jīng)歷真實軟件產(chǎn)品的構(gòu)思、設(shè)計、實現(xiàn)和運作全過程,使得案例系統(tǒng)的開發(fā)與普通的軟件系統(tǒng)的開發(fā)沒有本質(zhì)的不同。但是作為一個用于本科教學(xué)的軟件系統(tǒng)樣本,案例特別強調(diào)開發(fā)的規(guī)范化、正統(tǒng)化、標(biāo)準(zhǔn)化,理論、技術(shù)、方法、工具的先進性以及開發(fā)過程、開發(fā)結(jié)果的高質(zhì)量,因此在商用軟件開發(fā)過程中經(jīng)常存在的、違背理論的靈活變通處理方法,以及根據(jù)特定情況而采用的、違背規(guī)范化和標(biāo)準(zhǔn)化的小技巧都不應(yīng)該出現(xiàn)在案例庫中。
軟件工程課程案例庫中軟件系統(tǒng)的具體內(nèi)容應(yīng)該包括9個方面的內(nèi)容:即軟件系統(tǒng)的背景、軟件系統(tǒng)的需求材料、軟件系統(tǒng)的需求分析報告、軟件系統(tǒng)的設(shè)計(包括:概要設(shè)計、數(shù)據(jù)庫設(shè)計、交互設(shè)計、詳細(xì)設(shè)計等)、軟件系統(tǒng)的實現(xiàn)(包括:模板數(shù)據(jù)庫、可執(zhí)行的程序、代碼、)、軟件系統(tǒng)的測試設(shè)計、軟件系統(tǒng)的測試報告、軟件系統(tǒng)的部署指南和軟件系統(tǒng)的操作手冊。而軟件工程課程案例庫主要包含3個方面的建設(shè)結(jié)果:即案例的知識點設(shè)置設(shè)計、案例的教學(xué)使用指南和案例的學(xué)習(xí)指南。
軟件系統(tǒng)案例為面向案例的教學(xué)提供了基礎(chǔ),而案例的合理使用,需要把理論教學(xué)、實踐教學(xué)與案例緊密結(jié)合;案例價值的充分發(fā)揮,需要采用與之相適應(yīng)的教學(xué)方法。在傳統(tǒng)教學(xué)中,每門課程只需要完成課程規(guī)定的教學(xué)目標(biāo),而基于CDIO理念的跨課程案例驅(qū)動的一體化教學(xué),要求軟件工程的所有課程必須相互配合、相互支撐,共同服務(wù)于學(xué)生軟件系統(tǒng)研發(fā)能力的全面培養(yǎng)。因此,要求教師必須對教學(xué)案例有充分理解、對其他課程的內(nèi)容有所了解,才能在教學(xué)重點和教學(xué)方式上與其他相關(guān)課程相互配合,同時也要求教師與時俱進地提升基本技能、人際能力以及產(chǎn)品、過程和系統(tǒng)構(gòu)建能力。
由此可知,基于課程案例庫的教學(xué)改革重點在于:充分調(diào)動相關(guān)教師參與軟件工程教學(xué)改革的主動性和積極性,強化各任課教師綜合運用案例系統(tǒng)的能力,進而提高專業(yè)教師的軟件產(chǎn)品研發(fā)水平。
CDIO驅(qū)動的軟件系統(tǒng)案例庫建設(shè)以及軟件工程專業(yè)課程教學(xué)方法研究的特色與創(chuàng)新之處在于:
(1)以層次化的課程設(shè)計階梯模型作為軟件工程專業(yè)踐行CDIO理念的突破口。本文以層次化的課程設(shè)計階梯模型為中心和紐帶,把軟件工程的專業(yè)課程緊密聯(lián)系起來,形成CDIO要求的一體化課程體系,達(dá)到CDIO要求學(xué)生具備的工程基礎(chǔ)知識、個人能力、人際團隊能力和工程系統(tǒng)能力等4個層次能力的目標(biāo)。
(2)逆向CDIO驅(qū)動的課程案例庫建設(shè)。傳統(tǒng)的案例建設(shè)多以單門課程為依托,輔助單個知識點的理解、培養(yǎng)學(xué)生單個方面的能力,這種方式不利于培養(yǎng)學(xué)生開發(fā)軟件產(chǎn)品的綜合能力,導(dǎo)致學(xué)生每一種技術(shù)都了解,但就是不能開發(fā)出完整的軟件產(chǎn)品。本文以培養(yǎng)學(xué)生的軟件產(chǎn)品研發(fā)綜合能力為目標(biāo),從基礎(chǔ)性技能的培養(yǎng)入手、逐層遞進,把相關(guān)課程的關(guān)聯(lián)知識點結(jié)合到同一個案例中,有利于學(xué)生理解理論知識,并綜合運用這些知識分析、解決實際問題,最終開發(fā)出完整的軟件產(chǎn)品。
(3)通過項目案例和課程案例把理論教學(xué)與實踐教學(xué)充分結(jié)合。理論與實踐分離一直軟件工程教學(xué)中存在的問題,本文以項目案例和課程案例為媒介,把二者有機結(jié)合起來(把理論知識融入到案例中有助于學(xué)生理解抽象的理念知識,在理論知識指導(dǎo)下建立案例有助于學(xué)生科學(xué)、系統(tǒng)地實踐)。
[1] 林芳,陳慶強,楊榮華.基于工程能力培養(yǎng)的軟件工程專業(yè)實踐體系構(gòu)建[J].計算機教育,2015(15):62-65.
[2] 李彤,張璇,王旭,等.SE-CDIO工程教育模式的探索與實踐[J].高等工程教育研究,2014(1):52-57.
[3] 張培穎,鄭秋梅,宮法明,等.CDIO工程教育模式在軟件工程核心課程教學(xué)中的應(yīng)用[J].教育探索,2014(12):21-22.
[4] 宗欣露,徐慧.基于CDIO教育模式的軟件工程課程教學(xué)改革[J].教育教學(xué)論壇,2015(4):96-97.
[5] 呂慶文,曹蕾,李遠(yuǎn)念,等.基于CDIO模式培養(yǎng)復(fù)合型卓越軟件工程師的探索[J].高教探索,2013(1):71-76.
[6] 林連南,左寶河,劉嘉偉.“三位一體”的卓越軟件工程師培養(yǎng)模式 [J].計算機教育,2015(2):1-4.
[7] 喬付,王國權(quán).CDIO 理念下軟件工程專業(yè)課程群建設(shè)探索[J].廣西教育,2011(1):37-38.
[8] 李春英,湯志康.CDIO模式下的軟件工程課程設(shè)計實踐[J].實驗技術(shù)與管理,2011,28(1):173-175.
[9] 趙楷,張琳琳.基于CDIO的《軟件工程》實踐課程教學(xué)改革與探索[J].現(xiàn)代計算機,2012(9):31-36.
[10]孫凌宇,冷明,郭晨,等.基于CDIO的創(chuàng)新型軟件工程人才培養(yǎng)模式研究[J].山西財經(jīng)大學(xué)學(xué)報,2011,33(1):239-240.
[11]才智,張學(xué)金.基于 CDIO 模式的軟件工程課程群教學(xué)改革[C].Third International Conference on Education Technology and Training (ETT).2010.
[12]朱廣萍,柳益君,葉飛躍,等.基于崗位能力的軟件工程專業(yè)實踐能力培養(yǎng)研究[J].江蘇理工學(xué)院學(xué)報,2014(6):86-92.
[13]盧瑩,莊麗華.基于CDIO工程教育理念的軟件工程實踐教學(xué)改革[J].教育教學(xué)論壇,2015(28):102-104.
[14]張淑麗,劉勝輝,張宏國.軟件工程 CDIO 綜合訓(xùn)練項目設(shè)計與執(zhí)行研究[J].黑龍江教育(高教研究與評估),2011(10).
(責(zé)任編輯周江川)
重慶市研究生教改項目”工程碩士研究生創(chuàng)新教學(xué)模式的探索與實踐”(yjg143053);重慶市教改項目“軟件工程專業(yè)實踐教學(xué)體系的構(gòu)建與實踐”(133021);重慶師范大學(xué)高等教育教學(xué)改革研究項目(201403);重慶市教委科學(xué)技術(shù)研究項目(KJ1400525)
徐傳運(1979—),男,副教授,博士,研究方向:軟件工程、人工智能。
10.13769/j.cnki.cn50-1011/d.2016.12.009
徐傳運,張楊,涂飛,等.CDIO驅(qū)動的軟件工程課程案例庫建設(shè)研究[J].重慶與世界,2016(12):28-30.
G642
A
1007-7111(2016)12-0028-03