張棟 蘇曉強(qiáng)
摘要:針對(duì)目前部分高校軟件工程實(shí)踐授課方式的現(xiàn)狀與不足,介紹開放模式的軟件工程實(shí)踐教學(xué)的開展方式,提出開放模式下的實(shí)踐教學(xué)模式,并闡述探索過程,最后通過學(xué)生的產(chǎn)出評(píng)價(jià)分析說明教學(xué)效果。
關(guān)鍵詞:軟件工程實(shí)踐;軟件過程;教學(xué)改革;開放模式;構(gòu)建之法
0.引言
軟件工程與實(shí)踐課程,是計(jì)算機(jī)科學(xué)與技術(shù)和軟件工程兩個(gè)專業(yè)的核心課程,與偏計(jì)算機(jī)理論的其他核心課程不同,軟件工程對(duì)于實(shí)踐應(yīng)用有著很高的要求。傳統(tǒng)軟件的工程實(shí)踐教學(xué)模式重理論輕實(shí)踐。由于課程教材與行業(yè)發(fā)展脫節(jié)等原因,導(dǎo)致了學(xué)生對(duì)軟件工程實(shí)踐感到乏味空洞、難以理解。本文借鑒鄒欣在《構(gòu)建之法》中提倡的“Learning by doing”的教學(xué)模式,引入企業(yè)助教、開設(shè)博客、作業(yè)開放點(diǎn)評(píng)互動(dòng)、校際間學(xué)生網(wǎng)上交流等方式,在分析面向產(chǎn)出的學(xué)生評(píng)價(jià)基礎(chǔ)上,討論開放模式對(duì)于軟件工程專業(yè)實(shí)踐課程探索的意義。
1.軟件工程傳統(tǒng)教學(xué)模式現(xiàn)狀與不足
1)課程教材與業(yè)界快速發(fā)展實(shí)際的脫節(jié)。
部分高校采用傳統(tǒng)的軟件工程課程教材,偏向瀑布模式的軟件工程理論教學(xué)。雖然任課教師對(duì)瀑布模式的應(yīng)用具有豐富的任課經(jīng)驗(yàn),但軟件工程專業(yè)又要求學(xué)生能夠掌握現(xiàn)代工具和技術(shù)思想。脫節(jié)的教材可能會(huì)導(dǎo)致學(xué)生了解業(yè)界現(xiàn)在普遍應(yīng)用或流行的工具和技術(shù)思想時(shí)缺少相應(yīng)的指引,畢業(yè)時(shí)達(dá)不到企業(yè)期望。
2)教師缺乏豐富的項(xiàng)目實(shí)踐經(jīng)驗(yàn)。
部分任課教師由于長(zhǎng)期從事教學(xué)工作缺乏相關(guān)項(xiàng)目的實(shí)踐經(jīng)驗(yàn)。因此部分教師在授課時(shí),不能提供相應(yīng)的實(shí)踐指導(dǎo),在驗(yàn)收學(xué)生作品時(shí)也無法給出工程實(shí)際建議。而學(xué)生的項(xiàng)目也大多只是虛擬項(xiàng)目、模擬作品,只能夠用于課程驗(yàn)收,作品本身卻沒有真實(shí)價(jià)值。
3)重理論輕實(shí)踐。
常規(guī)的教學(xué)模式更偏重理論,教師會(huì)在理論課上詳細(xì)講解軟件工程思想,但在實(shí)踐課上卻更多的是布置相應(yīng)任務(wù),無法促進(jìn)實(shí)踐教學(xué)相融合。學(xué)生往往在理論課上一知半解,在實(shí)踐課上又體會(huì)不到軟件工程的思想,多數(shù)學(xué)生對(duì)于軟件工程理論課的印象就是一堆需要背誦的概念,而對(duì)于實(shí)踐課則是趕工完成應(yīng)付驗(yàn)收的代碼。.
4)師生單向交流,作業(yè)封閉評(píng)價(jià)。
傳統(tǒng)的軟件工程實(shí)踐的學(xué)生作業(yè)提交和老師驗(yàn)收點(diǎn)評(píng)是封閉的單向傳遞。學(xué)生只和教師在有限的機(jī)會(huì)內(nèi)互動(dòng),這往往會(huì)消減學(xué)生對(duì)于實(shí)踐作業(yè)的持續(xù)熱情。在作業(yè)評(píng)價(jià)方面,傳統(tǒng)教學(xué)模式更為封閉,缺少開放的點(diǎn)評(píng)及建議,導(dǎo)致學(xué)生不重視作業(yè)的過程,出現(xiàn)抄襲、應(yīng)付等情況。
2.開放模式的軟件工程實(shí)踐教學(xué)
針對(duì)傳統(tǒng)軟件工程實(shí)踐教學(xué)模式的不足,許多高校都在不斷地探索軟件工程教學(xué)模式的改革,倡導(dǎo)以學(xué)生為中心的“Lea|ming by doing”教學(xué)理念,提倡合作式學(xué)習(xí)團(tuán)隊(duì)方式。在軟件工程中,“Learnjng by doing”教學(xué)的—個(gè)重要特點(diǎn)是學(xué)生以項(xiàng)目為驅(qū)動(dòng)組成團(tuán)隊(duì)進(jìn)行軟件工程的全過程實(shí)踐,并通過團(tuán)隊(duì)的合作式學(xué)習(xí)提高能力、培養(yǎng)學(xué)生的素質(zhì)。在軟件工程教學(xué)改革中,不能在某個(gè)點(diǎn)或面上進(jìn)行,應(yīng)根據(jù)軟件工程用于解決軟件開發(fā)項(xiàng)目這一目的出發(fā),通過對(duì)具體的項(xiàng)目開發(fā)進(jìn)行講解和實(shí)踐,使軟件工程中抽象的概念、原理、技術(shù)和方法能具體、生動(dòng)地呈現(xiàn)給學(xué)生。
開放模式的軟件工程實(shí)踐教學(xué)模式,是借鑒鄒欣在《構(gòu)建之法》一書中提倡的理念,通過以下方式展開:
1)引入企業(yè)助教,協(xié)助任課教師開展軟件工程實(shí)踐。
企業(yè)助教的項(xiàng)目經(jīng)驗(yàn)應(yīng)結(jié)合教師的授課經(jīng)驗(yàn),保證理論與實(shí)踐都重視的情況下,能夠給予學(xué)生所需的幫助,并且能夠引起多數(shù)學(xué)生對(duì)于企業(yè)項(xiàng)目的關(guān)注度。企業(yè)助教帶來的IT行業(yè)的新思想、多元觀念、規(guī)范編碼、技術(shù)分享等,.都對(duì)軟件工程實(shí)踐帶來助益。同時(shí),開放式平臺(tái)的教學(xué)模式,有利于企業(yè)助教不受時(shí)空限制,遠(yuǎn)程協(xié)助教學(xué),通過在博客中的互動(dòng)作業(yè)點(diǎn)評(píng)、Github代碼查驗(yàn)、即時(shí)通訊軟件交流等方式完成。
2)開設(shè)博客,作業(yè)開放點(diǎn)評(píng)。
采用博客的方式來完成作業(yè)的提交和點(diǎn)評(píng),讓學(xué)生能通過網(wǎng)絡(luò)平臺(tái),分享自己的成果,接受來自IT業(yè)內(nèi)專業(yè)人員的檢視、點(diǎn)評(píng)及指導(dǎo)建議,同時(shí)還能讓學(xué)生參考優(yōu)秀作業(yè),反思自己作業(yè)的不足,鍛煉和培養(yǎng)學(xué)生持續(xù)寫作的能力。
3)采用階段作業(yè),個(gè)人、結(jié)隊(duì)、團(tuán)隊(duì)項(xiàng)目循序漸進(jìn)。
軟件工程是一門強(qiáng)調(diào)實(shí)踐能力的課程,而實(shí)踐能力只能不斷地通過完成實(shí)踐作業(yè)來積累。軟件工程實(shí)踐課程的作業(yè)模式?jīng)Q定著學(xué)生是否具有很好的培養(yǎng)實(shí)踐能力。傳統(tǒng)的教學(xué)模式只要求學(xué)生期末上交作品,上課時(shí)匯報(bào)進(jìn)展,但學(xué)生往往都會(huì)有拖延癥經(jīng)常出現(xiàn)期末趕工的情況。
讓學(xué)生在充足作業(yè)訓(xùn)練量的基礎(chǔ)上,保持每周一定量的實(shí)踐工作。《構(gòu)建之法》中就提供了大量的練習(xí),在實(shí)際教學(xué)中,個(gè)人、結(jié)隊(duì)、團(tuán)隊(duì)作業(yè)可以依次進(jìn)行,也可以交叉執(zhí)行,采用每周作業(yè)具體化,保證學(xué)生每周都有具體任務(wù)。
4)基于真實(shí)、有價(jià)值用戶的項(xiàng)目驅(qū)動(dòng)。
項(xiàng)目驅(qū)動(dòng)教學(xué)法的主要特點(diǎn)是“以項(xiàng)目為主線、教師為主導(dǎo)、學(xué)生為主體、注重實(shí)踐”。讓學(xué)生通過開發(fā)實(shí)際項(xiàng)目來加深對(duì)軟件生命周期理論及各個(gè)階段的理解。傳統(tǒng)的軟件工程實(shí)踐教學(xué)模式往往會(huì)出現(xiàn)學(xué)生團(tuán)隊(duì)既充當(dāng)客戶角色又充當(dāng)開發(fā)者角色,自己給自己提需求,自己開發(fā)的情況。這種虛擬項(xiàng)目、虛擬作品大多只能提高學(xué)生編程開發(fā)的能力,達(dá)不到學(xué)生學(xué)習(xí)軟件開發(fā)不同周期不同需求的學(xué)習(xí)目的?;谡鎸?shí)、有價(jià)值用戶的項(xiàng)目驅(qū)動(dòng)則能很好地彌補(bǔ)這個(gè)問題,讓學(xué)生團(tuán)隊(duì)自主地跟客戶打交道,了解如何引導(dǎo)需求、分析及整理客戶需求以及最終得到的客戶驗(yàn)收??蛻舨辉偈抢蠋熁蛘邔W(xué)生團(tuán)隊(duì),而是真實(shí)的客戶,所需要的產(chǎn)品不再是學(xué)生團(tuán)隊(duì)自己想當(dāng)然的產(chǎn)品,這種模式能夠更有效的讓學(xué)生體驗(yàn)軟件開發(fā)生命周期中的各個(gè)階段,培養(yǎng)學(xué)生自主學(xué)習(xí)、分析問題、解決問題的能力。
5)基于文檔的項(xiàng)目評(píng)價(jià)、驗(yàn)收。
傳統(tǒng)的軟件工程實(shí)踐教學(xué)模式的驗(yàn)收注重學(xué)生團(tuán)隊(duì)最終開發(fā)出的軟件產(chǎn)品,這往往導(dǎo)致學(xué)生最終提交一個(gè)可以編譯運(yùn)行的系統(tǒng),而出現(xiàn)“重程序、輕文檔”的現(xiàn)象。文檔是軟件產(chǎn)品的組成部分,是一種交流的工具,是開發(fā)與管理的依據(jù),也是評(píng)審的內(nèi)容。在軟件開發(fā)前需要用相應(yīng)的文檔來記錄以及規(guī)定軟件產(chǎn)品的各功能定義,客戶的需求整理等;在開發(fā)過程中則需要有相應(yīng)文檔來定義團(tuán)隊(duì)間的規(guī)范;在開發(fā)完成產(chǎn)品交付客戶時(shí)需要有相應(yīng)的使用說明文檔等。可見,文檔貫穿著軟件開發(fā)的整個(gè)生命周期。
基于博客文檔的項(xiàng)目評(píng)價(jià)、驗(yàn)收可以提高學(xué)生對(duì)于文檔的重視程度,培養(yǎng)學(xué)生的文檔能力。
6)結(jié)合團(tuán)隊(duì)分工、開發(fā)流程的分?jǐn)?shù)評(píng)價(jià)體系。
傳統(tǒng)的軟件工程實(shí)踐教學(xué)模式,由于課時(shí)緊張或其他原因,往往會(huì)產(chǎn)生“重技術(shù)、輕管理”,“重個(gè)人,輕團(tuán)隊(duì)”的現(xiàn)象。事實(shí)上,軟件項(xiàng)目的成功開發(fā),離不開團(tuán)隊(duì)協(xié)作,離不開團(tuán)隊(duì)負(fù)責(zé)人的管理能力。
基于開發(fā)平臺(tái)的軟件工程教學(xué)模式采用結(jié)合團(tuán)隊(duì)分工及團(tuán)隊(duì)開發(fā)流程進(jìn)行打分,團(tuán)隊(duì)的開發(fā)模式,PM的管理將占據(jù)最終成績(jī)的一部分,讓學(xué)生體驗(yàn)團(tuán)隊(duì)管理的經(jīng)歷,培養(yǎng)學(xué)生規(guī)范團(tuán)隊(duì)、調(diào)整及安排隊(duì)員的工作以及合理安排時(shí)間進(jìn)行軟件開發(fā)等能力。
3.開放模式的實(shí)踐教學(xué)模式探索
鄒欣在《構(gòu)建之法》一書中倡導(dǎo)的軟件工程實(shí)踐教學(xué)模式已經(jīng)在部分高校推行,并取得顯著成果。福州大學(xué)于2015年在數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院中首次開設(shè)以“Learning by doing”為教學(xué)理念,基于開放模式的軟件工程實(shí)踐教學(xué)模式的課程,實(shí)施的對(duì)象為計(jì)算機(jī)類本科生。它的目的在于探索開放模式的實(shí)踐教學(xué)對(duì)軟件工程實(shí)踐課程的意義,并與傳統(tǒng)教學(xué)模式作比較。
在這次的探索實(shí)踐中,借鑒鄒欣在《構(gòu)建之法》中關(guān)于課程安排的建議,并根據(jù)實(shí)際情況進(jìn)行調(diào)整,最終要求參與實(shí)踐課的學(xué)生要分別經(jīng)歷個(gè)人、結(jié)隊(duì)以及團(tuán)隊(duì)3次項(xiàng)目。其中,團(tuán)隊(duì)項(xiàng)目要求發(fā)布Alpha版本以及Beta版本產(chǎn)品,并邀請(qǐng)真實(shí)用戶進(jìn)行試用及反饋,同時(shí)通過要求團(tuán)隊(duì)使用代碼Github托管、版本控制工具、持續(xù)兩周的每日會(huì)議以及燃盡圖等方式,最大程度上讓學(xué)生體驗(yàn)企業(yè)實(shí)際項(xiàng)目的開發(fā)過程。在評(píng)分方面由企業(yè)助教嚴(yán)格評(píng)分,并設(shè)立截止日期,未完成的學(xué)生則倒扣成績(jī)。最終建立一個(gè)公正、及時(shí)、有效的評(píng)價(jià)機(jī)制。
表1為本次軟件工程實(shí)踐課程的計(jì)劃安排表,但實(shí)際教學(xué)中由于法定長(zhǎng)假、其他課程實(shí)習(xí)等原因,個(gè)人項(xiàng)目穿插于結(jié)隊(duì)項(xiàng)目和團(tuán)隊(duì)項(xiàng)目期間,保證了學(xué)生每周都有一定量的作業(yè)。
同時(shí)不提倡學(xué)生提前選擇組隊(duì)對(duì)象,模擬企業(yè)的真實(shí)開發(fā)團(tuán)隊(duì)很少可以自主選擇。團(tuán)隊(duì)人數(shù)限制在4-5人,較少規(guī)模的團(tuán)隊(duì)便于學(xué)生自主管理和掌控。
團(tuán)隊(duì)分工方面強(qiáng)制性要求所有成員必須參與編程,一旦發(fā)現(xiàn)獨(dú)干現(xiàn)象將給予零分。傳統(tǒng)的教學(xué)模式中常會(huì)出現(xiàn)學(xué)生“打醬油、抱大腿”現(xiàn)象,為了避免或者盡量減少該種現(xiàn)象發(fā)生,強(qiáng)制性要求學(xué)生使用Github托管團(tuán)隊(duì)項(xiàng)目,每個(gè)人的貢獻(xiàn)日志記錄,提交代碼塊均可以查看。
本次實(shí)踐中,結(jié)合具體的一個(gè)用戶“痛點(diǎn)”項(xiàng)目,給學(xué)生提供一個(gè)真實(shí)的客戶需求。教師安排學(xué)生與主要用戶會(huì)面,會(huì)面期間由學(xué)生與客戶自主談話,讓學(xué)生體驗(yàn)如何引導(dǎo)客戶需求,以及如何理解客戶的需求。過后對(duì)學(xué)生表現(xiàn)稍作點(diǎn)評(píng),之后讓學(xué)生自主發(fā)揮。
最終驗(yàn)收時(shí)要求學(xué)生邀請(qǐng)客戶進(jìn)行試用、反饋、改進(jìn)、使用,并選擇完成較好的團(tuán)隊(duì)產(chǎn)品,投入實(shí)際上線使用,讓學(xué)生繼續(xù)體驗(yàn)軟件維護(hù)過程。
4.學(xué)生的產(chǎn)出評(píng)價(jià)分析
這種“Learning by doing”的教學(xué)模式,可以激發(fā)出多數(shù)學(xué)生的興趣與熱情。許多學(xué)生反映“從沒想過在學(xué)生時(shí)代還能經(jīng)歷一次如此正規(guī)的開發(fā)過程”。事實(shí)上,學(xué)生缺少的是一個(gè)能夠發(fā)揮他們熱情與興趣的平臺(tái)。在理論課上講授相應(yīng)軟件工程思想時(shí),常常也有學(xué)生表示感慨,比如講授團(tuán)隊(duì)管理及分工方面的知識(shí)點(diǎn)時(shí),多個(gè)項(xiàng)目經(jīng)理忍不住在課上各抒己見。這是一種可以把理論與實(shí)踐結(jié)合在一起的教學(xué)模式,能夠讓學(xué)生通過實(shí)踐去消化、應(yīng)用理論課上學(xué)習(xí)的思想。反過來,也可以通過理論課上講授的思想去反思自己實(shí)踐上的行為。
在課程結(jié)束時(shí),對(duì)學(xué)生進(jìn)行問卷調(diào)查,收集反饋信息,整理、分析學(xué)生學(xué)完軟件工程課程后的收獲。問卷主要內(nèi)容應(yīng)為調(diào)查學(xué)生評(píng)價(jià)每周花在該課程上的時(shí)間和在該項(xiàng)目上編寫的代碼量,同時(shí)讓學(xué)生對(duì)自己的軟件工程各種技能能力進(jìn)行自我評(píng)估。
表2是參與該次“Leaning by doing”教學(xué)模式下的學(xué)生的反饋、總結(jié)。
未參與實(shí)踐課的學(xué)生多數(shù)表示,對(duì)于開發(fā)軟件的概念更多的是停留在敲代碼上,至于其他團(tuán)隊(duì)管理、分工、文檔等方面都不夠重視。參與實(shí)踐課的學(xué)生多數(shù)反映,按照實(shí)踐課程要求進(jìn)行的軟件開發(fā),花在代碼上的時(shí)間反而比花在文檔,團(tuán)隊(duì)開會(huì)、管理、分工上還要少。收集到的反饋數(shù)據(jù)也表明,采用新教學(xué)模式下的學(xué)生更愿意花費(fèi)更多的時(shí)間在該課程上,多數(shù)學(xué)生反映這種教學(xué)模式比較有興趣,更能讓學(xué)生自主投入進(jìn)去。
表3是2014年以傳統(tǒng)教學(xué)模式進(jìn)行授課的軟件工程實(shí)踐課程的學(xué)生問卷調(diào)查的匯總和2015年以基于開放模式的軟件工程實(shí)踐教學(xué)模式進(jìn)行授課的學(xué)生問卷調(diào)查匯總。
傳統(tǒng)教學(xué)模式下往往會(huì)出現(xiàn)“重個(gè)人,輕團(tuán)隊(duì)”“重技術(shù),輕管理”“重理論,輕實(shí)踐”等現(xiàn)象,學(xué)生們經(jīng)常會(huì)以為軟件開發(fā)就等同于編程,因此導(dǎo)致了學(xué)生在實(shí)踐過程中只注重編程能力,而忽略了團(tuán)隊(duì)的管理、協(xié)作等方面。表中數(shù)據(jù)也顯示,采用“Learing by doing”教學(xué)理念,基于開放模式的軟件工程教學(xué)模式下的學(xué)生,在項(xiàng)目管理、代碼復(fù)審以及軟件工程工具的使用上的能力提升都很顯著。
5.結(jié)語
實(shí)踐表明,開放模式的軟件工程實(shí)踐教學(xué)模式相比傳統(tǒng)教學(xué)模式更能引起學(xué)生學(xué)習(xí)的興趣,也能更好地彌補(bǔ)傳統(tǒng)教學(xué)模式中的不足之處。“Learing by doing”的教學(xué)理念,強(qiáng)調(diào)理論與實(shí)踐的結(jié)合,培養(yǎng)學(xué)生快速入手,自主學(xué)習(xí)的能力。下一步,將計(jì)劃在計(jì)算機(jī)專業(yè)的實(shí)踐課程中運(yùn)用這種教學(xué)模式,盡可能讓學(xué)生從大一時(shí)就能適應(yīng)以“Learing by doing”為教學(xué)理念。