摘要:針對傳統(tǒng)計算機專業(yè)課程體系設(shè)置和社會需求存在距離的弊端,以培養(yǎng)動手能力強、具有創(chuàng)新意識的軟件工程人才為目的,本文論述了研究設(shè)置以社會需求為導(dǎo)向的軟件工程專業(yè)的課程體系,并提出一個具體可行的軟件工程專業(yè)課程體系架構(gòu)。
關(guān)鍵詞:軟件工程;課程體系;本科教育
1背景
中國信息產(chǎn)業(yè)部的數(shù)據(jù)顯示,2008年中國軟件產(chǎn)業(yè)整體保持快速增長態(tài)勢,累計完成軟件業(yè)務(wù)收入7572.9億元,同比增長29.8%。與此同時,我國軟件出口142億美元,同比增長39%。企業(yè)對軟件人才需求量在增大,估計人才缺口達到20萬,而且這個需求將以每年20%左右的速度增長[1]。但另一方面,多數(shù)軟件類應(yīng)屆畢業(yè)生在面臨就業(yè)時卻難以感受到這些數(shù)字所帶來的欣慰,很多畢業(yè)生并沒有順利找到對口的工作。雖然這些學(xué)生身份上屬于工程技術(shù)類的應(yīng)用型人才,在目前IT產(chǎn)業(yè)蓬勃發(fā)展的大環(huán)境下理應(yīng)有自己的一席之地,但結(jié)果卻是“畢業(yè)即失業(yè)”表現(xiàn)得愈加突出。
軟件工程專業(yè)具有巨大的發(fā)展?jié)摿?,但如何建設(shè)好軟件工程專業(yè)?長期以來,國內(nèi)高校軟件專業(yè)主要以培養(yǎng)研究型人才為重點,以軟件基礎(chǔ)理論和系統(tǒng)軟件設(shè)計為主干,目標是培養(yǎng)面向計算機與系統(tǒng)軟件領(lǐng)域的研究型人才[2]。因此如何建立保證軟件工程專業(yè)本科學(xué)生既具有可持續(xù)發(fā)展?jié)摿τ诌m應(yīng)當前產(chǎn)業(yè)需求的新型知識體系,如何建立與企業(yè)應(yīng)用緊密結(jié)合的先進課程體系、教學(xué)理念和教學(xué)方法,從而提高學(xué)生的綜合能力,使畢業(yè)生在跨出校門時具備必需的素質(zhì),縮短從學(xué)生到企業(yè)員工的角色轉(zhuǎn)換所需的時間,實現(xiàn)就業(yè)的“零適應(yīng)期”是軟件工程專業(yè)努力的目標。
國外高校在軟件工程教育方面的一個共同點就是:根據(jù)各自國家和學(xué)校的特點,立足學(xué)生長遠發(fā)展,培養(yǎng)適應(yīng)社會需要與變化的人才。從軟件教育的特點來看,西方著名大學(xué)有較完善的教育理念、教學(xué)手段和實驗條件,有較長時間的實施經(jīng)驗,與企業(yè)有密切的合作關(guān)系,有一大批專家在從事計算機與軟件的教育研究。這些大學(xué)的課程與我國現(xiàn)行的計算機和軟件課程體系相比,理論更深,與新技術(shù)的接軌更快,實驗和職業(yè)實踐的比重更大,通過實驗讓學(xué)生掌握基本概念、提高分析問題與解決問題能力的力度更大。
國內(nèi)高校軟件專業(yè)主要以培養(yǎng)研究型人才為重點,以軟件基礎(chǔ)理論和系統(tǒng)軟件設(shè)計為主干,目標是培養(yǎng)面向計算機與系統(tǒng)軟件領(lǐng)域的研究型人才。軟件專業(yè)學(xué)生在學(xué)生學(xué)科知識與實際運用有一定的距離。因此探討如何建立符合國情,既面向當前產(chǎn)業(yè)需要又兼顧本專業(yè)學(xué)生發(fā)展?jié)摿Φ闹R體系、課程體系,是我們研究的主要內(nèi)容。
2模塊化的課程體系
我校軟件工程專業(yè)申辦于2004年,并于2008年開始招生。該專業(yè)成立的宗旨是培養(yǎng)高層次、實用型、復(fù)合型、具有國際競爭力的軟件人才,要求學(xué)生在思維創(chuàng)新的基礎(chǔ)上,提高技術(shù)創(chuàng)新和工程創(chuàng)新能力,提高軟件工程實踐和軟件工程管理能力。我校在設(shè)置軟件工程專業(yè)課程體系方面學(xué)習(xí)全國名牌大學(xué)如復(fù)旦、浙大等,并結(jié)合自己硬件及師資條件的實際,提出了如下幾個設(shè)想:
(1) 合理設(shè)置課程模塊,突出核心基礎(chǔ)。
在軟件工程領(lǐng)域,最新的、先進的軟件技術(shù)文檔、技術(shù)文獻、發(fā)展研究等都是英文撰寫的資料;合資、外資公司中的軟件工程人員所使用的工作語言也是英語。因此在第一至第四學(xué)期我們對學(xué)生的英語能力進行強化訓(xùn)練,通過閱讀、聽力、寫作和口語交流等方式提高其英語運用能力;在第二學(xué)期開始的所有專業(yè)基礎(chǔ)課程、專業(yè)核心課程和專業(yè)選修課程中加入一定比例的專業(yè)英語訓(xùn)練,將英語融入到專業(yè)理論知識學(xué)習(xí)的過程中;同時開設(shè)幾門專業(yè)課采用全英文教材,實行雙語教學(xué),達到鞏固和不斷提高的目的,為學(xué)生動手編寫英文程序代碼,查閱英文技術(shù)文獻、文檔掃除語言障礙。
(2) 合理設(shè)置專業(yè)入門基礎(chǔ)課程模塊,以引導(dǎo)為主。
以計算機導(dǎo)論為主,并以設(shè)置類型多樣、專業(yè)覆蓋面廣的專業(yè)基礎(chǔ)知識講座或新生研討課為輔,學(xué)生學(xué)習(xí)了計算機最基本的概念后,通過生動有趣的講座獲得更廣的認識和了解。
(3) 合理設(shè)置專業(yè)核心課程模塊,以應(yīng)用為主。
專業(yè)核心課程關(guān)系到培養(yǎng)出來的軟件工程人才質(zhì)量。針對計算機學(xué)科需要,應(yīng)設(shè)置相應(yīng)的軟件系統(tǒng)類課程、軟件實現(xiàn)類課程、軟件工程類課程以及相應(yīng)課程的課程設(shè)計、實際項目開發(fā)為核心的軟件設(shè)計及實現(xiàn)類的實踐類課程。
(4) 設(shè)置專業(yè)方向選修課程,突出個性化發(fā)展。
結(jié)合時代需求,結(jié)合學(xué)生個性化發(fā)展需求,設(shè)置多個專業(yè)方向的模塊化課程。設(shè)置跨大類專業(yè)選修課程,如計算機組成原理、編譯原理和軟件體系結(jié)構(gòu)等;設(shè)置專業(yè)方向選修課程,如軟件開發(fā)案例分析、軟件開發(fā)新技術(shù)、軟件文檔寫作等課程。學(xué)生可按需選修1~2個專業(yè)方向,有利于其發(fā)揮專業(yè)創(chuàng)新能力和專業(yè)個性化發(fā)展。
目前,我校軟件工程專業(yè)課程體系架構(gòu)如圖1所示。
3實踐教學(xué)體系
我院除設(shè)置模塊化的課程體系外,還非常注重實踐教學(xué),并且構(gòu)建了以項目為支撐的實踐教學(xué)體系,具體開設(shè)與實踐教學(xué)有關(guān)的課程如下:
第二個學(xué)期開設(shè)認識實習(xí);
第三個學(xué)期開設(shè)面向?qū)ο蟪绦蛟O(shè)計課程設(shè)計;
第四個學(xué)期開設(shè)數(shù)據(jù)庫原理課程設(shè)計以及.NET程序開發(fā)技術(shù)課程設(shè)計;
第五個學(xué)期開設(shè)Java語言課程設(shè)計以及UML建模工具及應(yīng)用課程設(shè)計;
第六個學(xué)期開設(shè)J2EE技術(shù)課程設(shè)計及大型數(shù)據(jù)庫課程設(shè)計;
第七個學(xué)期開設(shè)軟件開發(fā)新技術(shù)課程設(shè)計;
第八個學(xué)期畢業(yè)設(shè)計。
針對合格的工程化軟件人才所應(yīng)具備的個人開發(fā)能力、團隊開發(fā)能力、系統(tǒng)研發(fā)能力和設(shè)備應(yīng)用能力,我們設(shè)計了以下4類階梯狀的工程實踐課程。
程序設(shè)計實踐課程:培養(yǎng)個人級工程項目開發(fā)能力,如面向過程程序設(shè)計(C語言),面向?qū)ο蟪绦蛟O(shè)計(C++語言)等課程設(shè)計。
軟件工程實踐課程:培養(yǎng)團隊合作級工程項目研發(fā)能力,如.NET程序開發(fā)技術(shù)、J2EE技術(shù)、嵌入式軟件開發(fā)(J2ME)等課程設(shè)計。
信息系統(tǒng)實踐課程:培養(yǎng)系統(tǒng)級工程項目研發(fā)能力,如軟件開發(fā)案例分析、面向?qū)ο笙到y(tǒng)分析與設(shè)計、大型數(shù)據(jù)庫應(yīng)用等課程設(shè)計。
畢業(yè)設(shè)計實踐課程:培養(yǎng)開發(fā)軟件所必備的設(shè)備應(yīng)用能力,如軟件開發(fā)新技術(shù)課程設(shè)計、畢業(yè)設(shè)計實踐等。
我們感覺軟件方面的技術(shù)五花八門,因此在專業(yè)核心課程設(shè)置上,注意其側(cè)重點。我們將Java網(wǎng)絡(luò)程序開發(fā)定為主要的教學(xué)方向,其中包括Java程序設(shè)計語言、網(wǎng)絡(luò)軟件開發(fā)技術(shù)、J2EE技術(shù)、以J2ME為主的嵌入式軟件開發(fā)技術(shù)等。當然,我們兼顧企業(yè)實際用人的情況,開設(shè)了.NET程序開發(fā)技術(shù)等核心課程,詳細的專業(yè)課程體系請參見圖1。
4探索式學(xué)習(xí)
軟件工程的理論和方法是從眾多軟件開發(fā)實踐中總結(jié)出來的,但是對于缺乏軟件開發(fā)實際經(jīng)驗的本科生來說,單純地講授理論知識往往使學(xué)生感到枯燥無味且難以理解。因此,我們收集和總結(jié)了一些軟件開發(fā)案例,將這些案例貫穿于理論知識的講解中,使學(xué)生真正理解這些理論知識,建立軟件開發(fā)的系統(tǒng)化與工程化觀念和質(zhì)量意識。
(1) 從分析歷史上的經(jīng)典案例入手,諸如愛國者導(dǎo)彈、網(wǎng)絡(luò)病毒攻擊等。深入剖析導(dǎo)致軟件失敗的根本原因,從而引出軟件開發(fā)的工程化發(fā)展方向,即以軟件工程的原理和方法為指導(dǎo),嚴格遵循軟件過程規(guī)范和步驟。通過這些實例的分析,學(xué)生們逐漸改變軟件開發(fā)等于編寫程序代碼的錯誤觀念,開始認識到軟件工程的重要性,有利于培養(yǎng)工程化的意識和觀念。
(2) 軟件過程是軟件工程課程中的一個重要內(nèi)容,但是對于開發(fā)經(jīng)驗有限的本科生來說,很難在頭腦中將軟件過程的抽象模型與實際開發(fā)聯(lián)系起來,容易產(chǎn)生枯燥乏味的感覺。在教學(xué)過程中,我們從軟件開發(fā)的實際案例中總結(jié)出5個不同的軟件系統(tǒng),結(jié)合這些系統(tǒng)的特點和開發(fā)策略,講解瀑布模型、原型化方法、增量模型、形式化方法和基于組件的開發(fā)模型等。學(xué)生在思考、分析和討論過程中更好地理解和體會軟件過程的基本概念,有利于在實際開發(fā)中運用這些過程模型組織開發(fā)過程。
(3) 研究軟件工程的實踐特點,課程實驗結(jié)合實際開發(fā)因素和參與樂趣。實踐教學(xué)是本課程的一個重要的組成部分,它要求學(xué)生以開發(fā)團隊(一個團隊通常由3~5人組成)的方式開發(fā)一個具有一定規(guī)模的軟件系統(tǒng),側(cè)重培養(yǎng)學(xué)生發(fā)現(xiàn)問題、獨立分析問題和解決問題的能力以及團隊合作精神,使學(xué)生初步體會到一個軟件開發(fā)項目全過程。
(4) 研究和建立適合小組式開發(fā)的軟件工程環(huán)境。在小組式的軟件工程環(huán)境中,使學(xué)生真正體驗到一種有序的、可控的、協(xié)作的軟件開發(fā)過程,在分析問題、解決問題、協(xié)調(diào)沖突、消除矛盾的過程中享受軟件開發(fā)成功的最終結(jié)果。軟件工程實驗要求學(xué)生采用“項目小組”的形式,結(jié)合具體的開發(fā)項目進行設(shè)計,班級按項目小組進行分組,每組不得超過4人。每個項目小組選出項目負責(zé)人或項目經(jīng)理,由其召集項目組成員討論、選定開發(fā)項目。學(xué)生分工合作,學(xué)習(xí)軟件開發(fā)小組的組織和管理,將項目開發(fā)各階段的任務(wù)明確,熟悉軟件開發(fā)環(huán)境,培養(yǎng)團隊精神,共同完成該項目的設(shè)計任務(wù)。項目中的每項任務(wù)要落實到個人,實驗在規(guī)定的時間內(nèi),由學(xué)生獨立完成。
在整個教學(xué)過程中,我們也十分注重鼓勵和引導(dǎo)探索式學(xué)習(xí),學(xué)生通過文獻查閱以及與軟件企業(yè)人員的接觸交流,真正體會當前軟件工程業(yè)界的真實案例和最佳實踐。課堂講解避免“一言談”的死板方式,采取課堂互動討論,營造活躍、寬松的課堂氣氛,鼓勵學(xué)生結(jié)合課程實踐中的問題進行專題報告和軟件演示。
在常規(guī)的課堂教學(xué)之外,我們輔之以網(wǎng)絡(luò)課程和擴展資源,鼓勵學(xué)生根據(jù)個人興趣和需要進行自主式的學(xué)習(xí)。同時,充分利用網(wǎng)絡(luò)教學(xué)平臺,加強師生之間的交流和學(xué)生之間的協(xié)作,引導(dǎo)學(xué)生積極思考和參與討論,教師由知識的灌輸者成為學(xué)習(xí)的引導(dǎo)者,學(xué)生由被動地接受教育變成主動地探索知識。
5改革目標
我校軟件工程專業(yè)以培養(yǎng)掌握計算機科學(xué)基礎(chǔ)理論、軟件工程的知識和技能,具有軟件開發(fā)能力、軟件開發(fā)實踐和項目組織的初步經(jīng)驗,具有競爭和團隊精神,能在計算機公司及相關(guān)企事業(yè)單位從事軟件開發(fā)、適應(yīng)軟件技術(shù)發(fā)展和社會需求的軟件工程應(yīng)用型高級專門人才為目標。我校在人才培養(yǎng)堅持遵循以下原則。
(1) 堅持通識教育與專業(yè)教育結(jié)合原則,即通識教育課程要著眼于加強學(xué)生的基礎(chǔ)知識教育,著眼于培養(yǎng)學(xué)生的科學(xué)素養(yǎng)和人文精神[3]。
(2) 堅持以人為本,因材施教原則,即在保證人才培養(yǎng)目標和質(zhì)量規(guī)格要求的基礎(chǔ)上,充分考慮因材施教,注重學(xué)生個性的發(fā)展,擴大學(xué)生自主學(xué)習(xí)、自主發(fā)展的時空,面向社會和學(xué)生多樣化需求,提供多樣化的課程體系和教育指導(dǎo),為不同志向、不同能力和不同潛質(zhì)的學(xué)生創(chuàng)造相應(yīng)的培養(yǎng)環(huán)境和條件。通過柔性設(shè)置專業(yè)方向模塊,讓學(xué)生結(jié)合自身興趣、就業(yè)志向和人才市場需求,靈活地選擇發(fā)展方向,以增強專業(yè)方向優(yōu)勢、職業(yè)適應(yīng)性建立完善的、與課程體系配套的實訓(xùn)、培訓(xùn)的“雙訓(xùn)”教學(xué)體系,使培養(yǎng)的人才更加適應(yīng)社會和企業(yè)的需求。
(3) 堅持應(yīng)用為本,學(xué)以致用原則,即以學(xué)校辦學(xué)定位和服務(wù)面向為指南,立足于培養(yǎng)應(yīng)用型高級專門人才的目標,強化理論與實踐的結(jié)合,著力培養(yǎng)學(xué)生的創(chuàng)新精神和實踐能力。在實踐教學(xué)體系的設(shè)計上,按照基礎(chǔ)、提高、綜合3個層次和基本實驗、技能訓(xùn)練、專業(yè)實習(xí)、科研訓(xùn)練、綜合實習(xí)、社會實踐6大模塊構(gòu)建創(chuàng)新精神和實踐能力培養(yǎng)體系。
(4) 建立一套以軟件工程為主線的教學(xué)、實訓(xùn)評估標準,以確保人才培養(yǎng)目標的實現(xiàn)。
6結(jié)語
我們認為,計算機科學(xué)技術(shù)的快速發(fā)展以及企業(yè)對人才的多元化需求要求我們將新的知識單元及時引進課程體系中,使課程體系的設(shè)置要有超前和發(fā)展的眼光,隨時將一些新興的、成熟的內(nèi)容吸收進課堂教學(xué),做到對課程體系、教學(xué)計劃動態(tài)調(diào)整,保持課程體系的動態(tài)性、前瞻性。
軟件工程專業(yè)課程體系必須建立在對軟件工程專業(yè)人才的知識結(jié)構(gòu)和綜合素質(zhì)的全面研究之上。按照軟件工程專業(yè)人才培養(yǎng)目標和國內(nèi)外軟件工程人才的需求,培養(yǎng)出的人才的知識結(jié)構(gòu)域應(yīng)該包括軟件開發(fā)新技術(shù)、現(xiàn)代軟件工程、工程領(lǐng)域背景技術(shù)3個主要部分[4]。我們還將在課程體系設(shè)置、教學(xué)方法、教材編寫等諸多方面,充分學(xué)習(xí)、借鑒和吸收發(fā)達國家計算機教育教學(xué)的先進經(jīng)驗。
注:本文受“以社會需求為導(dǎo)向的軟件工程專業(yè)課程體系改革的研究”(校級重點教改課題)支持。
參考文獻:
[1] 王晴. 印度軟件業(yè)崛起原因及其對我國產(chǎn)業(yè)結(jié)構(gòu)升級的啟示[J]. 生產(chǎn)力研究,2007(3):104-106.
[2] 吳愛華. 全國高校軟件工程專業(yè)教育年會論文集(2007)[M]// 適應(yīng)時代發(fā)展 推進高等理工科教育改革. 北京:高等教育出版社,2008.
[3] 楊芙清. 全國高校軟件工程專業(yè)教育年會論文集(2007)[M]// 軟件工程教育的思索與實踐. 北京:高等教育出版社,2008.
[4] 李彤. 軟件工程人才培養(yǎng)的實踐與思考[J]. 計算機教育,2004(10):15-17.
Research on Professional Curriculum Reform of Software Engineering
about Social Requirement-oriented
WEN Zhi-cheng1, CAO Chun-li2
(1.College of Computer and Communication, Hunan University of Technology, Zhuzhou 412008, China;
2.College of Commercial, Hunan University of Technology, Zhuzhou 412008, China)
Abstract: To solve the distance malpractice between traditional curriculum system settings of computer science and social needs, we have researched on the society-oriented software engineering curriculum setting and proposed a specific and feasible architecture for software engineering professional courses in this paper.
Key words: Software Engineering; curriculum architecture; bachelor education
(編輯:姚彥如)