

摘要:分析國內高校在軟件工程課程設置上的側重點以及軟件職業技術資格考試內容,提出以SWEBOK V3中知識域的要求為課程內容基礎框架,基于畢業生的產出能力導向進行教學大綱、知識內容和考核方式改革,通過監控學生成績對課程教學效果進行分析和長期持續改進。
關鍵詞:產出導向;軟件工程;課程改革
1.背景
作為軟件工程專業的主要核心課程,軟件工程課程一直很受關注,圍繞著課程教學所進行的教學改革也比較多。目前,正在各高校進行的工程教育專業認證是我國為推進工程教育改革、提高工程教育質量、建立工程教育與工程師制度銜接、提高工程教育對產業發展的適應性和提高我國工程技術人才的國際競爭力所做的一項合格性評價,在給高校工程教育帶來發展契機的同時也提出了對教育理念、教學過程管理、教學內容更新換代等方面的挑戰和調整要求。
2.課程現狀
目前,國內高校軟件工程課程使用的教材主要有張海藩《軟件工程導論》、鄭人杰《實用軟件工程》和國外翻譯版《軟件工程》。教學內容主要有軟件工程概況、可行性研究、需求工程、傳統的軟件設計、面向對象設計、編碼、軟件質量與保證,項目計劃與管理、軟件開發工具與環境等。軟件工程是一門強調實踐的綜合性工程課程,各高校在具體課程安排上各有側重。
例如,復旦大學(54學時)的課程重點首先是結構化分析與設計、面向對象的分析與設計,這兩部分內容超過了1/4總學時;其次是軟件測試和軟件項目管理,分別約占總學時的1/6;課程特色在人機界面設計和Web工程上。清華大學(48學時)把面向對象方法UML和RUP作為重點,占總學時的近1/3;其次是結構化分析與設計,占總學時的1/4;軟件過程及軟件工程管理是另一重點,通過學生合作小組或參與項目組進行軟件開發,在實踐中理解軟件過程的意義和作用,培養軟件項目管理的意識和能力。浙江大學(理論32學時、實踐32學時)重點講述軟件工程的常用方法,包括分析模型的建立、總體設計、軟件測試等,其特色是網絡應用軟件的開發方法和實踐,通過從需求單位抽取出的大型模擬案例進行項目開發,鍛煉學生的系統設計、開發、談判、溝通、寫作、團隊合作等能力,培養學生的工程職業素養。
通過對國內幾所高校課程教學特點的分析,我們發現目前國內高校軟件工程課程主要以理論知識教學為主,雖然有的院校做到了實踐與理論并重(1:1),但是大多數院校還是以理論知識教學為主。課堂教學以講述概念I生基礎知識為主,課程的內容主要有面向對象的分析設計、軟件測試和項目管理,對新知識、新技術和新工具介紹較少,目前軟件工程課程更像是一門導論課程。
3.面臨問題分析
3.1工程專業畢業要求對課程的影響
工程專業畢業生應具備足夠的溝通能力、合作能力、專業知識技能、終身學習能力及人格、國際視野和責任感等能力素質,這些素質要求可以保證學生畢業進入職場前具備基本的職業素養和從業能力。產出導向是工程教育認證中重點關注的部分,課程體系設置、師資隊伍建設和外部條件配備均以有利于學生達到培養目標和畢業要求為導向。畢業要求反作用于課程設置,要求課程的內容建設、教學方法改進、過程監督以及成績考核都應圍繞這一要求,細化產出導向的要求和能力指標,設置相應知識點并調整各自的重要性比例,從知識點授課和實踐能力兩方面落實能力培養,達到畢業產出的要求。
3.2與軟件工程課程相關的專業技術資格考試分析
工程教育認證是將來國家注冊工程師制度的基礎和重要環節,目前我國已經在土建、環境、核安全等領域開展試點工作,實現了對工程人才的社會評價及國際間人才資格互認。在我國,與軟件工程課程相關的全國性考試還有計算機技術與軟件專業技術資格(水平)考試,由國家人力資源和社會保障部、工業和信息化部領導,對全國計算機與軟件專業技術人員進行職業資格、專業技術資格認定和專業技術水平測試。筆者對與軟件工程課程相關的資格考試內容進行解析,以軟件設計師為例進行重點分析,見表1。
從表1分析內容可見,軟件工程基礎考試內容與課程教學大綱知識點一致,在信息安全知識和標準化知識上給出新增內容,這與SWEBOK2013知識體系一致。考試科目“軟件設計”以上述知識為基礎,考查工程師的實際工作能力。在最近幾次考試中有考題涉及數據流圖、UML圖的應用分析,與課程授課側重點也相符,更側重于實例的應用能力,需要實踐積累與運用。
3.3SWEBOK V3和課程對應關系分析
軟件工程專業的課程體系是基于軟件工程知識體系SWEBOK(software engineerin~body ofknowledge)、計算機教程軟件工程卷(computingcurriculum-software engineering,CCSE)及其中的軟件工程教育知識體(soft engineering educationknowledge,SEEK)而建立起來的。2014年,IEEE計算機協會發布了軟件工程知識體系指南第3版,該版將原來的10個知識域擴展到15個,與現有軟件工程課程大綱的比較結果見表2,其中有分布到其他課程中的知識點未加以說明。新增和修改的相關知識點需要在軟件工程課程教學和實踐環節落實。
4.基于產出導向的軟件工程課程改革與建設
4.1課程教學目標修訂
基于上述分析,我們進行基于產出導向的軟件工程課程改革和建設。課程教學以使學生掌握軟件工程的理論基礎知識和基本工作原理,培養學生具有工程問題需求分析的能力以及綜合運用計算機科學和工程技術完成系統設計、實施和維護的能力為目標。課程的主要任務是使學生掌握軟件開發過程的理論、方法、技術標準以及計算機輔助工程和環境等知識并通過實驗靈活應用;掌握軟件工程的基本概念、軟件開發模型、開發過程的管理和質量控制;掌握需求分析的任務與原則,傳統面向對象需求分析方法、設計過程與一般l生概念以及文檔的編寫;掌握程序設計方法,增強編程實踐訓練,掌握軟件測試技術與糾錯性軟件維護方法;掌握UML建模技術,能在軟件工程過程中使用常用建模工具,能運用建模方法解決工程實際問題;了解專業開發活動涉及的標準、方針、政策和法律、法規,能正確認識實施軟件工程對客觀世界和人類社會的影響。
4.2教學內容和教學方法改進
根據畢業產出要求及SWEBOK V3新修改版,我們對教學內容作如下調整:①在64學時課時中,將理論與實踐課時設定為1:1;②在需求分析和設計部分新增人機界面和系統安全知識;③獨立介紹軟件復用部分知識,結合軟件設計模式討論軟件可復用性;④在軟件質量保證和項目管理部分新增軟件產品標準和行業標準、國內外法律和法規;⑤在軟件維護部分新增軟件退役和遷移。
每一章都提供參考資料,教師引導學生有選擇地閱讀其中的部分內容,根據課程內容的進展情況布置相應的任務、思考題和作業,引導學生通過Internet或其他途徑查閱相關資料以拓寬知識面,了解軟件工程領域最新實踐研究成果。為了使學生建立起軟件開發和維護的工程化意識,較系統地掌握按照工程化思想開發與維護軟件的方法和技術,教師需在教學中培養學生從軟件企業開發和維護實際大中型軟件的角度出發,結合成本、風險、效益、進度、過程、質量等多種因素系統地分析軟件開發和維護過程中的問題,突破以往要求完成某一給定知識點作業的單一思考問題局限。此外,構造實驗環境用于課內工程項目實踐,通過模擬項目的開發,鍛煉學生的系統設計和開發能力、軟件工具的使用能力、語言交流能力、文檔編寫能力以及團隊合作能力,培養學生的職業素養。項目實踐引導需貫穿理論知識學習始終。
4.3考核方式與持續改進并行
課程強調過程考核,總成績分為平時和期末兩部分,分別占50%。平時成績主要考核學生的課堂表現、作業、實驗能力和實驗報告撰寫情況等。其中,課堂表現主要從學生上課是否專心聽講、回答教師提問是否正確以及分組討論是否積極、正確、有獨特見解等進行考核,以提高課堂教學效果和運用工程基礎知識及本專業基本理論解決實際工程問題的能力;作業方面重點考核學生掌握軟件工程理論基礎知識和基本工作原理的程度;課內實踐教學環節重點考核學生的工程問題需求分析和設計能力,綜合運用計算機科學和工程技術完成系統的分析和設計并對設計文檔進行審查的能力;期末考試將按照課程教學目標全面考核學生課程學習的效果,選取一定數目的學生成績為樣本,計算該課程對畢業要求貢獻的達成度并通過建立閥值定量評估課程教學質量,通過不斷提出持續的改進意見并實施,切實加大課程對提高畢業產出能力的貢獻。
5.結語
筆者基于畢業生產出能力對課程教學目標進行了修訂,完善了軟件工程課程的教學內容和知識結構,對教學方法進行了梳理,最后通過改變考核方式對課程進行長期監控和調整,實現課程的持續改進。下一步工作將重點關注課程中學生自主能力導引體系和畢業生能力評價反饋機制的構建。