丁 箐 李 曦 姜 明 白 天
摘要:本文針對我國軟件學院專業教學所面臨的挑戰,在充分調研IEEE SWEBOK和CC2004SE知識體系的基礎上,針對我國軟件學院目前的實際情況重新劃分軟件工程知識體系,提出了軟件工程碩士開放式教學體系的建設方案。圍繞專業培養目標,結合學生的工程實踐,引入課程組的概念,制定了一套較為完整的開放式實踐教學實施計劃。
關鍵詞:工程碩士;開放式教學;課程組
中圖分類號:G642文獻標識碼:B
1引言
軟件學院軟件工程碩士的培養目標是培養高層次、應用型人才,針對這個目標,其教學實施應著重體現出以下兩個差異性:
(1) 軟件工程學科領域和計算機學科領域間專業設置的差異性,這個差異應能夠很好地體現培養應用型人才的目的;
(2) 工程碩士課程和軟件學院本科課程的差異性,這個差異應能夠很好地體現培養高層次人才的目的。
目前國內軟件學院軟件工程學科和傳統的計算機科學學科在課程設置上差異還不顯著,工程碩士的培養方案中甚至部分課程只是本科階段的重復。雖然大都開始強調學生的軟件項目實踐,但普遍缺乏過程管理。本文在對IEEE的軟件工程知識體系進行深入學習的基礎上,針對軟件學院軟件工程碩士提出了實現開放式教學體系的教學改革方案。
2軟件工程知識體系
2004版SWEBOK將整個軟件工程知識體系分為11個知識領域(Knowledge Area,KA),其中前5個知識領域是按軟件開發的生命期諸階段排列的,即軟件需求、軟件設計、軟件構造、軟件測試和軟件維護;后6個知識領域是軟件開發中的支撐性或者輔助性的方面,可能覆蓋軟件開發的多個階段,包括軟件配置管理、軟件工程管理、軟件工程過程、軟件工程工具與方法、軟件質量、相關學科知識領域。這些知識領域SWEBOK并沒有重新系統規定,而是直接套用已經成型的各領域知識體系,因此不可避免地存在重疊和不匹配。
在SWEBOK的基礎上,IEEE與ACM又共同擬定了CCSE。其中的核心部分是軟件工程教育知識(SEEK)。SEEK由十個知識領域組成,包括:計算機基礎(CMP)、數學和工程學基礎(FND)、職業實踐(PRF)、軟件建模與分析(MAA)、軟件設計(DES)、軟件驗證(VAV)、軟件演化(EVL)、軟件過程(PRO)、軟件質量(QUA)、軟件管理(MGT)。
可以看出,SEEK和SWEBOK基本內容是相近的。總的來說,二者都是包含了軟件工程核心類的知識領域、基礎類或前導類的知識領域,以及其他相關領域的知識。
3高等教育教學改革研究狀況
目前國內關于高等教育教學改革的論文很多,如翁敬農、劉云等在軟件學院實踐教學體系的內容與規劃中提出了“一個目標”、“兩種途徑”、“三大環節”、以及“四級臺階”的具體步驟。王移芝、林艷琴提出基于“兩段教學”的計算機基礎課程的教學體系框架。謝芳清、閆大順提出了以素質教育為目標的實踐教學體系。王浩、胡學鋼等提出計算機科學與技術專業實踐教學體系的總體研究與建設。王志英以國家實驗教學示范中心為例,提出實踐是綜合能力培養的基礎,并以此構建計算機科學與技術專業實踐教學體系。董瑋、邱建華等以專業課“程序設計基礎(C語言)”為例給出了建設實踐教學體系的實踐探索。然而目前還沒有檢索到專門研究軟件學院工程碩士教學改革的論文。無論是從傳統計算機科學與技術專業與軟件學院軟件工程專業的區別,還是本科生與研究生的區別來看,針對軟件學院工程碩士的教學改革研究都是十分有必要的,同時也是迫切的。
4工程碩士的課程體系設計策略
我們以IEEE SWEBOK和CC2004SE的知識體系為主體,結合中國軟件產業以及本院的具體實際情況,設計了中國科學技術大學軟件學院軟件工程專業的知識體系,作為我院工程碩士課程設置和教學計劃實施的依據。以SEEK為基礎,我們對軟件工程的課程設置進行規劃。整個課程設置可以分為三個層次,即導論性課程、軟件工程核心課程和其他課程。如圖1所示,該知識體系定義了7個知識體系子類。計算機基礎和數學和工程學基礎屬于導論性課程、其他課程包含了職業實踐、領域課程、軟件工具、工程實踐等四個子類。

其中計算機基礎定義了軟件工程作為計算學科所必需包含的計算科學基礎以支持軟件產品的設計與建設;數學與工程學基礎提供了軟件產品獲得所需屬性的理論和科學基礎;職業實踐則聚焦于軟件工程師以職業行為從事軟件工程實踐所必需具備的知識、技能和態度;軟件工程核心課程應該包含軟件開發生命周期所涉及到的主要知識領域;領域課程包含了對于某個特定領域軟件工程師應該接受的特定教育或經驗;軟件工具定義了從事軟件工作所必需掌握的當前主流工具與軟件產品等;工程實踐則是學生使用所學到的知識從事實際開發活動,提供動手能力的重要環節。
對于工程碩士來說,大部分同學經過計算機本科專業的學習,已經具備了初步的計算機基礎以及數學與工程學基礎,因此目前其課程體系建設如圖2所示,重點是完成軟件工程核心課程教學,并結合IT界的最新技術趨勢設計相關領域課程。教學改革的核心是如何設計軟件工程的核心課程,并指導學生熟練掌握相應的軟件工具,強化他們的實踐動手能力。

