安俊秀 李 超 陳高云
摘要:本文通過研究CDIO教育理念、分析詳實的社會調研數據,創新性地提出了螺旋式軟件人才培養模式。該模式架構了全新的核心課程體系,建立了理論、實踐、工程、素質的螺旋式培養過程。在整個培養過程中各要素既相互影響,又不斷地向工程型、復合型、創新型人才成長升華,螺旋式的上升狀態很好地舒展和刺激了學生的創新能力、管理能力。
關鍵詞:螺旋式軟件人才培養模式;課程體系;職業素質;KPE
中圖分類號:G642 文獻標識碼:A
CDIO工程教育模式是美國麻省理工學院、瑞典皇家工學院等四所大學提出的面向工程教育的教育模式。CDIO(Conceive、Design、Implement、Operate)最根本的特征是教育和產業的高度互動,因此制定軟件人才培養的課程體系應堅持“來源于產業、根植于產業、服務于產業”的教育理念。在深入分析了軟件產業發展趨勢及人才培養規律的基礎上,我們創新性地提出了螺旋式軟件人才培養模式(Helical Education Model for Software Engineer,簡稱HEM-SE),建立理論、實踐、工程、素質的全新人才培養方案。
1建設適合軟件產業需求的課程體系,促進課程綜合化與集成化
市場機制推動全球化的進程中,軟件工程專業所需要的人才具有綜合化的趨勢。因此,建設軟件工程人才培養的課程體系必須適應全球化社會發展,跟蹤新技術,促進課程的綜合化和集成化。我們創新性地提出了螺旋式軟件人才培養模式,并在HEM-SE指導下,根據社會對軟件工程人才的各種知識、能力和素質的基本要求及學生的學習成長規律,建設具有KPE(Knowledge/Practice/Engineering)特色的軟件工程核心課程體系,以實現課程綜合化和集成化的目標,如圖1所示。

軟件工程專業核心課程體系是提高本科生編程能力的課程體系、軟件技術課程體系、外語工程應用課程體系、軟件工程課程體系、職業素質教育課程體系。針對學生在實踐和工程兩方面的短缺,我們全新構建了課程中的實習環節,以突出實踐/工程要素。該課程體系建設的思路是要跳出單門課程的框架束縛,以不同的模塊組合滿足教學計劃的需求,可按功能類型、需求類型、學科類型等進行編制。課程體系之間由淺入深、逐漸遞進形成螺旋平面的階梯形狀。課程體系之間互相銜接、互相依賴、互相融合,使學生經過五個階段的學習后,既具備了理論基礎,又有了真實的項目研發經驗;既具備了軟件工程人才素質,又熟悉了企業運作特點。
2提高本科生編程能力的課程體系
提高本科生編程能力的課程體系是在低年級階段實施,編程能力是一種過程性知識,它必須通過大量的定向性較強的實訓才能提高。基于CDIO理念,經分析發現學生編程能力的提高,并非哪一門課程的任務,編程能力的提高是長期的、循序漸進的過程,必須由相關系列課程的教學共同承載。為有效提高低年級學生的編程能力,我們構建了以C語言為基礎的KPE課程體系,構成的課程體系及教學計劃安排如表1所示。這一舉措實現了學生在前三個學期完成編程訓練,為后續的語言類課程和計算機理論課程的學習打下堅實的基礎。

從表1可以看出,本課程體系將五門課程通盤考慮,進行資源優化整合。在教學過程中始終貫穿CDIO理念及KPE教學方法。從基本的編程語句開始,通過理論、實踐、素質、實踐工廠的培養,環環相扣,循序漸進,形成編程訓練的生態鏈,將課程理論學習與編程訓練有機地融合起來,五門課程聯手打造的“提高本科生的編程能力”效果明顯。
另一方面,我們意識到,要培養軟件產業界所需的工程型人才,加強編碼規范性訓練是很有必要的。為此我們專門編寫了《編碼規范》,其內容包括:整體編碼風格、函數編寫風格、符號使用風格、程序編寫風格和合法性檢查等諸多內容。《編碼規范》的實施是從第一門“C語言程序設計”課程開始循序漸進地執行該規范,直到本科教育結束,使編碼規范貫穿整個本科教育體系,從而培養學生形成良好的工程師習慣。
3軟件技術課程體系
軟件技術的應用范圍非常廣泛,有各種不同的技術體系和技術路線。傳統的軟件工程專業課程設計更多地考慮到學生什么都應當學,因此開設的軟件技術課程多而全,但因教學時間有限,使得學生學習深度不夠。結果是學生學習了很多軟件技術課程類語言,卻只了解這些語言的基本知識和用法,無從談起運用能力。
為了打造適合市場亟需的軟件技術人才,基于CDIO理念,經過充分論證后,我們選擇以Java技術體系為主的軟件技術課程體系,構成的課程體系及具體的教學計劃安排如表2所示。Java課程體系貫穿大一至大四整個教學過程,學生們可以由淺入深,循序漸進地學習;老師也可以對課程內容進行充分地講解。由于每門課程都配有充分的實驗課,這使得學生的理論學習得以深化、動手能力得到提高,實現了在校學習Java技術不斷線。

