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