《軟件工程》課程教學大綱
課程類型: 必修課 課程代碼: 課程學時: 64 學分: 4
適用專業:計算機科學與技術、軟件工程、信息與計算科學等(師范/非師范)等本科專業
開課時間: 三 年級 1或2 學期 開課單位: 計算機科學學院
大綱執筆人: 謝贊福 大綱審定人:
《軟件工程》是計算機科學與技術等專業教學計劃中一門綜合性和實踐性很強的核心課程。本課程的目的與任務主要是講授軟件開發的原理、方法及過程,使學生了解和掌握開發軟件應遵循的流程、準則、標準和規范, 了解和掌握開發軟件的最新技術和工具,培養學生的軟件分析能力和實際動手能力,學會用工程化的方法開發軟件,為今后更深入地學習和從事軟件工程實踐打下良好的基礎。
一、教學目的與要求
基本知識:軟件與軟件工程,生存周期與軟件開發模式,結構化分析、設計與編碼,面向對象分析、設計與編碼,軟件開發環境與開發工具,軟件的評審、測試與維護,項目計劃與項目管理。
基本要求:了解軟件項目開發和維護的一般過程,了解軟件開發的傳統方法、最新方法以及軟件工程領域的發展方向,能用軟件工程的方法參與軟件項目的分析、設計、實現和維護,能按軟件工程規范編寫軟件文檔。
二、教學重點與難點
教學重點:軟件開發各階段的目標、任務、特點和步驟,結構化系統分析、系統設計、系統實現和系統維護,面向對象的分析和建模、面向對象設計、面向對象的實現過程。
教學難點:軟件需求分析,軟件測試。
三、教學方法與手段
本課程概念較多,因此教學形式以講授為主。對課程中的關鍵性概念、設計思想方面的問題輔以課堂討論的形式,作業應盡可能在CASE環境下完成,課程實訓以小組為單位,各小組應首先構建出基本體現主流軟件技術的開發環境,并嚴格遵循軟件工程規范進行軟件項目的分析、設計、實現、維護和編寫軟件文檔。
四、教學內容、目標與學時分配
本課程采用多媒體教學形式,用可視化方法演繹概念,通過實際操作講解軟件開發環境和開發過程。
具體的教學過程和學時分配如下:
(一)軟件工程概述(6學時)
1、教學內容
(1)軟件的概念:軟件的發展、軟件的定義、軟件的特點、軟件的種類。
(2)軟件工程的概念:軟件危機與軟件工程的定義、軟件工程的目標、軟件工程的原則。
(3)軟件生存周期與軟件開發模型:瀑布模型、原型模型、螺旋模型、面向對象與組件模型、 混合模型
2、教學要求
了解:軟件生命周期及軟件開發的各個模型。
理解:產生軟件危機的原因,軟件工程方法的重要意義。
掌握:三類軟件開發方法:面向數據流方法、面向數據結構方法和面向對象方法。
(二)軟件計劃(3學時)
1、教學內容
(1)可行性研究的任務
(2)可行性研究的步驟
(3)系統流程圖
(4)成本/效益分析
2、教學要求
了解:可行性分析的基礎和主要任務。
掌握:可行性研究的方法和步驟。
(三)軟件需求分析(5學時)
1、教學內容
(1)需求分析的任務與步驟:需求分析的任務、 需求分析的步驟、 需求分析的原則
(2)需求分析方法:面向數據流的分析方法、面向數據結構的分析方法
(3)需求規格說明與評審
2、教學要求:
了解:需求分析的目標、任務和步驟。
理解:需求分析文檔在軟件工程中的意義,需求分析階段評審和復審的重要性。
掌握:結構化需求分析的方法,能正確使用數據流圖、數據詞典和加工說明等需求描述手段,編寫需求分析文檔。
(四)概要設計(5學時)
1、教學內容
(1)軟件設計的原則:模塊化、抽象、信息隱藏和局部化、模塊獨立性。
(2)概要設計的任務與步驟:概要設計的任務、概要設計的步驟。
(3)概要設計的方法:面向數據流的設計方法、面向數據結構的設計方法。
(4)概要設計文檔與評審。
2、教學要求
了解:軟件設計的概念與原則。
理解:軟件設計原則和設計文檔在軟件工程中的意義,概要設計階段評審和復審的重要性。
掌握:面向數據流的設計方法、面向數據結構的設計方法,編寫概要設計文檔
(五)詳細設計(5學時)
1、教學內容
(1)詳細設計的任務與原則:詳細設計的任務、詳細設計的原則。
(2)詳細設計的方法:程序流程圖PFC、N-S圖、PAD圖、HIPO圖、過程設計語言PDL。
(3)詳細設計規格說明與評審。
2、教學要求
了解:詳細設計的目標、任務、原則與步驟,詳細設計方法的選擇。
理解:詳細設計文檔在軟件工程中的意義,詳細設計階段評審和復審的重要性。
掌握:詳細設計的方法,詳細設計文檔編寫,詳細設計的過程描述工具(程序流程圖、盒圖、PAD圖和HIPO圖、過程設計語言PDL)的使用。
(六)面向對象的分析與設計方法(8學時)
1、教學內容
(1)面向對象方法的基本概念和特征。
(2)面向對象分析:確定對象、確定屬性、定義操作、對象間通信。
(3)面向對象設計:面向對象設計概念、面向對象設計方法、程序構件及接口、細節設計。
(4)UML方法:UML的發展與特點、UML建模、利用UML開發軟件的過程。
(5)面向對象實例分析與設計。
2、教學要求
了解:面向對象的基本概念和特征,對象、類、類的層次結構,方法和消息的實質,對象模型、動態模型、功能模型的元素、結構和構造方法。
理解:面向對象分析的設計的方法,面向對象方法對軟件工程的重要意義。
掌握:UML建模的方法。
(七)實現(編程) (4學時)
1、教學內容
(1)程序設計語言:程序設計語言分類、程序設計語言特點、程序設計語言選擇
(2)編程風格
(3)編程效率
(4)編程安全
(5)面向對象編程技術
2、教學要求
了解:程序設計的目標與任務、編程使用的程序設計語言的特性以及程序設計風格的重要性。
理解:編程應當遵循的原則以及面向對象編程的特點。
掌握:兩種以上主要結構化編程語言和面向對象編程語言。
(八)軟件測試(6學時)
1、教學內容
(1)結構化的軟件測試:軟件測試的概念和原則、測試的概念、測試的原則、測試的方法
(2)軟件測試技術:白盒測試、黑盒測試
(3)軟件測試的步驟:單元測試、綜合測試、確認測試、系統測試
(4)糾錯技術
(5)面向對象的軟件測試
(6)軟件測試計劃與測試分析報告
2、教學要求
了解:軟件測試的目標、原則以及測試方案的建立和測試過程。
掌握:軟件測試的方法和步驟,軟件排錯和軟件可靠性的評測方法。
(九)軟件維護(5學時)
1、教學內容
(1)軟件維護的定義、分類、特點
(2)軟件維護步驟及組織
(3)軟件的可維護性
(4)軟件維護的副作用
(5)逆向工程和再生工程
2、教學要求
了解:軟件維護過程
(十)軟件質量與質量保證(4學時)
1、教學內容
(1)軟件質量的定義
(2)影響軟件質量的因素
(3)軟件質量保證策略
(4)軟件質量保證活動
(5)軟件質量保證標準
(6)軟件評審
2、教學要求
了解:軟件維護過程
掌握:軟件質量保證的概念、策略和方法,軟件評審或測試的方法和步驟。
(十一)項目計劃與管理(4學時)
1、教學內容
(1)軟件項目特點、管理的特殊性及軟件管理功能
(2)確定項目的工作要求
(3)確定軟硬件資源
(4)人員的計劃及組織
(5)成本估算及控制
(6)進度計劃
(7)軟件配置管理
(8)軟件管理方案
2、教學要求
了解:項目計劃與管理的基本內容
(十二)新方法及技術專題(9學時)
五、實踐教學內容要求與說明
1、課程實訓的內容和要求
課程實訓要求學生開發一個實際可運行的系統。整個開發過程按照軟件工程學的觀點,從系統需求分析開始,進行需求分析,系統設計,程序設計和測試,并編制出各階段必要的文檔。在編寫文檔時,必須嚴格遵照軟件工程規范,最后完成和提交四個軟件文檔:需求規格說明書、概要設計說明書、詳細設計說明書和用戶手冊。
課程實訓以小組為單位,構建一個能體現當前軟件開發的主流技術的實際軟件運行環境,實訓過程盡可能在CASE環境下進行。
2、課程實訓的時間安排
課程實訓安排1~2周時間(分散或集中)。
具體實踐教學內容及要求,詳見相應的實踐教學大綱。
六、考試范圍與題型
1、考試范圍與分數比例
本課程采用實踐操作與筆試考核相結合的方式,操作以課程實訓內容為主,占總成績的30%-50%,筆試采用閉卷形式,主要考核對概念的理解和軟件分析能力,筆試占總成績的70%。-50%
2、考試題型與分數比例
客觀題60%-70%,主觀題(設計、創意等)占40%-30%
七、教材與參考資料
1、教材
教材是課程體系系統性和完整性的依據。教材應概念清晰、便于自學,名詞術語應符合國家通用標準,要突出重點、兼顧一般,教材應相對穩定。
參考書應能反映當前最新技術與方向,是教學內容的補充和輔助材料。
推薦教材:
(1) 鄭人杰,等,《軟件工程概論》,機械工業出版社,2013年
(2)江開耀等,《軟件工程》,西安電子科技大學出版社,2003年第1版
2、參考資料
(1)周之英. 《現代軟件工程》,科學出版社,2000版。
(2) 鄭人杰等《實用軟件工程》,清華大學出版社,1997版。
(3)齊治昌等 《軟件工程》,高等教育出版社,2004年(第二版)
(4)王慧芳等,《軟件工程》,漸江大學出版社,2006年版