盧慧雅,王 磊
(1.北京信息科技大學 信息管理學院,北京100192;2.北京信息科技大學 信息管理學院,北京100192)
隨著信息時代的發展,Java語言在21世紀初陸續引入高校,并已經成為計算機大類相關專業的核心課程,對應的課程教學大綱要求學生不僅深刻理解面向對象的設計思想,還熟練掌握編程能力和方法技巧,特別是在當前新工科背景下,程序設計類的課程教學特別需要貫徹培養學生分析問題、解決問題和拓展創新的能力;然而,傳統的實踐環節往往被忽視,實驗內容單一、缺乏吸引力,無法激發學生動手實踐的興趣。
筆者基于信管專業Java授課實例進行分析:Java課程教學計劃要求理論授課之后,安排16學時的獨立實踐,最終目標是要求學生熟練運用所學知識,獨立完成一個工程項目,掌握編程、調試方法,培養創新思維,提高動手能力。在過去的實踐教學中,往往是教師下發難度不等的幾個項目,簡要介紹需求和功能后,由學生自行認領項目。代碼編寫沒有嚴格的開發規范,整個過程以教師的零散答疑為主,不集中授課,基本屬于“放養”式。傳統的獨立實踐教學過程如圖1所示。

圖1 傳統的獨立實踐教學過程
這種實踐模式導致學生在動手實踐時,感到沒有頭緒、無從下手,很難培養真正的開發興趣和動手能力,具體存在的問題包括:①項目難度等級存在差異,少部分學生基礎薄弱,不敢也不想選擇難度較高的項目,造成整體教學目標效果較差;②實現過程缺乏監管和互動,學生遇到的問題大部分是共性的,教師卻很難組織有效的課堂教學;③任務實施缺乏記錄和管理,學生提交的代碼為最終合成版,關鍵的分析能力和解題思路無從體現,更不能保存、回溯和統計。這種形式化的實踐模式已經不能滿足專業技術人才培養的要求,迫切需要探索一種新思維和新方法。
著眼于“精細化”培養方式,課題組與優秀企業合作,探討并引入一種全新的實訓平臺實踐機制——基于Java實訓平臺的獨立實踐模式[1]。首先,該平臺可以低成本導入企業的真實項目案例,項目具備完整的真實軟件開發流程,充分結合實訓平臺全在線、全維度的優勢,使學生在真實的信息環境中學習變為可能;其次,該平臺的項目可降低技術的理解難度,使學生在應用實踐上不降低項目的業務復雜度;最后,該平臺可對學生的每一步軟件開發流程進行細致的監控及檢查運行結果,真正提升教師的工程實踐教學能力及項目實施監控能力。
該平臺所部署的實訓項目緊扣教學大綱,已在企業環境中成熟應用并經過適當剪裁,充分考慮了啟發性、綜合性和實用性。平臺引導學生逐步完成系統分配的任務,要求提交的產品必須符合規則約定,最后打包交付完整的工程項目。每一個節點都真實、完整地記錄學生的實訓過程,教師可以清晰探查進展情況,切實提高教師的教學效率和調整學生的學習狀態。
Java實訓平臺選取“開發團隊人員調度軟件”作為獨立實踐項目。該軟件基于文本界面,要求學生以現有的公司空閑成員,組建一個開發團隊,組建過程包括將狀態為FREE的成員添加到團隊中并可領用設備或從團隊中刪除某成員,還可以列出團隊中所有成員。團隊成員類型包括架構師、設計師和程序員(不包括普通職員),團隊中不同類型的成員有數量限制。實訓平臺已在項目中預設模擬整合數據,部分數據見表1。
該平臺教學目標設定為學生熟悉Java面向對象的高級特性,進一步掌握編程技巧和調試方法。該項目涉及類的繼承、接口和多態、對象的關聯、static和final修飾符、特殊類和一維數組的使用、異常處理等知識點,是一個難度較高的綜合性設計項目。項目包含3類模塊,分類如圖2所示,其中view視圖模塊為主控者,負責顯示菜單界面和處理用戶操作;service服務模塊為管理者,使用數組管理公司員工和團隊成員,功能操作失敗時拋出自定義異常;domain實體模塊包含所有員工及其子類。
首先,完成項目初始化工作。教師登錄實訓平臺,設置“開發團隊人員調度軟件”項目的起始和截止日期,可以彈性修改是否逾期提交。系統已經預置若干子任務,以實現的先后順序作為劃分依據,然后按照每組一人的方式分配組號和任務,啟動項目。

表1 “開發團隊人員調度軟件”部分模擬數據

