夏竹青 王竹婷 吳曉琴
摘要:《JavaEE技術(shù)》實驗教學(xué)環(huán)節(jié)在軟件工程專業(yè)培養(yǎng)應(yīng)用型人才的目標(biāo)中發(fā)揮著重要作用,但目前教學(xué)目標(biāo)和教學(xué)效果的差距較大。對《JavaEE技術(shù)》實驗課程中存在的問題進(jìn)行分析,并提出引入真實項目重新設(shè)計實驗內(nèi)容,搭建代碼質(zhì)量管理平臺進(jìn)行代碼規(guī)范的實時教育,以及引入代碼版本管理工具SVN推進(jìn)小組開發(fā)的順利進(jìn)行等措施,提高教學(xué)質(zhì)量。
關(guān)鍵詞:JavaEE技術(shù);代碼規(guī)范;小組開發(fā);實驗教學(xué);SVN
中圖分類號:G642? ? ? ? 文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2022)10-0169-02
1 引言
合肥學(xué)院以“地方性、應(yīng)用型、國際化”為辦學(xué)定位,圍繞“應(yīng)用型人才”培養(yǎng)方向,深化教育教學(xué)改革,教學(xué)環(huán)節(jié)更加突出強(qiáng)化實踐教學(xué)。我校的“JavaEE 技術(shù)”課程作為計算機(jī)及相關(guān)專業(yè)高年級必修課程,是一門技術(shù)性、專業(yè)性和實踐性都很強(qiáng)的課程[1],其教學(xué)目標(biāo)是讓學(xué)生通過課程學(xué)習(xí),具備進(jìn)行企業(yè)級軟件開發(fā)的高級專業(yè)技能,畢業(yè)后能夠較快勝任企業(yè)的軟件開發(fā)工作。從課程的性質(zhì)、教學(xué)目標(biāo)到學(xué)校的辦學(xué)定位,都說明了課程實驗環(huán)節(jié)的重要性。本文對目前課程實驗中存在的若干問題進(jìn)行了分析,提出了相應(yīng)的解決方案。
2 JavaEE技術(shù)實驗教學(xué)存在的問題
2.1 實驗項目針對單個知識點進(jìn)行設(shè)計
對Spring、SpringMVC和Mybatis等框架的熟練應(yīng)用是Web人才的必備技能[2],JavaEE技術(shù)課程圍繞MVC模式的Web系統(tǒng)開發(fā)技術(shù)和框架展開。本課程的實驗通常是一次實驗圍繞一個知識點進(jìn)行訓(xùn)練,學(xué)生對單一知識點掌握較好,但多知識點綜合應(yīng)用開發(fā)能力不足,另外實驗中接觸的都是很簡單的項目,對適用于體量較大項目的框架技術(shù)帶來的開發(fā)效率提升缺乏切身感受,學(xué)生常感覺殺雞焉用牛刀。
2.2 學(xué)生缺乏良好編碼規(guī)范
軟件系統(tǒng)的質(zhì)量與效率離不開好的編程習(xí)慣,當(dāng)開發(fā)小型項目時,為追求短期效益,常常率性而為。但隨著項目規(guī)模逐漸擴(kuò)大,編碼規(guī)范就會逐步顯出它的重要性。軟件質(zhì)量不僅依賴架構(gòu)和項目管理,還跟代碼質(zhì)量息息相關(guān),代碼質(zhì)量又與代碼整潔度成正比[3] 。規(guī)范整潔的代碼,既在質(zhì)量上較為可靠,也為后期的維護(hù)、升級打下了良好的根基。
規(guī)范整潔的代碼則要求學(xué)生遵循一定的編碼規(guī)范。但在編程過程中,教師難以約束,學(xué)生常常率性而為,沒有良好的編碼習(xí)慣。究其原因,主要是編碼規(guī)范教育一直處于說教模式,教師精力有限,遇到不規(guī)范代碼難以一一及時指正。
2.3 小組合作開發(fā)項目效果不佳
目前編程類實驗課大都會設(shè)計小組合作開發(fā)項目,這類項目規(guī)模稍大,需要多個同學(xué)合作完成。但是由于沒有統(tǒng)一編碼規(guī)范,組員編碼風(fēng)格不同,導(dǎo)致理解其他同學(xué)代碼花費的時間精力較多。另外共享和同步組員的代碼完全依賴手工傳輸,更新同步不及時,常出現(xiàn)代碼沖突,團(tuán)隊合作效果不佳,效率低下。代碼整合階段問題頻發(fā),影響整體進(jìn)度和實驗效果。
3 重新設(shè)計實驗項目
針對實驗項目只涉及單一知識點問題,深入企業(yè)調(diào)研,挖掘真實項目案例,對真實項目進(jìn)行了裁剪,保證規(guī)模和難度在學(xué)生可以接受的范圍內(nèi),對實驗項目進(jìn)行了重新設(shè)計。除了實驗一搭建實驗環(huán)境,之后的實驗均采用小組合作開發(fā)的方式對同一個項目采用不同的技術(shù)迭代開發(fā),項目分為三個模塊,每個模塊有若干功能。每組3~5人,根據(jù)學(xué)生能力差異,每1~2個同學(xué)完成一個模塊的設(shè)計開發(fā)。實驗圍繞中醫(yī)經(jīng)典處方管理系統(tǒng)展開。依次使用傳統(tǒng)MVC技術(shù)、Spring的依賴注入和面向切面編程、Mybatis技術(shù)和SpringMVC技術(shù)對中醫(yī)經(jīng)典處方管理系統(tǒng)進(jìn)行開發(fā)和技術(shù)升級。采用了“穿新鞋走老路”的方法[4],讓學(xué)生體驗技術(shù)迭代的過程,并對照前面的開發(fā)經(jīng)歷,體驗新技術(shù)的優(yōu)勢和效率的提升。實驗項目設(shè)計如表1所示。
表1 實驗項目表
[實驗編號 實驗名稱 對應(yīng)知識點 1 基于JSP+JavaBean+Servlet技術(shù)的中醫(yī)經(jīng)典處方管理系統(tǒng) 掌握jsp+javaBean+servlet技術(shù)開發(fā)MVC模式的Web程序的方法 2 基于Spring IOC的中醫(yī)經(jīng)典處方管理系統(tǒng) 掌握Spring依賴注入技術(shù);能開發(fā)低耦合的軟件系統(tǒng) 3 中醫(yī)經(jīng)典處方管理系統(tǒng)的日志模塊開發(fā) 掌握基于XML和注解的AspectJ開發(fā)AOP程序的方法,具備面向切面編程能力 4 基于Mybatis框架的中醫(yī)經(jīng)典處方管理系統(tǒng) 掌握MyBatis程序的開發(fā)步驟;熟練開發(fā)動態(tài)sql和關(guān)聯(lián)查詢 5 基于SpringMVC框架的中醫(yī)經(jīng)典處方管理系統(tǒng) 掌握基于注解的Spring MVC應(yīng)用程序的開發(fā)方法 ]
4 進(jìn)行編碼規(guī)范的實時教育
4.1 搭建編碼規(guī)范實時教育平臺
傳統(tǒng)的說教式編碼規(guī)范教學(xué)效果一直不理想,原因有二,其一,編碼規(guī)范的條目較多,需要學(xué)生先記熟,但由于編碼經(jīng)驗不多,記熟的規(guī)則很難跟實際的編碼場景產(chǎn)生聯(lián)系。其二,對于初學(xué)者,靠自律去保證按照事先約定好的規(guī)范編碼,實現(xiàn)難度較大。那么就需要老師在學(xué)生提交代碼后去檢查,但是課程針對的是企業(yè)級軟件項目開發(fā),代碼體量較大,依靠老師個人去檢查大量代碼的規(guī)范性,一樣難以完成。針對上述問題,走訪了本地的軟件企業(yè),學(xué)習(xí)企業(yè)先進(jìn)的代碼質(zhì)量管理辦法,引入了開源的sonarQube代碼質(zhì)量管理平臺,并搭載目前業(yè)界推崇的阿里Java編碼規(guī)約,通過該平臺對學(xué)生的編碼規(guī)范進(jìn)行實時教育。
sonarQube是一款開源代碼質(zhì)量管理工具[5],也是技術(shù)債務(wù)管控的主流工具,可以檢測代碼質(zhì)量問題,開發(fā)Sonar插件可以擴(kuò)展檢測功能[6]。采用sonarQube7.0作為服務(wù)器端,然后在開源的sonar pmd插件項目中對阿里編程規(guī)約的開源p3c-pmd項目做了融合,使服務(wù)器支持阿里編程規(guī)約。學(xué)生在編碼過程中使用sonarlint插件和服務(wù)器建立連接,sonarlint自動按照老師在服務(wù)器上配置的編碼規(guī)則對開發(fā)工具(如eclipse或idea) 中編寫的代碼進(jìn)行實時檢測,保證了學(xué)生及時發(fā)現(xiàn)問題,即時修正。sonar-scanner客戶端則用于學(xué)生階段性提交代碼檢測結(jié)果到服務(wù)器,方便老師統(tǒng)計跟進(jìn),督促學(xué)生們養(yǎng)成良好的編碼習(xí)慣。
4.2 代碼質(zhì)量實時教育的評測
代碼質(zhì)量管理平臺搭建起來后,教師在代碼質(zhì)量管理中的主要工作轉(zhuǎn)移到督促學(xué)生使用平臺的工具,另外通過工具提供的統(tǒng)計分析功能,記錄學(xué)生的代碼規(guī)范程度,并將代碼規(guī)范程度列入課程的評分系統(tǒng)中。在每次實驗課結(jié)束的時候,要求學(xué)生提交代碼質(zhì)量分析結(jié)果,對于綜合性實驗所占課時較多,由多次提交的結(jié)果取均值進(jìn)行考核。
5 推動團(tuán)隊合作開發(fā)順利開展
5.1 工欲善其事 必先利其器
小組開發(fā)是培養(yǎng)學(xué)生團(tuán)隊合作,溝通等能力的重要手段,但在合作開發(fā)中,學(xué)生的編碼規(guī)范不統(tǒng)一,代碼共享不方便,同學(xué)之間經(jīng)常出現(xiàn)代碼版本不一致,導(dǎo)致項目進(jìn)展不順。編碼規(guī)范問題可以通過上面的sonarQube平臺解決。代碼版本控制問題,引入了企業(yè)協(xié)作開發(fā)常用的版本控制工具SVN進(jìn)行代碼版本管理,在校園網(wǎng)內(nèi)搭建SVN服務(wù)器,對學(xué)生的代碼進(jìn)行統(tǒng)一管理。版本控制是企業(yè)進(jìn)行項目開發(fā)與管理的標(biāo)準(zhǔn)做法,能追蹤項目從開始到結(jié)束的整個過程[7]。
5.2 基于版本控制工具SVN的小組開發(fā)
1) 版本管理平臺信息配置
在校園網(wǎng)內(nèi)搭建SVN服務(wù)器,然后建立版本管理知識庫,在知識庫中每個小組建立一個目錄。然后為每個同學(xué)建立賬號,并分配訪問(讀寫) 自己所在組目錄的權(quán)限。
2) 學(xué)生機(jī)軟件環(huán)境準(zhǔn)備
每個同學(xué)在開發(fā)設(shè)備上安裝版本管理工具SVN客戶端,也可以在開發(fā)工具eclipse或idea中安裝SVN插件,通過該工具連接SVN服務(wù)器,完成同步、提交代碼等操作。
3) 實驗過程
組長在每次實驗前,事先建立工程,上傳到SVN服務(wù)器自己所在組目錄下,組員同步組長的工程。然后每個組員在同步的工程中根據(jù)分工進(jìn)行設(shè)計開發(fā)。
每進(jìn)行到一個項目階段,組員及時上傳代碼,對于公共部分代碼一旦修改完成,立即上傳。同時養(yǎng)成習(xí)慣,修改某個公共類之前一定要先從SVN服務(wù)器同步代碼,另外SVN也提供了沖突代碼的解決辦法。在這個過程中,組員的代碼可以保持一致,另外發(fā)現(xiàn)公共部分代碼被修改,可以及時交流,保障了小組開發(fā)的順利進(jìn)行。
6 結(jié)束語
本文分析了《JavaEE技術(shù)》課程實驗教學(xué)中實驗項目設(shè)計、學(xué)生編碼規(guī)范和小組開發(fā)三個方面存在的問題,并針對存在的問題提出了相應(yīng)的解決方案,改善了教學(xué)效果,提高了教學(xué)質(zhì)量。
參考文獻(xiàn):
[1] 羅如為.基于項目驅(qū)動的JavaEE框架技術(shù)實踐教學(xué)改革探索——以湖南人文科技學(xué)院為例[J].湖南人文科技學(xué)院學(xué)報,2018,35(5):69-72.
[2] 鄧丹君,紀(jì)鵬,倪波,等.工程教育認(rèn)證背景下JavaEE課程教學(xué)改革[J].軟件導(dǎo)刊(教育技術(shù)),2019,18(8):56-57.
[3] 曹娜.代碼整潔與代碼質(zhì)量研究[J].軟件導(dǎo)刊,2013,12(10):38-40.
[4] 馮永安,王永貴,邱云飛,等.“鏈”式教學(xué)模式下Java Web 課程教學(xué)改革與實踐[J].計算機(jī)教育,2020(3):145-147.
[5] 蔡建軍,任女爾,魏金津.基于Sonar的代碼質(zhì)量檢測技術(shù)研究[J].電腦知識與技術(shù),2019,15(14):195-199.
[6] 曾新勵.基于SonarQube平臺提升企業(yè)軟件項目質(zhì)量的應(yīng)用研究[J].電腦知識與技術(shù),2019,15(11):78-80.
[7] 王海豐,李金霞,張鯤.基于SVN版本控制的程序設(shè)計類課程教學(xué)研究[J].軟件,2018,39(4):218-221.
【通聯(lián)編輯:王力】
收稿日期:2021-06-10
基金項目:2020安徽省教育廳教育教學(xué)研究一般項目(2020jyxm1598) ;2020年安徽省線上教學(xué)示范高校項目(2020xssfgx14) ;2019 年度省級軟件技術(shù)系列課程教學(xué)團(tuán)隊(2019jxtd096) ;2019 年度安徽省教育廳教育教學(xué)研究一般項目(2019jyxm0385) ;2019 年度合肥學(xué)院模塊化教材建設(shè)項目(2019hfmkjc18)
作者簡介:夏竹青(1984—) ,女,安徽懷寧人,碩士,合肥學(xué)院人工智能與大數(shù)據(jù)學(xué)院實驗師,研究方向為計算機(jī)應(yīng)用技術(shù)和人工智能。