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