內(nèi) 容 簡 介本書第3版在繼承第2版特點的基礎(chǔ)上做了較大修改,內(nèi)容涵蓋了IEEE新發(fā)布的軟件工程知識體系指南SWEBOK V3.0版的知識域,刪除了較陳舊的內(nèi)容,新增了如云計算模型、敏捷開發(fā)測試等國內(nèi)外軟件工程發(fā)展的新技術(shù)。在系統(tǒng)介紹軟件工程基礎(chǔ)知識的基礎(chǔ)上,重點介紹了軟件需求和軟件設(shè)計兩個重要開發(fā)階段,并將面向?qū)ο蟮姆椒癠ML統(tǒng)一建模技術(shù)貫穿于各章,對面向?qū)ο蟮姆治、設(shè)計、測試的方法做了詳細介紹。同時還對CMM軟件成熟度模型、風險管理及團隊建設(shè)等先進的軟件管理技術(shù)進行了介紹。本書內(nèi)容注重科學性、先進性,強調(diào)實踐性,理論緊密聯(lián)系實際是本書的一大特色;本書不僅提供了豐富的軟件開發(fā)實例和素材,還用一章專門討論了如何進行綜合性、設(shè)計型的軟件工程課程設(shè)計。本書可作為高等院校計算機、軟件工程及信息類專業(yè)本科生及研究生“軟件工程”課程的教材,也可作為廣大工程技術(shù)人員和科研人員的參考書。
許家珆,電子科技大學數(shù)學學院教授,主講《軟件工程》等多門課程,負責編寫了包括《軟件工程》等多本教材,主持四川省精品課程,網(wǎng)絡精品課程。
目 錄
第1章 軟件工程概述 (1)
1.1 軟件工程的產(chǎn)生和發(fā)展 (1)
1.1.1 軟件危機與軟件工程 (1)
1.1.2 軟件工程的定義及基本原則 (3)
1.1.3 軟件工程研究的內(nèi)容 (3)
1.2 軟件與軟件過程 (4)
1.2.1 軟件的概念和特點 (5)
1.2.2 軟件工程過程及產(chǎn)品 (6)
1.3 軟件過程模型 (6)
1.3.1 瀑布模型 (6)
1.3.2 增量模型 (7)
1.3.3 螺旋模型 (7)
1.3.4 噴泉模型 (8)
1.3.5 原型模型 (8)
1.3.6 智能模型 (9)
1.4 軟件開發(fā)方法 (9)
1.4.1 結(jié)構(gòu)化開發(fā)方法 (10)
1.4.2 原型化開發(fā)方法 (10)
1.4.3 面向?qū)ο蟮拈_發(fā)方法 (11)
1.4.4 敏捷軟件的開發(fā) (12)
1.5 軟件工具與集成化開發(fā)環(huán)境 (15)
1.5.1 軟件工具的發(fā)展過程 (15)
1.5.2 軟件工具 (16)
1.5.3 集成化CASE環(huán)境 (18)
小結(jié) (19)
習題1 (19)
第2章 面向?qū)ο蠓椒ㄅcUML建模語言 (21)
2.1 面向?qū)ο蠓椒ǜ攀?(21)
2.1.1 面向?qū)ο蠓椒ǖ奶攸c (21)
2.1.2 幾種典型的面向?qū)ο蠓椒?(22)
2.2 UML概述 (23)
2.2.1 UML的基本概念 (24)
2.2.2 UML的圖形表示 (25)
2.3 建立用例模型 (28)
2.3.1 需求分析與用例建模 (28)
2.3.2 確定執(zhí)行者和用例 (29)
2.3.3 用例建模實例 (31)
2.4 建立靜態(tài)模型 (33)
2.4.1 類圖 (33)
2.4.2 包圖 (41)
2.5 建立動態(tài)模型 (42)
2.5.1 消息 (42)
2.5.2 狀態(tài)圖 (43)
2.5.3 順序圖 (46)
2.5.4 合作圖 (47)
2.5.5 活動圖 (50)
2.6 建立實現(xiàn)模型 (52)
2.6.1 組件圖 (52)
2.6.2 部署圖 (53)
2.7 RUP統(tǒng)一過程及其應用 (54)
2.7.1 UML與RUP統(tǒng)一過程 (54)
2.7.2 RUP的二維開發(fā)模型 (56)
2.7.3 RUP的迭代開發(fā)模式 (58)
小結(jié) (59)
習題二 (59)
第3章 軟件需求工程 (63)
3.1 軟件需求的基本概念 (63)
3.1.1 軟件需求的任務 (63)
3.1.2 功能需求與非功能需求 (64)
3.2 需求工程過程 (66)
3.2.1 需求工程的基本活動 (66)
3.2.2 獲取需求 (66)
3.2.3 需求分析與建模 (67)
3.2.4 需求的有效性驗證 (68)
3.2.5 需求管理 (69)
3.3 軟件需求獲取技術(shù) (70)
3.3.1 面談法 (70)
3.3.2 問卷調(diào)查法 (70)
3.3.3 需求專題討論會 (71)
3.3.4 原型法獲取需求 (71)
3.3.5 面向用例的方法 (72)
3.4 需求分析與建模技術(shù) (73)
3.4.1 需求分析方法 (73)
3.4.2 結(jié)構(gòu)化分析(SA)方法 (74)
3.4.3 面向?qū)ο蟮姆治觯∣OA)方法 (79)
3.5 軟件需求案例分析 (82)
3.5.1 案例1——用SA法建立需求模型 (82)
3.5.2 案例2——用OOA法建立需求模型 (84)
小結(jié) (87)
習題二 (88)
第4章 軟件設(shè)計 (91)
4.1 軟件設(shè)計概述 (91)
4.1.1 軟件設(shè)計在開發(fā)階段中的重要性 (91)
4.1.2 軟件設(shè)計階段的任務 (92)
4.1.3 軟件設(shè)計的目標 (92)
4.1.4 軟件設(shè)計過程 (92)
4.2 軟件體系結(jié)構(gòu)設(shè)計 (93)
4.2.1 系統(tǒng)結(jié)構(gòu)性模型——集中式系統(tǒng)模型 (93)
4.2.2 系統(tǒng)結(jié)構(gòu)性模型——層次結(jié)構(gòu)模型 (94)
4.2.3 系統(tǒng)結(jié)構(gòu)性模型——分布式系統(tǒng)模型 (95)
4.2.4 控制模型 (100)
4.2.5 模塊分解 (101)
4.3 詳細設(shè)計描述工具 (104)
4.4 面向?qū)ο蟮脑O(shè)計 (105)
4.4.1 面向?qū)ο笤O(shè)計的準則 (106)
4.4.2 面向?qū)ο笤O(shè)計的基本任務 (106)
4.5 用戶界面設(shè)計 (108)
4.5.1 用戶界面設(shè)計的特性與設(shè)計任務 (108)
4.5.2 用戶界面設(shè)計的基本原則 (109)
4.5.3 用戶界面的基本類型 (110)
4.5.4 用戶交互設(shè)計 (111)
4.6 MVC設(shè)計模式 (114)
4.7 軟件設(shè)計實例 (115)
小結(jié) (118)
習題四 (118)
第5章 軟件構(gòu)造 (121)
5.1 程序設(shè)計語言的選擇 (121)
5.1.1 程序設(shè)計語言的分類 (121)
5.1.2 高級程序設(shè)計語言的基本組成 (122)
5.1.3 程序設(shè)計語言選擇準則 (123)
5.2 程序設(shè)計方法 (123)
5.2.1 結(jié)構(gòu)化程序設(shè)計 (123)
5.2.2 面向?qū)ο蟪绦蛟O(shè)計 (125)
5.3 程序設(shè)計風格 (127)
5.3.1 源程序文件 (128)
5.3.2 語句構(gòu)造方法 (129)
5.3.3 數(shù)據(jù)說明方法 (129)
5.3.4 輸入/輸出技術(shù) (130)
5.4 算法與程序效率 (130)
5.4.1 算法轉(zhuǎn)換過程中的指導原則 (130)
5.4.2 影響效率的因素 (131)
5.5 軟件代碼審查 (133)
5.6 軟件復用 (134)
5.6.1 軟件復用的級別 (134)
5.6.2 軟件復用過程 (135)
5.6.3 可復用構(gòu)件 (135)
5.6.4 基于復用的開發(fā)過程 (136)
5.6.5 構(gòu)件的組裝和復用 (137)
5.7 軟件構(gòu)造實例 (137)
5.7.1 實現(xiàn)環(huán)境 (137)
5.7.2 系統(tǒng)編碼實現(xiàn) (138)
5.7.3 用戶界面 (143)
小結(jié) (143)
習題五 (143)
第6章 軟件測試 (145)
6.1 軟件測試概述 (145)
6.1.1 軟件測試的基本概念 (145)
6.1.2 軟件測試的特點和基本原則 (147)
6.1.3 軟件測試過程 (149)
6.1.4 靜態(tài)分析與動態(tài)測試 (151)
6.2 白盒法測試 (153)
6.2.1 語句覆蓋 (153)
6.2.2 判定覆蓋 (154)
6.2.3 條件覆蓋 (155)
6.2.4 判定-條件覆蓋 (155)
6.2.5 條件組合覆蓋 (156)
6.3 黑盒法測試 (157)
6.3.1 等價分類法 (157)
6.3.2 邊界值分析法 (158)
6.3.3 錯誤推測法 (158)
6.3.4 因果圖法 (159)
6.4 軟件測試的策略 (160)
6.4.1 單元測試 (160)
6.4.2 集成測試 (162)
6.4.3 確認測試 (164)
6.4.4 系統(tǒng)測試 (165)
6.4.5 ?測試和?測試 (166)
6.4.6 綜合測試策略 (167)
6.5 軟件調(diào)試 (167)
6.5.1 軟件調(diào)試過程 (167)
6.5.2 軟件調(diào)試策略 (168)
6.6 面向?qū)ο蟮臏y試 (170)
6.6.1 面向?qū)ο鬁y試的特點 (170)
6.6.2 面向?qū)ο鬁y試模型 (171)
6.6.3 面向?qū)ο鬁y試類型 (171)
6.6.4 分析模型測試 (173)
6.6.5 面向?qū)ο蟮臏y試用例 (177)
6.7 自動化測試 (177)
6.7.1 自動化測試概述 (178)
6.7.2 實施自動化測試的前提條件 (179)
6.7.3 自動化測試過程 (180)
6.7.4 自動化測試的原則 (182)
6.7.5 敏捷測試 (182)
小結(jié) (183)
習題六 (184)
第7章 軟件維護 (186)
7.1 軟件維護的基本概念 (186)
7.1.1 軟件維護的目的 (186)
7.1.2 軟件維護的分類 (186)
7.1.3 軟件維護的特性 (187)
7.1.4 軟件維護的代價 (188)
7.2 軟件維護的過程 (189)
7.2.1 軟件維護的組織和維護過程管理 (189)
7.2.2 維護工作的流程 (190)
7.3 軟件維護技術(shù) (191)
7.4 軟件可維護性 (192)
7.4.1 軟件可維護性的定義 (192)
7.4.2 提高可維護性的方法 (193)
7.5 軟件再工程技術(shù) (197)
7.5.1 逆向工程 (197)
7.5.2 軟件再工程過程 (197)
7.5.3 再工程的成本及效益分析 (198)
7.5.4 再工程的風險分析 (199)
小結(jié) (199)
習題七 (199)
第8章 軟件項目管理 (201)
8.1 軟件項目管理概述 (201)
8.1.1 軟件項目管理的特點 (201)
8.1.2 軟件項目管理的主要活動 (202)
8.2 軟件項目可行性研究 (203)
8.2.1 可行性研究的任務 (203)
8.2.2 可行性研究報告 (203)
8.3 軟件項目計劃 (204)
8.3.1 軟件項目計劃內(nèi)容 (204)
8.3.2 軟件開發(fā)進度計劃 (205)
8.4 軟件項目成本估算技術(shù) (207)
8.4.1 影響成本估算的因素 (207)
8.4.2 成本估算模型 (208)
8.4.3 成本/效益分析 (211)
8.5 軟件項目人力資源管理 (211)
8.5.1 軟件團隊建設(shè) (212)
8.5.2 團隊人員的選擇 (213)
8.6 軟件項目風險管理 (213)
8.6.1 軟件項目風險管理概述 (213)
8.6.2 軟件項目風險管理過程 (214)
8.6.3 風險管理的理論和模型 (216)
8.7 軟件質(zhì)量保證 (218)
8.8 軟件配置管理 (219)
8.8.1 軟件配置管理的基本概念 (219)
8.8.2 軟件配置管理的活動 (219)
小結(jié) (222)
習題八 (222)
第9章 軟件能力成熟度模型 (223)
9.1 CMM概述 (223)
9.1.1 軟件過程成熟度的基本概念 (223)
9.1.2 軟件過程的成熟度等級 (224)
9.2 CMM的結(jié)構(gòu) (225)
9.2.1 關(guān)鍵過程域 (226)
9.2.2 關(guān)鍵實踐 (227)
9.2.3 共同特性 (227)
9.3 CMM的實施與評估 (227)
9.3.1 軟件過程評估的必要性 (228)
9.3.2 軟件過程評估及參考模型 (229)
9.3.3 軟件過程改進 (231)
9.3.4 CMM評估的執(zhí)行步驟 (231)
9.3.5 軟件企業(yè)如何實施CMM (234)
9.3.6 CMM與ISO 9000標準 (236)
9.4 軟件能力成熟度模型集成 (237)
9.4.1 CMMI的產(chǎn)生與發(fā)展 (237)
9.4.2 CMMI的模型 (237)
9.4.3 CMMI的評估 (239)
9.4.4 CMMI與CMM的比較 (240)
小結(jié) (241)
習題九 (241)
第10章 軟件工程課程設(shè)計 (243)
10.1 課程設(shè)計的目的和要求 (243)
10.2 課程設(shè)計步驟及安排 (243)
10.3 可視化建模工具Rational Rose (245)
10.3.1 Rose工具簡介 (245)
10.3.2 繪制業(yè)務用例圖 (246)
10.3.3 繪制用例圖 (247)
10.3.4 繪制類圖 (248)
10.3.5 繪制協(xié)作圖與順序圖 (249)
10.3.6 繪制活動圖 (250)
10.3.7 繪制狀態(tài)圖 (251)
10.3.8 繪制構(gòu)件圖和部署圖 (251)
10.4 案例分析 (252)
10.4.1 案例一:ATM系統(tǒng) (252)
10.4.2 案例二:網(wǎng)上拍賣系統(tǒng) (257)
10.4.3 案例三:會議管理系統(tǒng) (263)
10.4.4 案例四:倉庫信息管理系統(tǒng) (272)
參考文獻 (278)