圖2 “開發團隊人員調度軟件”模塊分類
學生登錄實訓平臺,點擊“開發團隊人員調度軟件”項目,進入流程控制頁面,如圖3所示。
在圖3中,“需求分析”“任務及計劃”子任務由平臺提供文檔,“第一步”深色子任務表示正在進行,“第二步”“第三步”淺色子任務表示尚未開始,醒目的箭頭引導學生逐步完成項目。子任務既有時間限制,又有順序要求,學生不能隨意超前或滯后選擇某個節點,需要嚴格規范軟件開發流程。單擊“第一步”子任務圖標,系統顯示預置的需求和設計說明,包含功能及界面描述、模塊分類、類成員名稱等。
具體細節描述如下:①教師先對任務涉及的知識點開展15 min左右的授課,必要時輔以流程圖,啟發思路,然后編寫部分示范性代碼,重點講解開發規范,如屬性定義、方法名稱、算法優化設計等;②隨后學生自行完成余下的代碼,教師全程跟蹤,遇到共性問題,馬上組織集中答疑;③學生再對代碼進行測試,教師可以在此階段指導學生選取模擬數據,編寫測試方法進行功能驗證,運行無誤后在平臺里提交源文件。在這些步驟中,須嚴格檢查文件的格式,包括類名稱、屬性名、方法名,如果不符合規范將顯示錯誤信息,學生依據反饋繼續修改,直至符合要求為止。教師可以下載學生不同任務節點的源文件進行審閱檢查,為過程管理提供一手詳實指標。

圖3 “開發團隊人員調度軟件”流程控制
項目上傳完畢后,Java實訓平臺按照內置的評價準則自動評判,策略如下:首先,系統將學生提交的項目代碼與模板代碼進行匹配,根據匹配度給出第1部分分數,占比40%;其次,系統在后臺對項目代碼進行編譯,如果編譯通過則給出第2部分分數,占比35%;最后,系統在后臺沙箱運行已經編譯的項目代碼,如果正確運行則給出第3部分分數,占比25%。頁面顯示總評意見和3項累加后的分數,教師也可以下載并運行代碼,進行人工審核,修改意見和分數。學生還需要填寫課程實踐報告,詳細描述分析過程、開發過程、項目部署、問題解決等。改進后的實踐教學過程如圖4所示。

圖4 改進后的實踐教學過程
此外,教師還可以進一步拓展教學思路[2],如引導學生思考如何使用集合組件代替數組,學習集合框架[3]的特性,理解數據的存儲結構,然后繼續引導學生思考如何使用GUI組件[4]設計圖形化界面,以提升顯示效果。
經過一個完整的軟件模擬開發周期的實踐與驗證,課題組發現學生在需求分析、軟件設計、代碼編寫、整合測試、項目部署、歸納總結等各階段的分析與實踐能力得到了明顯的提高,不僅完成了既定教學大綱和內容的設置與要求,還提升了開發興趣與積極性。教學在如下方面取得比較好的效果:①理論教學中的知識點合理穿插在項目案例里,使得學生對晦澀的概念逐漸清晰化,深刻認識了“面向對象”的編程思想,更好地理解Java設計理念和模式[5];②逐步掌握了項目任務的拆分方法,能夠使用“包”層的方式迭代構建項目,分析編碼中出現的問題原因,學會使用單步調試加以解決,為以后參加“大創”項目或比賽積累經驗;③獨立實踐結束后進行延伸思考,學生繼續學習不同的完善方案[6],有助于克服程序設計過程中的“畏難”“抵觸”情緒,為后續的信息系統分析與設計、Java企業級開發等課程奠定良好的基礎。
區別于傳統的實踐教學模式,本文配合Java理論教學提出的Java實訓平臺不僅融合Java語言的技術特征,而且具有綜合性、實用性和趣味性,解決了實踐課程[7]中教學互動不利的尷尬,大大提升了教學質量與效果。該平臺作為獨立實踐項目的載體,以任務驅動[8]為導向,按照流程節點記錄學生的過程文件,保存在數據庫中。實訓項目趣味真實,課堂氣氛積極踴躍,激發了學生內在的主動性和思考性,切實提升了編程和調試能力。經過有效實施與驗證,教學目標更加具體、明確,教學過程更加敏捷、有效,對學生有重要指導意義;同時該方式切實提高了教師的項目管控能力,取得了比較好的教學效果。事實上,在項目實施過程中,諸如評價準則的細化、子任務的劃分、代碼的查重等方面還有待進一步檢驗和提升,以便更好地適應專業發展和人才培養的需要。
[1] 張璞.“案例驅動+項目導向”的Java程序設計課程教學模式研究[J]. 計算機教育, 2017(2): 58-61.
[2] 尉哲明, 冀素琴. 基于Java的綜合課程設計研究與實踐[J]. 計算機教育, 2015(3): 23-25.
[3] 孫宇霞, 鄭千忠. Java開發課堂實錄[M]. 北京: 清華大學出版社, 2016: 115-118.
[4] 田智. Java程序設計習題實訓精編[M]. 西安: 西安電子科技大學出版社, 2017: 124-138.
[5] 耿祥義, 張躍平. Java設計模式[M]. 北京: 清華大學出版社, 2009: 78-88.
[6] 尉哲明. 基于Java的綜合課程設計[M]. 北京: 清華大學出版社, 2014: 35-41.
[7] 趙曉雷. 項目教學法在Java程序設計實驗教學中的應用研究[J]. 渭南師范學院學報, 2016, 31(6): 32-36.
[8] 佘燕達, 齊悅. 對“面向對象程序設計(Java)”課程教學模式改革的思考[J]. 通化師范學院學報, 2015(4): 46-47.