張新猛,羅海蛟,彭碧濤,李月梅
(廣東外語外貿大學 信息科學與技術學院,廣東 廣州 510006)
Java是一種跨平臺的面向對象程序設計語言,分為桌面應用、移動應用和企業級應用的開發,廣泛應用于電子商務、企業信息管理、金融服務等應用領域。連續多年,TIOBE發布的編程語言市場占有率排行榜,Java一直排在第一名,Java編程語言技能已經是計算機相關專業大學生進入軟件開發行業必備的一門技能。據IDC數據統計,從人才需求方面看,目前我國軟件人才缺口極其嚴重,其中Java人才最為缺乏。根據相關權威機構的統計數字,在所有軟件開發類人才的需求中,對Java工程師的需求達到全部需求量的60%~70%。
教育部把信息化人才與軟件人才列為國內急需的緊缺人才之一,Java工程師市場需求巨大。現狀是一方面人才需求旺盛的IT企業很難招聘到合格的Java人員,另一方面有大量具有基本Java技術的本科畢業生,但由于與企業的實際用人需求有較大的差距而存在就業困難問題。面向軟件行業需求,探索培養Java工程應用型人才的合理課程體系是高校Java教育首要解決的問題[1-2]。
目前軟件開發企業需要的技能包括基于Java EE的企業級應用開發、Android移動端開發以及與企業級應用開發相關的流行架構,然而目前高校所開設的課程遠遠落后于企業需求,傳統教學模式所培養的學生距離企業要求相差甚遠,究其原因大多存在著重理論輕實踐、重基礎輕應用、重技術輕綜合、重考試輕創新等問題。
目前幾乎國內高校都至少開設了一門Java課程,但鑒于課時、師資等原因,普遍存在的問題是缺少系列有機銜接的Java課程體系,造成Java基礎課程與實踐課程相割裂。絕大部分學校僅開設Java基礎課程,但由于沒有后續應用開發課程的支持,學生無法掌握企業應用開發中需求與技能;另外一些學校雖然開設了多門Java相關課程,但課程缺乏有機銜接,學生往往不能形成知識網絡,難以綜合應用所學Java知識構建企業級應用。
目前高校所開設的Java相關課程與企業實際應用需求仍有很大差距,同時所開的Java課程間不能形成有機銜接,比如移動應用開發(Android)課程先修課程不僅僅是要求Java程序設計基礎課程,同時學生必須掌握Java EE部分相關內容,否則只能設計單機版的移動終端,根本無法構建集成的移動應用系統。
傳統的Java程序設計課程通常分為課堂理論教學和上機實踐兩個環節,理論教學教師是主導,一般結合PPT課件講解概念、語法以及小程序的分析等;而上機實踐偏重于如何編寫功能單一的“小”程序,局限于一個或兩個知識點,學生只見樹木,不見森林,不能把握知識之間的銜接關系。編寫綜合應用程序時,學生往往無從下手。
除了傳統教學方法外,Java程序設計教學中比較先進的教學模式是項目驅動教學法。項目驅動教學法是采用難易度適中的典型項目,將學習者引入一個特定的真實情境中,充分發揮學生的主觀能動性,以學生的主動學習為主,教師輔助為輔,培養學生分析問題、自主學習、研究性學習的能力。通過項目驅動教學,能夠使學生對知識點的理解和應用有更深入的認識。但在教學實踐過程中,所選擇的項目案例往往是針對某些知識點,多個項目案例之間關聯不大,所涉及的知識點銜接不夠緊密,而企業級應用項目,往往是許多知識點的綜合應用,是多門課程的綜合應用。
目前大多數高校用于Java訓練的例子通常是一個個獨立的小程序,程序間既沒有知識點之間的關聯,又沒有應用層面上關聯,學習者難以把握Java知識網絡及應用場景,即使有相對較大的案例,也通常局限于某種特殊應用。
即使采用項目訓練的方式,也是普遍采取的方式即通過大作業的形式自主完成,對于學習者由于沒有參與過項目實戰,往往是無從入手,結果是大作業也是通過抄襲現有開源項目草草了事。將實戰訓練項目分解為日常可操練的小訓練模塊是實戰訓練項目實施的關鍵。
因此,為培養更多滿足企業軟件開發需求的Java軟件工程人才,構建有機銜接的Java課程體系,按照軟件企業用人需求,采用基于項目實踐的人才培養模式,是Java課程改革必然趨勢。
目前電子商務、企業信息管理、金融服務等應用領域的軟件系統開發均基于企業級應用開發,軟件行業需求的Java人才應當具備基于Java EE的企業級應用開發的各個環節的主要技能。
我們從招聘網站上采集大量Java工程師職位招聘要求,從招聘技能需求看,幾乎所有Java工程師職位都要求掌握基于Java EE軟件開發的各個環節技術,而不是單一的前端或后端某種知識技能,用人需求需要掌握以下技能,大致所需掌握的七大知識技能模塊見表1。