5工程碩士開放式教學體系建設
對于如何設計軟件工程的核心課程,我們的主要思路是打破原先各子知識體系間的界線,圍繞專業培養目標,結合學生的工程實踐,引入課程組的概念,實現一個完整的開放式教學體系。如圖3所示,整個開放式學習體系包含三個部分:
(1) 設計課程組:在理論環節采用課程組的概念,集中講授較高層次的、符合碩士生水平的軟件工程的某些重要環節;
(2) 開設實踐教學環節:在實踐教學中采用做中學(Learning by Doing或LBD)理念,由指導教師講述軟件工具的具體操作過程,同學實際動手學習;
(3) 強化工程實踐:在工程實踐中由學生自主選題,并將LBD中講述的工具在項目整個生命周期中貫穿使用。

5.1設計 課程組
目前我院開設的高級軟件工程和本科的軟件工程課程內容并沒有太大差別,對于軟件工程的各個環節面面俱到,但又都比較淺顯,對于工程碩士的培養顯然是不合適的。因此我們設計了軟件工程課程組的理念,初步設計了以下課程:
(1)“軟件開發管理”(Managing Software Development)
(2)“軟件系統架構”(Architectures for Software Systems)
第一門課程主要針對以后立志從事軟件工程管理方向的同學,課程針對IT項目集中闡述如何實現風險、資金、工期等各方面的管理;第二門課程主要針對以后立志從事軟件高級開發方向的同學,課程主要講述復雜軟件系統架構層上的設計,介紹目前通用的軟件系統結構、設計技術以及實現這些結構的模型、表述方法等。這兩門課程對于軟件工程碩士應該至少必修一門。除了這兩門課程,其他軟件工程類的課程包括了設計模式、軟件測試、語言類課程如J2EE、.NET等等,學生可根據自己的實際情況進行選修。
5.2開設實踐教學
針對該課程組,我們開設了實踐教學環節,采用做中學理念,由指導教師(可以由助教擔任)根據事先確定的主題,選用具體工具講述如何使用該工具完成項目開發的某具體環節,工具涵蓋了項目管理、架構設計文檔化以及測試等軟件項目開發的主要方面。
對于軟件工具的選擇,有兩種思路。一種方法是對軟件工程的不同環節分別選擇不同工具,例如項目管理選Project、開發文檔化選Rational、測試再選別的工具這樣來做,但結構分散,不利于整體化考慮。另一種是采用套件,完成項目開發全程的所有操作,目前我們選擇了兩種套件,一是微軟的VSTS,該套件和微軟的Visual Studio開發平臺綁定,適合學習.net開發框架的同學;另一種是IBM的RSA,該套件和Eclipse開發平臺綁定,適合選擇開源J2EE開發框架的同學。
5.3強化工程實踐
大多數的軟件學院目前都開設了專門的工程實踐環節,但實際的效果并不盡如人意。因此我們將工程實踐環節也納入到開放式學習體系中,以前面所說的理論以及實踐教學環節來指導學生更好地高質量完成整個工程實踐。
從教學方法上,工程實踐應盡可能地貼近現實項目,除了常見的軟件工程文檔,我們還要求學生提交過程管理類文檔(軟件開發合同、會議記錄、工作日程記錄、合同執行報告:財務報告和開發過程報告、個人總結、小組總結等)。
從技術上,學生可以自由選題,也可參考工程實踐題庫中的選題。選題涉及所有領域課程包含的內容。要求學生必須采用實踐教學環節中介紹的工具全程介入項目開發的各個階段。學院設立專門的工程實踐網站提供學生選題及交流,以及指導教師的監督。
從教學形式上,則注重如何實現應用型軟件人才的核心能力分析與培養,要求學生運用職業實踐子知識體系中的相應內容,鍛煉學生的口頭表達能力、書面表達能力等。通過學生的開題演講、采用各種工具完成相應的項目文檔、結題答辯等環節來實現學生職業素質的培養。
從實踐效果評價上,我們制定了一系列的成績考核方法、管理考核信息、分析考核結果、評價教學質量等措施,實現完整的考核體系。
6結論
軟件工程專業學生的培養,在學科教育與培養面向市場需求的人才方面有著事實上的矛盾。軟件學院現有的實踐教學體系存在著專業課程設置定位不準確、課程實驗師資不足、實驗教學內容質量不高、實驗指導和管理落后等問題。根據軟件工程專業教學所面臨的挑戰,在充分調研IEEE SWEBOK和CC2004SE知識體系的基礎上,針對軟件學院的工程碩士,我們提出了軟件工程碩士開放式教學體系的建設,圍繞專業培養目標,結合學生的工程實踐,引入課程組的概念,制定了一套較為完整的開放式實踐教學實施計劃。
參考文獻 :
[1] Curriculum Guidelines for Undergraduate Degree Programs in Software Engineering [EB/OL]. [2004-08-25]. http://sites.computer.org/ccse/SE2004Volume.pdf.
[2] 翁敬農,劉云. 北航軟件學院本科生實踐教學體系的研究與實踐[J]. 計算機教育,2007(11).
[3] 王移芝,林艷琴.“計算機基礎課程”實踐教學體系的研究與實踐[J]. 實踐教學,2008(8).
[4] 謝芳清,閆大順. 計算機工程專業實踐教學體系的研究[J]. 中國科技信息,2008(9).
[5] 王浩,胡學鋼,侯整風,等. 計算機科學與技術專業實踐教學體系的研究與建設[J]. 計算機教育,2007(11).
[6] 王志英. 計算機科學與技術專業實踐教學體系研究[J]. 計算機教育,2008(3).
[7] 董瑋,邱建華,楊英鵬,等. 培養應用型軟件人才的實踐教學體系的研究與實踐[J]. 計算機教育,2008(10).