4外語工程應用課程體系
外語(英語或日語)是軟件工程師必備的技能,因此針對外語能力的培養我們將建立分層次梯度機制。首先了解軟件工程的業務流程;其次是把軟件工程外語課程設置為三大模塊,即語言課程模塊、應用課程模塊、百科知識課程模塊。這三個模塊作為整個課程體系的有機組成部分,既有各自的獨立性,又有主次關系,互相聯系、互相支撐。核心是應用課程模塊,語言課程和百科知識課程是為學生最終獲得外語實際操作應用能力而服務的。這樣,梯度和模塊互動分層次達到了服務外包人才外語綜合能力的培養目標。
5軟件工程課程體系
多年來,一直存在這樣的認識誤區,學生認為學習軟件就是編寫程序,而對軟件的工程管理、文檔編寫、團隊開發、測試等能力的培養重視不夠。究其原因,就是高校對軟件工程課程的開設存在教學與實踐脫節等問題。為了有效培養與國際接軌的軟件工程師,使學生充分掌握從軟件項目規劃到軟件系統提交的各個設計開發過程中所需要的技術和管理知識,在尊重教學規律和學生個性發展的原則上,我們將過去傳統的軟件工程課程進行結構調整和內容更新,構建了課程體系的多元化模塊結構,采用分模塊的方法設計軟件工程KPE課程體系。
基于CDIO理念,根據軟件工程課程體系的建設思路、國際化的軟件開發模式和規范化的軟件開發過程,我們按照以KPE為核心要素的螺旋方式在第三學期開始就逐步持續培養學生的軟件工程能力,最后進入軟件工程項目訓練課程,讓學生獲得工程經驗。構成的課程體系及具體的教學計劃安排如表3所示。

在該課程體系建設中,我們以軟件工程技術為主干線,統籌安排,全盤考慮,螺旋式循序漸進地部署了既獨立又相互聯系的6門課程,從而將學生的工程化能力推向新的高度,極大地提高了本科生的創新以及工程管理能力。
6素質教育課程體系
軟件工程專業的素質教育是一個系統工程,HEM-SE從軟件專業職業素質的內涵要求出發,不是獨立設置一些理論課程,而是將職業素質融入到教育環境中培養,與理論知識融為一體。
我們在教學過程中注意點點滴滴地培養學生的職業素質,如在講解語言設計類課程時,要著力養成學生編寫程序規范的習慣,培養其吃苦耐勞、敬業的精神;在實踐工廠中著力培養學生的創新能力和團隊協作精神等。軟件工程專業知識的教學內容中不乏人文精神內涵,教師應充分挖掘專業課本中的人文內涵,向學生充分展示軟件工程專業的魅力,引領學生看到不只是印刷在書本上的理論知識,還要讓學生領略更廣領域里和更深程度上的軟件工程科學文化,充分調動學生的專業學習熱情和興趣,培養學生對科學的執著追求精神。

7依托軟件生產實驗中心,全面優化課程實踐體系
根據軟件工程人才培養理念,只有將課堂、實驗室、企業組成一個相互促進、相互引導的教學循環體系,才能實現理論指導實踐、實踐提升理論的良性循環。校內課程實踐教學體系的建設是軟件工程人才培養成敗的關鍵,軟件生產實驗中心是學校和企業溝通的橋梁。我們要充分利用軟件生產實驗中心,把軟件工程師的職業環境作為教育環境,建設循序漸進的KPE教學循環實踐課程體系。因此在軟件生產實驗中心需要建設軟件工程工廠環境、軟件工程生產開發項目、崗位輪訓平臺、軟件工程生產指導平臺、生產人員資料庫、評審和會議中心、配置管理系統、軟件工程生產支撐系統等。

