文/張齊勛 汪盛 田在銘 楊志偉
軟件工程課程是軟件工程專業(yè)一門綜合性基礎(chǔ)課程,對于軟件工程專業(yè)的其他課程起到穿針引線的作用,是其他課程基礎(chǔ)知識的綜合應(yīng)用,包含程序設(shè)計語言、數(shù)據(jù)庫、開發(fā)工具、系統(tǒng)平臺以及軟件設(shè)計模式等內(nèi)容,采用工程化的概念、原理、技術(shù)和方法進(jìn)行軟件的開發(fā)和維護(hù),貫穿軟件的全生命周期,包括軟件的需求分析、設(shè)計、開發(fā)、測試、交付以及維護(hù)等全過程。
隨著IT 技術(shù)的不斷更新及發(fā)展,企業(yè)對軟件工程人才的需求提出了更高的要求,為了培養(yǎng)符合IT 企業(yè)需求的軟件工程專業(yè)人才,學(xué)院在華為公司的支持下,對軟件工程實踐課程進(jìn)行了改革,針對課程的知識體系、教學(xué)方法、實踐項目以及考核標(biāo)準(zhǔn)等進(jìn)行了重新設(shè)計,邀請企業(yè)導(dǎo)師參與課程實踐項目的指導(dǎo),按照企業(yè)的軟件開發(fā)模式及開發(fā)流程,指導(dǎo)學(xué)生完成小組項目,使學(xué)生在學(xué)校期間真正學(xué)習(xí)到企業(yè)的軟件工程能力,為將來實習(xí)和就業(yè)打下良好的基礎(chǔ)。
在實踐教學(xué)過程中,如何激發(fā)學(xué)生自主學(xué)習(xí)的積極性,讓學(xué)生課后主動彌補(bǔ)自己知識的不足也是本次課程教學(xué)改革的一個目標(biāo)。首先是教師角色的轉(zhuǎn)變,從知識的傳授者轉(zhuǎn)變?yōu)閷W(xué)生走向知識的領(lǐng)路人。其次要有信息化的手段,幫助教師與學(xué)生之間更好的互動,教師需要及時了解學(xué)生在學(xué)習(xí)過程中的更多細(xì)節(jié),掌握學(xué)生的學(xué)習(xí)效果和課程項目實踐的參與程度。
針對目前的課程教學(xué)內(nèi)容及教學(xué)模式,本課程主要從以下幾個方面進(jìn)行了教學(xué)改革的思考和嘗試。
在保持課程內(nèi)容相對穩(wěn)定的基礎(chǔ)上,補(bǔ)充業(yè)界最新的軟件工程理念、技術(shù)和方法,強(qiáng)化課程實驗、創(chuàng)新實踐項目與相關(guān)知識點的結(jié)合。在講授基礎(chǔ)知識的過程中,貫穿教學(xué)案例分析與講解,讓學(xué)生真正掌握軟件工程的相關(guān)理論、工程方法以及創(chuàng)新實踐技術(shù),訓(xùn)練學(xué)生從事軟件開發(fā)的系統(tǒng)能力,使學(xué)生通過學(xué)習(xí)本課程既掌握理論基礎(chǔ)知識,又具備軟件創(chuàng)新實踐能力。
教學(xué)過程一方面要發(fā)揮教師教學(xué)的主觀能動性,另一方面也要充分激發(fā)學(xué)生的學(xué)習(xí)興趣,并將之保持下去。這就需要采用豐富有效的教學(xué)方式。
本課程將理論、實踐和創(chuàng)新的培養(yǎng)結(jié)合在一起。通過理論、實踐和創(chuàng)新的結(jié)合,形成相互促進(jìn)的螺旋式上升結(jié)構(gòu),教師與學(xué)生能夠進(jìn)行充分的溝通和交流,讓教學(xué)內(nèi)容、積極思考和創(chuàng)新思想深入到學(xué)生的思維,從而達(dá)到良好的教學(xué)效果。
在教學(xué)過程中,除正常的教師授課外,還采用了課堂討論的方式,通過交互式的交流和探討,提高學(xué)生的學(xué)習(xí)興趣,使學(xué)生積極活躍的進(jìn)行思考。同時,通過交互式的教學(xué),還提高了學(xué)生的自學(xué)能力和表達(dá)能力。
在軟件生命周期中,除了設(shè)計能力和編程能力外,還涉及軟件文檔撰寫能力、口頭表達(dá)能力和團(tuán)隊配合能力等多方面素質(zhì),進(jìn)而完成軟件系統(tǒng)的構(gòu)思、設(shè)計、實現(xiàn)和實施等全過程。
課程定期邀請企業(yè)的專家學(xué)者參與課程教學(xué)過程,使學(xué)生能夠更好的了解軟件工程領(lǐng)域最新進(jìn)展。
作為一門理論與實踐并重的課程,課程學(xué)習(xí)結(jié)果的考核綜合考慮了理論、實踐兩個方面。學(xué)生的最終課程成績分布為:理論成績30%,平時實驗20%,綜合實踐項目30%,課堂討論20%。通過這種考核方式,同學(xué)們不再單純的關(guān)注傳統(tǒng)的書面考試,而是將理論、實踐、課堂互動交流等綜合起來,同時促進(jìn)學(xué)生主動思考,積極創(chuàng)新,從而提高學(xué)生的綜合素質(zhì)。
為了對教學(xué)效果進(jìn)行有效的跟蹤,課程組采用多種方法收集課程的教學(xué)效果。首先在課程過程中通過對學(xué)生在討論交流中曝露出的問題進(jìn)行分析,找出問題的主要原因及應(yīng)對方法,進(jìn)而反饋到教學(xué)中;在課程結(jié)束后,進(jìn)行問卷調(diào)查,對學(xué)生進(jìn)行訪談,了解學(xué)生的學(xué)習(xí)效果;在課程結(jié)束半年后,進(jìn)行問卷調(diào)查和訪談,收集學(xué)生對本課程的改進(jìn)意見。教學(xué)效果跟蹤對于改善課程設(shè)置,提高教學(xué)水平起到了良好的作用。
學(xué)生創(chuàng)新實踐能力的培養(yǎng)主要來源于項目實踐環(huán)節(jié),除了邀請企業(yè)專家參與授課,最重要的是采用企業(yè)先進(jìn)的開發(fā)理念、流程以及工具,按照企業(yè)開發(fā)場景進(jìn)行實訓(xùn)操作,在課程實踐教學(xué)中,需求分析、項目管理、軟件開發(fā)、部署等過程均基于華為云DevCloud,參照企業(yè)實際開發(fā)流程進(jìn)行。軟件實踐過程中,讓學(xué)生們真正體會把理論知識變成軟件產(chǎn)品的全過程。
DevCloud 是華為云提供的一站式云端DevOps 平臺,覆蓋軟件研發(fā)過程中項目管理、代碼托管、代碼檢查、編譯構(gòu)建、測試管理、自動化測試、自動化部署、發(fā)布管理和流水線端到端的業(yè)務(wù)過程,讓軟件開發(fā)簡單高效,并可以管理和監(jiān)測軟件開發(fā)的全過程。在使用DevCloud 進(jìn)行課程項目實踐教學(xué)過程中,可以及時了解到每位學(xué)生的日常表現(xiàn)。
項目管理:包含多項目管理、敏捷迭代、看板協(xié)作、需求管理、缺陷跟蹤、文檔管理、Wiki 在線協(xié)作、儀表盤自定制報表等功能。
代碼托管:提供基于Git 的在線代碼托管服務(wù),包括代碼克隆/下載/提交/推送/比較/合并/分支/Code Review 等功能。
代碼檢查:基于云端實現(xiàn)代碼質(zhì)量管理的服務(wù),軟件開發(fā)者可在編碼完成后執(zhí)行多語言的代碼靜態(tài)檢查和安全檢查,獲取全面的質(zhì)量報告,并提供缺陷的改進(jìn)建議和趨勢分析,有效管控代碼質(zhì)量。
部署:提供可視化、一鍵式部署服務(wù),支持并行部署和流水線無縫集成,支持腳本部署,容器部署等部署類型,支持java、node.js、python 等多種技術(shù)棧,實現(xiàn)部署環(huán)境標(biāo)準(zhǔn)化和部署過程自動化。
發(fā)布:提供軟件倉庫、軟件發(fā)布、發(fā)布包下載、發(fā)布包元數(shù)據(jù)管理等功能,通過安全可靠的軟件倉庫,實現(xiàn)軟件包版本管理。
在小組實踐項目管理過程中,小組人員進(jìn)行角色分工,華為專家通過分享企業(yè)實際開發(fā)過程中所使用的敏捷開發(fā)流程,以及企業(yè)在軟件工程中的不同角色之間如何協(xié)同開發(fā),每個角色所需的關(guān)鍵技能,使學(xué)生參照企業(yè)真實開發(fā)流程,討論需求、分工協(xié)作,使用華為云DevCloud 進(jìn)行敏捷開發(fā)項目實踐。
在企業(yè)中,通常迭代周期為1 周或2 周,在課堂上,同樣采用迭代的方式驗收小組項目,課程項目采用2 周發(fā)布一次迭代的方式,對項目及成員的表現(xiàn)進(jìn)行考核,為了確保考核標(biāo)準(zhǔn)可量化,也為了使學(xué)生能夠更加深入的理解敏捷軟件項目開發(fā)的項目管理和實施細(xì)節(jié),課程教師共同針對本課程,制定了表1 的課程項目迭代考核標(biāo)準(zhǔn),每次迭代驗收均按照迭代考核標(biāo)準(zhǔn)對小組項目及組內(nèi)每個成員進(jìn)行考核打分。
表1 課程項目迭代考核標(biāo)準(zhǔn)
通過一個學(xué)期的課程改革及教學(xué)實踐,本課程基于軟件工程基礎(chǔ)知識和DevCloud 開發(fā)平臺,將教學(xué)知識體系與工程技術(shù)教學(xué)相結(jié)合,使教學(xué)與工程完美融合在一起。學(xué)生反饋通過本次課程的學(xué)習(xí),了解了IT 企業(yè)真實的工作模式,收獲了獨(dú)立解決問題的能力,掌握了學(xué)習(xí)新技術(shù)的能力,具備了工程實踐能力、團(tuán)隊協(xié)作能力、交流溝通能力。
軟件工程課程教學(xué)改革以學(xué)生發(fā)展為中心,以企業(yè)為市場主體,把培養(yǎng)學(xué)生創(chuàng)新能力放在軟件工程人才培養(yǎng)的核心地位,采取多項課程改革方式,引入企業(yè)先進(jìn)的軟件技術(shù)及研發(fā)經(jīng)驗,調(diào)動企業(yè)參與人才培養(yǎng)的積極性,構(gòu)建產(chǎn)學(xué)深度融合的多方協(xié)同育人平臺,強(qiáng)化學(xué)生職業(yè)素養(yǎng)和工程實踐能力的培養(yǎng)。