《軟件工程》是軟件工程專業的專業必修課;計算機科學與技術、網絡工程專業的專業限選課。本課程主要介紹軟件工程的概念、技術和方法,包括軟件的開發模型、可行性分析、需求分析、軟件設計、編碼、測試、維護;面向數據流的分析與設計方法、面向對象的分析與設計方法;并對軟件重用、快速原型技術作簡要的介紹。旨在培養學生分析與設計實際軟件系統的能力及具有熟練使用各類流行軟件技術解決實際問題的能力和控制軟件質量的能力。
課程團隊教學本著以學生為中心,以項目驅動,學生通過項目在做中學,掌握軟件工程的基本概念和原則,掌握工程化的方法高效地開發高質量軟件的初步能力,以及項目管理的初步能力,同時提升團隊合作的能力。
要求掌握軟件工程的基本概念和原則,能運用軟件工程的基本原理、模型、方法和過程開發簡單的應用軟件,增強軟件開發的工程化和規范化意識,提高高效率、高質量開發軟件的能力。
《 軟件工程》課程教學大綱
課程名稱(中文): 軟件工程
課程名稱(英文): Software Engineering
課程編號: 112059
課程類別: 理論課程 (理論課程、實驗課程(獨立實驗)、實習實訓類實踐課程)
課程性質: 必修課 (必修課、選修課)
學時學分:總學時 56 學分 3 其中實踐學時 16
開出時間: 二 年級 第2 學期
開課單位: 計算機科學與軟件學院、大數據學院
適用專業: 軟件工程
先修課程:C程序設計、計算機導論、面向對象的程序設計、算法與數據結構、數據庫系統原理
執 筆: 熊芳敏
校 對 人: 岑宇森
審 核:
一、課程的教學目標和教學要求
(一)教學目標:
通過對《軟件工程》課程進行課程思政的實踐與改革,使學生在加強社會主義核心價值觀的同時,理解掌握軟件項目開發與維護的一般過程,掌握一些常用的軟件開發理論、方法、技術與標準以及計算機輔助軟件開發工具和環境,增強軟件開發的工程化和規范化意識,培養高效率、高質量開發軟件的能力,能夠綜合運用專業知識、方法和技術,設計針對計算機應用的工程問題的解決方案,以及滿足特定需求的應用系統,并能夠在設計環節中體現創新意識,考慮社會、健康、安全、法律、文化以及環境等因素。具備以下核心能力
核心能力1:人文社會科學素養、良好職業規范;
核心能力4:算法設計與程序實現能力;
核心能力5:計算機應用系統設計與開發能力;
核心能力7:團隊合作與溝通能力。
(二)教學要求:
《軟件工程》課程的教學要求:緊密結合當前軟件工程的理論與實踐,全面、系統地反映軟件工程課程的全貌,講授軟件工程的基本概念,開發模型,開發管理,需求分析和軟件設計的方法與技術以及軟件實現和維護,力求學生在實際的軟件開發過程中能夠靈活運用軟件工程的技術和方法;課程思政與專業教學同向同行,傳授知識的同時加強學生的社會主義核心價值觀,使之具有良好的職業道德、敬業精神和嚴格的自律意識,具有行業所需的工程能力、質量意識、團隊精神、創新精神,具有較高的思想政治素質和道德品質,較強的法治、誠信和行業政策法規意識。
二、教學時數分配
章節 | 教學內容 | 教學時數 |
1 | 軟件工程學概述 | 4 |
2 | 可行性研究 | 2 |
3 | 需求分析-SA | 12(8理論+4實驗) |
4 | 總體設計-SD | 8(4理論+4實驗) |
5 | 詳細設計 | 4 |
6 | 編碼 | 2 |
7 | 軟件測試 | 4 |
8 | 面向對象分析 | 8(4理論+4實驗) |
9 | 面向對象設計與實現 | 8(4理論+4實驗) |
10 | 軟件維護 | 2 |
11 | 項目管理 | 2 |
合計 | 56 |
三、主要教學內容與教學方法
第一章 軟件工程學概述(2學時)
【支撐的課程目標】核心能力1:人文社會科學素養、良好職業規范
【教學要求】
1.掌握軟件及軟件危機的概念;
2.掌握軟件工程及軟件生存周期的概念;
3.掌握幾種典型的軟件開發模型的定義及其特點;
4.了解CASE工具及環境的概念。
【教學重點】軟件、軟件危機及軟件生存周期的概念,開發模型的定義及其特點
【教學難點】開發模型的定義及其特點
【教學方法】多媒體課堂講授、提問法
【教學基本內容】
(1)軟件的概念
(2)軟件工程的概念
(3)軟件生存周期
(4)軟件開發模型
(5)CASE工具及環境
第二章 可行性分析(2學時)
【支撐的課程目標】
核心能力4:算法設計與程序實現能力;
核心能力5:計算機應用系統設計與開發能力;
核心能力7:團隊合作與溝通能力。
【教學要求】
1. 了解可行性研究的任務
2. 了解可行性研究過程、掌握項目可行性論證的概念和方法
3. 學習系統流程圖
4. 熟練掌握數據字典的定義方法
【教學重點】可行性論證、數據字典的定義
【教學難點】可行性論證、數據字典的定義
【教學方法】案例教學法、講授法
【教學基本內容】
1. 可行性研究的任務
2. 可行性研究過程
3. 系統流程圖
4. 初識數據字典
第三章 需求分析-SA(12學時)
【支撐的課程目標】核心能力7
【教學要求】
1. 理解軟件需求分析階段的主要任務及其重要性;
2. 掌握軟件需求分析的主要過程及需求評審的概念;
3. 理解掌握獲取軟件需求的基本技術手段及方法;
4. 掌握數據流圖、ER圖、狀態轉化圖;
5. 掌握數據字典的應用;
6. 掌握軟件需求規格說明書的基本格式。
【教學重點】
1. 獲取初步需求的技術;
2. 需求建模、問題抽象、問題分解和需求建模的概念
3. 基于數據流圖進行需求分析的基本過程
4. ER圖、狀態轉化圖
【教學難點】獲取初步需求的方法、基于數據流圖進行需求分析
【教學方法】案例教學法、演示法、做實驗
【教學基本內容】
1. 軟件需求分析階段的主要任務及其重要性;
2. 軟件需求分析的主要過程;
3. 獲取軟件需求的基本技術手段及方法;
4. 需求建模:數據流圖、ER圖、狀態轉化圖,理解數據字典的作用,并掌握數據字典中數據條目的定義方法;
5. 需求規格說明與評審。
第四章 總體設計-SD(8學時)
【支撐的課程目標】
核心能力4:算法設計與程序實現能力;
核心能力5:計算機應用系統設計與開發能力;
【教學要求】
1.理解軟件設計的主要任務;
2.理解掌握內聚度、耦合度、模塊化與信息隱藏的概念;
3.啟發規則
4.面向數據流的設計方法
5.理解掌握軟件設計的常用技術和工具;
6.了解軟件設計規格說明書的主要框架結構及設計評審。
【教學重點】
1.啟發規則
2.面向數據流的設計方法
3.軟件設計中常用的技術和工具
【教學難點】軟件設計中常用的技術和工具,特別是面向數據流的設計方法
【教學方法】:案例教學法、演示法、做實驗
【教學基本內容】
(1)軟件設計過程
(2)軟件設計原理
(3)啟發規則
(4)過程設計技術和工具
(5)面向數據流的設計方法
(5)設計規格說明與評審
第五章 詳細設計(4學時)
【支撐的課程目標】
核心能力4:算法設計與程序實現能力;
核心能力5:計算機應用系統設計與開發能力;
核心能力7:團隊合作與溝通能力。
【教學要求】
1. 掌握結構化程序設計
2. 了解并掌握人機界面設計的主要原則、人機界面設計的一般過程
3. 掌握程序復雜度定量度量方法
4. 掌握常用的幾種過程設計的工具
【教學重點】
人機界面設計、復雜度計算方法、判定表
【教學難點】人機界面設計、復雜度計算方法、
【教學方法】:案例教學法、演示法、做實驗
【教學基本內容】
(1) 結構化程序設計
(2) 人機界面設計的主要原則、人機界面設計的一般過程、人機界面標準
(3) 程序復雜度定量度量方法
(4) 常用的幾種過程設計的工具:程序流程圖、判定表、判定樹等。
第六章 編碼(2學時)
【支撐的課程目標】
核心能力4:算法設計與程序實現能力;
【教學要求】
1. 了解程序設計語言的演變發展過程;
2.理解項目開發時影響程序設計語言選擇的主要因素;
3.理解編寫程序時所需遵循的主要標準和原則;
4.理解程序設計支持環境及其相關概念。
【教學重點】編程準則與編程風格
【教學難點】編程準則與編程風格
【教學方法】案例教學法、演示法
【教學基本內容】
(1)程序設計語言
(3)編程標準
(4)編碼風格
第七章 軟件測試(4學時 )
【支撐的課程目標】
核心能力4:算法設計與程序實現能力;
核心能力5:計算機應用系統設計與開發能力;
核心能力7:團隊合作與溝通能力。
【教學要求】
1.掌握軟件測試的概念、目標及準則;
2.掌握軟件測試的基本步驟及其與軟件開發之間的關系;
3.掌握白盒測試的主要工作原理及基本路徑測試方法;
4.掌握黑盒測試的主要工作原理及幾種主要的黑盒測試方法;
5.理解掌握四個軟件測試步驟的主要任務及其常用的軟件測試方法;
6.理解掌握軟件排錯的實現過程及主要排錯方法;
7.了解軟件測試中的主要CASE工具。
8. 掌握軟件可靠性的概念
【教學重點】軟件測試中白盒和黑盒測試技術以及軟件測試策略
【教學難點】1.白盒和黑盒測試技術;2.軟件調試
【教學方法】:案例教學法、演示法、提問法
【教學基本內容】
(1)軟件測試基礎:概念、目標、準則等
(2)單元測試、集成測試、確認測試
(3)軟件測試策略
(4)白盒測試技術
(5)黑盒測試技術
(6)基于CASE工具的軟件測試和排錯
(7)軟件可靠性
第八章 面向對象分析(8學時)
【支撐的課程目標】
核心能力4:算法設計與程序實現能力;
核心能力5:計算機應用系統設計與開發能力;
核心能力7:團隊合作與溝通能力。
【教學要求】
1.理解掌握面向對象的主要概念及其思想;
2.掌握UML統一建模語言的主要圖形語言機制及其構造表示形式;
3.了解基于UML的軟件開發基本過程以及各階段的主要工作任務;
4.掌握基于UML的面向對象需求分析方法和實現過程。
【教學重點】基于UML的需求分析方法及其實現過程
【教學難點】基于UML的需求分析方法及其實現過程
【教學方法】:案例教學法、演示法、提問法
【教學基本內容】
(1)面向對象分析的概念和基本過程
(2)UML概述
(3)基于UML的需求分析,建立對象模型
(4)建立動態模型
(5)建立功能模型
第九章 面向對象設計(8學時)
【支撐的課程目標】
核心能力4:算法設計與程序實現能力;
核心能力5:計算機應用系統設計與開發能力;
核心能力7:團隊合作與溝通能力。
【教學要求】
1.理解掌握面向對象軟件設計的主要任務及其實現過程;
2.掌握面向對象設計的準則
3.理解軟件重用的三層含義
2.掌握UML統一建模語言中的圖形機制(順序圖、類圖、活動圖、狀態圖等)的表示及其在軟件設計建模(描述)中的應用;
3.掌握類圖的精化設計原則及其實現過程。
【教學重點】采用基于UML的面向對象設計方法將分析模型轉換為設計模型的步驟
【教學難點】采用基于UML的面向對象設計方法將分析模型轉換為設計模型的步驟
【教學方法】:案例教學法、演示法、提問法
【教學基本內容】
(1) 面向對象設計準則
(2) 啟發規則
(3) 軟件重用
(4) 系統分解
(5) 設計人機交互子系統、任務管理子系統、數據管理子系統
(6) 設計類中的服務、設計關聯
(7) 設計優化
第十章 軟件維護(2學時)
【支撐的課程目標】
核心能力4:算法設計與程序實現能力;
核心能力5:計算機應用系統設計與開發能力;
核心能力7:團隊合作與溝通能力。
【教學要求】
1.掌握軟件維護的定義和主要類型;
2.理解掌握軟件維護的一般實現過程;
3.了解軟件維護的主要特點。
4.了解軟件再工程過程
【教學重點】
軟件維護活動的主要類型
【教學難點】
軟件維護的主要實施過程
【教學方法】:多媒體講授演示法、提問法
【教學基本內容】
(1)軟件維護的定義、分類
(2)維護過程
(3)軟件的可維護性
(4)軟件再工程過程
第十一章 軟件項目管理(2學時)
【支撐的課程目標】
核心能力4:算法設計與程序實現能力;
核心能力5:計算機應用系統設計與開發能力;
核心能力7:團隊合作與溝通能力。
【教學要求】
1. 掌握估算軟件規模的方法
2. 了解幾種工作量估算的模型
3. 進度計劃
4. 了解并理解質量保證的措施
5. 掌握軟件配置管理及一般過程
【教學重點】估算軟件規模、進度計劃
【教學難點】進度計劃
【教學方法】:案例法、講授法
【教學基本內容】
(1) 估算軟件規模
(2) 工作量估算
(3) 進度計劃
(4) 質量保證
(5) 軟件配置管理
參考書目:
[1] 張海藩,牟永敏.《軟件工程導論》(第6版).北京:高等教育出版社,2013
[2] 呂云翔.軟件工程—理論與實踐(第2版).北京:人民郵電出版社,2018
[3] 張劍波,方芳,周順平.軟件工程過程:原理、方法與工具.北京:高等教育出版社,2019
[4] 鄭人杰,殷人昆,陶永雷.實用軟件工程(第二版).北京:清華大學出版社,1997《軟件工程—理論、方法與實踐》,孫家廣編著,高等教育出版社,2005
[5] 郭清宇,劉鳳華.實用軟件工程.北京:中國鐵道出版社, 2011
[6] 殷人昆等譯.實用面向對象軟件工程教程.北京:電子工業出版社, 1998
四、考核方式:
(一)考核方式對課程目標的達成情況:
考核學生算法設計與程序實現能力;
考核學生計算機應用系統設計與開發能力;
考核學生團隊合作與溝通能力。
(二)考核方式及具體要求
1.考核方式:閉卷考試+平時成績
2.總成績評定:總評成績=平時成績*10%+實驗成績30%+期末成績60%
3. 平時成績評定:平時成績=考勤*30%+作業60%+課堂表現10%
4.期末考試:
非疫情情況下都是線下閉卷考試。考核內容按教學大綱的內容進行,考察學生對軟件工程基本概念,開發模型,開發管理,需求分析和軟件設計的方法與技術以及軟件實現和維護的掌握程度,考察學生綜合應用知識及創新能力。