文章編號:1672-5913(2008)20-0043-03
摘 要:本文針對示范性軟件學(xué)院如何突破“體制瓶頸”,實現(xiàn)系統(tǒng)、綜合、集成的軟件工程教育,分析了存在的問題并提出了一個具體的軟件工程培養(yǎng)目標(biāo)和課程設(shè)計框架。
關(guān)鍵詞:高等工程教育;大工程觀;工程集成
中圖分類號:G642
文獻(xiàn)標(biāo)識碼:B
1 充分利用示范性軟件學(xué)院的政策優(yōu)勢
長期以來,我國高等工程教育一直雖然在探索課程內(nèi)容、結(jié)構(gòu)和形式的改革,但是由于目標(biāo)不明確,未能以工程教育的最終目標(biāo)作為課程改革的方向,所以并沒有從根本上解決課程體系中存在的實踐性與綜合性缺乏的問題。
1996年國家教委工程教育考察團(tuán)赴美考察,中國開始接觸“大工程觀”的教育理念。2006年6月,教育部戰(zhàn)略研究重大專項“面向創(chuàng)新型國家建設(shè)的中國工程教育改革”研討會提出,要使課程設(shè)置從單一的“工程專業(yè)課程”傳授轉(zhuǎn)變?yōu)椤按蠊こ逃^、大系統(tǒng)觀”為指導(dǎo)的課程架構(gòu)體系,標(biāo)志著“大工程觀”的教育理念已成為高等工程教育院校教改的上下共識。
為此,有相當(dāng)多的專家和學(xué)者做了精辟的分析和闡述,并一致認(rèn)為“大工程觀”的本質(zhì)和內(nèi)涵是思維的整體性和實踐的可行性。所強(qiáng)調(diào)的“回歸工程實踐”和整體性的“綜合集成”,也正是能切實解決我國高等工程教育“實踐”和“綜合”二大根本問題的有效良方。
在實際教改實踐中,通過開展多種形式的教學(xué)活動、增加學(xué)生的實驗和項目實踐、開設(shè)實訓(xùn)課程等形式上,在強(qiáng)化實踐性教學(xué)方面取得了不少的成效。
比較起來,綜合性改革由于涉及面廣、受現(xiàn)有的教學(xué)方式、師資隊伍、教育管理體制等諸多因素影響,實際實行起來難度很大,進(jìn)展有限。這個情況可以類比20多年前改革開放初期計劃經(jīng)濟(jì)時代下國營企業(yè)的改革,工資和獎金激勵等淺層次的改革雖然部分調(diào)動了職工的積極性,但并不能從根本上解決企業(yè)在市場經(jīng)濟(jì)環(huán)境下因所有制等深層次問題導(dǎo)致的競爭力缺乏的問題。
就大部分院校而言,目前的高校組織管理機(jī)制已經(jīng)形成行政管理(占有教育行政資源)和專業(yè)導(dǎo)向(以個人的社會知名度為基礎(chǔ)、以小范圍的學(xué)術(shù)體系為核心、以非工程化為指向)相脫離的運(yùn)行機(jī)制。院系的管理者出于自身的專業(yè)和管理能力的限制,更多從事的是行政事務(wù)性的日常管理,因此在制定教學(xué)和培養(yǎng)目標(biāo)、整合資源、協(xié)調(diào)教學(xué)內(nèi)容等方面難于發(fā)揮主導(dǎo)和總攬全局的作用。而教授們多為“清客”,脫離社會實際,也少有校內(nèi)資源,因而形成上面說的多、下面做的少,領(lǐng)導(dǎo)花架子多,學(xué)生實際成效少的局面。而這種局面的改變,如同國營企業(yè)的改革,遠(yuǎn)非一朝一夕所能。
突破上述格局是綜合性教改的關(guān)鍵難點(diǎn),也是教育主管部門寄希望于示范性軟件學(xué)院的理由之一。軟件學(xué)院在建制上與傳統(tǒng)計算機(jī)系分離,獨(dú)立運(yùn)作,師資人員構(gòu)成按外聘、企業(yè)和學(xué)校實行三三制,并給予“辦學(xué)機(jī)制、教學(xué)改革和建設(shè)、招生人數(shù)以及收費(fèi)標(biāo)準(zhǔn)”等方面具有相對獨(dú)立的自主權(quán)。為克服上述難題,我校開辟了一塊難得的“政策”特區(qū),并在很多方面特別向軟件學(xué)院傾斜。因此,軟件學(xué)院具有良好的“后發(fā)”優(yōu)勢,包括獨(dú)立運(yùn)作的政策特區(qū)、沒有歷史包袱的新人新機(jī)制、明確的專業(yè)(軟件工程)發(fā)展方向。與同是計算機(jī)學(xué)科的計算機(jī)工程學(xué)院相比,軟件學(xué)院充分利用國家的政策傾斜,在克服舊有機(jī)制的歷史積淀,實現(xiàn)“大工程”改革的培養(yǎng)模式方面,“另起爐灶”、“輕裝上陣”,具有明顯的優(yōu)勢。
2 對培養(yǎng)目標(biāo)的再認(rèn)識與具體化設(shè)計
2001年12月,教育部和國家計委在批準(zhǔn)成立示范性軟件學(xué)院時就提出軟件學(xué)院的培養(yǎng)目標(biāo)是“面向軟件產(chǎn)業(yè)的高層次、國際化、實用型、復(fù)合型的軟件技術(shù)和管理人才”。但是如何理解這一培養(yǎng)目標(biāo)?綜觀軟件學(xué)院的發(fā)展過程,大都經(jīng)歷了“復(fù)制”計算機(jī)系、增加實踐環(huán)節(jié)、從軟件企業(yè)需要出發(fā)對課程內(nèi)容進(jìn)行調(diào)整等若干個發(fā)展階段。
示范性軟件學(xué)院在國家特殊政策的支持下,在“軟件工程”的專業(yè)方向上,為實踐“大工程觀”的教育理念,切實完成從學(xué)術(shù)研究型向工程教育模式的轉(zhuǎn)變,需要繼續(xù)勇敢地創(chuàng)新與突破。
實現(xiàn)“大工程觀”培養(yǎng)的第一個突破就是要敢于“理直氣壯”地提出并明確我們的培養(yǎng)目標(biāo)是“工利”性的?!肮ぁ笔恰肮こ绦院凸δ苄浴薄ⅰ袄笔怯宪浖髽I(yè)的用人需要,并把這些“工利”性的需求轉(zhuǎn)化為合適的教學(xué)內(nèi)容、教學(xué)形式、考核方法等具體的教學(xué)組織活動。
國家和社會對軟件人才的需求必然與國家信息化的目標(biāo)、進(jìn)程密切相關(guān),因而在很大程度上決定了軟件人才的層次結(jié)構(gòu)、就業(yè)去向、能力與素質(zhì)等方面的具體要求。目前出現(xiàn)的計算機(jī)類畢業(yè)生就業(yè)困難的主要原因,問題不在數(shù)量太多或質(zhì)量太差,而是滿足社會需要的針對性不夠明確,導(dǎo)致了結(jié)構(gòu)上的不合理。軟件人才培養(yǎng)也應(yīng)當(dāng)是金字塔結(jié)構(gòu),與社會需求的金字塔結(jié)構(gòu)相匹配才能提高金字塔各個層次學(xué)生的就業(yè)率,更好地滿足社會需求,降低企業(yè)的再培養(yǎng)成本。
按照傳統(tǒng)計算機(jī)類專業(yè)課程內(nèi)容和教學(xué)模式培養(yǎng)大一統(tǒng)的軟件人才的做法,必然導(dǎo)致供過于求的局面。這是目前畢業(yè)學(xué)生與社會需要失衡的最主要原因。因此,軟件學(xué)院應(yīng)該非常明確自身的定位,即為軟件企業(yè)培養(yǎng)軟件生產(chǎn)過程所需要的“工程”技術(shù)和專業(yè)管理人才。在科學(xué)-技術(shù)-工程-管理的鏈條上,應(yīng)該以工程為核心,以技術(shù)和管理為半徑,找到自己的位置,建立新的培養(yǎng)體系(以本科教育為核心,下同)。
軟件學(xué)院“工程技術(shù)和專業(yè)管理人才”培養(yǎng)目標(biāo),可以具體分解為同時具有“專業(yè)基礎(chǔ)、開發(fā)能力、系統(tǒng)層次、過程管理”四個方面。
(1) 專業(yè)基礎(chǔ)
軟件工程主要是一個面向過程的活動。同時,由于軟件的不可見性和軟件操作的離散性,軟件工程具有與其他工程學(xué)科不同的特點(diǎn)。軟件工程以數(shù)學(xué)、計算為基礎(chǔ),以精確的方式描述軟件產(chǎn)品,并對產(chǎn)品及其相關(guān)關(guān)系進(jìn)行建模,為預(yù)測和設(shè)計過程提供依據(jù),在此基礎(chǔ)之上開發(fā)系統(tǒng)模型并以可靠的技術(shù)來產(chǎn)生高質(zhì)量的軟件。因此,專業(yè)基礎(chǔ)是精英型軟件工程師必備的基本素養(yǎng)。專業(yè)基礎(chǔ)包括:
●數(shù)學(xué)與邏輯基礎(chǔ)。軟件工程特別強(qiáng)調(diào)數(shù)學(xué)與邏輯思維能力,包括問題抽象與歸納、邏輯演繹與轉(zhuǎn)換、數(shù)學(xué)模型建立以及基于數(shù)學(xué)模型的方案研究。
●軟件學(xué)科專業(yè)基礎(chǔ)。軟件開發(fā)是一門獨(dú)特的學(xué)科,除編程語言外,專業(yè)基礎(chǔ)還包括以數(shù)據(jù)結(jié)構(gòu)、編譯原理、操作系統(tǒng)、體系結(jié)構(gòu)為代表的專業(yè)基礎(chǔ)課程。但是與計算機(jī)學(xué)院不同的是,軟件學(xué)院學(xué)生不是把這些課程作為學(xué)術(shù)進(jìn)行體系化的學(xué)習(xí)和研究,而是看成是應(yīng)用開發(fā)的成功案例,加以學(xué)習(xí)借鑒。因此,軟件學(xué)院對相關(guān)學(xué)科的教學(xué)進(jìn)行改革,打通相互聯(lián)系,減少過多的理論介紹,強(qiáng)化實用、強(qiáng)調(diào)運(yùn)用。
●領(lǐng)域與建?;A(chǔ)。軟件系統(tǒng)是業(yè)務(wù)過程的計算機(jī)實現(xiàn),對業(yè)務(wù)邏輯的了解與理解是軟件開發(fā)的前提,業(yè)務(wù)建模是這種理解的結(jié)果。軟件學(xué)院強(qiáng)調(diào)從入學(xué)開始就要逐漸、遞進(jìn)地熟悉應(yīng)用領(lǐng)域的專業(yè)知識,培養(yǎng)對問題領(lǐng)域的認(rèn)知、了解、分析、方案和技術(shù)方法,最終實現(xiàn)解決方案的能力。在教學(xué)中強(qiáng)調(diào)用實際背景、實例、來自實際開發(fā)企業(yè)或有實際開發(fā)項目經(jīng)歷的老師講授的方式。
●過程與工程基礎(chǔ)。軟件開發(fā)是一個過程,軟件開發(fā)是在工程化的環(huán)境中進(jìn)行的。因此,軟件學(xué)院在培養(yǎng)學(xué)生實現(xiàn)開發(fā)成果的同時,更關(guān)注綜合環(huán)境下的開發(fā)過程。這方面主要體現(xiàn)在通過課程的大作業(yè)和貫穿整個短學(xué)期的實訓(xùn)項目,在過程控制要求以及軟件工程多學(xué)科綜合的團(tuán)隊開發(fā)中培養(yǎng)學(xué)生的過程與工程能力。
(2) 開發(fā)能力
軟件工程專業(yè)方向的本科生應(yīng)具有較強(qiáng)的軟件開發(fā)能力,這種能力主要體現(xiàn)為:
●以問題發(fā)現(xiàn)、理解、提取、抽象為代表的對主要問題領(lǐng)域的業(yè)務(wù)知識認(rèn)知與理解能力;在不同階段的實際訓(xùn)練中,非常強(qiáng)調(diào)針對真實領(lǐng)域問題的學(xué)習(xí),在大型作業(yè)、項目實訓(xùn)中學(xué)習(xí)分析解決問題,而不是簡單地按老師給出的、簡化了的題目,按老師指定的、狹隘的思路學(xué)習(xí)。
●通過用例分析和業(yè)務(wù)與系統(tǒng)建模,理解和了解領(lǐng)域問題的根本來源和核心驅(qū)動,進(jìn)而把握用戶根本需求和項目目標(biāo)范圍的建模能力;例如在軟件工程導(dǎo)論、UML建模、軟件項目管理與實踐等課程中,逐步建立軟件工程的業(yè)務(wù)建模和需求管理概念。
●運(yùn)用UML等方法進(jìn)行需求獲取與分析、采用面向?qū)ο蠹夹g(shù)構(gòu)建系統(tǒng)架構(gòu)和組件劃分,采用適當(dāng)?shù)木幊坦ぞ邔崿F(xiàn)軟件系統(tǒng)程序,完成測試和評審以及演化等軟件工程關(guān)鍵活動的能力。
(3) 系統(tǒng)層次
軟件工程師不是簡單的編碼工程師,軟件工程專業(yè)的學(xué)生應(yīng)在“系統(tǒng)層次”上具有更高的關(guān)注、更廣的視角和更強(qiáng)的知識理解、把握和運(yùn)用能力。系統(tǒng)的概念不只是產(chǎn)品級的,同時包括項目級和過程級的。只有在這些層次上都有所涉獵和進(jìn)取的學(xué)生,才有可能在未來的人才競爭中脫穎而出,成為培養(yǎng)目標(biāo)所描述的高層次人才。
另一方面,將軟件工程師視作一項以公眾利益為目標(biāo)和受人尊敬的職業(yè),在保持與公眾利益一致的原則下,培養(yǎng)未來的軟件工程師具備以下素質(zhì):滿足客戶和雇主的最高利益,確保產(chǎn)品和相關(guān)的改進(jìn)符合最高的專業(yè)標(biāo)準(zhǔn),維護(hù)職業(yè)判斷的完整性和獨(dú)立性以及專業(yè)的聲譽(yù),平等互助和終身學(xué)習(xí)等促進(jìn)軟件開發(fā)和維護(hù)的職業(yè)道德。強(qiáng)調(diào)從第一個作業(yè)開始,通過必要的實習(xí)過程控制與考試管理,讓學(xué)生實際體會到思想可以學(xué)習(xí)、模版可以借鑒、開源軟件可以重用,但抄襲是可恥的,也是不能得逞的,自己的學(xué)習(xí)過程、自己的路別人無法替代。
(4) 過程管理
就世界范圍而論,軟件產(chǎn)業(yè)已經(jīng)進(jìn)入成熟期。在產(chǎn)業(yè)的成熟階段,技術(shù)已經(jīng)不是主要方向,影響軟件產(chǎn)品與應(yīng)用的關(guān)鍵因素是成本與質(zhì)量,關(guān)注的核心是提高流程與工藝。即關(guān)注于軟件生產(chǎn)的過程、原料/零件配送流程、操作參數(shù)優(yōu)化、重用架構(gòu)與組件等四個等方面。熟悉和了解、掌握和運(yùn)用現(xiàn)代軟件生產(chǎn)過程的基本思想和技術(shù)方法,特別是學(xué)習(xí)以CMM/CMMI為代表的軟件工程改進(jìn)的關(guān)鍵管理技能,是軟件工程師的核心潛質(zhì)和未來發(fā)展的基本方向。
軟件學(xué)院的培養(yǎng)目標(biāo)是軟件開發(fā)企業(yè)的未來的技術(shù)骨干和生產(chǎn)組織與管理者,因此具備必要的過程能力的潛質(zhì)是我們的突出特點(diǎn)。為此我們采取的具體措施是將軟件工程過程貫穿在全部課程和實訓(xùn)項目中,包括邀請微軟為學(xué)生做實訓(xùn)課程,讓學(xué)生系統(tǒng)地學(xué)習(xí)國外成功的軟件過程控制管理經(jīng)驗,同時在我們的軟件工程課程群中也采用按軟件工程過程生命周期要求,以一個統(tǒng)一的大作業(yè)的形式將課程打通、前后環(huán)節(jié)相扣、先修課程向下一課程交成果的方式,實現(xiàn)接近真實的訓(xùn)練。
3 基于“工程集成”的培養(yǎng)階段總體設(shè)計
根據(jù)培養(yǎng)目標(biāo)和具體要求,軟件學(xué)院本科四年的培養(yǎng)過程突出了“工程集成”的核心指導(dǎo)思想。
按“工程集成”的教學(xué)模式組織教學(xué)就是培養(yǎng)學(xué)生樹立軟件工程系統(tǒng)性和整體性的認(rèn)知方式和觀念,并在軟件系統(tǒng)、軟件項目和軟件過程三個層面上,訓(xùn)練對系統(tǒng)性與整體性的把握。
“工程集成”的教學(xué)模式還體現(xiàn)在軟件工程專業(yè)的知識構(gòu)成方面。不僅僅強(qiáng)調(diào)專業(yè)知識體系內(nèi)的知識要素和單元,更強(qiáng)調(diào)知識之間的關(guān)聯(lián)性、整體性,在知識結(jié)構(gòu)上體現(xiàn)寬與專的統(tǒng)一。在工程能力方面,不僅僅強(qiáng)調(diào)編程語言、數(shù)據(jù)結(jié)構(gòu)、計算機(jī)網(wǎng)絡(luò)等工程單元設(shè)計與開發(fā)能力,更強(qiáng)調(diào)單元與系統(tǒng)的關(guān)聯(lián),與軟件過程的關(guān)聯(lián)。也就是說,“工程集成”要求培養(yǎng)學(xué)生知識的復(fù)合型和能力的多樣性,具備從事復(fù)雜系統(tǒng)和項目的編程、系統(tǒng)設(shè)計、綜合應(yīng)用集成、軟件項目和過程管理等方面的能力,具備良好的較寬領(lǐng)域的適應(yīng)能力。
“工程集成”的教學(xué)模式還要求我們培養(yǎng)的人才不僅具有良好的技術(shù)水平,還要求學(xué)生具有良好的人文素質(zhì)。包括溝通協(xié)調(diào)能力、團(tuán)隊組織能力、技術(shù)領(lǐng)導(dǎo)能力、創(chuàng)新與攻關(guān)能力。不僅強(qiáng)調(diào)技術(shù)屬性,還要體現(xiàn)社會屬性、人文屬性。我們認(rèn)為,人文素質(zhì)越高,就越可以從事更高層次的領(lǐng)導(dǎo)工作和管理工作。
根據(jù)“工程集成”觀點(diǎn)開展的工程教育總體設(shè)計必將打破原有分離、孤立的學(xué)科劃分,甚至不受“基礎(chǔ)、專業(yè)基礎(chǔ)、專業(yè)”框架的限制。在這里,我們并不是有意違背從基礎(chǔ)到專業(yè)的知識建構(gòu)客觀規(guī)律,而是反對簡單、機(jī)械地不考慮實際應(yīng)用環(huán)境的人為劃分。
由于篇幅所限,以下簡單介紹本科四年的總體培養(yǎng)方案。
(1) 第一階段(大學(xué)一年級、包括二年級短學(xué)期)
第一階段以計算機(jī)數(shù)學(xué)、程序設(shè)計為主展開教學(xué)。這個階段的改革特點(diǎn)是配合計算機(jī)系統(tǒng)概論和C語言的教學(xué),從一年級開始就獨(dú)立安排大型作業(yè)和實訓(xùn)項目,以一個小型計算機(jī)應(yīng)用系統(tǒng)(一上為單片機(jī)系統(tǒng)、一下為手機(jī)應(yīng)用系統(tǒng))為對象,運(yùn)用所學(xué)課程知識,動手實現(xiàn)滿足不同業(yè)務(wù)需求、不同復(fù)雜程度和規(guī)模的小型系統(tǒng)產(chǎn)品,建立初步的、感性的“系統(tǒng)”概念,培養(yǎng)實際“搭建系統(tǒng)”的動手能力。短學(xué)期中,由企業(yè)教師和校內(nèi)教師共同主講一個月的編程強(qiáng)化訓(xùn)練,結(jié)束后進(jìn)行“編程能力”考核,作為第一階段學(xué)習(xí)成果的檢驗和驗收。
(2) 第二階段(大學(xué)二年級、包括三年級短學(xué)期)
第二階段圍繞專業(yè)基礎(chǔ)展開教學(xué),在此階段展開的專業(yè)課程相對比較密集,而實踐內(nèi)容包括:二上以MFC平臺為核心,以C++為主要工具,加入UML建模、數(shù)據(jù)庫設(shè)計等要素,通過開發(fā)一個小型MIS應(yīng)用系統(tǒng),培養(yǎng)學(xué)生對相關(guān)知識的綜合應(yīng)用與開發(fā)的能力;二下以J2EE平臺為核心,以Java為主要工具,以MVC為主要系統(tǒng)架構(gòu),加入多進(jìn)程、網(wǎng)絡(luò)與分布式計算、設(shè)計模式與中間件等要素,通過開發(fā)一個基于WEB技術(shù)的應(yīng)用系統(tǒng),培養(yǎng)學(xué)生在更大型、更復(fù)雜的應(yīng)用平臺上,運(yùn)用相關(guān)知識的綜合應(yīng)用與開發(fā)的能力;短學(xué)期期間將參加微軟的項目實訓(xùn)課程,課程結(jié)束后,進(jìn)行第二級以“項目綜合能力”為核心的考核,這是軟件工程學(xué)生在校項目實際鍛煉的重要階段。
(3) 第三階段(大學(xué)三年級)
第三個階段圍繞典型行業(yè)應(yīng)用、網(wǎng)絡(luò)與通信、信息安全、多媒體技術(shù)等十多個專業(yè)方向?qū)ο嚓P(guān)的課程進(jìn)行整合,形成軟件工程課程群。并以小班選修為主,突破學(xué)期、授課教師、課程各自獨(dú)立的局限,實現(xiàn)總體設(shè)計、綜合布局、交叉穿插、協(xié)同配合的新模式。這個階段最重要的特點(diǎn)是通過一個綜合項目(專業(yè)方向)的大作業(yè),貫穿本學(xué)年的幾門課程之中。學(xué)生以團(tuán)隊的形式在完成課程學(xué)習(xí)的同時完成規(guī)定的大作業(yè),使學(xué)生在軟件系統(tǒng)開發(fā)、分析、設(shè)計、實現(xiàn)和測試、團(tuán)隊實踐和過程控制、管理能力等方面得到系統(tǒng)的訓(xùn)練和提高。這個階段的驗收和檢驗?zāi)繕?biāo)是引導(dǎo)和組織學(xué)生參加國內(nèi)外計算機(jī)設(shè)計大賽,在參賽過程中,學(xué)習(xí)理解需求、設(shè)計目標(biāo)、探詢技術(shù)路線和方法,直至最終實現(xiàn)大賽目標(biāo),并取得名次。為下一階段進(jìn)入企業(yè)實習(xí)之前的招聘和面試打下良好的實踐能力基礎(chǔ)。
(4) 第四階段(大學(xué)四年級)
本階段以學(xué)生在軟件企業(yè)實習(xí)為主,階段檢驗標(biāo)準(zhǔn)是學(xué)生的實習(xí)論文。這既是大學(xué)四年教學(xué)成果的檢驗,也是學(xué)生進(jìn)一步深造和進(jìn)入企業(yè),從學(xué)生轉(zhuǎn)變?yōu)槠髽I(yè)人的一個必要過程。論文的要求和考核標(biāo)準(zhǔn)也做了重大改革。
四個階段的設(shè)計貫穿一條主線,就是課程教學(xué)與實踐環(huán)節(jié)相互配合,每個學(xué)生在逐步遞進(jìn)的“工程集成”主線上,通過動手實踐,不斷搭建不同功能、規(guī)模和技術(shù)層次的系統(tǒng),在開發(fā)團(tuán)隊、開發(fā)過程中學(xué)習(xí)軟件工程。每個階段按瀑布模型相互銜接、并不斷迭代深化。
參考文獻(xiàn)
[1] 孫鍵.綜合化與實踐化——我國高等工程教育課程改革的趨勢[J]. 北京理工大學(xué)學(xué)報(社會科學(xué)版),2007,(1).
[2] 王雪峰,曹榮.大工程觀與高等工程教育改革[J].高等工程教育研究,2006,(4).
[3] 謝笑珍.“大工程觀”的涵義、本質(zhì)特征探析[J].高等工程教育研究,2008,(3).
[4] 張家浩.軟件工程碩士論文質(zhì)量評價模型及相關(guān)問題研究[J].計算機(jī)教育,2007,(11).