摘要:本文從軟件工程專業(yè)課程體系設計策略入手,采用“夯實基礎教育、提高系統(tǒng)認知、強化軟件開發(fā)、推進工程實訓”為主線的設計思路,構建了“分層次、互動式、工程化”的課程體系架構模型,對軟件工程專業(yè)核心課程設置進行了說明,并提出軟件工程專業(yè)培養(yǎng)方案制定與實施的具體措施。
關鍵詞:軟件工程;課程體系;培養(yǎng)方案
軟件工程教育兼屬科學教育和工程教育范疇,軟件工程的科學教育屬性主要是引導學生對人類意識與智慧進行科學理解、增強運用軟件本質特性(構造性與易演化性)和解決具體問題的能力;而軟件工程的工程教育屬性主要是引導學生綜合應用計算機科學、數(shù)學、管理等科學原理,借鑒傳統(tǒng)工程的原則、方法,提煉和固化知識,通過創(chuàng)建軟件來達到提高質量、降低成本的目的。然而,McKinsey Global Institute2005年10月發(fā)表的一份報告稱,我國2005年畢業(yè)的60多萬工程技術人才中適合在國際化公司工作的不到10%,主要原因是中國教育系統(tǒng)偏于理論,學生在校期間幾乎沒有受到Project和團隊工作的實際訓練,這對我國高等院校工程教育改革與創(chuàng)新提出了挑戰(zhàn),也為軟件工程專業(yè)建設指明了方向。
合理的課程體系是高等院校保證培養(yǎng)目標和形成辦學特色的重要手段。目前,我國1900多所普通高校中雖有100多所院校開設了軟件工程專業(yè),但與當前軟件工程技術發(fā)展差距較大。為了培養(yǎng)出既有理論知識又有應用技能的工程型實用軟件人才,軟件工程專業(yè)課程體系必須進行改革。對此,本文結合CC2005、SE2004、SWEBOK、國內(nèi)軟件工程專業(yè)課程設置現(xiàn)有的研究成果,探索軟件工程專業(yè)本科教學課程體系建設問題。
1 軟件工程專業(yè)課程體系設計策略
計算學科本科教學常用的課程體系設計策略主要劃分為:課程啟動策略、課程組織策略、特色課程設置策略。課程啟動策略主要包括:1)圍繞算法設計展開的算法優(yōu)先策略;2)自底向上展開的硬件優(yōu)先策略;3)從計算機導論展開的廣度優(yōu)先策略:4)強調(diào)編程能力的程序設計優(yōu)先策略;5)強調(diào)系統(tǒng)使用命令優(yōu)先策略;6)從面向對象展開的對象優(yōu)先策略。
課程組織策略主要有:1)基于主題的組織模式,它把知識體系中的每個知識域組織成一門或幾門課程;2)基于系統(tǒng)的組織模式,它把每類計算機軟硬件系統(tǒng)設置成一門或幾門課程;3)混合模式,在課程設計時不考慮區(qū)分前兩種方法,兼而有之。特色課程設置策略主要依據(jù)本校辦學特色和研究專長來確定。
由于軟件工程教育兼屬科學教育和工程教育范疇,其科學屬性和工程屬性決定了軟件工程專業(yè)本科教學課程規(guī)劃,一方面要強調(diào)工程性、技術性、實用性、系統(tǒng)性、綜合性和復合型,另一方面要強化基礎軟硬件知識在解決復雜軟件構造和應用方面起到的關鍵作用。對于課程啟動策略而言,傳統(tǒng)計算機科學專業(yè)的課程啟動方式并不適合于本專業(yè),但工程優(yōu)先策略似乎也不適合于沒有任何計算機基礎的本科生;同樣,在課程組織策略上,基于主題的組織模式更多地具有科學研究屬性,而基于系統(tǒng)的組織模式又不利于基礎知識強化;此外,特色課程設置時,有時會缺乏全面綜合考慮,因人設課會造成特色課程系統(tǒng)性差問題。因此,在軟件工程專業(yè)課程體系設計策略方面,應根據(jù)軟件工程學科自身屬性,綜合考慮以上各種策略特點,全局思考,統(tǒng)一規(guī)劃,避免課程系統(tǒng)性差、教學內(nèi)容重復和遺漏并存等現(xiàn)象。
2 軟件工程專業(yè)課程體系架構模型設計
根據(jù)軟件工程專業(yè)本科教學的培養(yǎng)目標及規(guī)格要求,其課程體系采用“夯實基礎教育、提高系統(tǒng)認知、強化軟件開發(fā)、推進工程實訓”為主線的設計思路,構建了“分層次、互動式、工程化”的課程體系架構模型(如圖1所示)。該模型共分為四個層次,即基礎知識教育層、系統(tǒng)認知教育層、工程設計開發(fā)層和工程實踐訓練層。各層次不是相互獨立的,而是相互關聯(lián)、相互影響、逐層遞進的演進關系。該模型簡化了計算機科學核心課程數(shù)量,突出基于主題的組織模式,沿著由淺入深、循序漸進的認知路徑,力圖實現(xiàn)“基礎與編程一體化、編程與系統(tǒng)一體化、系統(tǒng)與工程一體化、工程與職業(yè)一體化”四位一體的工程型實用軟件人才教學目標。

