(南華大學計算機學院 湖南·衡陽 421001)
2019年國務院政府工作報告中提出要打造工業互聯網平臺,拓展“智能+”,為制造業轉型升級賦能。在“云大智鏈”等新技術與實體經濟相結合的背景下,云計算、大數據等新技術將達到7000億元左右的市場規模。2020年相關技術人才需求量約為210萬,近幾年內相關人才需求的增速將保持在40%左右。然而,眾多軟件工程專業畢業學生很難適應專業相關的工作。造成這種尷尬困境的主要原因是,目前畢業生能力達不到軟件產業市場要求,尤其是較高工程素養和工程實踐經驗、具有團隊合作能力和持續學習能力的軟件人才不足。這種畢業生的能力和素質與市場需求之間存在鴻溝的現象也是工程教育領域普遍存在的問題。
為此,國內外工程教育界進行了長期的探索,其中CDIO工程人才教育模式就是其中之一。該模式最初是由MIT和瑞典幾所大學于創立的。CDIO是Conceive Design Implement Operate的縮寫。CDIO是從系統的觀點以產品的全生命周期過程為載體,根據CDIO大綱和標準,讓學生在工程實踐中主動的學習并獲得相應的工程能力。CDIO提出后,受到國內外工程教育界的廣泛關注。汕頭大學于2005年將其引入我國。隨后,清華大學、北京交通大學、成都信息工程學院等加入CDIO合作組織。
此外,在工程教育領域還有《華盛頓協議》,它是由歐美工程專業團體于1989年發起的工程教育本科專業認證的國際互認協議。2013年我國成為其預備成員,2016年成為其正式成員。陳利華等將《華盛頓協議》、CDIO、卓越工程師計劃和合作教育結合起來,探索建立了浙江大學的工程教育人才培養模式。
對于軟件工程人才培養的問題,課題組從南華大學的辦學定位出發,對軟件工程專業人才培養模式、學生團隊構建、學生實訓等方面進行了有益的探索。本文借鑒CDIO理念對軟件工程專業課程體系的設計進行研究,將學生的培養置于實際工程環境下,在做中學,在學中做,以此撫平理論和實踐之間的鴻溝,使學生畢業后能迅速適應企業環境,能解決行業復雜工程問題,成長為卓越的軟件工程師。
CDIO模式包括三個總目標:一是要具有深厚的技術基礎知識;二是能夠系統地完成新產品開發整個生命周期的全部過程;三是了解技術對社會和環境的重要影響。
為了實現以上目標,處理好教學過程中的理論與實踐的關系。課程組得出以下結論:(1)學科課程之間應和工程過程一樣是相互支撐的,而不應將它們看成是由不同知識點組成的獨立實體;(2)工程能力和人文素質的培養應融入到學科教育中。
因此,在對課程體系設計時,將工程入門經驗、有機融合的課程、實際工程項目開發三個關鍵的元素按照一體化的思路進行設計:(1)需要讓學生容易獲得工程入門經驗,以增加學生的成就感和學習興趣;(2)按照軟件工程的實踐過程將課程按需求獲取、分析、設計、編碼、測試、部署與維護過程進行水平拆分,形成相互關聯和支撐的課程;(3)以學科競賽賽題為項目為背景,構建一個中等復雜程度的項目實踐課程。
基于以上主導思想,借鑒國內外其他高校經驗,建立了“3+0.5+0.5”的軟件工程人才培養體系。因學校采取的是大類招生,所以第一、二學年進行統一的計算機大類學習(統一學科平臺);第三學年專業基礎課及專業選修課學習,其中第5學期專業基礎課程學習(統一專業平臺),第6學期專業方向學習和校內實訓(方向平臺);第四學年的第7學期和第8學期學生分別在校內、校外實訓和畢業設計。
(1)知識體系的分配。IEEECC-SE提出的軟件工程專業的知識體系(SWEBOK)有十個知識域,包括:需求、設計、構造、測試、維護、配置管理、工程管理、工程過程、工具和方法和軟件質量。根據CDIO思想將SWEBOK的知識域分為四個部分:計算機與軟件工程基礎知識、個人素質與團隊工作知識、軟件工程過程知識、軟件系統及應用知識。它們的關系如圖1所示。