除了依托學校建設的軟件生產實驗中心外,我們還要爭取多種形式的聯合共建,進一步鞏固和完善校外實習基地,建設工程資源庫。遵從市場導向原則,通過實現深層次的合作,選擇一些條件優越、技術實力強、能較好體現業務發展趨勢的單位作為新增、拓展的校外工程資源庫。通過不斷完善實驗室功能,使軟件工程專業實驗室更加符合人才培養目標的要求,提高本科生的綜合實踐能力。
8總結
本文論述的核心課程體系不是孤立的,而是相互關聯、相互促進的,螺旋式地實現了創新型、工程型軟件工程人才的培養。提高本科生編程能力的課程體系是軟件技術課程體系的基礎,編碼能力直接決定了項目開發的效率,這就要求學生在校期間至少精通一到兩門編程語言。我們在提高本科生編程能力的課程體系中選擇了C語言,在軟件技術課程體系中選擇了Java語言,這使得每一位學生都能掌握和精通兩門編程語言,同時要求學生具有自覺的規范意識和團隊精神。在這兩個課程體系之上,我們提出了軟件工程課程體系,建立了軟件工程的概念,要求學生從項目需求分析開始到安裝調試完畢,都必須能清楚地理解和把握這些過程,并能勝任各種環節的具體工作。素質教育課程體系始終貫穿于軟件工程專業所開設的每一門課程中,從而真正實現了創新型、工程型軟件人才的培養。
注:本文是四川省高等教育教學成果獎二等獎——《探索螺旋式人才培養模式,培養實用型軟件工程師》的核心支撐。
參考文獻:
[1] 吳勁,任立勇. 高校軟件人才培養的思索[J]. 計算機教育,2007(7):67-70.
[2] 安俊秀. 構建“興趣本位,任務驅動教學”的課程體系論[J]. 教育理論與實踐,2008(8):59-60.
[3] 姚雅鵑. 計算機專業教育中人文素質教育的引入[J]. 計算機教育,2008(10):61-62.
[3] 杜永美. 美國軟件人才培養基本經驗[J]. 合作經濟與科技,2007(11):49-50.
[4] 瞿中,王練,程克非. 培養適應社會需求的復合型軟件人才研究[J]. 計算機教育,2007(8):75-77.
[5] 陳笑蓉,劉鵬,邱力生. 培養與國際接軌的高水準軟件人才模式探索[J]. 計算機教育,2007(8):70-72.
[6] 趙佩華. 淺談軟件人才的培養體制與途徑[J]. 常州信息職業技術學院學報,2007,6(3):1-3.
[7] 安俊秀,李超,盧軍. 軟件人才職業素質教育模式的探索與實踐[J]. 計算機教育,2009(8):
[8] 盧曉勇,揭敏,劉曉強. 改革傳統教學模式培養創新性軟件人才[J]. 中國高教研究,2007(4):81-82.
[9] 景紅,何濱. 關于改革軟件人才培養模式的探索[J]. 教育與職業,2006,20(516):173-174.
[10] 莊晉林,楊彬. 關于培養產業型軟件技術人才的教學改革措施[J]. 教育理論與實踐,2007,27(6):13-14.
[11] 王小銀. 計算機軟件人才培養模式的研究[J]. 陜西師范大學學報:自然科學版,2007,35(11):184-186.
[12] 王鑫,肖化,陳小蘭. 美、印、日、韓軟件人才培養比較與借鑒[J]. 高等理科教育,2007(1):51-55.
[13] 馮斌. 培養高級軟件人才的探索與實踐[J]. 科技咨詢導報,2007(19):127-128.
[14] 鄭晶,張愷. 校企合作培養軟件人才的探索與實踐[J]. 科技咨詢導報,2007(25):235-235.
[15] 劉才興,孫微微. 以軟件工程人才培養模式促進計算機學科教育[J]. 計算機教育,2007(3):75-76.
[16] 吳彥. 印度IT職業教育的特色及啟示[J]. 教學與管理,2007(7):158-160.
[17] 祝惠. 印度軟件人才培養模式及其對我國的啟示[J]. 現代企業教育,2006(12):10-11.
[18] 李祥. 應用型軟件技術人才培養模式探索與實踐[J]. 計算機教育,2007(8):72-74.
[19] 邱惟明,賴茂生. 中國軟件產業規模和軟件人才趨勢的系統動力學分析[J]. 情報科學,2007,25(9):1287-1292.
[20] 徐國慶. 如何培養職業素質[J]. 職教論壇,2007(9):1.
[21] 李萍. 軟件技術專業的職業素質教育[J]. 機械職業教育,2007(7):11-12.
[22] 安俊秀,李超. 軟件與服務外包發展策略研究[J]. 福建電腦,2008(4):34-18.
[23] 馬文婧. 哈爾濱工業大學徐曉飛博士談工業化軟件人才的培養[J]. 計算機教育,2006(1):4-7.
[24] 李超,李鐵剛,安俊秀. 中小型軟件企業產學合作模式探索[J]. 計算機教育,2009(1):43-45.
Design of Course System Based on CDIO and HEM-SE Model
AN Jun-xiu, LI Chao, CHEN Gao-yun
(ChengDu University of Information Technology Software Engineering College, Chengdu 610225, China)
Abstract: At present, the software industry market leads to a “vicious circle” of the software talents in demand. Through a series of specific social research and CDIO educational ideal of studying , innovatively put forward a spiral software talents training mode. We frame a new core curriculum, establish a training process of theory, practice, quality and project, in which they are affected by each other and continuously growing into talents of engineer type, complex type and innovative type, so as to frame a spiral training mode, stretch and stimulate students ability of innovation and management.
Key words: helical education model for software engineer; course system; career quality; KPE