余秋明,晏峰
(江西理工大學軟件學院,江西南昌330013)
面向軟件專業學生提升系統開發能力的研究
余秋明,晏峰
(江西理工大學軟件學院,江西南昌330013)
從軟件類畢業生就業情況出發,分析了軟件類畢業學生系統開發能力現狀,描述了軟件類從業人員職位及職業路線以及作為軟件工程師應具備的知識、技能及素養,針對現狀及要求,提出了一種旨在提升學生系統開發能力的教學培養模式,以增強軟件類學生職業素養.
系統開發能力;教學研究;培養模式;軟件工作室
從近年來畢業生就業及從業情況來看,很多軟件專業畢業生不好找工作或者是難以勝任軟件行業的工作崗位,究其原因,一方面畢業生成倍增多,相對而言就業崗位有限(當然也在增加),另一方面社會對軟件相關的崗位要求越來越高,既要求學生具備較強的軟件系統開發能力,又要具有一定的系統開發工作經驗,使得學生一畢業就能直接勝任軟件相關的工作崗位.從現有的情況得知,我們培養出來的軟件畢業生離我們的培養目標相去甚遠,確實,學生畢業時一沒有工作經驗,二來專業能力及系統開發能力不高或者說有待提升.為此,所畢業學生為了盡快能從事軟件行業工作崗位,一般有兩種途徑,一種是招聘單位覺得所應聘的學生基礎比較扎實,用人單位招聘過去后進行崗前實習培訓,提升其軟件系統開發能力,并積累一定系統開發經驗,從而能夠勝任軟件開發工作崗位;另外一種是學生自己參加各種軟件開發技術類的培訓,結束后由培訓機構推薦就業.無論哪種實現途徑,都沒有讓軟件企業(用人單位)和畢業學生實現就業的無縫對接,都需要為此承擔相應的培訓成本.為增強學生就業實力,面向軟件專業學生提升系統開發能力的教學研究就變得比較緊迫.
從軟件開發人員的生涯規劃來看,我們可以大致分為以下三個階段,如下表1所示.

表1 軟件開發人職業路線及能力要求
作為剛畢業的軟件專業學生,少有一畢業就能夠從事系統架構設計工作的,一般是先從事程序員工作,能力較強的學生具備3-5年軟件項目經驗后,能夠從事軟件設計工作,即成長為高級程序員,再經過若干年歷練后,有機會成長為系統分析師(系統架構).如引言部分所描述,很多畢業學生軟件系統開發能力不足,系統開發的工作經驗更是無從談起,如此,軟件專業畢業學生就連從事軟件開發行業最基本的職位-程序員都難以勝任.
為此,本文所進行的教學改革研究主要是面向軟件專業學生畢業后能夠從事軟件行業相關工作,特別是能夠一畢業就能勝任軟件工程師(程序員)或軟件設計師(高級程序員)工作崗位而展開,為提升學生系統開發能力方面而做出一些教學改革嘗試.
通過企業調研,我們了解到作為軟件工程師,要勝任所在崗位職責,應該具備專業基本理論知識、軟件開發基本技能及良好的職業素養,以及要積累一定的項目經驗,最后一個就是軟件技術更新較快,需要具備一定的自主學習能力,如圖1所示.

