劉輝 牛振東


文章編號:1672-5913(2015)11-0025-03
中圖分類號:G642
摘要:專業學位教育是我國大力提倡的新興教育模式,其目的是針對行業的特定職業需求,培養具有專業能力的可以勝任目標職業角色的高層次專門人才。碩士專業學位教育有別于學術型碩士教育,因此需要摸索出針對專業碩士的教育教學方法。文章闡述在軟件工程專業碩士核心課程軟件體系結構教學中探索出的一套行之有效的碩士專業學位教學方法,介紹探索和實踐過程中的經驗及教訓,為相關課程的教學改革提供借鑒。
關鍵詞:專業學位教育;實踐;軟件工程;體系結構
0 引 言
專業學位是針對特定職業領域的需要,為培養具有較強專業能力和職業素養的高層次專門人才而設置的一種學位類型。雖然專業學位與學術學位培養的人才類型有所不同,但是二者不存在誰高誰低的問題,都處于同一層次。目前,我國已基本形成了以碩士學位為主,博士、碩士、學士3個學位層次并存的專業學位教育體系。
我國的專業學位教育尤其是碩士專業學位的教育迅猛發展。圖1所示為我國1996-2009年全國碩士專業學位授予人數的統計圖示。從圖中可見,專業碩士授予數量從1996年的0.03萬迅猛增長到2009年的11.74萬,13年間增長了390倍,年均增長率高達58%。2009年3月,教育部決定增招的碩士研究生名額全部用于招收應屆畢業生攻讀碩士專業學位。2010年起,所有國務院批準通過的碩士專業學位類別招生工作可納入全國碩士研究生統一招收安排,這標志著我國碩士專業學位教育迎來了一個新的時期。
基于IT產業的迅猛發展及其對專業高級人才的強勁需求,軟件工程專業在工程碩士中非常受歡迎。然而,目前軟件工程中的許多專業課程(如軟件體系結構)沿用學術型學位教育的教學模式,不利于培養專業學位研究生的實踐動手能力。學生畢業后難以迅速進入職業角色,往往需要一個較長時間的職位培訓,這也一定程度上影響了專業學位碩士畢業生的就業及職業前景。為了解決以上問題,我們需要對現有的教學模式進行改革探索,堅持以實踐能力為核心,對專業課程的教學內容、教學方法、考核方式和教學團隊進行改革探索,使之符合專業學位研究生的培養特征。
1 課程現狀
軟件體系結構多年以來一直是全日制碩士專業學位研究生(計算機技術及軟件工程專業)的核心課程,該課程的建設對培養專業碩士在大型軟件系統上的構架能力、軟件系統評估能力等具有重要意義,是將碩士研究生的目標職業從普通程序員提升至系統構架師的核心課程。國內外知名高校均已開設軟件體系結構課程,國外的卡內基·梅隆大學等在軟件工程領域處于領先地位的高校都將該課程作為核心課程進行建設;國內的北京大學等亦將軟件體系結構作為計算機技術及軟件工程領域碩士專業學位的核心課程。
相比于職業技術學院培養的程序員,計算機技術及軟件工程領域專業碩士的核心競爭力主要表現為對大型軟件系統的架構能力,具體包括對軟件系統結構分析、設計和評估的能力。軟件體系結構課程的主要目標就是培養學生對軟件系統架構進行分析、設計和評估的能力,為其日后的職業生涯奠定基礎。我們的教學團隊早在2004年便開始承擔該課程的教學任務,建立了較為完備的教學大綱和教案,編寫、編譯了相關教材,設計了實踐性教學案例與教學環境。教學團隊編譯的教材《軟件體系結構》《UML用戶指南》等受到北京理工大學學生以及兄弟院校的廣泛歡迎和采用。采用啟發式教學與實踐性教學相結合的教學方法,可以使學生不僅理解相關的理論和技術,而且掌握具體的應用和操作方法,能夠收到良好的教學效果。采用雙語授課可以有效提高學生以英文為載體進行專業知識學習和交流的能力,為專業碩士日后自主學習國際最新技術奠定堅實的基礎。相關經驗總結參見課題組于2009年發表的教學改革論文。
軟件體系結構課程前期的主要問題在于缺少企業專家的參與,缺乏學生能真正接觸到的大型企業軟件系統案例,為此教師需要引入相關企事業單位的高級企業專家參與授課,引入相關單位的真實案例以進一步激發學生的學習興趣。此外,原有教學大綱主要來源于學術型碩士研究生的相關課程,不利于培養專業碩士的實踐動手能力,因此尚須完善教學內容及考核方式,通過吸收工業實踐中用到的最新知識豐富教學大綱;轉變課程考核方式,重點考查學生分析問題和解決問題的能力。
2 課程建設
我們通過多年的摸索實踐,將軟件體系結構碩士專業學位課程建設主要分為完善教學內容與教學大綱、建設專業化教學團隊、設計課程考核方式3方面。
1)完善教學內容與教學大綱。
我們通過企業調研、專家研討等方式了解軟件架構師所必需的理論知識與技術技能。調研結果表明,僅僅掌握基本的軟件體系結構概念以及經典的軟件體系結構風格是無法真正從事復雜軟件體系結構建模與分析工作的,需要在實際應用中對主流建模語言(unified modeling language,UML)、面向對象設計、設計模式、軟件開發過程等有較好的理解和把握,才能構造和評估真正實用的軟件體系結構。此外,一些老舊的知識如面向對象體系風格、子程序/主程序結構等要么因為已經成為常識,要么因為已經很少使用而沒有必要在課堂上進行講授。最后,軟件體系結構的形式化描述與驗證在企業中很少用到,可以從專業碩士的課程中移除以減少課程負擔。軟件體系結構的形式化描述與驗證,在經典軟件體系結構課程中經常作為重點和難點向學術型研究生講授是必需的,因為這是對軟件體系結構進行定量、自動化的科學分析的前提和基礎;然而,對于專業碩士而言,教學的著重點是實用性,因此對于這部分教學困難而使用機會不多的內容,可以大幅壓縮或者直接取消講授。
通過詳細對照課程知識點與軟件架構師所需職業理論與技能,教師可分析和抽取該課程教學大綱尚未覆蓋的知識點,刪除課程中某些陳舊或與培養目標關系不大的知識點,逐步完善教學大綱。新的教學大綱不但增添了新的實用知識點,而且通過刪減部分內容確保了教學工作量的穩定。
2)建設專業化教學團隊。
專業學位培養的是能快速應用所學專業知識解決企業實際問題的高級專門人才,因此需要教師對工程實際問題有較為深入的理解,但是傳統上高校教師通常主要從事基礎理論研究,缺乏企業背景和實際開發經驗。解決授課需求與教師背景之間不匹配問題最直接的方法,是引入具有豐富工程實踐經驗的企事業專家進行案例授課,而校內教師主要負責基礎理論和基本概念的講授。
教學團隊可與中國移動研究院、中國農業科學研究院等建立全面的合作關系,聘請資深軟件專家加入教學團隊。移動研究院的專家可結合其大型軟件系統“中國移動開放平臺OMP”講授軟件體系結構的概念、風格、設計方法和模式、評估等;農科院專家可結合農業信息采集與分析系統深入淺出地介紹軟件體系結構的基本構架模型、描述方法、設計中的主要影響因素等。此外,教師還可利用企事業單位的真實軟件體系結構及其演化歷史作為教學案例,強調教學案例的分析與討論;對每個教學案例,分組討論其體系結構的主要特色、體系結構風格的決策過程、體系結構對軟件性能與軟件演化的影響等,引導學生利用軟件體系結構知識分析和理解實際應用中軟件體系結構分析、設計、評估的主要過程與方法,大幅提高學生的學習積極性以及對實際問題的分析解決能力。
3)設計課程考核方式。
教師需轉變課程考核方式,主要考查學生的實踐能力以及對軟件體系結構核心概念與主要理論的理解和應用能力;以考查學生分析、設計和評估軟件體系結構的能力為核心,設計難度適中的實踐性大作業作為課程考核的主要方式,同時適當輔以理論考試,考查學生對課程核心概念和核心理論的掌握程度。
教學團隊設計了一個基于UML建模工具的大作業,要求學生根據給定的軟件需求設計最佳的軟件體系結構。為了突出軟件體系結構不斷演化的特性,教師可將大作業的需求分成兩個階段,分兩次發給學生以模擬真實環境下不斷變更的軟件需求。學生不僅要給出最終的設計結果,還必須對軟件體系結構的總體構架和風格作出解釋,說明其設計的合理性;此外,對設計過程中的每個決策都要給出決策的依據。
圖2所示為學生設計的一個優秀案例。該案例充分考慮了UML元素需要逐漸演化的需求,通過多態(繼承)很好地滿足了系統的可擴展性;此外,該設計利用經典的MVC結構合理地解決了圖形界面與文檔元素的分離問題。
最后的理論考試則完全以軟件體系結構的概念和理論為考核要點,不再結合案例進行考核。考慮到專業碩士的培養目標是解決工程項目中的實際問題,因此我們在課程考核中以大作業考核為主(占總成績的2/3),以理論考試為輔(占總成績的1/3);此外,理論考試難度相比學術型碩士相關課程有所降低,保證學生有足夠的精力投入到實踐動手能力培養中。
3 結語
針對碩士專業學位的特殊性,我們對軟件工程專業的核心課程軟件體系結構進行了改革探索并取得了一定的成效。課程改革的重點在于:根據企業需求和學科發展前沿調整教學大綱;引入企業專家以加強案例教學;調整課程考核方式以加強學生實踐動手能力的培養。經過幾年的改革和探索,該課程的教學質量明顯提高,其改革實踐也對其他專業碩士課程具有一定的借鑒意義。