潘理虎,解 丹,張 雷,陳立潮,趙淑芳
(太原科技大學(xué) 計算機科學(xué)與技術(shù)學(xué)院,山西 太原 030024)
在計算機科學(xué)技術(shù)快速發(fā)展的過程中,新的技術(shù)和理論被越來越多的學(xué)者及專業(yè)人員提出,這使得軟件工程課程的知識點也隨之增多[1]。目前,軟件工程課程的教學(xué)內(nèi)容大多還停留在傳統(tǒng)的技術(shù)和方法上,并且多年來使用同一教學(xué)大綱和評價體系。這種長期不進(jìn)行更新的教學(xué)方法使得軟件工程課程在內(nèi)容的數(shù)量和質(zhì)量上均不能緊跟社會發(fā)展。由于沒有實際應(yīng)用項目,學(xué)生只能是紙上談兵,很難深刻理解軟件工程課程中的一些抽象概念,且學(xué)到的知識也很容易遺忘,因而難以很好地掌握軟件工程的方法和技術(shù)。
由于軟件工程課程的綜合性較強,教師為了讓學(xué)生充分理解知識點,大多采用以幻燈片為主,以板書為輔的教學(xué)方式。教師為主講者,而學(xué)生為聆聽者[2]。這種情況下,面對復(fù)雜、枯燥的知識點,學(xué)生并不能夠積極主動的思考。教師耗費大量精力精心備課、授課,但實際傳達(dá)給學(xué)生的知識量卻大大削減。并且,以教師為主的教學(xué)體系中,學(xué)生僅能獲得教師所教授的知識。這便限制了學(xué)生獲取知識的全面性和前沿性。此外,在以教師為中心的課程體系下,學(xué)生缺乏對新技術(shù)、理論探究的興趣和動力,主觀能動性得不到充分的調(diào)動和發(fā)揮。
現(xiàn)有的評價體系多以考試成績?yōu)橹鳎⒅匦问缴系脑u價,考核方式單一[3]。這種評價體系會造成學(xué)生平時不認(rèn)真學(xué)習(xí),考試的前幾天則找平時認(rèn)真學(xué)習(xí)的同學(xué)詢問重點進(jìn)行背誦或把固定題型的方法步驟依靠記憶記住。考試中,學(xué)生僅憑借幾天的死記硬背就可以進(jìn)行答題。由于是短期記憶,對知識點并沒有理解或僅僅是表層的理解,對內(nèi)在的深層意義并不知曉。因此,考完試后學(xué)生會很容易忘記之前背誦的知識點。這樣一來,學(xué)生在專業(yè)知識和能力并沒有得到提高的情況下,依然會因考前突擊而順利通過考試,更有甚者會取得較高的成績。而對于真正用心學(xué)習(xí)的同學(xué)而言,考試成績并不能準(zhǔn)確衡量他們的知識水平、技能掌握和能力達(dá)成。所以,以考試為主的結(jié)果性評價體系極易造成對學(xué)生知識水平和能力達(dá)成度的不合理評價。
軟件工程課程是一門理論性、實踐性和工程性都很強的課程,在新工科建設(shè)的要求下加強軟件工程人才的培養(yǎng)是高校教育面臨的一個重要挑戰(zhàn)[4]。 “一個紐帶,兩個基本點,三個轉(zhuǎn)變,四種能力”的課程教學(xué)方法總體思路如圖1所示。其中,項目是紐帶,貫穿整個教學(xué)的全過程。在項目實施的過程中,采用CDIO模式和群體化方法進(jìn)行項目的推進(jìn)。當(dāng)項目完成后,進(jìn)行成果交付,一些好的項目會持續(xù)完善,直至應(yīng)用。整個教學(xué)法實現(xiàn)由以教師、課本和課堂為中心向以學(xué)生、項目、實踐經(jīng)驗為中心的轉(zhuǎn)變,從而培養(yǎng)出具有較高專業(yè)能力并達(dá)到工程教育認(rèn)證標(biāo)準(zhǔn)的學(xué)生。
圖1 實踐教學(xué)法的總體思路
工程教育認(rèn)證[5]內(nèi)涵的一個重要的核心是OBE(outcome based education,成果導(dǎo)向教育)理念,而軟件項目是軟件工程課程中的一項重要成果,也是軟件工程教學(xué)中一種有效的實踐途徑。因此,本教學(xué)法以項目為紐帶。 在軟件工程教學(xué)中,只有當(dāng)學(xué)生親身參與到項目中或?qū)Π咐M(jìn)行實踐時,才會通過自身體驗、思考以及探索加深對課程中知識點的理解。隨著項目的實施,學(xué)生會考慮如何進(jìn)行需求分析;用什么樣的開發(fā)模式;用什么樣的編程語言;怎樣測試才更有效等問題,這些問題會使學(xué)生主動思考課堂中的知識點,并將實際問題與課堂知識聯(lián)系起來。在實際應(yīng)用中學(xué)生獲取的不僅僅是最終結(jié)果,還有整個過程中分析問題、解決問題、團(tuán)隊協(xié)作等能力提升。并且在項目驅(qū)動下,在鞏固理論知識的基礎(chǔ)上,學(xué)生能夠切身體會到知識的效用,在解決問題中獲得成就感和滿足感,從而進(jìn)一步激發(fā)學(xué)習(xí)的興趣和動力,形成一個良性循環(huán)。
以能力產(chǎn)出為導(dǎo)向的項目驅(qū)動教學(xué)法中的一個關(guān)鍵問題是如何合理的安排教學(xué)內(nèi)容,以實現(xiàn)理論和實踐的同步性。該課程共設(shè)置66個課時(表1),包括44個理論講授課時,8個校內(nèi)教師指導(dǎo)實驗的實踐課時(實驗Ⅰ,包括對軟件項目進(jìn)行需求分析、結(jié)構(gòu)設(shè)計、編碼實現(xiàn)和測試四部分),10個企業(yè)軟件工程師指導(dǎo)項目的實踐課時(實驗Ⅱ,包括對軟件項目的原型設(shè)計、模型建立、編碼實現(xiàn)、測試和項目管理情景化五部分),以及4個項目答辯的課時。通過理論課程和實驗的同步進(jìn)行,使得理論知識隨著項目的推進(jìn)而應(yīng)用,而項目的推進(jìn)又使得理論知識進(jìn)一步深化??紤]到美國等發(fā)達(dá)國家在多年的計算機科學(xué)發(fā)展中所沉淀出的經(jīng)典教材依然有很多值得借鑒的地方,并且現(xiàn)在大多開源社區(qū)如GitHub都是英文的,而Ian Sommerville作為英國著名的軟件工程專家和軟件工程知識體系的專家委員會成員,其著作《Software Engineering》已逐漸被許多高校采用為教材。故本教學(xué)中的軟件工程教材采用Ian Sommerville的《Software Engineering》,以張海藩的《軟件工程導(dǎo)論》為主要參考教材。
表1 學(xué)時分配表學(xué)時 學(xué)時
軟件項目的開發(fā)過程是一個繁瑣復(fù)雜的過程,在軟件項目開發(fā)中我們引入了CDIO模式和群體化方法,并將好的項目與企業(yè)對接。通過這種模式和方法,學(xué)生不僅僅是達(dá)到課程基本要求,更多的是提高自身能力,為就職之路奠定良好的基礎(chǔ)。
CDIO是近年來國際教育改革中的重要成果[6]。其在本質(zhì)上區(qū)別于傳統(tǒng)的知識本位的培養(yǎng)模式,是一種能力本位的培養(yǎng)模式。借助CDIO倡導(dǎo)的“做中學(xué)”和“基于項目教育和學(xué)習(xí)”的理念,在講授中以“心理健康治療病人信息系統(tǒng)”和“野外氣象站”兩個工程實例貫穿于課程全過程。教師引導(dǎo)學(xué)生學(xué)習(xí)這兩個實例的各階段,之后啟發(fā)學(xué)生在課后對項目進(jìn)行逐步的推進(jìn),使學(xué)生在構(gòu)思、設(shè)計、實現(xiàn)、運作的4個層面上得到訓(xùn)練。
實踐中學(xué)生經(jīng)常會遇到各種不同的問題,這些問題出現(xiàn)的不確定性和不統(tǒng)一性導(dǎo)致教師難以及時地針對每個學(xué)生一一解答。學(xué)生遇到的問題長期不能及時得到解答,就會逐漸降低對課程的興趣。針對課程實踐中存在的問題,一種有效的解決途徑是運用群體化開發(fā)方法,即利用互聯(lián)網(wǎng)的群體智慧、資源和支撐平臺解決軟件工程課程在實踐中遇到的問題[7]。一方面,學(xué)生可以借助互聯(lián)網(wǎng)的群體智慧,通過類似CSDN這類互聯(lián)網(wǎng)社區(qū)來即時解決在實際開發(fā)中遇到的問題;另一方面,學(xué)生可以在GitHub這類軟件項目平臺上下載軟件系統(tǒng)的源碼,并基于這些開源的代碼和方法快速開發(fā),縮短軟件的開發(fā)周期??傊?,通過群體化方法不僅可以認(rèn)識更多軟件開發(fā)人員,還可以借助互聯(lián)網(wǎng)群體的智慧解答問題、提供資源、反饋經(jīng)驗,而且能夠及時掌握先進(jìn)的軟件開發(fā)等方面的技術(shù),突破在知識、經(jīng)驗等方面的局限性。
在項目驅(qū)動下,課程和項目相繼展開,整個過程中運用群體化的軟件開發(fā)方法和CDIO模式對學(xué)生進(jìn)行綜合能力的培養(yǎng)。采用分組的形式開展項目和課程,5~6位同學(xué)為一組共同完成項目。課后的小組作業(yè)也是由小組團(tuán)體共同完成。在整個項目的開發(fā)過程中需要配置負(fù)責(zé)前端、數(shù)據(jù)庫設(shè)計、后端、文檔撰寫和測試各一人,還需配置一位負(fù)責(zé)整個項目安排的整體實力較強的人員。每個人能力的側(cè)重點不同,這樣能夠在項目開發(fā)的過程中最大化地發(fā)揮個人能力。在小組的分工協(xié)調(diào)下,學(xué)生之間交流經(jīng)驗,共同促進(jìn),從單純地依賴教師逐步向依靠團(tuán)體能力轉(zhuǎn)變,從被動地接收教師的思想向主動思考轉(zhuǎn)變。
在項目驅(qū)動下,學(xué)生可以動手實踐軟件系統(tǒng),不再只是停留在課本上的理論知識,而是逐漸向理論應(yīng)用過渡。實踐過程中學(xué)生在問題得不到解決時會通過互聯(lián)網(wǎng)尋求解決方案,通過對實際問題的解決,學(xué)生在項目開發(fā)的各個階段獲得了成就感和滿足感。此外,在分組的團(tuán)體中,既培養(yǎng)了學(xué)生的管理能力,又培養(yǎng)了學(xué)生的溝通能力和職業(yè)素養(yǎng)。
在實踐中引入校外企業(yè)工程師對學(xué)生的項目進(jìn)行指導(dǎo),給學(xué)生提供系統(tǒng)連貫的實踐機會和創(chuàng)新能力訓(xùn)練機會。使學(xué)生更早了解實際工作中項目開發(fā)的一些關(guān)鍵技術(shù)和重要理論。加快了由理論向?qū)嵺`的轉(zhuǎn)變,且學(xué)生能夠提早向?qū)I(yè)的軟件開發(fā)人員轉(zhuǎn)變。
通過采用群體化方法和CDIO模式,學(xué)生逐步將課本的理論知識轉(zhuǎn)化為實際的項目成果,在思考、探索和交流中逐漸取得進(jìn)步,并獲得大量的實踐經(jīng)驗。最終從根本上改變傳統(tǒng)的軟件工程課程體系,實現(xiàn)以教師為中心向以學(xué)生為中心、以課本為中心向以項目為中心、以課堂為中心向以實踐經(jīng)驗為中心的三個轉(zhuǎn)變。
軟件工程課程改革的主要落腳點在于學(xué)生,只有學(xué)生自身的能力得到提高,才能說改革是較為成功的。本課程旨在培養(yǎng)學(xué)生在軟件工程項目的可行性研究、需求分析、系統(tǒng)設(shè)計、編碼測試、系統(tǒng)維護(hù)等各階段的工程能力。通過整個項目的實現(xiàn),要求學(xué)生能夠獨立撰寫各類軟件開發(fā)文檔;能夠設(shè)計中小型軟件系統(tǒng)及大型系統(tǒng)的獨立子系統(tǒng);能夠在多學(xué)科環(huán)境中組織和管理軟件項目,合理調(diào)配資源,提升工作質(zhì)量和效率。通過以能力產(chǎn)出為目標(biāo),反向設(shè)計教學(xué)內(nèi)容,又通過對已設(shè)計的內(nèi)容進(jìn)行教學(xué)實踐,進(jìn)而評價教學(xué)法是否可以實現(xiàn)學(xué)生的能力達(dá)成目標(biāo)。
根據(jù)能力的復(fù)雜性和側(cè)重性不同,把軟件工程課程培養(yǎng)的能力與該專業(yè)對應(yīng)的畢業(yè)要求指標(biāo)點相對應(yīng)。包括G2.3、G3.1、G10.1、G11.2四種能力,各項能力在畢業(yè)要求中所占權(quán)重見表2。其中,G2.3側(cè)重于問題的分析分解能力;G3.1側(cè)重于問題的解決能力;G10.1側(cè)重于書面表達(dá)和口語表達(dá)能力;G11.2側(cè)重于溝通、管理能力。
能力產(chǎn)出是開設(shè)課程的最終目的,而學(xué)生的能力達(dá)成度如何量化就在于所設(shè)計的課程評價體系。一個良好的課程評價體系應(yīng)該能夠評價學(xué)生的綜合能力。評價的關(guān)注點不能只是結(jié)果,還應(yīng)該有過程,在形成性考核中,發(fā)現(xiàn)學(xué)生的問題,引導(dǎo)學(xué)生主動積極地參與到每一階段的知識學(xué)習(xí)和技能鍛煉中,從而實現(xiàn)對學(xué)生綜合職業(yè)能力的培養(yǎng)。
本教學(xué)法建立了一種多樣化的評價體系(表3), 以對學(xué)生的交流與合作能力、自學(xué)與思考能力、創(chuàng)新與管理能力進(jìn)行綜合性的評價。本教學(xué)法的評價環(huán)節(jié)分為形成性考核和總結(jié)性考核兩大部分,各占總成績的50%。每種考核形式按2.5節(jié)的內(nèi)容分為四種能力進(jìn)行考核??偨Y(jié)性考核采用閉卷考試形式對學(xué)生進(jìn)行考核。由于大學(xué)教育尊重學(xué)生自由發(fā)展,因此,考勤不同于其他形式的考核,缺勤一次在總成績上減去1分,一節(jié)課兩個課時,66個課時中全部缺勤,累計計算應(yīng)減去33分。這樣若學(xué)生自己能力足夠強,那么即使不上課也還是有通過考試的希望。各項考核的評價標(biāo)準(zhǔn)見表4。
表2 各項能力的權(quán)重分配
表3 評價環(huán)節(jié)及目標(biāo)分值 分
表4 評價標(biāo)準(zhǔn)
本學(xué)期在我學(xué)院的計算機科學(xué)與技術(shù)16級本科生中開展了此次改革,分為兩個班級,共計82名同學(xué),17個小組,每個小組對應(yīng)一個項目。這17個項目形式多樣,有“人機交互式圖形開發(fā)系統(tǒng)”“微愛——情侶互動聊天APP”“基于聲紋的音樂檢索系統(tǒng)”“XX校園3D建模系統(tǒng)”“零食速遞”等。
圖2 兩類考核成績分布圖
圖3 總成績頻率分布直方圖
本課程通過第三章的評價體系對學(xué)生的綜合能力進(jìn)行評價。最終情況見圖2、圖3和表5。圖2是形成性考核、總結(jié)性考核兩類考核成績區(qū)間分布的統(tǒng)計,形成性考核的成績有一半多都在[80,90)區(qū)間內(nèi),可見,大多數(shù)學(xué)生都在認(rèn)真學(xué)習(xí)軟件工程課程,并積極進(jìn)行實踐,較好地實現(xiàn)了以學(xué)生為中心的學(xué)習(xí)。而總結(jié)性考核成績集中在[60,70)和[70,80)區(qū)間,出現(xiàn)這種情況的原因一方面是本次總結(jié)性考核采用了純英文試題,一些學(xué)生的英文水平達(dá)不到要求;另一方面是一些學(xué)生在實踐中對理論的總結(jié)稍有不足。圖3是總成績的頻率分布直方圖??梢钥闯隹偝煽兓境尸F(xiàn)正態(tài)分布,學(xué)生成績基本集中在[70,80)區(qū)間,學(xué)生成績小于60的和大于等于90的都較少。表5是82名學(xué)生目標(biāo)的平均達(dá)成度。實踐結(jié)果表明,之前設(shè)計的目標(biāo)在項目驅(qū)動的教學(xué)法下較好地實現(xiàn)。今后可在課堂中更多地闡述理論和案例;對UML等各種圖更多地進(jìn)行講解和實操,適時讓學(xué)生進(jìn)行演示;掌握好項目工作量,及時督促學(xué)生反饋以達(dá)到更好提升學(xué)生能力的目的。
表5 課程目標(biāo)及平均達(dá)成度
我們在這一年的探索研究中率先將以項目為紐帶、以CDIO模式和群體化方法為兩個基本點,以實現(xiàn)三個轉(zhuǎn)變和產(chǎn)出四種能力的軟件工程課程實踐教學(xué)法在我學(xué)院的計算機科學(xué)與技術(shù)16級本科生中開展。此次課程改革無論從教材的選擇,還是從過程實施以及評價體系,較之前都有進(jìn)步,作為一門考試課程,對學(xué)生的學(xué)習(xí)過程和能力給予了客觀的評價,對軟件工程課程教學(xué)有著示范作用。目前只進(jìn)行了一個學(xué)期的改革實施,項目實踐時間較短,后續(xù)將擴(kuò)大項目的實施范圍,進(jìn)一步提升學(xué)生的專業(yè)技能。