《軟件工程實用教程》按照典型的軟件開發過程來組織內容,旨在培養讀者具備軟件工程思想及實際軟件開發的能力。全書共12章,主要內容包括軟件工程與軟件過程、軟件需求分析與建模、軟件設計與建模、軟件編程與軟件測試以及軟件工程的其他相關內容,如軟件規模估算、進度計劃、人員組織、軟件開發風險管理等。
《軟件工程實用教程》可以作為普通高校計算機相關專業“軟件工程”課程的教材,也可以供學習軟件工程的讀者單獨使用(包括參加計算機等級考試或相關專業自學考試)參考。
《軟件工程實用教程》是高等院校計算機科學、軟件工程及相關專業“軟件工程”課程的理想教材,也可以供程序員、軟件測試工程師、系統工程師以及軟件項目經理等相關人員閱讀參考。
軟件工程是研究軟件開發和管理的一門工程科學,是計算機學科及相關專業的主干課程,也是軟件從業人員必不可少的專業知識。目前,軟件工程的理論在我國各企業和部門的軟件開發中得到了廣泛的應用,軟件工程課程也受到了各大專院校相關專業的重視,各種軟件工程理論教材也很多。
軟件工程是一門理論與實踐并重的課程。本書在講述軟件工程的基本概念、原理和方法的基礎上,詳細而全面地介紹了可以實際用于軟件開發實踐的各種技能。旨在使學生通過有限課時的學習后,不僅能對軟件工程的原理有所認識,而且能具備實際開發軟件的各種技能,比如熟練使用各種軟件工程工具,按照標準和規范編寫文檔等。
本書共分為12章,內容涉及軟件工程的基本原理和概念、軟件開發生命周期的各個階段、軟件工程管理的相關內容、如何使用各種自動化工具來輔助軟件開發的過程,以及課程設計。
本書與其他書的不同之處在于,除了講述必要的軟件工程理論之外,還通過實驗講述比較流行的軟件開發工具(如軟件繪圖工具Microsoft Visio、面向對象建模工具Rational Rose、軟件實現工具Visual Studio、軟件測試工具UnitTest、軟件項目管理工具Microsoft Project等)是如何應用于“小型網上書店系統”的。書中還講述了課程設計的指導,如怎樣進行項目選題、組建團隊、團隊工作方式和項目進度安排等。本書中所講述的“小型網上書店系統”是學生在做課程設計中可供模仿的一個項目。所有這些使得軟件工程的三要素——過程、方法和工具在本書中能夠充分地體現。
本書理論知識的教學安排建議如下:
軟件工程是研究軟件開發和管理的一門工程科學,是計算機學科及相關專業的主干課程,也是軟件從業人員必不可少的專業知識。目前,軟件工程的理論在我國各企業和部門的軟件開發中得到了廣泛的應用,軟件工程課程也受到了各大專院校相關專業的重視,各種軟件工程理論教材也很多。
軟件工程是一門理論與實踐并重的課程。本書在講述軟件工程的基本概念、原理和方法的基礎上,詳細而全面地介紹了可以實際用于軟件開發實踐的各種技能。旨在使學生通過有限課時的學習后,不僅能對軟件工程的原理有所認識,而且能具備實際開發軟件的各種技能,比如熟練使用各種軟件工程工具,按照標準和規范編寫文檔等。
本書共分為12章,內容涉及軟件工程的基本原理和概念、軟件開發生命周期的各個階段、軟件工程管理的相關內容、如何使用各種自動化工具來輔助軟件開發的過程,以及課程設計。
本書與其他書的不同之處在于,除了講述必要的軟件工程理論之外,還通過實驗講述比較流行的軟件開發工具(如軟件繪圖工具Microsoft Visio、面向對象建模工具Rational Rose、軟件實現工具Visual Studio、軟件測試工具UnitTest、軟件項目管理工具Microsoft Project等)是如何應用于“小型網上書店系統”的。書中還講述了課程設計的指導,如怎樣進行項目選題、組建團隊、團隊工作方式和項目進度安排等。本書中所講述的“小型網上書店系統”是學生在做課程設計中可供模仿的一個項目。所有這些使得軟件工程的三要素——過程、方法和工具在本書中能夠充分地體現。
本書理論知識的教學安排建議如下。
章節內容學時數
第1章軟件工程概述2~4
第2章軟件過程2
第3章可行性研究及需求分析2
第4章結構化需求分析2~4
第5章面向對象分析6~8
第6章軟件設計2~4
第7章結構化設計方法4~6
第8章面向對象設計2
第9章軟件編程1~2
第10章軟件測試概述2
第11章軟件測試方法與過程5~8
第12章軟件工程的其他相關內容2~4
建議先修課程:計算機導論、面向對象程序設計、數據結構、數據庫原理等。
建議理論教學時數:32~48學時。
建議實驗(實踐)教學時數:16~32學時。
教師可以按照自己對軟件工程的理解適當地刪除一些章節,也可以根據教學目標,靈活地調整章節的順序,增減各章的學時數。
由于軟件工程是一門新興學科,軟件工程的教學方法本身還在探索之中,加之作者的水平和能力有限,本書內容難免有疏漏之處。懇請各位同仁和廣大讀者給予批評指正,也希望各位能將實踐過程中的經驗和心得與作者交流(yunxianglu@hotmail.com)。
編者
2015年1月
第一部分軟件工程與軟件過程
第1章軟件工程概述
1.1軟件
1.1.1軟件的概念
1.1.2軟件的特點
1.1.3軟件的分類
1.2軟件危機
1.2.1軟件危機的表現
1.2.2軟件危機的原因
1.3軟件工程
1.3.1軟件工程的概念
1.3.2軟件工程的基本內容
1.3.3軟件工程目標和原則
1.3.4軟件工程的知識體系
1.4軟件工程的相關工具
1.5軟件工程的常用信息源
1.6“小型網上書店系統”案例介紹
小結
習題
第2章軟件過程
2.1軟件過程概述
2.2軟件生命周期
2.2.1軟件生命周期的概念
2.2.2傳統軟件生命周期的各個階段
2.3軟件過程模型
2.3.1瀑布模型
2.3.2快速原型模型
2.3.3增量模型
2.3.4螺旋模型
2.3.5噴泉模型
2.3.6基于組件的開發模型
2.3.7統一軟件開發過程模型
2.3.8敏捷模型
小結
習題
第二部分軟件需求分析與建模
第3章可行性研究及需求分析
3.1可行性研究
3.1.1可行性研究的目的與意義
3.1.2可行性研究的內容
3.1.3可行性研究的步驟
3.2需求分析
3.2.1需求分析的目的與意義
3.2.2需求分析的步驟
3.2.3需求管理
3.3軟件開發計劃書編寫指南
3.4需求規格說明書編寫指南
3.5實驗
3.5.1Visio的功能及使用方法介紹
3.5.2Rose的功能及使用方法介紹
小結
習題
第4章結構化需求分析
4.1結構化需求分析的方法
4.2結構化需求分析的工具
4.2.1實體關系(ER)圖
4.2.2數據流圖
4.2.3狀態轉換圖
4.2.4數據字典
4.3實驗: 利用Visio繪制“小型網上書店系統”的數據流圖
小結
習題
第5章面向對象分析
5.1面向對象的軟件工程方法
5.1.1面向對象的基本概念
5.1.2面向對象的軟件工程方法的特征與優勢
5.2UML簡介
5.2.1用例圖
5.2.2類圖和對象圖
5.2.3狀態圖
5.2.4順序圖
5.2.5活動圖
5.2.6協作圖
5.2.7構件圖
5.2.8部署圖
5.2.9包圖
5.3面向對象分析方法
5.3.1面向對象分析過程
5.3.2面向對象分析原則
5.4面向對象建模
5.4.1建立對象模型
5.4.2建立動態模型
5.4.3建立功能模型
5.4.4三種模型之間的關系
5.5實驗
5.5.1利用Rose繪制“小型網上書店系統”的用例圖
5.5.2利用Rose繪制“小型網上書店系統”的類圖
5.5.3利用Rose繪制“小型網上書店系統”的對象圖
5.5.4利用Rose繪制“小型網上書店系統”的狀態圖
5.5.5利用Rose繪制“小型網上書店系統”的順序圖
5.6案例:“小型網上書店系統”的需求規格說明書
小結
習題
第三部分軟件設計與建模
第6章軟件設計
6.1軟件設計的基本概念
6.1.1軟件設計的意義和目標
6.1.2軟件設計的分類
6.1.3軟件設計的原則
6.2軟件的體系結構
6.2.1軟件的體系結構概述
6.2.2軟件系統的設計模式
6.3分布式系統結構
6.3.1多處理器體系結構
6.3.2客戶/服務器體系結構
6.3.3分布式對象體系結構
6.3.4對等端體系結構
6.3.5代理
6.4體系結構框架
6.4.1模型視圖控制器
6.4.2模型視圖表示器
6.4.3J2EE體系結構框架
6.4.4PCMEF
6.4.5PCBMER
6.5數據庫結構設計
6.6人機界面設計
6.7軟件設計說明書編寫指南
小結
習題
第7章結構化設計方法
7.1結構化軟件設計方法
7.1.1表示軟件結構的圖形工具
7.1.2面向數據流的設計方法
7.1.3面向數據結構的設計方法
7.2結構化軟件設計工具
7.2.1流程圖
7.2.2NS圖
7.2.3PAD
7.2.4判定表
7.2.5判定樹
7.2.6過程設計語言
7.3實驗: 利用Visio繪制“小型網上書店系統”的結構圖
小結
習題
第8章面向對象設計
8.1面向對象設計方法
8.1.1面向對象的設計原則
8.1.2面向對象設計的啟發規則
8.1.3系統設計
8.1.4對象設計
8.2實驗
8.2.1利用Rose繪制“小型網上書店系統”的活動圖
8.2.2利用Rose繪制“小型網上書店系統”的協作圖
8.2.3利用Rose繪制“小型網上書店系統”的構件圖
8.2.4利用Rose繪制“小型網上書店系統”的部署圖
8.3案例:“小型網上書店系統”的軟件設計說明書
小結
習題
第四部分軟件編程與軟件測試
第9章軟件編程
9.1編程語言
9.1.1編程語言的發展與分類
9.1.2選擇編程語言需考慮的因素
9.2編程風格
9.3編程人員的基本素質
9.4實驗
9.4.1Visual Studio使用方法介紹
9.4.2利用Visual Studio實現“小型網上書店系統”的用戶登錄模塊
小結
習題
第10章軟件測試概述
10.1軟件測試的基本概念
10.1.1軟件測試的原則
10.1.2軟件測試模型
10.2軟件測試的分類
10.3測試用例
10.3.1測試用例編寫
10.3.2測試用例設計
10.3.3測試用例場景
10.4測試分析報告編寫指南
小結
習題
第11章軟件測試方法與過程
11.1軟件測試方法
11.2黑盒測試
11.2.1等價類劃分法
11.2.2邊界值分析法
11.2.3錯誤推測法
11.2.4因果圖法
11.2.5決策表法
11.2.6場景法
11.2.7黑盒測試選擇
11.3白盒測試
11.3.1代碼檢查法
11.3.2靜態結構分析法
11.3.3程序插樁技術
11.3.4邏輯覆蓋法
11.3.5基本路徑法
11.3.6白盒測試方法選擇
11.3.7白盒測試和黑盒測試比較
11.4軟件測試的一般步驟
11.5單元測試
11.5.1單元測試概述
11.5.2單元測試內容
11.5.3單元測試方法
11.6集成測試
11.6.1集成測試概述
11.6.2集成測試分析
11.6.3集成測試策略
11.7系統測試
11.7.1系統測試概述
11.7.2系統測試類型
11.8驗收測試
11.8.1驗收測試概述
11.8.2驗收測試內容
11.8.3α測試和β測試
11.9回歸測試
11.10面向對象的軟件測試
11.11軟件調試
11.11.1調試過程
11.11.2調試途徑
11.12實驗
11.12.1利用Visual Studio中的工具進行單元測試
11.12.2利用Visual Studio對“小型網上書店系統”的用戶登錄模塊
進行
單元測試
11.13案例:“小型網上書店系統”的測試分析報告
小結
習題
第五部分軟件工程的其他相關內容
第12章軟件工程的其他相關內容
12.1軟件估算
12.1.1軟件估算的概念
12.1.2軟件估算的方法
12.1.3軟件估算的原則與技巧
12.2軟件開發進度計劃
12.2.1Gantt圖
12.2.2PERT圖
12.3軟件開發人員組織
12.3.1民主制程序員組
12.3.2主程序員組
12.3.3現代程序員組
12.4軟件開發風險管理
12.4.1軟件開發風險
12.4.2軟件開發風險管理
12.5軟件質量保證
12.5.1軟件質量的基本概念
12.5.2軟件質量保證的措施
12.6軟件配置管理概述
12.6.1軟件配置管理術語
12.6.2配置管理的過程
12.6.3配置管理的角色劃分
12.7軟件維護
12.7.1軟件維護的過程
12.7.2軟件維護的分類
12.7.3軟件的可維護性
12.7.4軟件維護的副作用
12.7.5軟件再工程技術
12.8軟件工程標準與軟件文檔
12.8.1軟件工程標準
12.8.2軟件文檔
12.9軟件過程能力成熟度模型
12.10軟件項目管理
12.10.1軟件項目管理概述
12.10.2軟件項目管理與軟件工程的關系
12.11軟件復用
12.12實驗
12.12.1Project的功能及使用方法介紹
12.12.2利用Project管理“小型網上書店系統”的開發過程
小結
習題
附錄A課程設計指導
附錄B模擬考試題與參考答案
附錄C部分習題參考答案
參考文獻