摘要:本文分析了《軟件工程》的理論教學和實踐教學過程中存在的問題,并結合教學的實際情況和現實需要,設計出了集綜合性、理論性、實踐性于一體的該課程教學體系。并強調了任務驅動、案例教學、基于知識點的教學法在該課程組織教學中的運用。
關鍵詞:教學設計案例教學知識點教學任務驅動
中圖分類號:G420文獻標識碼:A文章編號:1674-098X(2011)03(a)-0162-01
1 引言
傳統的軟件工程課程主要講授軟件工程的基本原理,以及軟件生存周期中各階段的任務、過程、方法和工具。我們在授課過程中發現學生普遍認為該課程內容抽象,難于理解和接受。主要原因是軟件工程的理論性、綜合性比較強,而大部分教材的重點在于闡述一般原理,對于如何基于這些原理指導實踐闡述的不夠。另外,軟件工程和其它實驗性較強的課程(例如,程序設計)相比較,實踐教學的開展比較困難。因為軟件生命周期的各階段是相互銜接的,一個階段的成果是下一階段的工作基礎,每個階段都不是獨立的,很難在每個階段布置不相關的實驗內容。傳統的軟件工程教材及教學方法已經越來越不適應當前教學需要,必須對軟件工程的教學內容和教學方法手段進行改革。
2 軟件工程課程建設的依據
OOSD是當前軟件開發中先進的、主流方法。在ACM CC2001草案中,軟件工程課程中把OOSD放在十分重要的位置,課程中的核心內容都強調OOSD的實現原理、技術、方法。ACM CC2001草案中列出了軟件工程的七大核心專題,即:(1)軟件過程和軟件生命期模型;(2)需求分析;(3)軟件設計(強調OOSA、OOSD方法);(4)測試和評估(除強調單元測試、集成測試、驗收測試和系統測試外,強調面向對象的測試方法);(5)軟件進化(強調可維護軟件的特征、軟件成熟度、軟件重構、軟件重用等);(6)軟件項目管理(強調開發人員的組織、項目進度、軟件評估、項目風險、軟件質量保證、軟件配置管理、項目管理工具等);(7)軟件工具和環境(重點在編程環境、需求分析建模工具、測試工具、配置管理工具、工具集成機制等)。
從中可以看出,軟件工程的教學目的是指通過理論教學和實踐教學,使學生進一步理解和掌握軟件開發模型、軟件生命周期、軟件過程等理論,培養學生按照軟件工程的原理、方法、技術、標準和規范,進行軟件開發的能力,培養學生的團隊合作意識和良好溝通能力,培養學生對技術文檔的編寫能力,提高學生軟件工程的綜合能力和軟件項目的管理能力。
3 教學設計
3.1 課堂教學設計
課堂教學內容以軟件工程中涉及到的主要知識點為主線,采用基于知識點和案例教學(我們以學生比較熟悉的圖書管理系統為教學案例)為主要教學方法,以任務驅動的方式展開組織教學。同時穿插講解UML建模與分析設計方法。注重理論聯系實際。例如:軟件工程概述單元的知識點有軟件危機;軟件工程概念;過程模型;統一過程;敏捷過程;統一建模語言UML,主要講解軟件過程模型及其優缺點,并講解各階段的CASE工具;需求分析與用例建模單元的知識點有:項目計劃、可行性研究、需求分析任務(起始,需求獲取與導出,需求精化,協商,規格說明,需求評審與確認,需求管理)、需求分析方法(總體分析,建立數據模型,建立用例模型,建立對象模型,建立動態模型)、需求規格說明書(格式規范,案例),主要講解(1)案例以《圖書管理系統》為例,給出項目背景及項目目標,要求學生在后續課堂實驗中陸續完成相關任務,并提交相關階段性成果,(2)將學生分成5~6人的小組,并指定小組長,(3)提交各階段成果前要求各小組組織討論并由組長報告,由教師結合實際給出點評意見;軟件設計單元的知識點有:設計工程(設計過程和設計質量,設計模型,基于模式的軟件設計)、體系結構設計(軟件體系結構,數據設計,體系結構風格與模式,體系結構設計,評估可選的體系結構,映射數據流到軟件體系結構)、構件級設計(構件,設計基于類的構件,實施構件級設計)、用戶界面設計(黃金規則,用戶界面分析與設計,界面分析,界面設計步驟,設計評估),補充講解面向對象的軟件設計模式、UML(用例圖、活動圖、類圖、順序圖、狀態圖、構件圖、包圖、部署圖)、界面設計工具等內容,便于學生利用CASE工具深度分析與設計系統;系統實現單元的知識點有:程序設計語言、軟件編碼規范、軟件代碼審查;系統測試單元的知識點有:軟件測試策略、實用測試策略(傳統軟件測試策略面向對象軟件的測試策略)、系統測試(單元測試,確認測試,系統測試,調試技術)、測試技術(軟件測試基礎,白盒測試,墨盒測試,面向對象測試類級可應用的測試,類間可應用的測試),是基于知識點進行講解,主要講解如何設計測試用例、如何實施軟件測試及測試工具的使用等。
3.2 實踐教學設計
軟件工程和實際的應用軟件開發緊密相關,軟件工程理論是實踐經驗的總結,同時它又指導軟件開發實踐。為了改善教學效果,讓學生理解并感受到軟件工程理論從實踐中來又到實踐中去的思想,更好地掌握軟件工程理論,我們采用課堂實驗+綜合設計的模式組織實踐教學(10次實驗+1周綜合設計)。按照“軟件工程”理論課的進度,將不同階段的任務分解為10次實驗,實驗的內容包括工具的學習和軟件工程方法的掌握及每個階段的文檔的編寫。最后一周分組(每組5~6人并指定組長)完成一個小規模的軟件開發全過程,目的在于培養團隊精神、合作意識及學生對全過程的把握能力。
結合軟件工程課程的特點,課堂實驗題目仍使用《圖書管理系統》,通過一個實例的開發,使學生理解并掌握軟件開發各個階段的內容及提交的文檔,并熟悉UML建模工具的使用,培養他們的創新意識和獨立思考的能力。
4 結語
在從事《軟件工程》教學的過程中,筆者結合軟件開發項目實際,對教材進行了大量的處理,形成了集理論與實踐并舉的《軟件工程》課程體系,并進行了基于知識點教學和案例教學相結合的嘗試,取得了比較好的實踐效果。但是在后續的工作中還有一些問題需要進一步深化和探討。例如如何讓學生體會項目管理、軟件維護等問題,有待我們進一步完善。
參考文獻
[1] 竇萬峰.軟件工程方法與實踐[M].北京:機械工業出版社,2009.
[2] 呂云翔,等.軟件工程課程設計[M].北京:機械工業出版社,2009.
[3] 刁成嘉.UML系統建模與分析設計[M].北京:機械工業出版社,2009.