內容簡介
本書以面向對象程式設計技術的本質屬性為主線,以C++語言為基礎,全面地闡述了面向對象程式設計的基本原理。全書共分13章,前5章介紹C++語言的基本編程技術,包括C++的數據類型、常用的運算符、結構化控制語句和函式; 第6章~第9章介紹面向對象程式設計方法的核心內容,包括類和對象、類的繼承和多態; 第10章介紹C++的程式結構、編譯預處理指令和命名空間等內容; 第11章介紹C++語言標準庫中的輸入/輸出流類; 第12章以C++語言為基礎,介紹面向對象的異常處理機制; 第13章簡要介紹使用C++語言和面向對象的程式設計方法設計Windows應用程式的方法。本書語言簡潔流暢,通俗易懂,內容全面,重點突出,對核心和重點內容都佐以大量的例證。
圖書目錄
第1篇軟體工程與項目管理
第1章軟體工程概述
1.1軟體的定義與特點
1.1.1什麼是軟體
1.1.2軟體的特點與本質
1.1.3“沒有銀彈”——複雜性是“軟體危機”的本質原因
1.2軟體工程的定義及研究的內容
1.2.1科學、工程與技術的界定
1.2.2軟體工程的定義與原理
1.2.3軟體工程的3個要素
1.2.4軟體開發方法——對客觀世界的認知觀
1.2.5軟體工程與相關科學的關係
1.3軟體工程的教育與知識體系
1.3.1軟體工程的教育體系
1.3.2CC2005的4個方向專業規範
1.3.3軟體工程的知識體系——SWEBOK
1.4軟體工程的標準
1.4.1軟體工程標準化的意義
1.4.2軟體工程的國際標準與體系
1.4.3國家標準
1.5計算機輔助軟體工程
1.6軟體工程人員的職業道德與行為準則
本章小結
思考與練習
第2章軟體過程
2.1軟體過程
2.1.1過程及其特徵
2.1.2軟體過程的公共框架
2.2軟體過程模型
2.2.1理解軟體過程模型
2.2.2瀑布模型
2.2.3演化軟體過程模型
2.2.4快速原型開發方法
2.2.5統一軟體過程
2.2.6核心工作流
2.2.7形式化方法模型
2.2.8軟體復用——基於構件的開發方法
2.2.9第4代技術
2.2.10微軟公司的軟體過程模型
2.3軟體過程改進
2.3.1軟體能力成熟度模型——CMM與CMMI
2.3.2CMM/CMMI的套用及面臨的問題
2.3.3個體軟體過程
2.3.4團隊軟體過程
2.3.5CMM、TSP、PSP三者的關係
本章小結
思考與練習
第3章軟體工程領域下的項目管理
3.1項目管理的歷史實踐
3.1.1遠古的偉大工程實踐
3.1.2溝通的故事——巴比倫塔的倒塌
3.2軟體項目管理的範圍與內容
3.2.1什麼是項目管理
3.2.2軟體項目管理的範圍
3.2.3人員
3.2.4產品
3.2.5過程
3.2.6項目
3.3軟體項目管理的活動——從這裡開始
3.3.1軟體項目管理的活動概述
3.3.2項目溝通與需求管理
3.3.3軟體項目計畫的制定
3.3.4項目範圍與管理
3.3.5工作分解結構
3.3.6軟體項目的組織
3.4項目進度管理
3.4.1項目里程碑
3.4.2人員與工作量分配
3.4.3項目進度管理的可視化工具
3.4.4項目管理軟體及其功能
本章小結
思考與練習
第4章軟體項目估算
4.1軟體項目估算概述
4.1.1什麼是估算
4.1.2軟體項目估算的特點
4.1.3軟體項目估算的複雜性分析
4.1.4軟體項目估算的相關內容
4.2項目規模估算
4.2.1基於代碼行的規模估算
4.2.2功能點估算
4.2.3基於計畫評審技術的規模估算
4.3工作量估算
4.3.1用代碼行與功能點估算工作量的例子
4.3.2基於數學模型的工作量估算
4.3.3COCOMO模型
4.3.4COCOMO Ⅱ模型
4.3.5Putnam模型
4.4軟體成本估算
4.4.1軟體項目成本的組成
4.4.2軟體成本的估算方法
4.4.3估算技術的套用與評價
4.5項目進度估算
4.5.1三點估算方法
4.5.2項目進度獲取值分析——項目計畫與實際進展的定量比較
4.6軟體工程經濟學
4.6.1經濟學與工程經濟學
4.6.2軟體工程經濟學研究的基本問題
4.6.3資金的時間價值
4.6.4軟體工程經濟學中的成本效益評價技術
本章小結
思考與練習
第5章軟體質量管理
5.1軟體質量及其特性
5.1.1難以定義和度量的軟體質量
5.1.2軟體質量特性
5.1.3軟體質量保證及其活動
5.2軟體配置管理
5.2.1制定項目的配置計畫
5.2.2軟體配置項及其標識
5.2.3版本控制
5.2.4變更控制
5.2.5正式技術複審
本章小結
思考與練習
第6章軟體風險管理
6.1軟體項目的風險管理
6.1.1風險與項目風險
6.1.2軟體項目風險與管理
6.1.3軟體風險的定義
6.1.4軟體風險的類型
6.2軟體風險管理的體系框架
6.2.1常見風險管理過程框架
6.2.2軟體風險管理的一般過程
6.3風險識別
6.3.1風險識別過程
6.3.2風險識別的方法與工具
6.4風險分析
6.4.1風險分析過程
6.4.2風險分析的技術與工具
6.5風險規劃
6.5.1風險規划過程
6.5.2風險規劃的工具與技術
6.6風險監控
6.6.1風險監控過程
6.6.2風險監控的技術與方法
6.6.3風險監控與管理計畫——RMMM計畫
本章小結
思考與練習
第2篇結構化開發方法
第7章面向過程的結構化分析
7.1系統工程
7.1.1系統論
7.1.2系統工程
7.1.3系統工程層次結構
7.1.4業務過程工程
7.1.5產品工程
7.2需求分析
7.2.1需求分析概述和特點
7.2.2軟體需求分析的目標
7.2.3需求分析的過程
7.2.4需求獲取技術
7.3結構化分析方法
7.3.1數據流圖
7.3.2狀態圖
7.3.3實體關係圖(ER圖)
本章小結
思考與練習
第8章面向過程的結構化設計
8.1軟體設計的基本概念和原理
8.1.1抽象
8.1.2信息隱蔽
8.1.3模組化設計
8.1.4模組獨立
8.1.5耦合
8.1.6內聚
8.1.7結構圖
8.2軟體總體設計的任務和目標
8.3結構化軟體設計
8.3.1基本概念
8.3.2變換分析
8.3.3事務分析
8.4過程設計
8.4.1程式流程圖
8.4.2盒式(NS)圖
8.4.3PAD
8.4.4PDL
8.4.5判定表
8.4.6判定樹
8.5Jackson設計方法
本章小結
思考與練習
第9章面向過程的結構化實現
9.1概述
9.2編碼
9.2.1軟體編碼的基本概念
9.2.2程式設計語言的選擇
9.2.3編碼風格
9.3軟體測試
9.3.1軟體測試的概述
9.3.2軟體測試方法
9.3.3軟體測試步驟
9.4調試
9.5軟體測試文檔
本章小結
思考與練習
第10章軟體的技術度量
10.1軟體度量的基本概念
10.1.1測量、測度、度量、指標和估算
10.1.2軟體度量的分類
10.1.3軟體度量的目的
10.1.4有效軟體度量的屬性
10.2分析模型的度量
10.2.1基於功能點的度量
10.2.2bang度量
10.2.3規格說明質量的度量
10.3設計模型的度量
10.3.1體系結構設計度量
10.3.2構件級設計度量
10.4原始碼度量
10.5對測試的度量
10.6對維護的度量
10.7軟體質量的度量
本章小結
思考與練習
第3篇面向對象的開發方法
第11章面向對象概述
11.1面向對象的基本思想
11.2面向對象軟體開發方法的優缺點
11.3面向對象的基本概念
11.3.1對象
11.3.2類
11.3.3屬性和方法
11.3.4抽象、封裝和信息隱藏
11.3.5繼承
11.3.6多態
11.3.7關聯
11.3.8協作
11.3.9聚合
11.3.10持久性
11.4統一建模語言:UML概述
11.4.1UML的發展歷程
11.4.2UML的特點
11.5UML的視圖
11.5.1用例圖
11.5.2類圖
11.5.3對象圖
11.5.4順序圖
11.5.5協作圖
11.5.6狀態圖
11.5.7包圖
11.5.8部署圖
11.6面向對象軟體的開發過程
11.7UML建模工具
11.7.1商用建模工具
11.7.2開源UML建模工具
本章小結
思考與練習
第12章面向對象分析
12.1收集需求
12.1.1面向對象的軟體需求概述
12.1.2系統範圍
12.1.3參與者
12.1.4用例
12.1.5用例圖
12.1.6用例規約
12.1.7使用包組織用例
12.2基於類的建模
12.2.1識別類
12.2.2CRC建模
12.2.3分析類的職責
12.2.4尋找協作者
12.2.5通過場景驗證CRC模型
12.2.6CRC建模的優缺點
12.3類模型
12.3.1類、屬性和方法
12.3.2類的層次結構
12.3.3關聯
12.3.4聚合
12.3.5類圖
12.4動態互動建模
12.4.1順序圖
12.4.2協作圖
12.4.3活動圖
12.5基於控制行為建模
本章小結
思考與練習
第13章面向對象設計
13.1劃分分析模型
13.2系統邏輯架構
13.2.1經典3層架構
13.2.2多層架構
13.3類模型設計
13.3.1類的設計
13.3.2接口設計
13.3.3屬性、方法建模
13.3.4對象之間可見性設計
13.3.5用例疊代實現
13.3.6重構
13.4類的設計原則
13.4.1開閉原則
13.4.2Liskov替換原則
13.4.3依賴倒置原則
13.4.4接口分離原則
13.5設計模式
13.5.1單件模式
13.5.2抽象工廠模式
13.6對象持久性建模
13.6.1映射對象
13.6.2繼承關係映射
13.6.3關聯和聚合映射
13.6.4持久性框架
13.7部署建模
本章小結
思考與練習
第14章面向對象測試
14.1全生命周期面向對象測試
14.2面向對象測試策略
14.2.1面向對象的單元測試
14.2.2面向對象的集成測試
14.2.3面向對象的確認測試
14.3基於場景的模型測試
14.3.1場景設計
14.3.2測試用例設計
14.4類測試
14.4.1類的代碼檢查
14.4.2覆蓋和路徑測試
14.4.3類的隨機測試
14.4.4類的劃分測試
14.5類間測試
14.5.1多個類測試
14.5.2從類的行為模型導出的測試
本章小結
思考與練習
第15章面向對象系統的技術度量
15.1OO度量的識別特徵
15.1.1局部化
15.1.2封裝
15.1.3信息隱蔽
15.1.4繼承
15.1.5抽象
15.2分析、設計模型的度量
15.3OO項目的度量
15.4面向類的度量
15.4.1CK度量套件
15.4.2LK度量組
15.4.3MOOD度量套件
15.5面向操作的度量
15.6面向對象測試的度量
本章小結
思考與練習
第4篇軟體工程高級專題
第16章敏捷過程開發
16.1敏捷的定義
16.1.1什麼是敏捷
16.1.2什麼是敏捷過程
16.2敏捷過程模型
16.2.1極限編程
16.2.2自適應軟體開發
16.2.3動態系統開發方法
16.2.4Scrum
16.2.5Crystal
16.2.6特徵驅動開發
16.2.7精益開發
16.3設計自己的敏捷方法
本章小結
思考與練習
第17章Web工程
17.1基於Web的系統及套用
17.1.1Web套用的發展
17.1.2Web套用的特點和分類
17.1.3Web套用的開發團隊
17.2Web工程
17.3Web工程技術
17.3.1Web伺服器技術
17.3.2Web開發技術
17.3.3Web輔助技術
17.4Web工程的層次
17.4.1質量
17.4.2過程
17.4.3方法
17.4.4工具
17.5Web工程過程
17.5.1分析
17.5.2設計
17.5.3測試
17.5.4發布、維護
本章小結
思考與練習
第18章形式化方法
18.1形式化方法簡介
18.1.1形式化方法的引入
18.1.2形式化方法的分類
18.1.3形式化規格方法的主要思想
18.2Petri網
18.2.1基本概念
18.2.2Petri網的性質
18.2.3Petri網的分析
18.2.4實例:ATM系統
18.3Z語言
18.3.1基本概念
18.3.2模式運算
18.3.3操作模式
18.3.4實例:ATM系統
18.4形式化方法的優缺點
18.5形式化方法的發展
本章小結
思考與練習
附錄A軟體工程和知識可視化表征