2.1 基礎知識教育層
基礎知識教育的設計思路,強化學生的基礎知識和編程意識,實現(xiàn)“基礎扎實和編程意識強”兩個目標?;A知識教育層結構具體劃分為:數(shù)學基礎類課程模塊、外語類課程模塊、軟件基礎類課程模塊、其他公共基礎類課程模塊。根據(jù)各模塊自身特點,全面考慮各模塊之間的關聯(lián)性,做好彼此之間的銜接。在課程啟動策略方面,主要采取基于基礎的編程優(yōu)先策略。在數(shù)學基礎類課程模塊中確定一門銜接較好的基礎課作為軟件基礎類課程模塊的啟動,軟件基礎類課程模塊率先啟用軟件設計基礎課程,力圖達到“基礎與編程一體化”的教學目標。在課程組織策略方面,采取基于主題的組織模式,有利于學生掌握基礎理論知識。
2.2 系統(tǒng)認知教育層
系統(tǒng)認知教育的設計思路:強化學生的編程能力和對軟件系統(tǒng)的認識能力,實現(xiàn)“編程能力強和系統(tǒng)級認知”兩個目標。根據(jù)軟件工程專業(yè)對硬件系統(tǒng)和系統(tǒng)軟件的知識要求,系統(tǒng)認知教育層結構劃分為:數(shù)據(jù)庫系統(tǒng)類課程模塊、網(wǎng)絡系統(tǒng)類課程模塊、操作系統(tǒng)類課程模塊和編譯系統(tǒng)類課程模塊。在課程啟動策略方面,主要采取基于編程的系統(tǒng)優(yōu)先策略。通過軟件基礎類課程模塊的數(shù)據(jù)結構等課程和系統(tǒng)認知類課程模塊的數(shù)據(jù)庫原理及應用等課程,進一步強化學生的編程能力,并以程序設計為主線引導學生的系統(tǒng)級認識能力,實現(xiàn)“編程與系統(tǒng)一體化”的教學目標。在課程組織策略方面,采取基于系統(tǒng)的組織模式,簡化計算機科學核心課程數(shù)量,提高學生學習的有效性和對知識的掌握程度。
2.3 工程設計開發(fā)層
工程設計開發(fā)的設計思路:以工程化方法為手段,依托項目培養(yǎng)學生的“工程”意識,鍛煉學生對軟件系統(tǒng)的設計與開發(fā)能力,進一步強化學生的系統(tǒng)級認識,實現(xiàn)“更完整的系統(tǒng)級認識和軟件系統(tǒng)工程化設計開發(fā)技術”兩個目標。根據(jù)軟件工程項目開發(fā)流程,工程設計開發(fā)層結構劃分為:軟件過程類課程模塊、軟件設計類課程模塊、軟件架構類課程模塊、軟件測試類課程模塊、人機交互類課程模塊、特色項目類課程模塊、可擴充類課程模塊。該層綜合考慮核心專業(yè)課程和特色項目課程設置,基于專業(yè)方向設置若干動態(tài)可擴充課程,全面考慮課程之間的關聯(lián),強調(diào)統(tǒng)一設計、統(tǒng)一規(guī)劃。學生在這個層次必修一些工程設計開發(fā)系列課程,選修可擴充類課程,達到“系統(tǒng)與工程一體化”的教學目標。課程啟動策略采取基于系統(tǒng)的工程優(yōu)先策略。課程組織策略采取項目的組織模式,以此來提高學生的軟件系統(tǒng)設計與開發(fā)能力。
2.4 工程實踐訓練層
工程實踐訓練總體設計思路:通過實驗訓練、專業(yè)實習、項目實訓、畢業(yè)設計等教學環(huán)節(jié),依托校內(nèi)外實習實訓基地,采用校外實習實訓、自主實習實訓、校內(nèi)實習實訓和外聘軟件工程師等形式,強化學生的工程能力,培養(yǎng)學生的職場素質,實現(xiàn)工程與職業(yè)一體化的教學目標。工程實踐訓練層結構具體劃分為兩大類,一類是實驗與實習類課程模塊,另一類是工程實訓與畢業(yè)論文類課程模塊。其中,實驗與實習類課程模塊的具體設計思路,通過基礎實驗、系統(tǒng)體驗、編程能力訓練三個環(huán)節(jié),進一步夯實學生的基礎知識,完善學生的系統(tǒng)級認識,強化學生的開發(fā)技能;而工程實訓與畢業(yè)論文類課程模塊的具體設計思路,通過“軟件工程項目實訓”這個載體,采取“企業(yè)+實訓+論文+就業(yè)”捆綁的運作模式,與多家國內(nèi)知名IT公司合作,讓學生到企業(yè)進行實際項目綜合訓練,并完成畢業(yè)論文設計工作,實現(xiàn)理論與實踐結合、技巧與職業(yè)素質結合的教學目標,同時也為學生就業(yè)提供一個良好平臺。
上述四個教育層是彼此聯(lián)系和互動發(fā)展的,在課程體系設計中充分考慮銜接性、系統(tǒng)性和創(chuàng)新性。交流、溝通、講演、寫作的培養(yǎng)更多體現(xiàn)在第二課堂科技學術活動中。
3 軟件工程專業(yè)核心課程設置
3.1 課程設置原則
軟件工程專業(yè)課程設置遵循六個基本原則,即先進性、靈活性、復合性、工程性、創(chuàng)新性和模塊化。1)先進性:課程設置和課程內(nèi)容需反映國際上先進的軟件技術發(fā)展成果和軟件企業(yè)對先進技術的需求,以及相關的基礎理論。2)靈活性:課程設置需具有靈活性,應根據(jù)軟件技術的發(fā)展及時調(diào)整。3)復合性:課程設置需包括技能、工程、管理等方面的教學內(nèi)容,使學生具有必要的綜合技能和基本素質。4)工程性:課程設置面向軟件工程實踐,強調(diào)工程實踐能力培養(yǎng),使學生能夠自覺運用先進的工程化方法和技術從事軟件開發(fā)和項目管理,具有團隊協(xié)作精神。5)創(chuàng)新性:課程設置應倡導學生自主學習,并給予必要的指導,從而培養(yǎng)學生自主學習和自我提高能力,以及勇于開拓和善于創(chuàng)新能力。6)模塊化:課程應按照模塊化準則設計,課程模塊設計可以交叉。根據(jù)軟件技術最新發(fā)展、當前市場需求及專業(yè)培養(yǎng)方向、學生目前具備的領域知識等,靈活調(diào)整課程設置和課程內(nèi)容。
3.2 核心課程模塊設置
1)軟件基礎類課程模塊設有:計算機硬件基礎、軟件設計基礎、數(shù)據(jù)結構、計算機組織原理、面向對象程序設計、算法分析與設計等課程。2)操作系統(tǒng)類課程模塊設有:操作系統(tǒng)原理、LINUX系統(tǒng)基礎、嵌入式系統(tǒng)基礎等課程。3)網(wǎng)絡系統(tǒng)類課程模塊設有:計算機網(wǎng)絡、網(wǎng)絡規(guī)劃與集成、網(wǎng)絡安全檢測與防范技術、網(wǎng)絡協(xié)議與網(wǎng)絡軟件等課程。4)數(shù)據(jù)庫系統(tǒng)類課程模塊設有:數(shù)據(jù)庫原理及應用、ORACLE數(shù)據(jù)庫、數(shù)據(jù)倉庫與數(shù)據(jù)挖掘技術等課程。5)編譯系統(tǒng)類課程模塊設有:編譯系統(tǒng)原理、編譯技術等課程。6)軟件過程類課程模塊設有:軟件工程、需求工程、軟件項目管理、軟件建模技術UML等課程。7)軟件設計類課程模塊設有:C++高級程序設計、J2EE與中間件、.NET架構技術、設計模式等課程。8)軟件架構類課程模塊設有:大型軟件系統(tǒng)構造、軟件體系結構等課程。9)軟件測試類課程模塊設有:軟件測試技術、軟件測試與評估等課程。10)人機交互類課程模塊設有:人機交互技術等課程。11)特色項目類課程模塊設有:軟件工程項目案例解析、大型軟件工程項目實訓等課程。12)可擴充類課程模塊設有:手機游戲開發(fā)、網(wǎng)絡游戲開發(fā)、計算機圖形學、嵌入式Linux網(wǎng)絡及GUI應用開發(fā)、嵌入式Linux驅動開發(fā)、手持設備軟件開發(fā)等課程。
4 軟件工程專業(yè)培養(yǎng)方案制定與實施
軟件工程專業(yè)培養(yǎng)方案制定是基于軟件與工程的復合,將軟件工程與領域應用相結合,強調(diào)計算機科學和數(shù)學基礎的同時,將專業(yè)課程重點放在軟件新技術和軟件工程新技術方面,通過對實踐類課程工程化改造,增設軟件工程項目實訓環(huán)節(jié),開設部分技能課程,試圖使學生的基礎知識、專業(yè)技能、創(chuàng)新能力、工程能力和職業(yè)素質都能得到全面均衡發(fā)展。具體措施如下。
4.1 建立英語為主日語為輔的外語教學體系
根據(jù)IT市場的實際需求,軟件工程專業(yè)培養(yǎng)方案制定,除正常開設四個學期大學英語外,增開兩個學期標準目語和一個學期專業(yè)英語,堅持外語學習四年不斷線,旨在為學生選擇日企或對日外包企業(yè)就業(yè)提供方便。
4.2 建立工程化實踐教學體系
建立“四年不斷線、三個層次相呼應、兩大措施為保障”的工程化實踐教學體系?!八哪瓴粩嗑€”是指實踐環(huán)節(jié)四年不斷線,每個學期至少有一個集中性的實踐教學環(huán)節(jié),體現(xiàn)“全過程”實踐;“三個層次相呼應”主要是從實踐教學內(nèi)容設計上考慮的,包括第一層次教學實驗,第二層次課程設計及專業(yè)實習,第三層次工程項目實訓與畢業(yè)設計;“兩大措施為保障”主要指教學計劃保障和考核制度保障。
4.3 設置專門的實踐課程
針對工程化軟件人才應具備的個人開發(fā)能力、團隊開發(fā)能力、系統(tǒng)研發(fā)能力和設備應用能力,以必修課和選修課形式,開設四類特色化、階梯狀工程實踐學分課程,即程序設計類實踐課程、軟件工程類實踐課程、項目管理類實踐課程和網(wǎng)絡平臺類實踐課程,構成了系統(tǒng)全面的學生實踐能力訓練體系。
4.4 提高專業(yè)課程教學中的實驗課時量
除個別側重理論教學的專業(yè)課程外,80%以上的專業(yè)課程包含實驗或實習環(huán)節(jié),實驗或實習成績占總成績的30%以上,一部分實踐性較強的課程是以上機考試和答辯作為最終考試方式。
4.5 開設部分技能課程
在技能課程中,與該領域內(nèi)具有國際領先水平的企業(yè)在課件共享、教師培訓和資源投入等方面展開合作,共同設計、講授和評估課程。鼓勵學生參與企業(yè)提供的專業(yè)認證考試,或參加國家相應的專業(yè)資格考試,對此,學院將計算機網(wǎng)絡、Oracle數(shù)據(jù)庫、J2EE與中間件等認證課程納入本科教學計劃中,全面體現(xiàn)學生的“多證多能”。
4.6 實施軟件工程項目實訓
以工程應用為導向,實施企業(yè)級工程項目實訓和校內(nèi)級工程項目實訓,全面提升學生的工程實踐能力。學生經(jīng)過為期半年以上難度適中的工程項目實訓,深入工程實際,掌握設計重點,從軟件開發(fā)流程優(yōu)化設計方案,規(guī)范管理,確保實訓質量,最終實現(xiàn)學生理想就業(yè)。

(編輯:白