周長敏,佘佐明
(凱里學(xué)院,凱里556011)
軟件工程是指導(dǎo)軟件開發(fā)和維護(hù)的一門工程學(xué)科[1],也是計算機(jī)及相關(guān)專業(yè)開設(shè)的一門綜合性強(qiáng)的專業(yè)必修課,在計算機(jī)學(xué)科中占有重要地位。本課程旨在要求學(xué)生掌握軟件工程的基本原理、概念與技術(shù)方法,并將其運(yùn)用到實(shí)際的軟件開發(fā)與維護(hù)工作中。應(yīng)用型地方本科院校的重點(diǎn)是要求學(xué)生掌握軟件工程規(guī)范和工具,能夠設(shè)計和實(shí)現(xiàn)應(yīng)用軟件系統(tǒng)[2]。應(yīng)用型本科院校計算機(jī)專業(yè)學(xué)生的畢業(yè)設(shè)計是以軟件開發(fā)為主,因此本課程也是計算機(jī)專業(yè)學(xué)生開展畢業(yè)設(shè)計的主要支撐課程之一。
筆者結(jié)合多年的教學(xué)及指導(dǎo)畢業(yè)設(shè)計的經(jīng)驗(yàn),探討如何將畢業(yè)設(shè)計與課堂教學(xué)相融合的教學(xué)方法。
與計算機(jī)專業(yè)的其他專業(yè)課程相比,軟件工程的理論性和抽象性尤為突出。軟件工程課程主要介紹軟件開發(fā)的原則和方法,不是針對某個具體的軟件項(xiàng)目而言,也不涉及具體的程序算法,是一門講解方法論的綜合性課程。因此,軟件工程課程在教學(xué)過程中不能像程序設(shè)計類課程那樣,通過一兩次課的教學(xué),就能讓學(xué)生編寫出程序,導(dǎo)致學(xué)生在學(xué)習(xí)過程中無法體會解決問題的快樂,學(xué)習(xí)成就感低,而且抽象的理論也讓學(xué)生感到枯燥,因而學(xué)習(xí)動力不足。
軟件工程主要講授軟件生存周期各階段(包括問題定義、可行性研究、需求分析、設(shè)計、編碼、運(yùn)行和維護(hù))的主要任務(wù)、工作方法及工具[3]。在理論教學(xué)過程中,教師主要通過案例教學(xué)并結(jié)合自身軟件開發(fā)經(jīng)驗(yàn)進(jìn)行講解。實(shí)踐環(huán)節(jié)主要采用的方法是2 至3 人組成一個開發(fā)小組,確定一個選題后,各組按軟件開發(fā)流程完成各階段的任務(wù),并提交各開發(fā)階段的規(guī)范化文檔。這種團(tuán)隊協(xié)作共同完成一個項(xiàng)目的實(shí)踐教學(xué)方式的可以加強(qiáng)學(xué)生的團(tuán)隊協(xié)作能力。但從實(shí)際的教學(xué)效果來看,學(xué)生實(shí)踐積極性不高,提交的實(shí)踐作業(yè)普遍質(zhì)量不高,提交的設(shè)計文檔空洞,沒有結(jié)合具體的項(xiàng)目進(jìn)行深入分析和設(shè)計。因此,對于沒有經(jīng)歷過實(shí)際項(xiàng)目開發(fā)的本科生而言,如果不布置與其自身切實(shí)相關(guān)的任務(wù)去驅(qū)動學(xué)生動手實(shí)踐,教師的理論課講授得再精彩,學(xué)生仍然無法將理論課學(xué)習(xí)的內(nèi)容與實(shí)際項(xiàng)目開發(fā)聯(lián)系起來,從而導(dǎo)致理論與實(shí)踐脫節(jié)。
通過以上問題的分析,能驅(qū)動學(xué)生真正開展動手實(shí)踐的途徑之一就是將每個學(xué)生的畢業(yè)設(shè)計與課程教學(xué)相結(jié)合。畢業(yè)設(shè)計是計算機(jī)專業(yè)的必修實(shí)踐環(huán)節(jié),占6 個學(xué)分,要求學(xué)生完成一個軟件系統(tǒng)的分析、設(shè)計、編碼與測試,撰寫設(shè)計文檔,并對系統(tǒng)進(jìn)行現(xiàn)場演示和答辯,答辯通過才能獲得相應(yīng)學(xué)分。因?yàn)檐浖こ淌钱厴I(yè)設(shè)計的主要支撐課程,為確保畢業(yè)設(shè)計的順利開展,軟件工程課程安排在第5 或第6 學(xué)期開設(shè),畢業(yè)設(shè)計安排在第7 學(xué)期。為了能夠順利完成畢業(yè)設(shè)計并拿到學(xué)分,在畢業(yè)設(shè)計任務(wù)驅(qū)動下學(xué)生能夠主動投入到軟件系統(tǒng)的分析、設(shè)計當(dāng)中,可以極大提高學(xué)習(xí)軟件工程的動力,將學(xué)生的被動學(xué)生轉(zhuǎn)變?yōu)橹鲃訉W(xué)習(xí)。以下討論具體的實(shí)施過程。
傳統(tǒng)的軟件工程教學(xué)過程中,是先介紹結(jié)構(gòu)化方法再介紹面向?qū)ο蠓椒?。為?shí)現(xiàn)課堂教學(xué)與畢業(yè)設(shè)計工作的同步,需要對教學(xué)內(nèi)容進(jìn)行適當(dāng)?shù)恼{(diào)整,將兩種方法貫穿到畢業(yè)設(shè)計工作中。具體教學(xué)內(nèi)容與畢業(yè)設(shè)計各階段工作內(nèi)容對應(yīng)關(guān)系如表1 所示。
表1 教學(xué)內(nèi)容與畢業(yè)設(shè)計工作內(nèi)容對照表
以需求分析教學(xué)內(nèi)容為例,將畢業(yè)設(shè)計任務(wù)與教學(xué)內(nèi)容進(jìn)行整合,具體的教學(xué)過程見表2。
表2 的教學(xué)過程中,教師以“期刊管理系統(tǒng)”為案例講授需求獲取的方法,同時引導(dǎo)學(xué)生完成畢業(yè)設(shè)計項(xiàng)目的需求分析工作。同理,設(shè)計、編碼和測試的教學(xué)內(nèi)容,仍然以“期刊管理系統(tǒng)”案例作為主線,講解相應(yīng)的知識點(diǎn),同時布置學(xué)生完成相應(yīng)階段的畢業(yè)設(shè)計工作,并提交該階段的設(shè)計文檔。在畢業(yè)設(shè)計工作階段,學(xué)生只需要繼續(xù)完善系統(tǒng),按規(guī)定的模板將各階段的文檔整合為畢業(yè)設(shè)計文檔即可。
為更好激發(fā)學(xué)生的學(xué)習(xí)積極性,在進(jìn)行課程教學(xué)改革的同時,還要不斷完善課程考核體系,提高實(shí)踐環(huán)節(jié)的成績比例。課程考核的成績由三個部分組成:期末試卷考試成績占50%,平時成績占10%,畢業(yè)設(shè)計項(xiàng)目實(shí)踐成績占40%。期末試卷考試主要考核學(xué)生軟件工程基礎(chǔ)理論知識的掌握及運(yùn)用能力;平時成績由考勤、作業(yè)的成績組成。畢業(yè)設(shè)計項(xiàng)目實(shí)踐成績進(jìn)一步細(xì)化為:設(shè)計文檔占15%,系統(tǒng)實(shí)現(xiàn)與演示占15%,項(xiàng)目答辯占10%。在實(shí)踐環(huán)節(jié)的考核過程中,系統(tǒng)的實(shí)現(xiàn)及演示、答辯的成績由答辯小組共同協(xié)商確定。
經(jīng)過兩輪教學(xué)實(shí)踐,畢業(yè)設(shè)計與軟件工程教學(xué)內(nèi)容相融合這種以實(shí)踐為導(dǎo)向的教學(xué)方式,體現(xiàn)了學(xué)習(xí)以致用的教學(xué)理念,取得了較好的教學(xué)效果,兩屆學(xué)生的畢業(yè)設(shè)計作品優(yōu)良率都有明顯的提高。以畢業(yè)設(shè)計選題作為教學(xué)案例,將畢業(yè)設(shè)計與課堂教學(xué)同步,避免了課程案例的不連貫性,有利于幫助學(xué)生理解軟件開發(fā)的流程,提高了畢業(yè)設(shè)計作品的質(zhì)量。以畢業(yè)設(shè)計任務(wù)為驅(qū)動,促使學(xué)生將課堂上學(xué)習(xí)的理論知識運(yùn)用到自己的畢業(yè)設(shè)計當(dāng)中,讓學(xué)生充分體會解決問題的成就感,從而調(diào)動了學(xué)習(xí)積極性,進(jìn)一步激發(fā)學(xué)生的求知欲望。教師為更好地解決學(xué)生在畢業(yè)設(shè)計中遇到的問題也需要不斷的更新知識,改進(jìn)教學(xué)方法,形成了“教學(xué)相長”的良好氛圍。
表2 需求分析教學(xué)過程實(shí)例
在具體教學(xué)實(shí)施過程中,存在的問題是部分學(xué)生畢業(yè)設(shè)計選題花費(fèi)時間較長,導(dǎo)致后期的工作進(jìn)度滯后。在下一輪教學(xué)中,需要將畢業(yè)設(shè)計選題時間提前,以確保畢業(yè)設(shè)計工作進(jìn)度與課堂教學(xué)進(jìn)度同步。