駱斌 劉欽 馮桂煥 王浩然


摘要:隨著軟件工程自身觀念、知識、實踐、工具等的發展更新,我國軟件工程領域專業碩士教育的發展迎來巨大的機遇和挑戰。文章介紹GSw2009中的CBOK以及最新的SWEBOK V3兩種軟件工程知識體系,闡述借鑒GSwE2009的南京大學課程體系和與之配套的工程能力訓練系統,結合中國研究生教育的實際,提出將軟件工程中的過程管理方法引入教學管理體系。
關鍵詞:軟件工程;研究生;知識體系;課程體系;專業規范
0.引言
20世紀90年代初,卡內基一梅隆大學軟件工程研究所(SEI)和軟件工程教育者研討會共同努力建立了軟件工程碩士教育計劃。1993年,IEEE-CS/ACM聯合指導委員會建立,標志著軟件工程建設進入一個新的時期。隨后,經過軟件工程協調委員會(SWECC)的多年努力,2004年正式發布了軟件工程知識體SWEBOK和本科生軟件工程教育計劃CCSE 2004,2009年發布了軟件工程職業道德規范和職業實踐以及研究生軟件工程教育計劃GSwE2009-2014年,隨著軟件工程自身觀念、知識、實踐、工具等的發展更新,SWEBOK也終于更新到V3版。
2002年國內啟動了軟件工程碩士培養程序,2011年軟件工程作為獨立的一級學科得以設立。因此,研究國際軟件工程碩士教育體系,對處于初創期的中國軟件工程教育具有特別重要的意義。南京大學軟件學院對軟件工程領域專業碩士培養模式進行初步探索,試圖從知識體系、課程體系、工程能力訓練體系以及教學管理體系上為我國軟件工程專業碩士教育提供思路。
1.知識體系
軟件工程知識體系主要有兩個來源:SWEBOK和GSwE2009中的教育知識體系CBOK。
GSwE2009中的教育知識體系CBOK主要來源于SWEBOK 2004,同時也參考了SEEK 2004、INCOSE 2003和Haskins 2007。相比較SWEBOK2004,CBOK增加了一個新的知識域(knowledgearea,KA)(職業實踐)和4個關于教育的知識域(工程經濟學基礎、計算基礎、數學基礎和工程基礎),與此同時還增加了系統工程基礎和職業操守指導等兩個全新知識域。此外,CBOK還調整了一些知識單元/知識點,具體為:
(1)人機交互設計被加入到軟件設計知識域;
(2)工程經濟學單元被加入到軟件工程管理知識域;
(3)風險管理單元被加入到軟件工程管理知識域;
(4)軟件檢驗和有效性驗證單元被加入到軟件質量知識域。
為加強軟件工程在GSwE2009中的角色和地位,GSwE2009對部分知識域的名稱和知識單元/知識點組織進行了調整,如軟件需求改為需求工程,軟件測試改為測試,軟件配置管理改為配置管理等。
2014年新版的SWEBOK V3與CBOK類似,在SWEBOK 2004的基礎上增加了4個關于教育的知識域(軟件工程經濟學、計算基礎、數學基礎和工程基礎)和軟件工程職業實踐知識域。軟件工程專業實踐知識域又細分為專業性(professionalism)、團隊動力學(group dynamics)和交流技巧(communication skills)。
通過對這兩個知識體系的分析可以發現,只有具有堅實的數學基礎、計算基礎、經濟基礎和工程基礎,全面了解軟件開發的過程、方法和工具且受過良好訓練的人,才有可能成為未來軟件行業的中堅力量和領軍人物。
2.課程體系
在設計課程體系架構時,GSwE2009規定至少為CBOK所規定的核心知識單元分配15個學分的教學時間和200小時的交流時間(北美的學術模式),同時課程設置應滿足CBOK所規定的相關核心知識單元的布魯姆分類學認知范疇中的6種級別(知識、理解、應用、分析、綜合和評價)。GSwE2009建議使用整個課程50%的學時來覆蓋CBOK所規定的核心知識單元內容。
南京大學軟件工程專業的碩士研究生課程體系架構采取混合模式,要求碩士研究生在校學習8個學分的通修課程(A類)和24個學分的專業課程(B/C/D類)。B類課程為高級軟件工程課程,覆蓋重要的軟件工程核心知識;C類“系統分析與設計”及“軟件質量保障”課程,覆蓋部分軟件工程核心知識、軟件工程高級知識深入和特殊應用領域知識;D類課程分兩類,第一類為與軟件工程核心知識和高級知識相關的課程,第二類為與專業方向(即辦學特色和特殊應用領域)相關的課程。部分A類課程、B類課程、C類課程和D類第一類課程覆蓋了GSwE2009推薦的15個學分所要求的核心知識,D類第二類課程的教學內容體現了學校的辦學特色和對特定應用領域的關注。具體課程體系見表1。
3.工程能力訓練體系
與GSwE2009和SWEBOK V3中的職業實踐要求相對應,南京大學軟件學院通過知識點分解和聯合設計教學體系,確保了理論與實踐教學的一體化。
在此基礎上,軟件學院進一步整體規劃與設計驗證型實驗、設計型實驗和實習。工程能力訓練體系以軟件工程方法為指導,以驗證型實驗(軟件工程知識和領域知識的簡單個人應用,用于鞏固和加深學生對于特定理論知識點的理解程度)、設計型實驗(團隊級綜合軟件工程課程實踐、與應用相結合的領域課程實踐,循序漸進地對學生構思、設計、實施和操作能力加以強化)、實習等階段為主線,以特定軟件工程方法系列實驗和特定軟件系統/技術系列實驗為兩翼,以前沿技術和學生創新為補充,全面提高學生的工程化實踐能力。為期36周的全時制實習使學生體驗了業界氛圍和一線開發人員的工作環境,進一步鍛煉其工程能力。為培養學生的工程創新思維和創新能力,工程能力訓練體系中還引入了面向問題的教學模式、案例驅動的教學模式、開放性實驗模式和學生創新小組模式等創新型實踐教學方法。
以手持設備軟件開發課程為例,整個課程實驗作業見表2。前兩個迭代主要以驗證型實驗為主,后兩個迭代則是充分發揮團隊合作的設計型實驗,要求所有作品必須在Android或者iOS的市場中上線,獲得真實的用戶評價和建議并能據此改進,這樣會給學生帶來更好的前進動力和高質量的要求。迭代過程也強調教師對學生開發工作的跟蹤和反饋,以幫助學生思考軟件項目開發中的不足并持續改進。
除了工程技術能力的培養,南京大學軟件學院還特別注意學生的知識產權和保密意識,開設了相關課程。學生在實習期開始時需要和企業簽訂知識產權及保密協議書,從而系統全面地培養學生的工程職業能力。這也正是GSwE2009和SWEBOK所要求的。
4.教學管理體系
軟件工程管理中有一個著名的論斷:沒有高質量的開發過程,就沒有高質量的軟件。軟件產品的質量與軟件人才的培養質量有很大程度的一致性,因此教育教學的質量在很大程度上取決于教學過程的質量。南京大學軟件學院創新性地將軟件工程中的過程管理方法引入教學管理,從教學過程設計階段就充分考慮質量保障的目標、方法和措施,并在教學實施的每個環節之中動態地進行質量跟蹤和監控,通過不斷提高教學過程的質量來確保教學目標的實現。
以對軟件工程領域專業碩士生最重要的實習環節為例,南京大學軟件學院開學初就為學生確定導師,第一學年在校期間由導師指導學生進行學術或工程型項目研發,第二小學期末學生向導師提交學術或工程型報告,經導師確認,啟動實習。如導師認為報告不合格,可向學院申請延期3個月啟動實習。
工程碩士研究生的實習須通過學院組織的雙向選擇程序,經學院工程發展中心批準備案后開始。實習研究生在實習期應該及時與指導教師保持聯系。指導教師未及時與學生聯系者須追究責任;對指導教師的聯絡置之不理者,學院將根據其拖延期相應順延畢業時間。工程發展中心會定期檢查師生交流的情況,確保實習期導師指導的順利進行。研究生在實習期調整實習單位,必須有明確理由并報學院工程發展中心同意。凡未經批準自行調整實習單位,導致論文工作無法延續者,實習期重新計算,畢業時間相應順延。
除此之外,學位論文也有一個嚴格的過程管理。學位論文的寫作分為選題、開題報告、中期檢查、論文提交等環節。學院通過每個節點的階段性審查來控制整個論文寫作的質量。
對于全日制研究生,規定在軟件工程專業實踐開始的第四個月與學位論文指導教師討論選題,并在軟件工程專業實踐開始的5個月內完成開題報告。無故推遲完成開題報告,學院將對學生作延期畢業處理。所有研究生應在學位論文答辯前3個月向學位論文指導教師提交學位論文中期進展報告,如學位論文中期檢查未獲通過,學院和指導教師有權推遲相關研究生的答辯。所有研究生應在學位論文答辯前兩個月向學位論文指導教師提交學位論文初稿,并在學位論文答辯前一個月向學位論文指導教師提交學位論文,以便啟動軟件工程專業實踐成果評審、學位論文評閱等答辯前準備工作。如果在論文中發現學術不端行為,學院將對學生作出延期畢業處理。
5.結語
南京大學軟件工程碩士課程體系、工程能力訓練體系、教育管理體系實施5年以來,共畢業約600名研究生。他們的就業率和平均起薪一直在南京大學各院系中名列前茅。通過對他們就業的企事業單位的回訪得知,這些畢業生陸續開始承擔重要的技術和管理崗位,深受各方的好評。因此特撰寫此文以供我國軟件工程碩士教育體系設計者們參考。