盧慧雅,王 磊
(1.北京信息科技大學(xué) 信息管理學(xué)院,北京100192;2.北京信息科技大學(xué) 信息管理學(xué)院,北京100192)
隨著信息時代的發(fā)展,Java語言在21世紀(jì)初陸續(xù)引入高校,并已經(jīng)成為計算機(jī)大類相關(guān)專業(yè)的核心課程,對應(yīng)的課程教學(xué)大綱要求學(xué)生不僅深刻理解面向?qū)ο蟮脑O(shè)計思想,還熟練掌握編程能力和方法技巧,特別是在當(dāng)前新工科背景下,程序設(shè)計類的課程教學(xué)特別需要貫徹培養(yǎng)學(xué)生分析問題、解決問題和拓展創(chuàng)新的能力;然而,傳統(tǒng)的實踐環(huán)節(jié)往往被忽視,實驗內(nèi)容單一、缺乏吸引力,無法激發(fā)學(xué)生動手實踐的興趣。
筆者基于信管專業(yè)Java授課實例進(jìn)行分析:Java課程教學(xué)計劃要求理論授課之后,安排16學(xué)時的獨立實踐,最終目標(biāo)是要求學(xué)生熟練運用所學(xué)知識,獨立完成一個工程項目,掌握編程、調(diào)試方法,培養(yǎng)創(chuàng)新思維,提高動手能力。在過去的實踐教學(xué)中,往往是教師下發(fā)難度不等的幾個項目,簡要介紹需求和功能后,由學(xué)生自行認(rèn)領(lǐng)項目。代碼編寫沒有嚴(yán)格的開發(fā)規(guī)范,整個過程以教師的零散答疑為主,不集中授課,基本屬于“放養(yǎng)”式。傳統(tǒng)的獨立實踐教學(xué)過程如圖1所示。
圖1 傳統(tǒng)的獨立實踐教學(xué)過程
這種實踐模式導(dǎo)致學(xué)生在動手實踐時,感到?jīng)]有頭緒、無從下手,很難培養(yǎng)真正的開發(fā)興趣和動手能力,具體存在的問題包括:①項目難度等級存在差異,少部分學(xué)生基礎(chǔ)薄弱,不敢也不想選擇難度較高的項目,造成整體教學(xué)目標(biāo)效果較差;②實現(xiàn)過程缺乏監(jiān)管和互動,學(xué)生遇到的問題大部分是共性的,教師卻很難組織有效的課堂教學(xué);③任務(wù)實施缺乏記錄和管理,學(xué)生提交的代碼為最終合成版,關(guān)鍵的分析能力和解題思路無從體現(xiàn),更不能保存、回溯和統(tǒng)計。這種形式化的實踐模式已經(jīng)不能滿足專業(yè)技術(shù)人才培養(yǎng)的要求,迫切需要探索一種新思維和新方法。
著眼于“精細(xì)化”培養(yǎng)方式,課題組與優(yōu)秀企業(yè)合作,探討并引入一種全新的實訓(xùn)平臺實踐機(jī)制——基于Java實訓(xùn)平臺的獨立實踐模式[1]。首先,該平臺可以低成本導(dǎo)入企業(yè)的真實項目案例,項目具備完整的真實軟件開發(fā)流程,充分結(jié)合實訓(xùn)平臺全在線、全維度的優(yōu)勢,使學(xué)生在真實的信息環(huán)境中學(xué)習(xí)變?yōu)榭赡?;其次,該平臺的項目可降低技術(shù)的理解難度,使學(xué)生在應(yīng)用實踐上不降低項目的業(yè)務(wù)復(fù)雜度;最后,該平臺可對學(xué)生的每一步軟件開發(fā)流程進(jìn)行細(xì)致的監(jiān)控及檢查運行結(jié)果,真正提升教師的工程實踐教學(xué)能力及項目實施監(jiān)控能力。
該平臺所部署的實訓(xùn)項目緊扣教學(xué)大綱,已在企業(yè)環(huán)境中成熟應(yīng)用并經(jīng)過適當(dāng)剪裁,充分考慮了啟發(fā)性、綜合性和實用性。平臺引導(dǎo)學(xué)生逐步完成系統(tǒng)分配的任務(wù),要求提交的產(chǎn)品必須符合規(guī)則約定,最后打包交付完整的工程項目。每一個節(jié)點都真實、完整地記錄學(xué)生的實訓(xùn)過程,教師可以清晰探查進(jìn)展情況,切實提高教師的教學(xué)效率和調(diào)整學(xué)生的學(xué)習(xí)狀態(tài)。
Java實訓(xùn)平臺選取“開發(fā)團(tuán)隊人員調(diào)度軟件”作為獨立實踐項目。該軟件基于文本界面,要求學(xué)生以現(xiàn)有的公司空閑成員,組建一個開發(fā)團(tuán)隊,組建過程包括將狀態(tài)為FREE的成員添加到團(tuán)隊中并可領(lǐng)用設(shè)備或從團(tuán)隊中刪除某成員,還可以列出團(tuán)隊中所有成員。團(tuán)隊成員類型包括架構(gòu)師、設(shè)計師和程序員(不包括普通職員),團(tuán)隊中不同類型的成員有數(shù)量限制。實訓(xùn)平臺已在項目中預(yù)設(shè)模擬整合數(shù)據(jù),部分?jǐn)?shù)據(jù)見表1。
該平臺教學(xué)目標(biāo)設(shè)定為學(xué)生熟悉Java面向?qū)ο蟮母呒壧匦裕M(jìn)一步掌握編程技巧和調(diào)試方法。該項目涉及類的繼承、接口和多態(tài)、對象的關(guān)聯(lián)、static和final修飾符、特殊類和一維數(shù)組的使用、異常處理等知識點,是一個難度較高的綜合性設(shè)計項目。項目包含3類模塊,分類如圖2所示,其中view視圖模塊為主控者,負(fù)責(zé)顯示菜單界面和處理用戶操作;service服務(wù)模塊為管理者,使用數(shù)組管理公司員工和團(tuán)隊成員,功能操作失敗時拋出自定義異常;domain實體模塊包含所有員工及其子類。
首先,完成項目初始化工作。教師登錄實訓(xùn)平臺,設(shè)置“開發(fā)團(tuán)隊人員調(diào)度軟件”項目的起始和截止日期,可以彈性修改是否逾期提交。系統(tǒng)已經(jīng)預(yù)置若干子任務(wù),以實現(xiàn)的先后順序作為劃分依據(jù),然后按照每組一人的方式分配組號和任務(wù),啟動項目。
表1 “開發(fā)團(tuán)隊人員調(diào)度軟件”部分模擬數(shù)據(jù)
圖2 “開發(fā)團(tuán)隊人員調(diào)度軟件”模塊分類
學(xué)生登錄實訓(xùn)平臺,點擊“開發(fā)團(tuán)隊人員調(diào)度軟件”項目,進(jìn)入流程控制頁面,如圖3所示。
在圖3中,“需求分析”“任務(wù)及計劃”子任務(wù)由平臺提供文檔,“第一步”深色子任務(wù)表示正在進(jìn)行,“第二步”“第三步”淺色子任務(wù)表示尚未開始,醒目的箭頭引導(dǎo)學(xué)生逐步完成項目。子任務(wù)既有時間限制,又有順序要求,學(xué)生不能隨意超前或滯后選擇某個節(jié)點,需要嚴(yán)格規(guī)范軟件開發(fā)流程。單擊“第一步”子任務(wù)圖標(biāo),系統(tǒng)顯示預(yù)置的需求和設(shè)計說明,包含功能及界面描述、模塊分類、類成員名稱等。
具體細(xì)節(jié)描述如下:①教師先對任務(wù)涉及的知識點開展15 min左右的授課,必要時輔以流程圖,啟發(fā)思路,然后編寫部分示范性代碼,重點講解開發(fā)規(guī)范,如屬性定義、方法名稱、算法優(yōu)化設(shè)計等;②隨后學(xué)生自行完成余下的代碼,教師全程跟蹤,遇到共性問題,馬上組織集中答疑;③學(xué)生再對代碼進(jìn)行測試,教師可以在此階段指導(dǎo)學(xué)生選取模擬數(shù)據(jù),編寫測試方法進(jìn)行功能驗證,運行無誤后在平臺里提交源文件。在這些步驟中,須嚴(yán)格檢查文件的格式,包括類名稱、屬性名、方法名,如果不符合規(guī)范將顯示錯誤信息,學(xué)生依據(jù)反饋繼續(xù)修改,直至符合要求為止。教師可以下載學(xué)生不同任務(wù)節(jié)點的源文件進(jìn)行審閱檢查,為過程管理提供一手詳實指標(biāo)。
圖3 “開發(fā)團(tuán)隊人員調(diào)度軟件”流程控制
項目上傳完畢后,Java實訓(xùn)平臺按照內(nèi)置的評價準(zhǔn)則自動評判,策略如下:首先,系統(tǒng)將學(xué)生提交的項目代碼與模板代碼進(jìn)行匹配,根據(jù)匹配度給出第1部分分?jǐn)?shù),占比40%;其次,系統(tǒng)在后臺對項目代碼進(jìn)行編譯,如果編譯通過則給出第2部分分?jǐn)?shù),占比35%;最后,系統(tǒng)在后臺沙箱運行已經(jīng)編譯的項目代碼,如果正確運行則給出第3部分分?jǐn)?shù),占比25%。頁面顯示總評意見和3項累加后的分?jǐn)?shù),教師也可以下載并運行代碼,進(jìn)行人工審核,修改意見和分?jǐn)?shù)。學(xué)生還需要填寫課程實踐報告,詳細(xì)描述分析過程、開發(fā)過程、項目部署、問題解決等。改進(jìn)后的實踐教學(xué)過程如圖4所示。
圖4 改進(jìn)后的實踐教學(xué)過程
此外,教師還可以進(jìn)一步拓展教學(xué)思路[2],如引導(dǎo)學(xué)生思考如何使用集合組件代替數(shù)組,學(xué)習(xí)集合框架[3]的特性,理解數(shù)據(jù)的存儲結(jié)構(gòu),然后繼續(xù)引導(dǎo)學(xué)生思考如何使用GUI組件[4]設(shè)計圖形化界面,以提升顯示效果。
經(jīng)過一個完整的軟件模擬開發(fā)周期的實踐與驗證,課題組發(fā)現(xiàn)學(xué)生在需求分析、軟件設(shè)計、代碼編寫、整合測試、項目部署、歸納總結(jié)等各階段的分析與實踐能力得到了明顯的提高,不僅完成了既定教學(xué)大綱和內(nèi)容的設(shè)置與要求,還提升了開發(fā)興趣與積極性。教學(xué)在如下方面取得比較好的效果:①理論教學(xué)中的知識點合理穿插在項目案例里,使得學(xué)生對晦澀的概念逐漸清晰化,深刻認(rèn)識了“面向?qū)ο蟆钡木幊趟枷?,更好地理解Java設(shè)計理念和模式[5];②逐步掌握了項目任務(wù)的拆分方法,能夠使用“包”層的方式迭代構(gòu)建項目,分析編碼中出現(xiàn)的問題原因,學(xué)會使用單步調(diào)試加以解決,為以后參加“大創(chuàng)”項目或比賽積累經(jīng)驗;③獨立實踐結(jié)束后進(jìn)行延伸思考,學(xué)生繼續(xù)學(xué)習(xí)不同的完善方案[6],有助于克服程序設(shè)計過程中的“畏難”“抵觸”情緒,為后續(xù)的信息系統(tǒng)分析與設(shè)計、Java企業(yè)級開發(fā)等課程奠定良好的基礎(chǔ)。
區(qū)別于傳統(tǒng)的實踐教學(xué)模式,本文配合Java理論教學(xué)提出的Java實訓(xùn)平臺不僅融合Java語言的技術(shù)特征,而且具有綜合性、實用性和趣味性,解決了實踐課程[7]中教學(xué)互動不利的尷尬,大大提升了教學(xué)質(zhì)量與效果。該平臺作為獨立實踐項目的載體,以任務(wù)驅(qū)動[8]為導(dǎo)向,按照流程節(jié)點記錄學(xué)生的過程文件,保存在數(shù)據(jù)庫中。實訓(xùn)項目趣味真實,課堂氣氛積極踴躍,激發(fā)了學(xué)生內(nèi)在的主動性和思考性,切實提升了編程和調(diào)試能力。經(jīng)過有效實施與驗證,教學(xué)目標(biāo)更加具體、明確,教學(xué)過程更加敏捷、有效,對學(xué)生有重要指導(dǎo)意義;同時該方式切實提高了教師的項目管控能力,取得了比較好的教學(xué)效果。事實上,在項目實施過程中,諸如評價準(zhǔn)則的細(xì)化、子任務(wù)的劃分、代碼的查重等方面還有待進(jìn)一步檢驗和提升,以便更好地適應(yīng)專業(yè)發(fā)展和人才培養(yǎng)的需要。
[1] 張璞.“案例驅(qū)動+項目導(dǎo)向”的Java程序設(shè)計課程教學(xué)模式研究[J]. 計算機(jī)教育, 2017(2): 58-61.
[2] 尉哲明, 冀素琴. 基于Java的綜合課程設(shè)計研究與實踐[J]. 計算機(jī)教育, 2015(3): 23-25.
[3] 孫宇霞, 鄭千忠. Java開發(fā)課堂實錄[M]. 北京: 清華大學(xué)出版社, 2016: 115-118.
[4] 田智. Java程序設(shè)計習(xí)題實訓(xùn)精編[M]. 西安: 西安電子科技大學(xué)出版社, 2017: 124-138.
[5] 耿祥義, 張躍平. Java設(shè)計模式[M]. 北京: 清華大學(xué)出版社, 2009: 78-88.
[6] 尉哲明. 基于Java的綜合課程設(shè)計[M]. 北京: 清華大學(xué)出版社, 2014: 35-41.
[7] 趙曉雷. 項目教學(xué)法在Java程序設(shè)計實驗教學(xué)中的應(yīng)用研究[J]. 渭南師范學(xué)院學(xué)報, 2016, 31(6): 32-36.
[8] 佘燕達(dá), 齊悅. 對“面向?qū)ο蟪绦蛟O(shè)計(Java)”課程教學(xué)模式改革的思考[J]. 通化師范學(xué)院學(xué)報, 2015(4): 46-47.