圖1:知識體系之間的關系
統一學科平臺主要完成計算機與軟件工程基礎知識的培養,統一專業平臺主要完成軟件工程過程知識的培養,方向平臺主要完成軟件系統及應用知識的培養,個人素質與團隊工作知識的培養貫穿于各個階段。
(2)統一學科平臺設計。1至4學期的統一學科平臺包括:計算機科學導論、高級語言程序設計、計算機組成原理、數字邏輯、離散數學、數據結構、Java語言與網絡編程、多媒體技術、計算機網絡原理、操作系統、數據庫原理、算法分析與設計、軟件工程概論、生產見習等課程和相應的實踐環節。在公共基礎課程模塊和專業基礎課程模塊中,重點突出軟件工程概論和生產見習這兩個課程,使學生對軟件工程有一個整體的認識,了解其基本過程。建立起工程入門經驗,為以后的學習建立一個框架,并使學生對成為軟件工程師產生濃厚的興趣。這個階段完成第一個關鍵元素的任務。
(3)統一專業平臺設計。第5學期的統一專業平臺是本次課程體系改革的核心。根據軟件工程專業的特點,將原來的課程由包含某類知識點的相對獨立的教學單元,水平切割成為與軟件開發瀑布模型中各主要階段(需求分析、設計、實現、測試)相關聯的兩個課程組。按CDIO標準中第5條中的要求,設計一個初級的項目和一個高級的項目分別貫穿于這兩個課程組。
第一課程組以計算器案例貫穿其中,包括的課程有:UML與需求獲取、軟件設計與規范、C#程序設計、人機交互工程、單元測試與軟件質量。這一組課程的主要目的是讓學生對軟件工程的整個過程有一個初步的認識,并從個人能力上進行培養,使學生能夠自己動手完成一個簡單的項目。通過在簡單項目上的成功,建立學生對軟件工程專業的信心,增強以后專業學習的興趣。
第二課程組以Web新聞發布案例貫穿其中,包括的課程有:UML軟件建模、軟件體系結構與設計模式、ASP.NET程序設計、Javascript與Ajax開發、軟件驗證與確認。這一組課程的主要目的是讓學生以團隊為基本單位完成一個中等復雜程度的工程項目。從而培養學生的團隊協作及工程實踐能力,獲得實際工程經驗。
每個課程組所包括的課程包含了軟件開發瀑布模型的一個完整生命周期,即從需求到設計再到實現與測試。課程組內課程形成了一種螺旋的關系。
這兩個課程組之間的課程有對應關系,例如,課程組1中的“UML與需求獲取”與課程組2中的“UML軟件建模”均定位于對軟件需求的獲取與分析,但這兩個課程在教學內容和難度上各有側重。“UML與需求獲取”側重于需求的表示、簡單需求的獲取等基礎知識,而“UML軟件建模”則側重于較復雜系統的建模。對應課程之間形成一種上升的關系。采取這種螺旋上升,逐步遞進的方式既體現了以CDIO過程為背景,同時也能夠使學生較快看到努力學習的成果,提高學生的自信和興趣。這個階段主要完成第二個關鍵元素的任務。
(4)方向平臺設計。為了使學生能在社會及企業環境下構思、設計、實施、運行具有復雜和高附加值的工程產品和系統。在第6學期,除了軟件項目管理、云計算與分布式軟件設計兩門公共課程外,其他的課程按方向分成課程組。根據軟件行業發展的趨勢、本校的核特色以及學院所承擔的縱向和橫向課題的情況,將其他課程分成群體軟件組、企業信息化組、數字媒體組和核行業軟件組,各組的課程如表1所示。

表1:方向課程組的課程
第6學期最后以綜合實訓作為貫穿性綜合課程。綜合實訓的方向以教師團隊的實際項目作為背景,讓學生以團隊的形式完成。以此培養學生團隊在社會及企業環境下建造產品和系統的能力。這個過程也可當作第三輪循環,在這一輪循環中,是以實踐的形式體現出來,在實踐中完成整個軟件工程過程的所有階段和步驟。
第7、8兩個學期,學生進入軟件生產現場(校內或校外的實訓基地),參與實際項目的開發,自然的過渡到軟件工程師的角色。這兩個階段主要完成第三個關鍵元素的任務。
該課程體系在軟件工程實驗班中進行了實踐,取得成功后在整個軟件工程專業全面推廣,使得件工程專業的學生的工程實踐能力得到穩步提高。以學生參與各類學科競賽為例,獲得省級及以上獎項數,從15年的5項增長到18年的45項。并獲得2017至2018年度湖南省第十三屆大學生計算機程序設計競賽團體總分第一名的好成績。
本次課程體系改革,充分體現了CDIO的思想,使學生在工程實踐的環境中以主動的、有聯系的、實踐的方式學習并獲得相應的工程能力和經驗。按該課程體系培養出來的學生能解決行業內復雜的工程問題,適應市場需求。