表1 Java軟件行業人才技能需求
從表1所示軟件行業人才需求看,對傳統Java EE中EJB基本沒有要求,大都要求了解目前主流輕量級第三方框架,每個模塊中的技術并不是全部要求掌握,不同企業需求有差異,但都要求熟悉每層技術環節的關鍵技術。
目前軟件行業需求的Java工程人才應當具備Java EE相關知識技能。Java EE是Sum公司發布的標準企業級應用規范集合,它提供了一個多層結構的分布式程序模型,是開發基于網絡的企業級應用首選平臺。但由于傳統經典Java EE開發復雜,開發周期長,維護難度大,第三方開發出輕量級Java EE開源框架,仍遵循經典Java EE的多層架構,但大大提高了開發效率。絕大部分Java軟件行業基于Java EE采用多種開源框架進行軟件開發,圖1展示了多層軟件體系結構中各層中主要技術,包括經典Java EE和輕量級Java EE等開源框架,在實際軟件企業開發中并非用到全部技術,比如極少軟件行業企業要求掌握EJB技術。

圖1 基于Java EE的多層軟件體系結構
高校培養的Java人才最終目的是輸送到軟件企業,因此所構建的課程體系應根據軟件企業需求來設定,根據軟件行業實際需求,提出“基礎理論—核心技術—應用開發技術—綜合應用能力”有機銜接的Java課程體系,課程體系見表2。
表2所示6個教學模塊內容是根據軟件企業實際需求所定制的學習內容,每個模塊的知識點并非一成不變,各高校可根據實際情況,進行適當調整教學內容,同時也要根據軟件企業的實際需求,不斷將新的方法、框架納入到課程體系。
有些模塊并非專門針對Java課程體系設置,可以共享的如2、4、6模塊,為應用軟件系統開發類課程的通用模塊。模塊4作為前端設計,本身可以與后端應用設計分離,移動應用開發既可以是Android也可以是iOS或微信小程序等內容;模塊6作為項目實訓培養學生的創新能力、實踐能力以及團隊合作精神,不局限于采用Java開發,也可以是C++或Python,甚至多編程語言混合的項目實踐。
經過廣大教育工作者的探索,多種教學方法被提出,如“項目導向”“啟發式教學”“任務驅動”“案例教學”“探究式學習”等教學法,被廣泛應用于各類課程的教學中,也取得一定的效果。近幾年,國內許多高校的計算機專業都引入了基于CDIO模式的課程教學改革,CDIO工程教育模式是近年來國際工程教育改革的先進成果,CDIO代表構思(Conceive)、設計(Design)、實施(Implement)和運行(Operate)[3-5]。CDIO模式已被應用于Java教育[6-8],以工程項目為載體組織教學,讓學生通過工程項目來學習知識,達到培養學生創新能力、實踐應用能力、團隊合作精神的目的。
面向Java軟件開發類課程群,基于CDIO模式思想將Java課程群設置若干能力培養目標,提出面向軟件行業需求的Java工程人才培養目標,將Java工程應用人才應具備的能力分為Java技術能力、軟件分析設計能力以及人際團隊個人能力三大能力,如圖2所示。

表2 面向軟件行業需求的Java課程體系

圖2 面向軟件行業需求的Java工程人才應具備的能力
不同層次課程能力培養的側重點不同,選用統一的項目貫穿Java課程群,將項目分解若干相對簡單的子項目,每個子項目對應能力培養目標,在不同層次課程中,能力培養目標不同,采用教學方法也應有所差異。
Java基礎課程重點訓練學生的Java基本語法、編碼能力,一般安排在低年級,學生的編程能力有限,缺乏軟件開發相關知識,不具備完整軟件開發能力,應從子項目中抽取個別小模塊,以驗證性實驗和設計性實驗的形式,使學生熟練掌握Java核心技能以及具備初步程序設計方法。
模塊2和模塊4均為前端開發,除了培訓編碼能力外,還要培養學生的設計能力,有條件的學校可請設計專業的老師進行相關內容講解。重點培養學生的設計創新能力,以設計性實驗為主,結合企業主流采用的開源組件設計項目前端界面。
模塊3和模塊5均為Java EE內容,學生已具備一定的編程基礎和設計能力,以綜合性實驗為主,老師給出項目需求,以項目導向方式,學習主流Java項目框架、設計模式,以小組形式完成項目的設計和實現,培養學生的綜合應用能力、團隊合作能力。
模塊6為項目實訓,以團隊形式進行綜合研究性實驗,以具有真實應用背景的項目為導向,按照軟件企業開發過程,從角色分配開始,進行項目需求分析、項目設計、項目架構搭建、代碼實現、測試以及上線運行等步驟進行,培養學生綜合應用能力,如團隊合作能力、領導能力、軟件分析設計能力。項目實訓可以作為一門課程或利用寒暑假前的兩個周的實習周進行訓練,不局限于采用Java開發,甚至多種開發工具混合開發,比如前端可以包括Android和iOS兩種版本。
軟件行業需求的Java工程人才需要具備Java系列各個環節技能、軟件分析與設計技能、團隊合作創新能力等多種能力,課程之間相互關聯,某個課程環節的缺少將會導致學生無法進行基于Java的軟件項目開發。目前高校普遍存在機械的照綱開課,依師資力量開課,課程之前缺乏統籌安排,授課老師之間缺少溝通交流,學生的技能訓練不能有機銜接,難以有效地培養學生的綜合應用能力。
緊跟軟件行業需求,加強與企業合作,統籌安排Java程序設計類相關課程,形成課程間技能訓練、能力培養的有機銜接,依據課程特點以及學生情況選擇合理的教學方法,是培養Java軟件工程應用型人才的有效方法。