胡 然,徐健鋒
(南昌大學(xué) 軟件學(xué)院,江西 南昌 330047)
中國(guó)程序設(shè)計(jì)人才緊缺,而且缺口還在快速遞增。一方面,企業(yè)對(duì)程序設(shè)計(jì)人才需求量旺盛;另一方面,在大量的畢業(yè)生中又難以找到令用人單位滿意的程序設(shè)計(jì)人才。造成這種尷尬情況的主要原因是學(xué)生缺乏工程實(shí)踐能力、職業(yè)素質(zhì)和解決實(shí)際問題能力的訓(xùn)練,達(dá)不到企業(yè)的用人標(biāo)準(zhǔn),恰說明以往的校企合作或工學(xué)結(jié)合的培養(yǎng)模式有資源不足[1]、認(rèn)識(shí)不到位、深度和廣度不夠[2]等問題,難以得到真正實(shí)施或取得較好的成效。
程序設(shè)計(jì)系列課程是軟件工程專業(yè)的專業(yè)課程,要從一年級(jí)學(xué)生的程序設(shè)計(jì)課程就開始融入校企協(xié)同創(chuàng)新實(shí)踐能力,讓更多的學(xué)生成為企業(yè)需要的程序設(shè)計(jì)人才,這種教學(xué)上的改革直接促進(jìn)高校工程教育中校企共同體的構(gòu)建[3]。校企協(xié)同創(chuàng)新和程序設(shè)計(jì)課程群的關(guān)系如圖1所示,在厘清這些關(guān)系的基礎(chǔ)之上進(jìn)行低年級(jí)產(chǎn)學(xué)研實(shí)踐模式的思考和建構(gòu),設(shè)計(jì)中要考慮到如下幾方面的問題。
圖1 校企協(xié)同創(chuàng)新下的程序設(shè)計(jì)課程群
(1)以學(xué)生發(fā)展為中心的教學(xué)理念。重視和體現(xiàn)學(xué)生的主體作用,同時(shí)又不忽視雙師(教師和工程師)的主導(dǎo)作用,在校企合作過程中采用團(tuán)隊(duì)協(xié)作式、個(gè)別化、小組討論等組合的教學(xué)形式進(jìn)行實(shí)踐教學(xué)。把大學(xué)生放在學(xué)習(xí)的中心位置,發(fā)揮學(xué)生的特長(zhǎng)和創(chuàng)造性,增加學(xué)習(xí)的選擇性,加強(qiáng)管理的彈性,滿足學(xué)生學(xué)習(xí)的愿望,實(shí)現(xiàn)學(xué)生的學(xué)習(xí)自由。
(2)新工科軟件人才的實(shí)踐性要求。相對(duì)于傳統(tǒng)的軟件人才,未來新興產(chǎn)業(yè)和新經(jīng)濟(jì)需要的人才不僅應(yīng)在某一學(xué)科專業(yè)上學(xué)業(yè)精深,而且還應(yīng)具有“學(xué)科交叉融合”的特征;不僅能運(yùn)用所掌握的知識(shí)去解決現(xiàn)有的問題,還要有能力學(xué)習(xí)新知識(shí)、新技術(shù)去解決未來發(fā)展出現(xiàn)的問題,對(duì)未來技術(shù)和產(chǎn)業(yè)起到引領(lǐng)作用;不僅在技術(shù)上優(yōu)秀,同時(shí)懂得經(jīng)濟(jì)、社會(huì)和管理,兼具良好的人文素養(yǎng)[4]。
(3)軟件工程專業(yè)課程內(nèi)容更新快的要求。企業(yè)與市場(chǎng)利益攸關(guān),企業(yè)具備應(yīng)對(duì)市場(chǎng)變化的較高敏感度和反應(yīng)度,只有企業(yè)深入?yún)⑴c軟件人才培養(yǎng)過程中,并將這種不斷變化中的新發(fā)展和新需求應(yīng)用在軟件工程專業(yè)課堂教學(xué)體系中,才能使軟件工程專業(yè)由老工科轉(zhuǎn)變?yōu)樾鹿た疲拍芘囵B(yǎng)出工程實(shí)踐能力強(qiáng)、具備國(guó)際競(jìng)爭(zhēng)力的高素質(zhì)復(fù)合型新工科人才。
(4)學(xué)習(xí)是一個(gè)由淺入深、由易到難的循序漸進(jìn)的過程。通過教學(xué)項(xiàng)目和現(xiàn)實(shí)項(xiàng)目的設(shè)置,學(xué)生的思維有一個(gè)遞進(jìn)和加深的過程。應(yīng)用教學(xué)項(xiàng)目中學(xué)習(xí)的本領(lǐng)和知識(shí)來解決現(xiàn)實(shí)項(xiàng)目中出現(xiàn)的新問題,通過了現(xiàn)實(shí)項(xiàng)目洗禮的學(xué)生才能成長(zhǎng)為合格的項(xiàng)目經(jīng)理和開發(fā)工程師。
軟件學(xué)院與中興軟件技術(shù)公司合作的項(xiàng)目有基于ARM9 S3C 2440芯片的智能手持設(shè)備(PDA)的設(shè)計(jì)、音樂播放器、博客閱讀器、手機(jī)軟硬件信息查看助手、GPS Google地圖實(shí)時(shí)更新、坦克大戰(zhàn)、消防報(bào)警聯(lián)動(dòng)監(jiān)控系統(tǒng)等,與江西微軟技術(shù)中心合作的項(xiàng)目有婚戀交友網(wǎng)、移動(dòng)營(yíng)業(yè)廳管理系統(tǒng)、基于LPD協(xié)議的打印監(jiān)控服務(wù)器系統(tǒng)、基于HAMA技術(shù)的呼叫中心服務(wù)系統(tǒng)等,與文思創(chuàng)新軟件技術(shù)有限公司合作的項(xiàng)目有基于Linux的智能視頻監(jiān)控系統(tǒng)、電信寬帶運(yùn)營(yíng)支撐系統(tǒng)等。根據(jù)該實(shí)踐模式的思考和設(shè)想,將這些企業(yè)的實(shí)際項(xiàng)目引入程序設(shè)計(jì)課程教學(xué)中,實(shí)現(xiàn)產(chǎn)學(xué)研在課堂教學(xué)上的統(tǒng)整,通過圖2所示的實(shí)踐模式來說明低年級(jí)程序設(shè)計(jì)課程的項(xiàng)目引入過程。
圖2 校企協(xié)同育人實(shí)踐模式的實(shí)現(xiàn)過程
(1)遵循由易而難的學(xué)習(xí)過程,圖2中用交叉的雙圈表明相同項(xiàng)目基礎(chǔ)架構(gòu)開發(fā)的教學(xué)項(xiàng)目和現(xiàn)實(shí)項(xiàng)目。要從合作企業(yè)的實(shí)際項(xiàng)目中,精選出有代表性的能揭示所學(xué)理論和知識(shí)體系的案例用于程序設(shè)計(jì)課程教學(xué),通過授課內(nèi)容貼近企業(yè)實(shí)際情況以達(dá)到程序設(shè)計(jì)理論聯(lián)系實(shí)踐的效果。學(xué)生在學(xué)習(xí)階段就接觸軟件企業(yè)的真實(shí)項(xiàng)目,有利于盡快把課堂知識(shí)轉(zhuǎn)化為實(shí)際能力。
(2)以學(xué)生成長(zhǎng)為企業(yè)所需的軟件人才為主線,圖2中用3條箭頭表示了學(xué)生成為應(yīng)用型軟件人才的過程。學(xué)生分組進(jìn)行軟件項(xiàng)目開發(fā)訓(xùn)練,然后通過教學(xué)項(xiàng)目學(xué)習(xí)基礎(chǔ)技術(shù)架構(gòu),再根據(jù)項(xiàng)目任務(wù)分工學(xué)習(xí)相應(yīng)的案例模塊,這些教學(xué)案例模塊可根據(jù)真實(shí)項(xiàng)目需求進(jìn)行調(diào)整,可選擇課程內(nèi)容和進(jìn)度,最終讓學(xué)生參與企業(yè)項(xiàng)目的部分環(huán)節(jié)中。這樣,學(xué)生通過從教學(xué)項(xiàng)目到現(xiàn)實(shí)項(xiàng)目的實(shí)訓(xùn),成為面向應(yīng)用、面向?qū)嵺`和面向企業(yè)的新工科軟件人才。
(3)學(xué)校教師和企業(yè)工程師對(duì)項(xiàng)目的架構(gòu)和流程管理是校企協(xié)同育人的依托,圖中用長(zhǎng)方形表示雙師在人才培養(yǎng)過程中所承擔(dān)的工作和責(zé)任,可以通過與現(xiàn)實(shí)項(xiàng)目有相同框架的教學(xué)項(xiàng)目,并建立企業(yè)真實(shí)軟件開發(fā)全流程信息化管理與高校實(shí)訓(xùn)教學(xué)管理相融合的信息化教學(xué)項(xiàng)目平臺(tái)來實(shí)現(xiàn)。
(4)有工程師資質(zhì)的學(xué)院教師,按照企業(yè)真實(shí)項(xiàng)目制作相同技術(shù)構(gòu)架的教學(xué)項(xiàng)目,建立教學(xué)項(xiàng)目案例庫??紤]到課堂教學(xué)時(shí)間有限,雙師將精選的教學(xué)項(xiàng)目編寫成教學(xué)試題庫,可以讓有學(xué)習(xí)熱情的學(xué)生在課余時(shí)間能夠大量地涉獵豐富的優(yōu)秀真實(shí)案例,幫助他們鞏固理論知識(shí)的同時(shí)又開闊眼界。
課題組與企業(yè)合作的實(shí)驗(yàn)?zāi)J匠醪酵瓿闪隧?xiàng)目基礎(chǔ)技術(shù)架構(gòu)的開發(fā)以及教學(xué)案例庫的建設(shè),已在一年級(jí)、二年級(jí)和三年級(jí)的部分班級(jí)進(jìn)行使用,并在實(shí)際教學(xué)改革中驗(yàn)證了教改設(shè)想,且持續(xù)改進(jìn)教學(xué)方式和手段。我校軟件工程專業(yè)2016級(jí)、2017級(jí)和2018級(jí)的部分本科生在程序設(shè)計(jì)專業(yè)課程時(shí),就開始加入到完成企業(yè)項(xiàng)目任務(wù)中。
教學(xué)項(xiàng)目的設(shè)計(jì)有綜合應(yīng)用性,且現(xiàn)實(shí)項(xiàng)目選擇的可行性由老師把控,教師應(yīng)根據(jù)教學(xué)需求調(diào)整教學(xué)項(xiàng)目的不同內(nèi)容和難度。
(1)本實(shí)踐模式下,小型軟件項(xiàng)目工程實(shí)訓(xùn)的注意要點(diǎn)有:不適合高年級(jí)學(xué)生進(jìn)行訓(xùn)練;一年級(jí)學(xué)生在學(xué)習(xí)了C語言、C++后才可以開始跟進(jìn);低年級(jí)適合單人編程訓(xùn)練,偏重編程風(fēng)格和良好編程習(xí)慣訓(xùn)練。
(2)本實(shí)踐模式下,中大型綜合軟件項(xiàng)目工程實(shí)訓(xùn)的注意要點(diǎn)有:不適合低年級(jí)學(xué)生進(jìn)行訓(xùn)練;在掌握了至少2種編程語言以及基本的數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)庫等知識(shí)之后,學(xué)生可以進(jìn)行小組團(tuán)隊(duì)訓(xùn)練,學(xué)生組長(zhǎng)職責(zé)類似于企業(yè)中的項(xiàng)目經(jīng)理;側(cè)重團(tuán)隊(duì)協(xié)作和項(xiàng)目設(shè)計(jì)、開發(fā)和管理,學(xué)生組長(zhǎng)要相對(duì)固定。
從2016年9月開始至今,校企協(xié)同育人的實(shí)踐模式在各個(gè)年級(jí)的程序設(shè)計(jì)課程中順利實(shí)施。在該實(shí)踐模式下,學(xué)生的發(fā)展是中心,具有工程資質(zhì)的教師和校企深度協(xié)作是必要條件。從低年級(jí)專業(yè)課程開始該實(shí)踐模式,學(xué)生的創(chuàng)新能力、自我學(xué)習(xí)能力、團(tuán)隊(duì)合作能力和職業(yè)素養(yǎng)能得到充分的培養(yǎng)和鍛煉,并逐步凸顯出良好的教學(xué)效果。
1)通過動(dòng)手實(shí)踐,學(xué)生能更好地掌握原本不容易理解的程序設(shè)計(jì)概念。
例如,面向?qū)ο蟮娜蠡咎卣魇欠庋b、繼承、多態(tài),其中,封裝是學(xué)生首先需要掌握的重點(diǎn)知識(shí),也是難點(diǎn),對(duì)于剛剛從面向過程編程轉(zhuǎn)到學(xué)習(xí)面向?qū)ο缶幊痰膶W(xué)生來說,封裝、抽象等概念比較模糊、抽象、難懂。例如,類可以把自己的數(shù)據(jù)和方法只讓可信的類或者對(duì)象操作,對(duì)不可信的進(jìn)行信息隱藏,以及如何在實(shí)際項(xiàng)目中識(shí)別、設(shè)計(jì)類等。在實(shí)踐學(xué)習(xí)的某個(gè)銀行系統(tǒng)中,可以根據(jù)定義后的系統(tǒng)需求來識(shí)別系統(tǒng)中所存在的對(duì)象,可以通過尋找系統(tǒng)域描述和需求描述中的名詞進(jìn)行系統(tǒng)對(duì)象的識(shí)別。根據(jù)系統(tǒng)需求分析出的名詞有銀行Bank、賬戶Account、客戶Customer、資金Funds等對(duì)象圖中的候選對(duì)象。判斷是否應(yīng)該為這些候選對(duì)象創(chuàng)建類的方法基于與該對(duì)象相關(guān)的身份和行為,如果答案是肯定的,那么候選對(duì)象應(yīng)該是一個(gè)存在于模型中的對(duì)象,就應(yīng)該為之創(chuàng)建類。此外,還要對(duì)賬戶進(jìn)行存錢、取錢、轉(zhuǎn)賬操作保留業(yè)務(wù)記錄,因此,在系統(tǒng)中還應(yīng)有代表這些業(yè)務(wù)記錄的對(duì)象存在,可以為這些對(duì)象建立如下3個(gè)類:存款業(yè)務(wù)記錄Deposit、取款業(yè)務(wù)記錄Withdraw、轉(zhuǎn)賬業(yè)務(wù)記錄Transfer,由于這3個(gè)類都屬一種業(yè)務(wù)記錄,可以抽象出父類Transaction。
2)通過真實(shí)項(xiàng)目的引入,學(xué)生能盡可能地經(jīng)歷完整的項(xiàng)目生命周期,深入學(xué)習(xí)可行性分析、需求分析、調(diào)試、測(cè)試等以往課堂教學(xué)缺失而在企業(yè)項(xiàng)目中是很重要的開發(fā)環(huán)節(jié)。
以往的教學(xué)往往側(cè)重于軟件開發(fā)階段的內(nèi)容,即設(shè)計(jì)、編碼和測(cè)試,而現(xiàn)代軟件行業(yè)的高速發(fā)展對(duì)開發(fā)者的綜合素質(zhì)要求越來越高,不僅是編程知識(shí)點(diǎn),其他維度的知識(shí)點(diǎn)也會(huì)影響到軟件的最終交付質(zhì)量。由此可見,問題定義、可行性分析、項(xiàng)目計(jì)劃、項(xiàng)目成本評(píng)估等也應(yīng)該是學(xué)生必須掌握的重要知識(shí),這樣才能應(yīng)對(duì)數(shù)據(jù)意外丟失和需求變更可能帶來的軟件上的架構(gòu)缺陷或性能風(fēng)險(xiǎn)、工程結(jié)構(gòu)混亂導(dǎo)致后續(xù)維護(hù)艱難、沒有鑒權(quán)的漏洞代碼易被黑客攻擊等在實(shí)際項(xiàng)目中經(jīng)常能碰到的種種問題。
針對(duì)以往教學(xué)中缺失、薄弱的環(huán)節(jié),我們?cè)谛F髮?shí)際案例二手貨交易平臺(tái)項(xiàng)目中,添加了項(xiàng)目成本估計(jì)這項(xiàng)內(nèi)容。在項(xiàng)目成本評(píng)估中,對(duì)項(xiàng)目完成過程中耗費(fèi)的人力、物力、財(cái)力資源進(jìn)行了分析,將成本估計(jì)按照類別進(jìn)行估算,如直接人工、直接費(fèi)用、間接成本、制造費(fèi)用、管理費(fèi)用、不可預(yù)見費(fèi)用等。再例如,項(xiàng)目學(xué)習(xí)過程中,由企業(yè)方進(jìn)行案例的風(fēng)險(xiǎn)分析,并且形成案例文字材料供學(xué)生學(xué)習(xí),項(xiàng)目實(shí)施過程中可能遇到的風(fēng)險(xiǎn)有哪些,需求變更、技術(shù)水平無法完成設(shè)計(jì)、數(shù)據(jù)意外丟失等造成的重大風(fēng)險(xiǎn)事件如何預(yù)防及處理等。
3)通過團(tuán)隊(duì)攻關(guān),學(xué)生在相互探討和分工設(shè)計(jì)中培養(yǎng)了合作、寬容、理解等程序設(shè)計(jì)人才必備的心理素質(zhì)。
在完成項(xiàng)目的過程中,每位小組成員都要完成相應(yīng)的項(xiàng)目模塊,組內(nèi)必須協(xié)調(diào)好有直接聯(lián)系的各個(gè)模塊進(jìn)程。程序設(shè)計(jì)語言和軟件架構(gòu)需要一種普遍認(rèn)可的統(tǒng)一規(guī)范和標(biāo)準(zhǔn),以提升協(xié)作效率,降低溝通成本[5]。在教學(xué)項(xiàng)目中,由雙師型講師組織提煉這方面的素材和學(xué)習(xí)資料,增進(jìn)學(xué)生的協(xié)作。例如,我們?cè)谛F髮?shí)際案例二手貨交易平臺(tái)項(xiàng)目中,和學(xué)生一起制訂命名規(guī)范,數(shù)據(jù)庫表和字段全部以英文字母或下劃線命名,長(zhǎng)度不能過長(zhǎng);表名中含有的單詞采用單數(shù)形式,單詞首字母大寫;字段名中含有的單詞全部為小寫,單詞之間以下劃線分隔;私有變量以“_”開頭的小寫英文字母命名,其他變量用小寫英文字母開頭;所用函數(shù)用小寫英文字母開頭的駝峰式命名;所有類用大寫英文字母開頭的駝峰式命名。
1)培養(yǎng)目標(biāo)為軟件開發(fā)工程師,學(xué)生動(dòng)手能力和專業(yè)素質(zhì)得到提升。
所有學(xué)生都要學(xué)習(xí)C/C++、Java、Web開發(fā)、Android、iOS等多個(gè)技術(shù)主流方向,重點(diǎn)鍛煉學(xué)生項(xiàng)目開發(fā)能力及綜合素養(yǎng),積累軟件項(xiàng)目開發(fā)經(jīng)驗(yàn),并在訓(xùn)練中注意各種主流開發(fā)語言代碼的規(guī)范性和編碼質(zhì)量。
2)培養(yǎng)目標(biāo)為軟件開發(fā)項(xiàng)目經(jīng)理,有助于拔尖軟件人才的培養(yǎng)。
在初期的團(tuán)隊(duì)合作中,成績(jī)中等及偏上的每位學(xué)生定時(shí)輪換履行項(xiàng)目組長(zhǎng)職責(zé),經(jīng)過一段時(shí)間實(shí)踐后,學(xué)生團(tuán)隊(duì)和學(xué)生組長(zhǎng)較為固定。學(xué)有余力的學(xué)生組長(zhǎng)還要在團(tuán)隊(duì)管理、項(xiàng)目組織、應(yīng)對(duì)項(xiàng)目需求變化、保障項(xiàng)目質(zhì)量、降低項(xiàng)目開發(fā)周期和費(fèi)用等方面進(jìn)行學(xué)習(xí)。
在國(guó)內(nèi)外各大項(xiàng)目和比賽中,軟件工程專業(yè)學(xué)生連續(xù)取得優(yōu)秀的成績(jī)。2016年以來獲得國(guó)家級(jí)大學(xué)生創(chuàng)新創(chuàng)業(yè)項(xiàng)目7項(xiàng);2017年,3位學(xué)生獲得美國(guó)大學(xué)生數(shù)模競(jìng)賽一等獎(jiǎng),12位學(xué)生獲二等獎(jiǎng),5位學(xué)生獲三等獎(jiǎng);4位學(xué)生獲得“中國(guó)軟件杯”雙創(chuàng)大賽一等獎(jiǎng);多位學(xué)生獲得2項(xiàng)第八屆藍(lán)橋杯全國(guó)軟件專業(yè)人才設(shè)計(jì)與創(chuàng)業(yè)大賽一等獎(jiǎng),2項(xiàng)“華夢(mèng)2017”全國(guó)大學(xué)生開源軟件技術(shù)創(chuàng)意大賽一等獎(jiǎng);此外,2位學(xué)生獲得全國(guó)高?;ヂ?lián)網(wǎng)應(yīng)用創(chuàng)新大賽二等獎(jiǎng),并有第四屆“發(fā)現(xiàn)杯”全國(guó)大學(xué)生互聯(lián)網(wǎng)軟件大獎(jiǎng)賽國(guó)賽二等獎(jiǎng)一項(xiàng),首屆中國(guó)“互聯(lián)網(wǎng)+”大學(xué)生創(chuàng)新創(chuàng)業(yè)大賽三等獎(jiǎng)一項(xiàng),還有1位學(xué)生獲得中國(guó)軟件杯大學(xué)生軟件設(shè)計(jì)大賽三等獎(jiǎng),6位學(xué)生獲得全國(guó)移動(dòng)互聯(lián)創(chuàng)新大賽三等獎(jiǎng)。2018年伊始就有3位學(xué)生獲得中國(guó)大學(xué)生計(jì)算機(jī)設(shè)計(jì)大賽二等獎(jiǎng),5位學(xué)生獲得全國(guó)大學(xué)生人工智能創(chuàng)新大賽銅獎(jiǎng)等。
合作企業(yè)提供的項(xiàng)目周期一般很長(zhǎng),而且項(xiàng)目的進(jìn)程和課程的時(shí)間總是不能同步,因此教師要熟悉該項(xiàng)目并能持續(xù)跟進(jìn),才能根據(jù)現(xiàn)實(shí)項(xiàng)目及時(shí)更新教學(xué)項(xiàng)目,這對(duì)于教師本身有較高的要求,在后續(xù)的推廣中如果不注意,很可能出現(xiàn)教學(xué)案例庫更新不及時(shí)的問題。
要把握好學(xué)生個(gè)人學(xué)習(xí)和團(tuán)隊(duì)學(xué)習(xí)之間的度。合作學(xué)習(xí)固然對(duì)促進(jìn)學(xué)生全面發(fā)展具有深遠(yuǎn)意義,但是過早實(shí)行團(tuán)隊(duì)學(xué)習(xí)的方式反而不利于學(xué)生個(gè)體在專業(yè)上的進(jìn)步。
我們通過當(dāng)前校企合作育人問題的實(shí)踐來檢驗(yàn)和發(fā)展“以學(xué)生為中心”的教育理論,運(yùn)用更加靈活的混合教學(xué)方法和智慧教學(xué)手段,從新生開始的程序設(shè)計(jì)系列課程入手,增強(qiáng)學(xué)生的動(dòng)手實(shí)踐能力和創(chuàng)新能力,不僅從理論上建立或檢驗(yàn)校企協(xié)同育人框架和假設(shè)的課程經(jīng)驗(yàn)研究,更重要的是,在今后還將根據(jù)更多的學(xué)生反饋和教學(xué)效果進(jìn)一步完善該模式,為培養(yǎng)出工程實(shí)踐能力強(qiáng)、具備國(guó)際競(jìng)爭(zhēng)力的高素質(zhì)復(fù)合型新工科人才提供經(jīng)驗(yàn)素材和實(shí)現(xiàn)路徑。