摘要: 本文分析了計算機軟件專業(yè)的特點,并針對高職院校軟件專業(yè)的培養(yǎng)目標,分析了當(dāng)前課程體系設(shè)置中應(yīng)注意的問題,在此基礎(chǔ)上,提出了一個詳細的專業(yè)教學(xué)課程設(shè)置方案。
關(guān)鍵詞: 高職院校 軟件 課程體系
一、引言
高職院校軟件專業(yè)(以下簡稱“軟件專業(yè)”)主要目標是培養(yǎng)從事IT職業(yè)的基礎(chǔ)實用型人才,從事IT行業(yè)的人員就注定要與軟件工程打交道。軟件工程是生產(chǎn)和創(chuàng)造軟件的活動和過程,它包括相關(guān)的需求分析、體系結(jié)構(gòu)設(shè)計、代碼編寫及調(diào)試、測試和發(fā)布等各個環(huán)節(jié)。軟件工程不是科學(xué),其目的是創(chuàng)造而不是發(fā)現(xiàn)。軟件工程與一般傳統(tǒng)意義下的工程也不同,在普通的工程中,一般都有成熟的系統(tǒng)化方法及相應(yīng)的規(guī)范標準,如機械工程設(shè)計都有標準和設(shè)計手冊。但軟件工程至今沒有一個完整公認的系統(tǒng)化方法,甚至還停留在后手工作坊階段。在文獻[1]中,作者分析了軟件工程與一般工程相比有哪些特殊性,大致有以下幾點:
1)每個軟件不是過去項目的簡單重復(fù),而總是新的。這種“新”具體體現(xiàn)在功能需求的變化、新的技術(shù)實現(xiàn)方法、硬件平臺的改變、操作系統(tǒng)軟件的升級和演變等。此外,編程語言的變化和開發(fā)環(huán)境的不斷進步也是一個創(chuàng)新。
2)每個軟件項目都是在不斷變化,特別是功能需求在軟件開發(fā)過程中不斷發(fā)生變化,許多設(shè)計很難一步到位,總是有一些問題是預(yù)先沒有考慮到的,隨著開發(fā)過程的深入需要不斷地調(diào)整,也就是說軟件項目中角色分工不像其他工程那樣細致。
3)軟件項目一般勝算不大,很多項目要么延期,要么超過預(yù)算,或者軟件質(zhì)量達不到客戶的驗收標準,甚至有的項目永遠也完不成。
4)軟件項目是典型的團隊活動,尤其是大型軟件,牽涉人員比較多,協(xié)調(diào)溝通難度比較大,加之計劃不如變化快,對進度非常難以監(jiān)控。而且生產(chǎn)力與人員不能成正比。也就是說,當(dāng)項目延期時,在一般工程項目中添加人員可以起到提高生產(chǎn)力,加快工程進度的作用,但對一個軟件項目而言,加入更多的人可能使項目延期加劇。
軟件項目的這些特征就決定了軟件專業(yè)在培養(yǎng)人才方式上必然與其他專業(yè)有許多不同之處,特別是在高等職業(yè)技術(shù)學(xué)院。因此,在高職院校里,軟件專業(yè)人才培養(yǎng)模式與其他專業(yè)強調(diào)技能方面相比,應(yīng)將重點放在培養(yǎng)學(xué)生的創(chuàng)新、自學(xué)能力及團隊合作意識上。
二、高職院校軟件專業(yè)人才培養(yǎng)方式上的一些誤區(qū)
當(dāng)前,許多高職院校都設(shè)置了軟件專業(yè)。但從最近幾年學(xué)生的就業(yè)特別是對口就業(yè)形勢看,情況并不樂觀,其中很重要的原因就是,軟件專業(yè)人才培養(yǎng)上存在一定的偏差,課程設(shè)置跟不上行業(yè)發(fā)展要求。大學(xué)教育以填鴨的方式給學(xué)生灌輸技能,卻忽視了傳授思想和方法。學(xué)生們雖埋頭學(xué)習(xí),但不知學(xué)以致用,離開學(xué)校后對企業(yè)、產(chǎn)品、人生一片茫然。軟件專業(yè)學(xué)生雖然掌握了用基本編程語言書寫程序的知識,但基礎(chǔ)不牢,不一定能應(yīng)用這些知識做好軟件。我們經(jīng)常見到的現(xiàn)象是,在大學(xué)課堂上,教師講授一些編程語言規(guī)則,舉例說明這些規(guī)則,學(xué)生應(yīng)用語法規(guī)則編寫一些程序代碼。但學(xué)生對編碼規(guī)則和處理方法一無所知,課堂上沒有培養(yǎng)學(xué)生的軟件質(zhì)量意識。高職院校軟件專業(yè)人才培養(yǎng)方式上常見的誤區(qū)有:
1)只重視讓學(xué)生通過程序?qū)崿F(xiàn)某項功能,但忽視學(xué)生編寫的代碼質(zhì)量,學(xué)生對包括編程規(guī)范、算法、性能指標等的理解遠不能達到實際項目要求。學(xué)生在校學(xué)習(xí)時沒有對提高代碼質(zhì)量的手段和技術(shù)進行實際演練。
2)對學(xué)生程序調(diào)試能力的訓(xùn)練不足,學(xué)生面對規(guī)模稍微大一點的程序,就不懂得如何進行有效地調(diào)試、快速定位錯誤并加以改正。
3)學(xué)生系統(tǒng)思維能力訓(xùn)練不夠,學(xué)生畢業(yè)后,面對新問題,沒有很好的解決方案。
4)有的院校增加許多認證類的課程,造成學(xué)生花大量精力去考一個實際用途并不大的證書,因為在軟件業(yè),知識及某種平臺上的技術(shù)發(fā)展很快,在學(xué)校取得的證書未必能用得上,而且,現(xiàn)在的許多證書也未必能反映學(xué)生真實的能力。
5)對高職院校強調(diào)技能方面的理解有偏差,過度強調(diào)所謂的“理論夠用,強化技能”理念,實際操作中造成學(xué)生基礎(chǔ)很不扎實,只能一味模仿,學(xué)生編寫出的程序的確能夠運行,但學(xué)生對其中涉及的性能、算法及底層的一些機制問題一片茫然,當(dāng)項目要求提高程序性能時,學(xué)生往往無法對影響程序性能的部分進行分析歸納,找出關(guān)鍵點,從而有效地對程序進行優(yōu)化處理。
6)具體的教學(xué)方法上,沒有教學(xué)生先閱讀與模仿,再在此基礎(chǔ)上進行修改、擴充、重寫,沒有先從培養(yǎng)良好的編程習(xí)慣開始。各級院校與培訓(xùn)機構(gòu)都有編寫程序課程,卻沒有讀程序的課程,因此,文獻[2]作者建議增加程序閱讀課程。
筆者認為,前幾年提出的“軟件藍領(lǐng)”(近幾年被“軟件實用性人才”所取代)值得商榷,在軟件界,尤其在中國軟件產(chǎn)業(yè)界,絕對的“軟件藍領(lǐng)”是很難有生存空間的,其主要原因是在軟件產(chǎn)業(yè)界,主要體現(xiàn)的是一個創(chuàng)新,角色分工并沒有其他工程項目那樣細致,如設(shè)計和編碼兩種工作就很難絕對分開,因為設(shè)計幾乎不可能一步到位。在中國軟件產(chǎn)業(yè)界,規(guī)模很小的軟件企業(yè)占有相當(dāng)大的比重,這些企業(yè)由于成本控制的原因,往往是一人能擔(dān)任多種角色,對崗位細分沒有那么嚴格,單純的軟件編碼人員是很難立足的。另一方面,規(guī)模較大的軟件企業(yè)雖然崗位細分較嚴格,但由于這樣的企業(yè)生產(chǎn)過程往往自動化程度較高,加上現(xiàn)在開發(fā)工具非常先進,許多代碼甚至能在完整設(shè)計的基礎(chǔ)上通過工具自動完成,“軟件藍領(lǐng)”再“藍”也“藍”不過機器。因此,不具備一定的軟件設(shè)計和分析能力,只能面對一項設(shè)計完整的文檔進行編程的“軟件藍領(lǐng)”將很難就業(yè)。前幾年,筆者見到金山公司網(wǎng)站的招聘頁上不再看重應(yīng)聘者的學(xué)歷,比如對ASP.Net程序員的學(xué)歷要求是初中以上,但職位的具體要求是:熟悉Microsoft .Net Framework,熟練進行ASP與數(shù)據(jù)庫編程;熟練使用C#,并能熟練使用C++或Visual Basic; 熟悉XML編程與Web Service編程,對各種網(wǎng)絡(luò)協(xié)議(TCP/IP、LDAP、SMTP等)有一定的了解;有良好的動手與自學(xué)能力;能夠很好地適應(yīng)團隊工作的環(huán)境,能夠與其他同事的工作配合。顯然一般“軟件藍領(lǐng)”并不能具備上述能力。
當(dāng)然在一些大的軟件企業(yè),也的確存在一些為數(shù)不多的所謂“軟件藍領(lǐng)”崗位,這些崗位主要有:前臺技術(shù)支持,比如接客戶的電話,解決一些軟件使用中的常見問題;程序測試員,只簡單執(zhí)行測試流程,不進行測試工具開發(fā);日常系統(tǒng)管理員,比如,幫助新員工開開賬戶。大的軟件公司很多開發(fā)組織有構(gòu)建團隊,他們負責(zé)每天編譯代碼,生成軟件新的運行版本。高職院校軟件專業(yè)人才培養(yǎng)目標顯然不是主要針對這些崗位的。事實上,即使在國外的軟件業(yè),盡管角色分工細致,也沒有出現(xiàn)類似的稱謂。在文獻[3]中,作者將軟件從業(yè)人員分為4級:
第1級——入門級:會利用某種語言的基本功能,能夠編寫類、子程序、循環(huán)和條件語句,會使用語言的許多特性。
第2級——中級:中級程序員能夠利用多種語言的基本功能,并會得心應(yīng)手的使用至少一種語言。
第3級——熟練:對語言和環(huán)境有專業(yè)技能。
第4級——技術(shù)帶頭人級:在第3級基礎(chǔ)上,對編碼風(fēng)格、質(zhì)量有獨到的實踐和見解。
三、高職院校軟件專業(yè)人才培養(yǎng)目標
高職院校軟件專業(yè)人才培養(yǎng)目標應(yīng)根據(jù)行業(yè)發(fā)展需要及高職院校學(xué)生的實際情況制訂,其中很重要的一點就是必須將滿足行業(yè)發(fā)展對人才的要求放在首位。軟件專業(yè)人才培養(yǎng)方案中總目標可描述為:培養(yǎng)具有計算機軟件基本知識與技能,具有運用軟件工程方法及工具實現(xiàn)軟件編碼及測試操作的能力,具有良好的科學(xué)素質(zhì)和創(chuàng)新能力,具有團隊協(xié)作能力,能在軟件公司或各類IT企事業(yè)單位從事軟件編碼、軟件測試操作、軟件工程實施和軟件應(yīng)用與維護等一線工作的高級技術(shù)應(yīng)用性人才。專業(yè)人才培養(yǎng)目標的定位是“程序設(shè)計員”或“軟件測試員”及與之相關(guān)的其他角色。
高職院校軟件專業(yè)畢業(yè)生應(yīng)至少達到在文獻[3]中提出的第2級程序員能力,并具備通過自我學(xué)習(xí)而達到第3級與第4級能力。
四、課程體系結(jié)構(gòu)
通過對專業(yè)人才培養(yǎng)目標的分析及對當(dāng)前培養(yǎng)方式上存在的誤區(qū)進行剖析,我們可以得出這樣的結(jié)論,在設(shè)計專業(yè)課程時,既要考慮到學(xué)生近期就業(yè)所需要的基本技能,還要考慮到學(xué)生的職業(yè)發(fā)展,即設(shè)置的課程不僅要體現(xiàn)實踐性,而且要有助于培養(yǎng)學(xué)生的軟件開發(fā)創(chuàng)新能力。當(dāng)前由于軟件開發(fā)平臺越來越職能化,編寫計算機程序的門檻在逐步降低,但許多軟件專業(yè)人員對體現(xiàn)技術(shù)含量的底層技術(shù)越來越陌生,在面對牽涉到系統(tǒng)性能優(yōu)化等方面的問題時,往往一籌莫展。學(xué)生在校期間除掌握基本的軟件編程技術(shù)外,還應(yīng)學(xué)習(xí)項目管理、軟件工程過程等方面知識,建立軟件工程理念,并增加真實的項目演練。制訂高職院校軟件專業(yè)課程體系時應(yīng)考慮增加這些課程,以增強學(xué)生的就業(yè)競爭力。筆者依據(jù)上述理由提出高職院校軟件專業(yè)各類課程的設(shè)想,課程信息見下表。

