張新猛,羅海蛟,彭碧濤,李月梅
(廣東外語外貿(mào)大學(xué) 信息科學(xué)與技術(shù)學(xué)院,廣東 廣州 510006)
Java是一種跨平臺的面向?qū)ο蟪绦蛟O(shè)計語言,分為桌面應(yīng)用、移動應(yīng)用和企業(yè)級應(yīng)用的開發(fā),廣泛應(yīng)用于電子商務(wù)、企業(yè)信息管理、金融服務(wù)等應(yīng)用領(lǐng)域。連續(xù)多年,TIOBE發(fā)布的編程語言市場占有率排行榜,Java一直排在第一名,Java編程語言技能已經(jīng)是計算機相關(guān)專業(yè)大學(xué)生進入軟件開發(fā)行業(yè)必備的一門技能。據(jù)IDC數(shù)據(jù)統(tǒng)計,從人才需求方面看,目前我國軟件人才缺口極其嚴重,其中Java人才最為缺乏。根據(jù)相關(guān)權(quán)威機構(gòu)的統(tǒng)計數(shù)字,在所有軟件開發(fā)類人才的需求中,對Java工程師的需求達到全部需求量的60%~70%。
教育部把信息化人才與軟件人才列為國內(nèi)急需的緊缺人才之一,Java工程師市場需求巨大?,F(xiàn)狀是一方面人才需求旺盛的IT企業(yè)很難招聘到合格的Java人員,另一方面有大量具有基本Java技術(shù)的本科畢業(yè)生,但由于與企業(yè)的實際用人需求有較大的差距而存在就業(yè)困難問題。面向軟件行業(yè)需求,探索培養(yǎng)Java工程應(yīng)用型人才的合理課程體系是高校Java教育首要解決的問題[1-2]。
目前軟件開發(fā)企業(yè)需要的技能包括基于Java EE的企業(yè)級應(yīng)用開發(fā)、Android移動端開發(fā)以及與企業(yè)級應(yīng)用開發(fā)相關(guān)的流行架構(gòu),然而目前高校所開設(shè)的課程遠遠落后于企業(yè)需求,傳統(tǒng)教學(xué)模式所培養(yǎng)的學(xué)生距離企業(yè)要求相差甚遠,究其原因大多存在著重理論輕實踐、重基礎(chǔ)輕應(yīng)用、重技術(shù)輕綜合、重考試輕創(chuàng)新等問題。
目前幾乎國內(nèi)高校都至少開設(shè)了一門Java課程,但鑒于課時、師資等原因,普遍存在的問題是缺少系列有機銜接的Java課程體系,造成Java基礎(chǔ)課程與實踐課程相割裂。絕大部分學(xué)校僅開設(shè)Java基礎(chǔ)課程,但由于沒有后續(xù)應(yīng)用開發(fā)課程的支持,學(xué)生無法掌握企業(yè)應(yīng)用開發(fā)中需求與技能;另外一些學(xué)校雖然開設(shè)了多門Java相關(guān)課程,但課程缺乏有機銜接,學(xué)生往往不能形成知識網(wǎng)絡(luò),難以綜合應(yīng)用所學(xué)Java知識構(gòu)建企業(yè)級應(yīng)用。
目前高校所開設(shè)的Java相關(guān)課程與企業(yè)實際應(yīng)用需求仍有很大差距,同時所開的Java課程間不能形成有機銜接,比如移動應(yīng)用開發(fā)(Android)課程先修課程不僅僅是要求Java程序設(shè)計基礎(chǔ)課程,同時學(xué)生必須掌握Java EE部分相關(guān)內(nèi)容,否則只能設(shè)計單機版的移動終端,根本無法構(gòu)建集成的移動應(yīng)用系統(tǒng)。
傳統(tǒng)的Java程序設(shè)計課程通常分為課堂理論教學(xué)和上機實踐兩個環(huán)節(jié),理論教學(xué)教師是主導(dǎo),一般結(jié)合PPT課件講解概念、語法以及小程序的分析等;而上機實踐偏重于如何編寫功能單一的“小”程序,局限于一個或兩個知識點,學(xué)生只見樹木,不見森林,不能把握知識之間的銜接關(guān)系。編寫綜合應(yīng)用程序時,學(xué)生往往無從下手。
除了傳統(tǒng)教學(xué)方法外,Java程序設(shè)計教學(xué)中比較先進的教學(xué)模式是項目驅(qū)動教學(xué)法。項目驅(qū)動教學(xué)法是采用難易度適中的典型項目,將學(xué)習(xí)者引入一個特定的真實情境中,充分發(fā)揮學(xué)生的主觀能動性,以學(xué)生的主動學(xué)習(xí)為主,教師輔助為輔,培養(yǎng)學(xué)生分析問題、自主學(xué)習(xí)、研究性學(xué)習(xí)的能力。通過項目驅(qū)動教學(xué),能夠使學(xué)生對知識點的理解和應(yīng)用有更深入的認識。但在教學(xué)實踐過程中,所選擇的項目案例往往是針對某些知識點,多個項目案例之間關(guān)聯(lián)不大,所涉及的知識點銜接不夠緊密,而企業(yè)級應(yīng)用項目,往往是許多知識點的綜合應(yīng)用,是多門課程的綜合應(yīng)用。
目前大多數(shù)高校用于Java訓(xùn)練的例子通常是一個個獨立的小程序,程序間既沒有知識點之間的關(guān)聯(lián),又沒有應(yīng)用層面上關(guān)聯(lián),學(xué)習(xí)者難以把握Java知識網(wǎng)絡(luò)及應(yīng)用場景,即使有相對較大的案例,也通常局限于某種特殊應(yīng)用。
即使采用項目訓(xùn)練的方式,也是普遍采取的方式即通過大作業(yè)的形式自主完成,對于學(xué)習(xí)者由于沒有參與過項目實戰(zhàn),往往是無從入手,結(jié)果是大作業(yè)也是通過抄襲現(xiàn)有開源項目草草了事。將實戰(zhàn)訓(xùn)練項目分解為日??刹倬毜男∮?xùn)練模塊是實戰(zhàn)訓(xùn)練項目實施的關(guān)鍵。
因此,為培養(yǎng)更多滿足企業(yè)軟件開發(fā)需求的Java軟件工程人才,構(gòu)建有機銜接的Java課程體系,按照軟件企業(yè)用人需求,采用基于項目實踐的人才培養(yǎng)模式,是Java課程改革必然趨勢。
目前電子商務(wù)、企業(yè)信息管理、金融服務(wù)等應(yīng)用領(lǐng)域的軟件系統(tǒng)開發(fā)均基于企業(yè)級應(yīng)用開發(fā),軟件行業(yè)需求的Java人才應(yīng)當(dāng)具備基于Java EE的企業(yè)級應(yīng)用開發(fā)的各個環(huán)節(jié)的主要技能。
我們從招聘網(wǎng)站上采集大量Java工程師職位招聘要求,從招聘技能需求看,幾乎所有Java工程師職位都要求掌握基于Java EE軟件開發(fā)的各個環(huán)節(jié)技術(shù),而不是單一的前端或后端某種知識技能,用人需求需要掌握以下技能,大致所需掌握的七大知識技能模塊見表1。
表1 Java軟件行業(yè)人才技能需求
從表1所示軟件行業(yè)人才需求看,對傳統(tǒng)Java EE中EJB基本沒有要求,大都要求了解目前主流輕量級第三方框架,每個模塊中的技術(shù)并不是全部要求掌握,不同企業(yè)需求有差異,但都要求熟悉每層技術(shù)環(huán)節(jié)的關(guān)鍵技術(shù)。
目前軟件行業(yè)需求的Java工程人才應(yīng)當(dāng)具備Java EE相關(guān)知識技能。Java EE是Sum公司發(fā)布的標準企業(yè)級應(yīng)用規(guī)范集合,它提供了一個多層結(jié)構(gòu)的分布式程序模型,是開發(fā)基于網(wǎng)絡(luò)的企業(yè)級應(yīng)用首選平臺。但由于傳統(tǒng)經(jīng)典Java EE開發(fā)復(fù)雜,開發(fā)周期長,維護難度大,第三方開發(fā)出輕量級Java EE開源框架,仍遵循經(jīng)典Java EE的多層架構(gòu),但大大提高了開發(fā)效率。絕大部分Java軟件行業(yè)基于Java EE采用多種開源框架進行軟件開發(fā),圖1展示了多層軟件體系結(jié)構(gòu)中各層中主要技術(shù),包括經(jīng)典Java EE和輕量級Java EE等開源框架,在實際軟件企業(yè)開發(fā)中并非用到全部技術(shù),比如極少軟件行業(yè)企業(yè)要求掌握EJB技術(shù)。
圖1 基于Java EE的多層軟件體系結(jié)構(gòu)
高校培養(yǎng)的Java人才最終目的是輸送到軟件企業(yè),因此所構(gòu)建的課程體系應(yīng)根據(jù)軟件企業(yè)需求來設(shè)定,根據(jù)軟件行業(yè)實際需求,提出“基礎(chǔ)理論—核心技術(shù)—應(yīng)用開發(fā)技術(shù)—綜合應(yīng)用能力”有機銜接的Java課程體系,課程體系見表2。
表2所示6個教學(xué)模塊內(nèi)容是根據(jù)軟件企業(yè)實際需求所定制的學(xué)習(xí)內(nèi)容,每個模塊的知識點并非一成不變,各高??筛鶕?jù)實際情況,進行適當(dāng)調(diào)整教學(xué)內(nèi)容,同時也要根據(jù)軟件企業(yè)的實際需求,不斷將新的方法、框架納入到課程體系。
有些模塊并非專門針對Java課程體系設(shè)置,可以共享的如2、4、6模塊,為應(yīng)用軟件系統(tǒng)開發(fā)類課程的通用模塊。模塊4作為前端設(shè)計,本身可以與后端應(yīng)用設(shè)計分離,移動應(yīng)用開發(fā)既可以是Android也可以是iOS或微信小程序等內(nèi)容;模塊6作為項目實訓(xùn)培養(yǎng)學(xué)生的創(chuàng)新能力、實踐能力以及團隊合作精神,不局限于采用Java開發(fā),也可以是C++或Python,甚至多編程語言混合的項目實踐。
經(jīng)過廣大教育工作者的探索,多種教學(xué)方法被提出,如“項目導(dǎo)向”“啟發(fā)式教學(xué)”“任務(wù)驅(qū)動”“案例教學(xué)”“探究式學(xué)習(xí)”等教學(xué)法,被廣泛應(yīng)用于各類課程的教學(xué)中,也取得一定的效果。近幾年,國內(nèi)許多高校的計算機專業(yè)都引入了基于CDIO模式的課程教學(xué)改革,CDIO工程教育模式是近年來國際工程教育改革的先進成果,CDIO代表構(gòu)思(Conceive)、設(shè)計(Design)、實施(Implement)和運行(Operate)[3-5]。CDIO模式已被應(yīng)用于Java教育[6-8],以工程項目為載體組織教學(xué),讓學(xué)生通過工程項目來學(xué)習(xí)知識,達到培養(yǎng)學(xué)生創(chuàng)新能力、實踐應(yīng)用能力、團隊合作精神的目的。
面向Java軟件開發(fā)類課程群,基于CDIO模式思想將Java課程群設(shè)置若干能力培養(yǎng)目標,提出面向軟件行業(yè)需求的Java工程人才培養(yǎng)目標,將Java工程應(yīng)用人才應(yīng)具備的能力分為Java技術(shù)能力、軟件分析設(shè)計能力以及人際團隊個人能力三大能力,如圖2所示。
表2 面向軟件行業(yè)需求的Java課程體系
圖2 面向軟件行業(yè)需求的Java工程人才應(yīng)具備的能力
不同層次課程能力培養(yǎng)的側(cè)重點不同,選用統(tǒng)一的項目貫穿Java課程群,將項目分解若干相對簡單的子項目,每個子項目對應(yīng)能力培養(yǎng)目標,在不同層次課程中,能力培養(yǎng)目標不同,采用教學(xué)方法也應(yīng)有所差異。
Java基礎(chǔ)課程重點訓(xùn)練學(xué)生的Java基本語法、編碼能力,一般安排在低年級,學(xué)生的編程能力有限,缺乏軟件開發(fā)相關(guān)知識,不具備完整軟件開發(fā)能力,應(yīng)從子項目中抽取個別小模塊,以驗證性實驗和設(shè)計性實驗的形式,使學(xué)生熟練掌握Java核心技能以及具備初步程序設(shè)計方法。
模塊2和模塊4均為前端開發(fā),除了培訓(xùn)編碼能力外,還要培養(yǎng)學(xué)生的設(shè)計能力,有條件的學(xué)??烧堅O(shè)計專業(yè)的老師進行相關(guān)內(nèi)容講解。重點培養(yǎng)學(xué)生的設(shè)計創(chuàng)新能力,以設(shè)計性實驗為主,結(jié)合企業(yè)主流采用的開源組件設(shè)計項目前端界面。
模塊3和模塊5均為Java EE內(nèi)容,學(xué)生已具備一定的編程基礎(chǔ)和設(shè)計能力,以綜合性實驗為主,老師給出項目需求,以項目導(dǎo)向方式,學(xué)習(xí)主流Java項目框架、設(shè)計模式,以小組形式完成項目的設(shè)計和實現(xiàn),培養(yǎng)學(xué)生的綜合應(yīng)用能力、團隊合作能力。
模塊6為項目實訓(xùn),以團隊形式進行綜合研究性實驗,以具有真實應(yīng)用背景的項目為導(dǎo)向,按照軟件企業(yè)開發(fā)過程,從角色分配開始,進行項目需求分析、項目設(shè)計、項目架構(gòu)搭建、代碼實現(xiàn)、測試以及上線運行等步驟進行,培養(yǎng)學(xué)生綜合應(yīng)用能力,如團隊合作能力、領(lǐng)導(dǎo)能力、軟件分析設(shè)計能力。項目實訓(xùn)可以作為一門課程或利用寒暑假前的兩個周的實習(xí)周進行訓(xùn)練,不局限于采用Java開發(fā),甚至多種開發(fā)工具混合開發(fā),比如前端可以包括Android和iOS兩種版本。
軟件行業(yè)需求的Java工程人才需要具備Java系列各個環(huán)節(jié)技能、軟件分析與設(shè)計技能、團隊合作創(chuàng)新能力等多種能力,課程之間相互關(guān)聯(lián),某個課程環(huán)節(jié)的缺少將會導(dǎo)致學(xué)生無法進行基于Java的軟件項目開發(fā)。目前高校普遍存在機械的照綱開課,依師資力量開課,課程之前缺乏統(tǒng)籌安排,授課老師之間缺少溝通交流,學(xué)生的技能訓(xùn)練不能有機銜接,難以有效地培養(yǎng)學(xué)生的綜合應(yīng)用能力。
緊跟軟件行業(yè)需求,加強與企業(yè)合作,統(tǒng)籌安排Java程序設(shè)計類相關(guān)課程,形成課程間技能訓(xùn)練、能力培養(yǎng)的有機銜接,依據(jù)課程特點以及學(xué)生情況選擇合理的教學(xué)方法,是培養(yǎng)Java軟件工程應(yīng)用型人才的有效方法。