圖1 軟件工程師需具備的能力和素養
具體展開來講,專業基本理論知識就是需要掌握基礎理論知識,如操作系統、編譯原理、計算機網絡、軟件工程、數據結構與算法、計算機原理等,熟悉軟件專業所涉及的基本理論.
軟件開發基本技能需要熟練掌握一門編程語言,如JAVA/C++/C#等,如果做WEB開發還需要掌握頁面前端語言如HTML/JavaScript等等,需要掌握軟件開發工具(IDE集成開發環境),如JBuilder/Eclipse/VisualStudio.NET,熟悉一種關系數據庫技術,如ORACLE/SqlServer/DB2/MySQL等,以及UML建模工具,熟悉軟件開發過程.此外,作為軟件工程師,作為主要編程人員,需要能夠具備程序閱讀的能力,由于軟件開發工作不一定會從頭開始,這就需要開發人員有良好的閱讀程序的能力,能在盡可能短的時間里了解軟件整體的架構,理解該軟件初始的開發思想,能迅速并有效地參與到項目開發中去;需要較強的編程能力,具備良好的編程習慣,能遵循通用的編程規范,并做好注釋;以及程序調試和測試能力,很多程序調試和測試的工作并不都是由編程人員完成,但很顯然,程序員也需要具備程序調試和測試能力,對于明顯的Bug能夠及時排除.此外,具備以上編程基本功,還不足夠,還需要具備一些系統需求分析、系統設計(包括系統概要設計,詳細設計)、軟件測試等方面的能力,否則根據軟件工程開發模型以及軟件開發流程來看僅僅編碼是不行的,在軟件開發流程中往往還需要參與到編碼之前及之后的工作中去.
良好的職業素養首先要有服務意識,能主動站在客戶的角度去考慮問題,傾聽客戶的想法和要求;其次需要有較好的表達和溝通能力,在和客戶,領導,及同項目組的同事溝通順暢,與其他工作崗位同事工作交接時能充分溝通;還有就是最為關鍵的一點,軟件開發由于不是個人能完成的,需要整個項目團隊一起來開發,這需要團隊合作,所以良好的職業素養包括需要能夠和項目組其他人員能夠團結奮進,分工合作;還需要有抗壓能力,軟件開發是一項比較艱巨的任務,有時候時間緊,任務重,加班加點在所難免,需要進行自我調節;最后,很顯然,創新意識作為軟件工程師的職業素養必不可少.一定的項目經驗,這需要積累,很多時候,做事情,解決問題需要憑借經驗,軟件開發也不例外.
自主學習能力作為軟件工程師必備素養,必須具備,這要求程序員能夠自行查找資料完成項目背景知識和所涉及的軟件開發新技術,另外,軟件開發技術飛速發展,也要求程序員不斷學習,更新技術.
學校現有培養方案中除了開設公共課程及選修課外,對于軟件專業類課程一般是大一開設計算機入門課程,大二開設軟件專業基礎課程,大三、大四開設軟件專業課程,大四進行畢業實習和畢業設計,并撰寫畢業論文.
如前文所述,經過學校四年系統學習,軟件類專業畢業學生基本掌握了本專業基礎理論知識,但軟件開發基本技能欠缺或技能水平不高.比如有些學生直到畢業也還沒有掌握一門計算機編程語言,開發工具、建模工具更不熟悉,有些學生會能夠編寫一些代碼,但也僅僅停留在小程序層面上,盡管課程體系中開設了數據庫課程,有理論課如數據庫系統概論,也有數據庫技術類課程如Oracle或SqlServer,但很多學生僅僅只是為了拿學分通過考試,而沒有真正意義上作為技術來掌握數據庫技術,畢業設計本意上是為綜合運用四年所學專業知識進行一個系統化的軟件設計,但很多時候,由于忙著找工作,考研,并沒有真正意義上去實現.至于職業素養,學校課程體系中沒有體系出來,畢業學生自然不具備,軟件開發經驗更是缺乏.唯一可稱道的是有些畢業學生基礎理論比較扎實,自主學習能力較強.
鑒于軟件類畢業學生系統開發能力現狀,參照軟件工程師應具備的能力、素養要求,在現有培養方案及課程體系之外,設想一種新的提升系統開發能力的培養模式,如圖2所示.

圖2 一種新的提升系統開發能力的培養模式
(1)基礎知識儲備,首先在學校現有課程體系上,做好編程相關的基礎知識儲備,例如數學基礎知識,計算機算法,程序設計基礎,數據庫系統,軟件工程,計算機網絡,數據結構.這些理論知識,一般由校內教師課堂授課,在課堂上完成,即在現有課程體系上獲取.此外,在現有課程體系上很多學校還會開設軟件開發實踐類課程及應用技術類課程,例如計算機編程語言,UML,一門數據庫技術課程等,這些課程學生不能僅僅當做一門課程通過而已,而是要當做一種技術來掌握.
(2)編程基本功的訓練與提升,訓練在課堂外,一般是在機房或實驗室,由實踐實訓指導教師設計一系列編程范例,要求學生獨立或組隊完成,提升學生在程序閱讀,程序編寫,程序調試及程序算法方面的能力,并適當要求基礎較好的學生參加不同層次軟件類編程競賽,并以此引領其他同學在編程水平的提升.
(3)最后最關鍵的一步,組建校內軟件工作室,由有項目經驗豐富的校內教師或軟件企業工程師擔任項目指導.軟件工作室對外承接一定的軟件開發項目,對內培養學生,讓這些學生參與到真實軟件項目開發中來,熟悉軟件開發流程,了解項目團隊分工合作,培養軟件行業職業素養,積累一定的軟件開發經驗.當指導老師認為參與到工作室的學生編程基本功不夠時,可反饋到前面階段進行編程基本功的強化訓練.
根據以上教學改革設想,在2012級軟件工程專業兩個不同班級間進行教學實施,發現按照原有學校培養方案進行教學的班級學生在編程動手能力方面普遍要弱于新的培養模式的班級,在畢業工作時,實施了新的培養模式的班級學生大部分不需要再培訓就能直接進入軟件企業工作,基本上能夠勝任軟件開發類崗位.由此可見,采用該種培養模式能夠提升學生的系統開發能力,學生因此在畢業時能夠快速走向軟件類工作崗位.
〔1〕蘆麗萍,于麗.促進學生系統開發能力的開放實驗模式研究[J].廊坊師范學院學報:自然科學版, 2010(6):128-130.
〔2〕顧韻華,鄭關勝.以系統開發能力培養為目標的計算機軟件系列課程的構建[J].教育探索,2009(1):24-25.
〔3〕王軍平.高職計算機專業學生軟件系統開發能力的提高方法探討[J].電腦知識與技術:學術交流,2009(10):8009-8010.
〔4〕李文敬,廖偉志,李廣原,陸建波,等.提高計算機專業本科學生軟件系統開發能力的實驗方法[J].廣西科學院學報,2008(4):373-375,379.
〔5〕陳志泊,張海燕,王春玲,趙方,王建新,等.以程序設計與軟件開發能力為主的計算機專業應用型人才培養模式的研究與實踐[J].計算機教育,2015(7):94-98.
G642.0
:A
:1673-260X(2017)03-0199-03
2016-11-23
江西理工大學校級教學改革課題(XJG-2014-26);江西省社會科學十二五(2015年)規劃項目(15JY22)