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