摘要:軟件開發(fā)能力已成為計(jì)算機(jī)專業(yè)學(xué)生應(yīng)熟練掌握的一項(xiàng)重要技能,我院針對當(dāng)前社會對軟件人才的實(shí)際需求,制定了科學(xué)合理的教學(xué)方案。本文介紹了我院的培養(yǎng)策略以及實(shí)踐效果。
關(guān)鍵詞:軟件開發(fā);能力培養(yǎng);教學(xué)方案
中圖分類號:G642文獻(xiàn)標(biāo)識碼:B
1引言
隨著計(jì)算機(jī)硬件、軟件、網(wǎng)絡(luò)等信息技術(shù)的快速發(fā)展,計(jì)算機(jī)已由最初單機(jī)計(jì)算為主發(fā)展為現(xiàn)在以網(wǎng)絡(luò)化信息處理為主,功能不斷增強(qiáng),性價比不斷提高,應(yīng)用范圍不斷擴(kuò)大,推動信息社會快速發(fā)展,因此社會需要大量高質(zhì)量的軟件產(chǎn)品,更需要大量高素質(zhì)的軟件人才。據(jù)前程無憂網(wǎng)統(tǒng)計(jì),如圖1所示,該網(wǎng)站2006、2007年軟件開發(fā)相關(guān)的崗位總數(shù)分別是33653、42177個,對各類軟件人才的需求量穩(wěn)步增長,其中,高級軟件工程師的崗位數(shù)增長最快,增長了1.6倍,說明市場更加歡迎高級的軟件人才,以后企業(yè)間的競爭是高級人才的競爭。調(diào)查顯示,2007年中國軟件產(chǎn)業(yè)存在至少20萬軟件人才缺口,并且這個缺口還以每年20%左右的速度增長。IT人才的短缺嚴(yán)重阻礙著中國IT產(chǎn)業(yè)的發(fā)展。教育體系有跟不上市場需求的危機(jī),因此如今許多IT培訓(xùn)機(jī)構(gòu)的業(yè)務(wù)非?;鸨?。
圖1 2006年、2007年前程無憂網(wǎng)的軟件開發(fā)崗位數(shù)比較圖
計(jì)算機(jī)專業(yè)培養(yǎng)學(xué)生的目標(biāo)主要是系統(tǒng)掌握計(jì)算機(jī)的基礎(chǔ)理論,學(xué)習(xí)計(jì)算機(jī)先進(jìn)的設(shè)計(jì)、開發(fā)技術(shù),成為具有良好的綜合素質(zhì)、較強(qiáng)的創(chuàng)新與實(shí)踐能力的專業(yè)人才。軟件開發(fā)能力是計(jì)算機(jī)專業(yè)學(xué)生應(yīng)具備的重要的、基本的技能。近年來,軟件人才已成為當(dāng)今社會最緊缺的人才之一,一方面說明當(dāng)今社會對軟件人才的剛性需求,另一方面說明當(dāng)前高校培養(yǎng)的合格的軟件人才數(shù)量不足,而我國許多高校計(jì)算機(jī)專業(yè)的招生規(guī)模不斷擴(kuò)大,但教學(xué)質(zhì)量并沒有提高。主要表現(xiàn)在學(xué)生基礎(chǔ)理論不扎實(shí)、應(yīng)用型知識缺乏、動手能力不夠、自學(xué)能力不強(qiáng)和軟件開發(fā)經(jīng)驗(yàn)不足等方面,因此必須加強(qiáng)計(jì)算機(jī)專業(yè)學(xué)生軟件開發(fā)能力的培養(yǎng)。信息產(chǎn)業(yè)部日前公布的一份軟件產(chǎn)業(yè)發(fā)展規(guī)劃顯示,2010年中國軟件產(chǎn)業(yè)銷售收入預(yù)計(jì)將達(dá)到13000億元人民幣。軟件行業(yè)期望新的從業(yè)人員應(yīng)該具備以下三個重要特征:①扎實(shí)的概念基礎(chǔ)和技術(shù)技能,從而能夠適應(yīng)不斷變化的IT行業(yè);②獲得行業(yè)實(shí)際項(xiàng)目開發(fā)所需的技術(shù)和經(jīng)驗(yàn),熟練掌握編程的核心技能、規(guī)范和有關(guān)工具;③具有溝通與協(xié)作技能以及團(tuán)隊(duì)合作精神。下面從教師和學(xué)生兩方面入手,分別探求軟件人才的培養(yǎng)方案。
2教師是教學(xué)質(zhì)量的保證
2.1教師要重視軟件開發(fā)
目前許多教師重視讀學(xué)位、寫文章,輕視軟件開發(fā)實(shí)踐,因?yàn)楹笳卟坏量啵也蝗菀妆淮蠹艺J(rèn)可,如在高校評職稱時,寫一篇普通文章強(qiáng)過開發(fā)一個優(yōu)秀軟件,顯然兩者的技術(shù)含量與付出的勞動都不成正比,但從長遠(yuǎn)的角度看,軟件開發(fā)有益于教師的科研與教學(xué),如筆者在讀博期間研究一種綜合算法,需要編寫許多軟件工具,構(gòu)建算法實(shí)驗(yàn)平臺,因此軟件開發(fā)能力是進(jìn)行算法研究的前題。
2.2教師軟件開發(fā)水平有待提高
目前不少教師缺乏軟件開發(fā)經(jīng)驗(yàn),難以理論聯(lián)系實(shí)際,只能紙上談兵,照本宣書。筆者開發(fā)過大量高質(zhì)量的軟件系統(tǒng),授課時經(jīng)常結(jié)合自己開發(fā)過的一些軟件項(xiàng)目講解算法與數(shù)據(jù)結(jié)構(gòu)與軟件工程等課程,有許多經(jīng)驗(yàn)和方法都是在長期實(shí)踐中領(lǐng)悟而得,學(xué)生對此非常感興趣,從中受益匪淺。學(xué)生不僅學(xué)到了軟件開發(fā)知識,還掌握了軟件開發(fā)的方法,增強(qiáng)了對軟件開發(fā)的信心。你若沒有編寫過大量程序,就很理解面向過程(Procedure-Oriented)、面向?qū)ο?Object-Oriented)、面向方面(Aspect-Oriented)與面向服務(wù)(Service-Oriented)等軟件設(shè)計(jì)方法的思想并在項(xiàng)目中靈活運(yùn)用,也無法體會設(shè)計(jì)模式(Design Pattern)的精妙之處。
2.3改進(jìn)教學(xué)方法
如筆者在講授Visual Basic(VB)與Visual C++(VC)等課程時,教學(xué)方法如下。
(1) 改革課程考核指標(biāo)
為引導(dǎo)和鼓勵學(xué)生多動手,加強(qiáng)軟件開發(fā)實(shí)踐,在學(xué)期初就公布成績計(jì)算方案,如:總成績=筆試成績×60%+實(shí)驗(yàn)成績×20%+軟件項(xiàng)目成績×20%。軟件開發(fā)能力很難用一份試卷反映出來,不僅要考查算法理解與運(yùn)用的能力,還要考核動手實(shí)踐的水平。實(shí)踐證明,通過軟件項(xiàng)目的開發(fā),能充分反映學(xué)生的綜合素質(zhì),也能準(zhǔn)確全面地了解學(xué)生對知識和技能的掌握情況。
(2) 教學(xué)初期強(qiáng)調(diào)對編程細(xì)節(jié)的指導(dǎo)
學(xué)生尚未入門時,要具體指導(dǎo),最好用多媒體講解,教師應(yīng)現(xiàn)場編程。有些教師擔(dān)心上課時編程出錯,就將程序放在幻燈片上,上課時一閃而過,教學(xué)效果不理想。教師現(xiàn)場編程對教師提出更高要求。編程水平是軟件開發(fā)水平的基礎(chǔ),筆者講授任何一種語言都是邊講邊編程,有時還會結(jié)合新算法,自由發(fā)揮,考查學(xué)生的理解能力,當(dāng)然編寫的程序有時也會出錯,通過現(xiàn)場代碼調(diào)試或查看幫助系統(tǒng),很快就能解決問題。學(xué)生不僅要學(xué)習(xí)編程,更要學(xué)習(xí)教師分析問題和解決問題的方法,因此教師編程的全過程就顯得非常重要。
(3) 教學(xué)后期要加強(qiáng)軟件項(xiàng)目的開發(fā)
教師可先演示編寫一個小軟件?,F(xiàn)在不少學(xué)生喜歡玩游戲,為增強(qiáng)學(xué)生的興趣,筆者就用VB、VC編寫過俄羅斯方塊等游戲軟件,學(xué)生們覺得很好玩,于是許多學(xué)生都編寫了游戲程序,寓教于樂。其實(shí)一個小小游戲程序幾乎包含了軟件開發(fā)的所有領(lǐng)域,如系統(tǒng)分析與概要設(shè)計(jì)、可視化界面設(shè)計(jì)、游戲規(guī)則的算法設(shè)計(jì)、多媒體編程,也可能涉及數(shù)據(jù)庫或組件設(shè)計(jì)與編程,如果是網(wǎng)絡(luò)游戲還涉及網(wǎng)絡(luò)編程、軟件調(diào)試與測試、制作軟件安裝程序、編寫相關(guān)文檔。學(xué)習(xí)過程中提倡學(xué)生相互討論,互相幫助。現(xiàn)在互聯(lián)網(wǎng)的信息非常豐富,學(xué)生遇到的多數(shù)問題都可在網(wǎng)上找到答案,可以說軟件開發(fā)可以離開教師與書本,但決不能離開互聯(lián)網(wǎng)。
(4) 課程設(shè)計(jì)或畢業(yè)設(shè)計(jì)的選題要有現(xiàn)實(shí)意義
鼓勵或要求學(xué)生開發(fā)一些真正的軟件項(xiàng)目,其原因主要有:①學(xué)生覺得更有現(xiàn)實(shí)意義;②軟件需求更為實(shí)際,需要學(xué)生實(shí)際調(diào)研后,整理、分析、總結(jié)出用戶的真正需求,軟件要求相對較高;③當(dāng)用戶使用時,更容易發(fā)現(xiàn)軟件的Bug和設(shè)計(jì)的缺陷;④有效避免學(xué)生抄襲已有代碼蒙混過關(guān)??傊@樣更能反映并提高學(xué)生的軟件開發(fā)水平。愛爾蘭通過發(fā)展教育、培養(yǎng)人才、吸引軟件人才和大批跨國IT公司,促進(jìn)軟件產(chǎn)業(yè)發(fā)展,從30年前的一個農(nóng)業(yè)小國,一躍成為世界軟件出口第一大國。最近有一位在愛爾蘭的中國留學(xué)生曾向筆者請教畢業(yè)設(shè)計(jì)的問題,他說本科畢業(yè)設(shè)計(jì)是開發(fā)一個購物網(wǎng)站,技術(shù)含量不高,但很實(shí)用,經(jīng)過數(shù)月努力圓滿完成,可碩士畢業(yè)設(shè)計(jì)遇到了技術(shù)難題,設(shè)計(jì)內(nèi)容是用Java開發(fā)可以操縱手機(jī)的PC程序。這個課題很新,也很實(shí)用,這也是筆者在江蘇省自然基金網(wǎng)上項(xiàng)目評審系統(tǒng)中開發(fā)過的一個軟件,主要用于聯(lián)系評審專家,只是我是用C++開發(fā)的。該軟件涉及到系統(tǒng)底層的開發(fā),如串口通信、手機(jī)的AT指今、通信數(shù)據(jù)包與通信議協(xié)的分析與處理、通信內(nèi)容的數(shù)據(jù)挖掘與智能處理;該軟件還要考慮Java操控操作系統(tǒng)的底層和C++系統(tǒng)向Java系統(tǒng)的移植。這說明了愛爾蘭的計(jì)算機(jī)教育中,畢業(yè)設(shè)計(jì)課題來源于社會,有較強(qiáng)實(shí)用價值。
3學(xué)生是學(xué)習(xí)的主體
3.1學(xué)生應(yīng)保持良好的學(xué)習(xí)心態(tài)
(1) 學(xué)習(xí)是一條漫長的道路
軟件開發(fā)的學(xué)習(xí)是一個循序漸進(jìn)的過程,不可急于求成。現(xiàn)在不少學(xué)生不太愛學(xué)習(xí)基礎(chǔ)課程和鉆研技術(shù),學(xué)習(xí)不踏實(shí),總想找些速成的學(xué)習(xí)方法。一部分學(xué)生認(rèn)為大學(xué)里學(xué)習(xí)的算法與數(shù)據(jù)結(jié)構(gòu)等課程不實(shí)用,還不如就學(xué)VB和數(shù)據(jù)庫更能直接派上用場;還有一部分同學(xué)瞧不起程序設(shè)計(jì)工作,還不如學(xué)習(xí)項(xiàng)目管理,可以管理程序員工作,有地位,工作輕松,收入又高,因此把學(xué)校的課程棄之不顧,主攻管理學(xué)。前一類的人是急功近利,因基本功不扎實(shí),發(fā)展后勁不足;后一類的人是好高騖遠(yuǎn),本末倒置,不懂軟件開發(fā)的項(xiàng)目管理,只能是紙上談兵!
(2) 不要害怕走彎路
軟件開發(fā)中充滿智力與耐力的挑戰(zhàn),如何設(shè)計(jì)更為精巧的算法,就如同智力游戲。書寫、整理軟件中的大量代碼與文檔,沒有足夠的細(xì)心與耐心,就會半途而費(fèi)。在學(xué)習(xí)軟件開發(fā)的過程,經(jīng)常或多或少會走一些彎路,但這不是壞事,因?yàn)橐院髸幸獗苊饣蛏僮哌@樣的彎路。筆者在軟件開發(fā)初期就經(jīng)常走彎路,有軟件工具選擇不當(dāng),如將.Net改為Java;有欲速則不達(dá)的,如為簡化編程使用現(xiàn)成報表系統(tǒng),結(jié)果有些功能無法實(shí)現(xiàn),最后只好編寫近萬行代碼,開發(fā)了通用報表系統(tǒng);還有技術(shù)使用不當(dāng),在一些專家的鼓動下使用了一些“最新技術(shù)”,殊不知這些最新技術(shù)隱藏了許多問題,這對軟件系統(tǒng)是致命的,因此軟件項(xiàng)目開發(fā)與科學(xué)研究不一樣,不要選用最前沿的最新技術(shù),而要采用成熟的主流技術(shù)。
(3) 興趣是最大的學(xué)習(xí)動力
如果你對軟件開發(fā)不感興趣,整天面對電腦,輸入代碼,不停思考問題,肯定會無聊和痛苦的。據(jù)統(tǒng)計(jì),中國35歲以上程序員只占5%,其中一個主要原因就是當(dāng)程序員長期從事軟件開發(fā)時,如果沒有興趣導(dǎo)向,就難以堅(jiān)持,最終只能選擇放棄。而國外許多軟件大公司,年長的程序員卻很多,主要還是他們熱愛這個職業(yè)。筆者對軟件開發(fā)很感興趣,對每個技術(shù)細(xì)節(jié)總想追根求源,因?yàn)槔斫?,學(xué)習(xí)效率倍增,開發(fā)軟件的數(shù)量與質(zhì)量也在不斷提高。在學(xué)習(xí)新技術(shù)或開發(fā)有挑戰(zhàn)性軟件項(xiàng)目的過程中,會有一種滿足感與成就感。當(dāng)然還要消除學(xué)生對軟件開發(fā)的神秘感,當(dāng)他完成一項(xiàng)軟件時,就會了解軟件開發(fā)的全過程,且覺得很有意思。
3.3實(shí)踐為主,注重積累
軟件開發(fā)是高強(qiáng)度的腦力勞動,不僅要加強(qiáng)理論學(xué)習(xí),更要重視實(shí)踐。只有編寫過大量程序之后,才能體會出軟件開發(fā)的精髓。經(jīng)驗(yàn)來自實(shí)踐。軟件開發(fā)中會產(chǎn)生問題和錯誤,若能解決好,可上升為經(jīng)驗(yàn),而這些經(jīng)驗(yàn)是書本中學(xué)不到的。經(jīng)驗(yàn)與代碼的積累在今后的軟件開發(fā)中尤為重要,時常會產(chǎn)生事半功倍的效果。筆者在開發(fā)軟件時,構(gòu)建了許多類庫、函數(shù)庫與通用組件,如通用查詢、報表、動態(tài)界面、數(shù)據(jù)庫與Office操作等組件,提高了軟件開發(fā)的質(zhì)量與效率。很難想象一個沒有任何實(shí)踐經(jīng)驗(yàn)與代碼積累的程序員可以快速開發(fā)出高質(zhì)量的軟件系統(tǒng),這也是現(xiàn)在不少用人單位要求應(yīng)聘者要有多年軟件開發(fā)經(jīng)驗(yàn)的原因。
3.4突出學(xué)習(xí)重點(diǎn)
針對學(xué)生的興趣、特長和軟件人才預(yù)期的需求熱點(diǎn),有選擇地學(xué)習(xí)相關(guān)內(nèi)容。軟件知識與技術(shù)名目繁多,不可能全部學(xué)完、學(xué)精,對于需求熱點(diǎn)可以查看一些IT人才網(wǎng),多數(shù)技術(shù)較為相似,萬變不離其宗,學(xué)習(xí)重點(diǎn)相對穩(wěn)定,主要有:
(1) 精通一門編程語言。從目前網(wǎng)絡(luò)版軟件主要分為C/S(客戶/服務(wù)器)模式與B/S(瀏覽器/服務(wù)器)模式,前者可學(xué)習(xí)C++、Java、Delphi(Pascal)、C#等編程工具,后者可學(xué)習(xí)JSP(Java)、.Net(C#)、ASP、PHP等編程工具。隨著互聯(lián)網(wǎng)快速發(fā)展,目前B/S模式占據(jù)主流地位,其中Java/
J2EE和.Net人才成為熱門。但對于計(jì)算機(jī)專業(yè)的學(xué)生,C++語言是一定要學(xué)好的,它是許多核心系統(tǒng)的唯一語言。當(dāng)然Java語言是全球最熱門的語言,主要原因是Java具有跨平臺、開源、安全等方面的強(qiáng)大優(yōu)勢。
(2) 熟練掌握一門數(shù)據(jù)庫。如Oracle、SQL Server、MySQL,能靈活使用SQL語言和編寫存儲過程、觸發(fā)器,并能將它與前面的編程語言相結(jié)合。多數(shù)系統(tǒng)都與大量數(shù)據(jù)有關(guān),因此必須使用數(shù)據(jù)庫技術(shù),最好能夠掌握數(shù)據(jù)庫的維護(hù)與優(yōu)化技術(shù),以提高系統(tǒng)的性能。
(3) 深入研究數(shù)據(jù)結(jié)構(gòu)與算法。有些軟件系統(tǒng)對性能比較敏感,因此可提出更優(yōu)的數(shù)據(jù)結(jié)構(gòu)與算法,從而滿足系統(tǒng)的性能要求;它還是研究核心技術(shù)的關(guān)鍵。
(4) 學(xué)好英語。目前大部分第一手的技術(shù)資料都是英文的,且隨著外資軟件企業(yè)與軟件外包項(xiàng)目的增多,對英語口語與寫作能力提出了更高的要求。學(xué)生平時應(yīng)多看一些英文版計(jì)算機(jī)教材和英文技術(shù)資料,這樣可以學(xué)習(xí)到最新知識與技術(shù),更好理解作者的思想,也培養(yǎng)了英文閱讀能力,對以后工作也會有幫助。如不少學(xué)生進(jìn)入外資企業(yè)或軟件外包公司后,相關(guān)資料幾乎都是英文的,有時還要與國外客戶或技術(shù)員開視頻會議,發(fā)送E-mail等。
如果對MIS系統(tǒng)感興趣,可重點(diǎn)學(xué)習(xí)數(shù)據(jù)庫的管理、開發(fā)與優(yōu)化技術(shù);如果熱愛網(wǎng)絡(luò)通信,可重點(diǎn)學(xué)習(xí)網(wǎng)絡(luò)通信與安全技術(shù);如果有繪畫特長,可選擇網(wǎng)頁、游戲或軟件的界面設(shè)計(jì);如果有編程天賦,可重點(diǎn)研究算法的設(shè)計(jì)與優(yōu)化;如果想成為軟件高級人才,可學(xué)習(xí)系統(tǒng)分析與架構(gòu)設(shè)計(jì);如果覺得編程水平一般,可從事動態(tài)網(wǎng)頁設(shè)計(jì)或軟件測試等。然而作為計(jì)算機(jī)專業(yè)的學(xué)生,應(yīng)努力從事較高技術(shù)含量的軟件開發(fā),進(jìn)一步拓寬知識面,掌握軟件開發(fā)技術(shù)的全貌,優(yōu)化知識結(jié)構(gòu),提高綜合素質(zhì),這將有益于今后的就業(yè)與事業(yè)的發(fā)展。
3.5加強(qiáng)自學(xué)能力的培養(yǎng)
有人認(rèn)為軟件技術(shù)發(fā)展很快,軟件人才被淘汰也快。然而解決該問題的最好方法就是學(xué)會如何自學(xué),一門有生命力的技術(shù),其發(fā)展必定很快,相關(guān)人才優(yōu)勝劣汰,競爭激烈,如何保證永不落伍,唯有不斷學(xué)習(xí)。如果完全依靠教師講授,顯然是不夠的,必須強(qiáng)化自學(xué)能力的培養(yǎng)。筆者深有體會,本科是學(xué)習(xí)物理專業(yè),多數(shù)計(jì)算機(jī)相關(guān)課程與軟件技術(shù)全部是自學(xué)而成,對于目前軟件技術(shù)的學(xué)習(xí)與研發(fā)游刃有余。學(xué)習(xí)一門新的軟件開發(fā)工具或技術(shù),筆者通常是先買一本由淺入深的書,再從網(wǎng)上或光盤上找到多媒體教學(xué)課件,邊看、邊聽、邊想和邊練,將重點(diǎn)內(nèi)容學(xué)完后,再找一個相關(guān)的軟件項(xiàng)目,用該軟件工具或技術(shù)進(jìn)行開發(fā),這個過程會發(fā)現(xiàn)許多意想不到的難題,通過研究官方幫助與網(wǎng)上的相關(guān)資料方可解決,當(dāng)項(xiàng)目完成時,對學(xué)習(xí)內(nèi)容的理解與掌握又深入一大步。據(jù)IT168統(tǒng)計(jì),軟件開發(fā)者學(xué)習(xí).NET技術(shù)的主要渠道中,自學(xué)占69.4%。
4結(jié)束語
信息時代的許多領(lǐng)域都需要計(jì)算機(jī)專業(yè)人員,他們不是一般的計(jì)算機(jī)操作員,而是計(jì)算機(jī)硬件與軟件的研發(fā)人員。目前計(jì)算機(jī)硬件已趨于成熟與統(tǒng)一,而軟件的個性化需求卻日益增強(qiáng),存在巨大的市場空間,但對軟件人才的要求也在不斷提高,因此計(jì)算機(jī)專業(yè)的學(xué)生應(yīng)勇于承擔(dān)起這樣的責(zé)任與使命,經(jīng)過教與學(xué)的共同努力,提高學(xué)生的軟件開發(fā)能力,為社會培養(yǎng)出更多優(yōu)秀的軟件人才。
參考文獻(xiàn):
[1] 戎玫,張廣泉,王輝. 強(qiáng)化實(shí)踐創(chuàng)新能力突破軟件人才瓶頸[J]. 實(shí)驗(yàn)室研究與探索,2007,26(12):198-200.
[2] 徐長梅. 計(jì)算機(jī)專業(yè)學(xué)生能力的培養(yǎng)[J]. 長沙大學(xué)學(xué)報,2001,(2):70-72.
[3] 董翔英,王志友,趙銳. 問題意識與大學(xué)計(jì)算機(jī)教育[J]. 計(jì)算機(jī)教育,2005,(6):31-33.
[4] 徐曉飛. 培養(yǎng)具有國際競爭力的IT人才[J]. 計(jì)算機(jī)教育,2008,(1):12-15.
[5] 林穗,李振坤,傅秀芬. 計(jì)算機(jī)專業(yè)學(xué)生軟件工程能力的培養(yǎng)[J]. 廣東工業(yè)大學(xué)學(xué)報(社會科學(xué)版),2002,(2):37-38.