當(dāng)前,我國高職院校為大多三年制,共六個學(xué)期,最后一個學(xué)期為學(xué)生實習(xí)和做畢業(yè)設(shè)計時間,因此課程安排主要集中在前5個學(xué)期,下表是各門課程在不同學(xué)期的配置方案,括號內(nèi)為該門課程的學(xué)時數(shù)。
五、結(jié)語
本文基于高職院校的實際情況,結(jié)合當(dāng)前軟件企業(yè)用人需求,系統(tǒng)提出了軟件專業(yè)課程的設(shè)置方法,限于篇幅,本文未能詳細討論每門課程的教學(xué)大綱要求及各門課程的相互關(guān)聯(lián)性。由于軟件技術(shù)發(fā)展很快,課程設(shè)置應(yīng)與時俱進,每年都應(yīng)做適當(dāng)調(diào)整。當(dāng)然,對一些基礎(chǔ)課程,調(diào)整周期應(yīng)適當(dāng)長一些。
參考文獻:
[1]金尊和軟件工程實踐導(dǎo)論.清華大學(xué)出版社,2005年.
[2][美]Robert L.Glass.軟件工程的事實與謬誤.中國電力出版社,2006年1月.
[3][美]Steve McConnell.代碼大全.電子工業(yè)出版社,2006年.