余秋明,晏峰
(江西理工大學(xué)軟件學(xué)院,江西南昌330013)
面向軟件專業(yè)學(xué)生提升系統(tǒng)開發(fā)能力的研究
余秋明,晏峰
(江西理工大學(xué)軟件學(xué)院,江西南昌330013)
從軟件類畢業(yè)生就業(yè)情況出發(fā),分析了軟件類畢業(yè)學(xué)生系統(tǒng)開發(fā)能力現(xiàn)狀,描述了軟件類從業(yè)人員職位及職業(yè)路線以及作為軟件工程師應(yīng)具備的知識、技能及素養(yǎng),針對現(xiàn)狀及要求,提出了一種旨在提升學(xué)生系統(tǒng)開發(fā)能力的教學(xué)培養(yǎng)模式,以增強(qiáng)軟件類學(xué)生職業(yè)素養(yǎng).
系統(tǒng)開發(fā)能力;教學(xué)研究;培養(yǎng)模式;軟件工作室
從近年來畢業(yè)生就業(yè)及從業(yè)情況來看,很多軟件專業(yè)畢業(yè)生不好找工作或者是難以勝任軟件行業(yè)的工作崗位,究其原因,一方面畢業(yè)生成倍增多,相對而言就業(yè)崗位有限(當(dāng)然也在增加),另一方面社會對軟件相關(guān)的崗位要求越來越高,既要求學(xué)生具備較強(qiáng)的軟件系統(tǒng)開發(fā)能力,又要具有一定的系統(tǒng)開發(fā)工作經(jīng)驗(yàn),使得學(xué)生一畢業(yè)就能直接勝任軟件相關(guān)的工作崗位.從現(xiàn)有的情況得知,我們培養(yǎng)出來的軟件畢業(yè)生離我們的培養(yǎng)目標(biāo)相去甚遠(yuǎn),確實(shí),學(xué)生畢業(yè)時一沒有工作經(jīng)驗(yàn),二來專業(yè)能力及系統(tǒng)開發(fā)能力不高或者說有待提升.為此,所畢業(yè)學(xué)生為了盡快能從事軟件行業(yè)工作崗位,一般有兩種途徑,一種是招聘單位覺得所應(yīng)聘的學(xué)生基礎(chǔ)比較扎實(shí),用人單位招聘過去后進(jìn)行崗前實(shí)習(xí)培訓(xùn),提升其軟件系統(tǒng)開發(fā)能力,并積累一定系統(tǒng)開發(fā)經(jīng)驗(yàn),從而能夠勝任軟件開發(fā)工作崗位;另外一種是學(xué)生自己參加各種軟件開發(fā)技術(shù)類的培訓(xùn),結(jié)束后由培訓(xùn)機(jī)構(gòu)推薦就業(yè).無論哪種實(shí)現(xiàn)途徑,都沒有讓軟件企業(yè)(用人單位)和畢業(yè)學(xué)生實(shí)現(xiàn)就業(yè)的無縫對接,都需要為此承擔(dān)相應(yīng)的培訓(xùn)成本.為增強(qiáng)學(xué)生就業(yè)實(shí)力,面向軟件專業(yè)學(xué)生提升系統(tǒng)開發(fā)能力的教學(xué)研究就變得比較緊迫.
從軟件開發(fā)人員的生涯規(guī)劃來看,我們可以大致分為以下三個階段,如下表1所示.
表1 軟件開發(fā)人職業(yè)路線及能力要求
作為剛畢業(yè)的軟件專業(yè)學(xué)生,少有一畢業(yè)就能夠從事系統(tǒng)架構(gòu)設(shè)計工作的,一般是先從事程序員工作,能力較強(qiáng)的學(xué)生具備3-5年軟件項(xiàng)目經(jīng)驗(yàn)后,能夠從事軟件設(shè)計工作,即成長為高級程序員,再經(jīng)過若干年歷練后,有機(jī)會成長為系統(tǒng)分析師(系統(tǒng)架構(gòu)).如引言部分所描述,很多畢業(yè)學(xué)生軟件系統(tǒng)開發(fā)能力不足,系統(tǒng)開發(fā)的工作經(jīng)驗(yàn)更是無從談起,如此,軟件專業(yè)畢業(yè)學(xué)生就連從事軟件開發(fā)行業(yè)最基本的職位-程序員都難以勝任.
為此,本文所進(jìn)行的教學(xué)改革研究主要是面向軟件專業(yè)學(xué)生畢業(yè)后能夠從事軟件行業(yè)相關(guān)工作,特別是能夠一畢業(yè)就能勝任軟件工程師(程序員)或軟件設(shè)計師(高級程序員)工作崗位而展開,為提升學(xué)生系統(tǒng)開發(fā)能力方面而做出一些教學(xué)改革嘗試.
通過企業(yè)調(diào)研,我們了解到作為軟件工程師,要勝任所在崗位職責(zé),應(yīng)該具備專業(yè)基本理論知識、軟件開發(fā)基本技能及良好的職業(yè)素養(yǎng),以及要積累一定的項(xiàng)目經(jīng)驗(yàn),最后一個就是軟件技術(shù)更新較快,需要具備一定的自主學(xué)習(xí)能力,如圖1所示.
圖1 軟件工程師需具備的能力和素養(yǎng)
具體展開來講,專業(yè)基本理論知識就是需要掌握基礎(chǔ)理論知識,如操作系統(tǒng)、編譯原理、計算機(jī)網(wǎng)絡(luò)、軟件工程、數(shù)據(jù)結(jié)構(gòu)與算法、計算機(jī)原理等,熟悉軟件專業(yè)所涉及的基本理論.
軟件開發(fā)基本技能需要熟練掌握一門編程語言,如JAVA/C++/C#等,如果做WEB開發(fā)還需要掌握頁面前端語言如HTML/JavaScript等等,需要掌握軟件開發(fā)工具(IDE集成開發(fā)環(huán)境),如JBuilder/Eclipse/VisualStudio.NET,熟悉一種關(guān)系數(shù)據(jù)庫技術(shù),如ORACLE/SqlServer/DB2/MySQL等,以及UML建模工具,熟悉軟件開發(fā)過程.此外,作為軟件工程師,作為主要編程人員,需要能夠具備程序閱讀的能力,由于軟件開發(fā)工作不一定會從頭開始,這就需要開發(fā)人員有良好的閱讀程序的能力,能在盡可能短的時間里了解軟件整體的架構(gòu),理解該軟件初始的開發(fā)思想,能迅速并有效地參與到項(xiàng)目開發(fā)中去;需要較強(qiáng)的編程能力,具備良好的編程習(xí)慣,能遵循通用的編程規(guī)范,并做好注釋;以及程序調(diào)試和測試能力,很多程序調(diào)試和測試的工作并不都是由編程人員完成,但很顯然,程序員也需要具備程序調(diào)試和測試能力,對于明顯的Bug能夠及時排除.此外,具備以上編程基本功,還不足夠,還需要具備一些系統(tǒng)需求分析、系統(tǒng)設(shè)計(包括系統(tǒng)概要設(shè)計,詳細(xì)設(shè)計)、軟件測試等方面的能力,否則根據(jù)軟件工程開發(fā)模型以及軟件開發(fā)流程來看僅僅編碼是不行的,在軟件開發(fā)流程中往往還需要參與到編碼之前及之后的工作中去.
良好的職業(yè)素養(yǎng)首先要有服務(wù)意識,能主動站在客戶的角度去考慮問題,傾聽客戶的想法和要求;其次需要有較好的表達(dá)和溝通能力,在和客戶,領(lǐng)導(dǎo),及同項(xiàng)目組的同事溝通順暢,與其他工作崗位同事工作交接時能充分溝通;還有就是最為關(guān)鍵的一點(diǎn),軟件開發(fā)由于不是個人能完成的,需要整個項(xiàng)目團(tuán)隊一起來開發(fā),這需要團(tuán)隊合作,所以良好的職業(yè)素養(yǎng)包括需要能夠和項(xiàng)目組其他人員能夠團(tuán)結(jié)奮進(jìn),分工合作;還需要有抗壓能力,軟件開發(fā)是一項(xiàng)比較艱巨的任務(wù),有時候時間緊,任務(wù)重,加班加點(diǎn)在所難免,需要進(jìn)行自我調(diào)節(jié);最后,很顯然,創(chuàng)新意識作為軟件工程師的職業(yè)素養(yǎng)必不可少.一定的項(xiàng)目經(jīng)驗(yàn),這需要積累,很多時候,做事情,解決問題需要憑借經(jīng)驗(yàn),軟件開發(fā)也不例外.
自主學(xué)習(xí)能力作為軟件工程師必備素養(yǎng),必須具備,這要求程序員能夠自行查找資料完成項(xiàng)目背景知識和所涉及的軟件開發(fā)新技術(shù),另外,軟件開發(fā)技術(shù)飛速發(fā)展,也要求程序員不斷學(xué)習(xí),更新技術(shù).
學(xué)?,F(xiàn)有培養(yǎng)方案中除了開設(shè)公共課程及選修課外,對于軟件專業(yè)類課程一般是大一開設(shè)計算機(jī)入門課程,大二開設(shè)軟件專業(yè)基礎(chǔ)課程,大三、大四開設(shè)軟件專業(yè)課程,大四進(jìn)行畢業(yè)實(shí)習(xí)和畢業(yè)設(shè)計,并撰寫畢業(yè)論文.
如前文所述,經(jīng)過學(xué)校四年系統(tǒng)學(xué)習(xí),軟件類專業(yè)畢業(yè)學(xué)生基本掌握了本專業(yè)基礎(chǔ)理論知識,但軟件開發(fā)基本技能欠缺或技能水平不高.比如有些學(xué)生直到畢業(yè)也還沒有掌握一門計算機(jī)編程語言,開發(fā)工具、建模工具更不熟悉,有些學(xué)生會能夠編寫一些代碼,但也僅僅停留在小程序?qū)用嫔?,盡管課程體系中開設(shè)了數(shù)據(jù)庫課程,有理論課如數(shù)據(jù)庫系統(tǒng)概論,也有數(shù)據(jù)庫技術(shù)類課程如Oracle或SqlServer,但很多學(xué)生僅僅只是為了拿學(xué)分通過考試,而沒有真正意義上作為技術(shù)來掌握數(shù)據(jù)庫技術(shù),畢業(yè)設(shè)計本意上是為綜合運(yùn)用四年所學(xué)專業(yè)知識進(jìn)行一個系統(tǒng)化的軟件設(shè)計,但很多時候,由于忙著找工作,考研,并沒有真正意義上去實(shí)現(xiàn).至于職業(yè)素養(yǎng),學(xué)校課程體系中沒有體系出來,畢業(yè)學(xué)生自然不具備,軟件開發(fā)經(jīng)驗(yàn)更是缺乏.唯一可稱道的是有些畢業(yè)學(xué)生基礎(chǔ)理論比較扎實(shí),自主學(xué)習(xí)能力較強(qiáng).
鑒于軟件類畢業(yè)學(xué)生系統(tǒng)開發(fā)能力現(xiàn)狀,參照軟件工程師應(yīng)具備的能力、素養(yǎng)要求,在現(xiàn)有培養(yǎng)方案及課程體系之外,設(shè)想一種新的提升系統(tǒng)開發(fā)能力的培養(yǎng)模式,如圖2所示.
圖2 一種新的提升系統(tǒng)開發(fā)能力的培養(yǎng)模式
(1)基礎(chǔ)知識儲備,首先在學(xué)?,F(xiàn)有課程體系上,做好編程相關(guān)的基礎(chǔ)知識儲備,例如數(shù)學(xué)基礎(chǔ)知識,計算機(jī)算法,程序設(shè)計基礎(chǔ),數(shù)據(jù)庫系統(tǒng),軟件工程,計算機(jī)網(wǎng)絡(luò),數(shù)據(jù)結(jié)構(gòu).這些理論知識,一般由校內(nèi)教師課堂授課,在課堂上完成,即在現(xiàn)有課程體系上獲取.此外,在現(xiàn)有課程體系上很多學(xué)校還會開設(shè)軟件開發(fā)實(shí)踐類課程及應(yīng)用技術(shù)類課程,例如計算機(jī)編程語言,UML,一門數(shù)據(jù)庫技術(shù)課程等,這些課程學(xué)生不能僅僅當(dāng)做一門課程通過而已,而是要當(dāng)做一種技術(shù)來掌握.
(2)編程基本功的訓(xùn)練與提升,訓(xùn)練在課堂外,一般是在機(jī)房或?qū)嶒?yàn)室,由實(shí)踐實(shí)訓(xùn)指導(dǎo)教師設(shè)計一系列編程范例,要求學(xué)生獨(dú)立或組隊完成,提升學(xué)生在程序閱讀,程序編寫,程序調(diào)試及程序算法方面的能力,并適當(dāng)要求基礎(chǔ)較好的學(xué)生參加不同層次軟件類編程競賽,并以此引領(lǐng)其他同學(xué)在編程水平的提升.
(3)最后最關(guān)鍵的一步,組建校內(nèi)軟件工作室,由有項(xiàng)目經(jīng)驗(yàn)豐富的校內(nèi)教師或軟件企業(yè)工程師擔(dān)任項(xiàng)目指導(dǎo).軟件工作室對外承接一定的軟件開發(fā)項(xiàng)目,對內(nèi)培養(yǎng)學(xué)生,讓這些學(xué)生參與到真實(shí)軟件項(xiàng)目開發(fā)中來,熟悉軟件開發(fā)流程,了解項(xiàng)目團(tuán)隊分工合作,培養(yǎng)軟件行業(yè)職業(yè)素養(yǎng),積累一定的軟件開發(fā)經(jīng)驗(yàn).當(dāng)指導(dǎo)老師認(rèn)為參與到工作室的學(xué)生編程基本功不夠時,可反饋到前面階段進(jìn)行編程基本功的強(qiáng)化訓(xùn)練.
根據(jù)以上教學(xué)改革設(shè)想,在2012級軟件工程專業(yè)兩個不同班級間進(jìn)行教學(xué)實(shí)施,發(fā)現(xiàn)按照原有學(xué)校培養(yǎng)方案進(jìn)行教學(xué)的班級學(xué)生在編程動手能力方面普遍要弱于新的培養(yǎng)模式的班級,在畢業(yè)工作時,實(shí)施了新的培養(yǎng)模式的班級學(xué)生大部分不需要再培訓(xùn)就能直接進(jìn)入軟件企業(yè)工作,基本上能夠勝任軟件開發(fā)類崗位.由此可見,采用該種培養(yǎng)模式能夠提升學(xué)生的系統(tǒng)開發(fā)能力,學(xué)生因此在畢業(yè)時能夠快速走向軟件類工作崗位.
〔1〕蘆麗萍,于麗.促進(jìn)學(xué)生系統(tǒng)開發(fā)能力的開放實(shí)驗(yàn)?zāi)J窖芯縖J].廊坊師范學(xué)院學(xué)報:自然科學(xué)版, 2010(6):128-130.
〔2〕顧韻華,鄭關(guān)勝.以系統(tǒng)開發(fā)能力培養(yǎng)為目標(biāo)的計算機(jī)軟件系列課程的構(gòu)建[J].教育探索,2009(1):24-25.
〔3〕王軍平.高職計算機(jī)專業(yè)學(xué)生軟件系統(tǒng)開發(fā)能力的提高方法探討[J].電腦知識與技術(shù):學(xué)術(shù)交流,2009(10):8009-8010.
〔4〕李文敬,廖偉志,李廣原,陸建波,等.提高計算機(jī)專業(yè)本科學(xué)生軟件系統(tǒng)開發(fā)能力的實(shí)驗(yàn)方法[J].廣西科學(xué)院學(xué)報,2008(4):373-375,379.
〔5〕陳志泊,張海燕,王春玲,趙方,王建新,等.以程序設(shè)計與軟件開發(fā)能力為主的計算機(jī)專業(yè)應(yīng)用型人才培養(yǎng)模式的研究與實(shí)踐[J].計算機(jī)教育,2015(7):94-98.
G642.0
:A
:1673-260X(2017)03-0199-03
2016-11-23
江西理工大學(xué)校級教學(xué)改革課題(XJG-2014-26);江西省社會科學(xué)十二五(2015年)規(guī)劃項(xiàng)目(15JY22)