軟件工程:實踐者的研究方法(本科教學版·原書第9版)
定 價:89 元
叢書名:計算機科學叢書
- 作者:[美]羅杰 S.普萊斯曼(Roger S. Pressman),[美]布魯斯 R. 馬克西姆(Bruce R. Maxim)
- 出版時間:2021/9/1
- ISBN:9787111690702
- 出 版 社:機械工業(yè)出版社
- 中圖法分類:TP311.5
- 頁碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
本書自第1版出版至今,近40年來在軟件工程界產(chǎn)生了巨大而深遠的影響。第9版繼承了之前版本的風格與優(yōu)勢,全面系統(tǒng)地講解軟件過程、建模、質(zhì)量與安全、軟件項目管理等知識,涵蓋相關(guān)的概念、原則、方法和工具,并且提供了豐富的擴展閱讀資源和網(wǎng)絡資源。同時,本書調(diào)整了篇章結(jié)構(gòu),使內(nèi)容更加簡潔,更適于教學。本書是面向本科生的版本,保留了完整版中的基礎內(nèi)容,壓縮或刪除了一些高級內(nèi)容,更加適合作為高等院校計算機、軟件工程及相關(guān)專業(yè)的軟件工程課程教材。
如果有這樣一款計算機軟件—它能滿足用戶的需求,能在相當長的時間內(nèi)無故障地運行,修改起來輕松便捷,使用起來更是得心應手,那么,這款軟件必定是成功的,它切實改善了我們的生活。但是,如果有這樣一款軟件—它令用戶失望,錯誤頻出,修改起來困難重重,使用起來更是舉步維艱,那么,這必定是一款失敗的軟件,它使我們的生活一團糟。誰都希望開發(fā)出優(yōu)秀的軟件,為我們的生活帶來便利,而不是讓自己陷入失敗的深淵。要想使軟件獲得成功,在設計和構(gòu)建軟件時就需要有規(guī)范,需要采用工程化的方法。
本書第1版問世以來的近40年中,軟件工程已經(jīng)從少數(shù)倡導者提出的一些朦朧概念發(fā)展成為一門正規(guī)的工程學科,已被公認是一個值得深入研究、認真學習和熱烈討論的課題。在整個行業(yè)中,軟件工程師已經(jīng)成為人們優(yōu)先選擇的工作崗位,軟件過程模型、軟件工程方法和軟件工具都已在全行業(yè)的所有環(huán)節(jié)被成功采用。
盡管管理人員和一線專業(yè)人員都承認需要有更規(guī)范的軟件方法,但他們卻始終在爭論應該采用什么樣的規(guī)范。有許多個人和公司至今仍在雜亂無章地開發(fā)著自己的軟件,即使他們正在開發(fā)的系統(tǒng)要服務于當今的技術(shù),狀況也是如此。許多專業(yè)人員和學生并不了解現(xiàn)代方法,這導致他們所開發(fā)的軟件質(zhì)量很差,因而造成了嚴重的后果。此外,有關(guān)軟件工程方法真實本質(zhì)的爭論一直在持續(xù)進行著。軟件工程的地位問題已成為一門對比研究課題。人們對軟件工程的態(tài)度已經(jīng)有所改善,研究工作已取得了進展,不過要使軟件工程成為一門完全成熟的學科,我們還有大量工作要做。
第9版的新變化
我們希望本書能夠成為引導讀者進入正在走向成熟的軟件工程學科的入門讀物。和以前的8個版本一樣,第9版對學生和專業(yè)人員同樣具有很強的吸引力。它既是軟件專業(yè)人員的工作指南,也是高年級本科生和一年級研究生的綜合性參考書。
第9版中包含了許多新的內(nèi)容,它絕不只是前一版的簡單更新。這一版不僅對內(nèi)容做了適當?shù)男薷模艺{(diào)整了全書的結(jié)構(gòu),以改進教學順序。同時,更加強調(diào)一些新的、重要的軟件工程過程和軟件工程實踐知識。此外,本書進一步加強了“支持系統(tǒng)”,為學生、教師和專業(yè)人員提供了更為豐富的知識資源。
過去幾版的讀者會注意到,第9版的篇幅有所減少。我們的目標是簡明扼要,使這本書從教學的角度來看更有利,并使希望閱讀整本書的讀者不那么畏懼。關(guān)于著名數(shù)學家和物理學家布萊斯·帕斯卡(Blaise Pascal)的一個趣聞中提到,帕斯卡在寫給朋友的一封很長的信中以這句話結(jié)尾:“我想給你寫一封簡短的信,但我沒有時間!碑攲Φ9版進行精簡時,我們開始體會到帕斯卡所說這句話的意義。
篇章結(jié)構(gòu)
本書共30章,分為五個部分。這種劃分有利于那些無法在一個學期內(nèi)講完全書內(nèi)容的教師靈活安排教學工作。
部分“軟件過程”給出了有關(guān)軟件過程的各種不同觀點,討論了幾種重要的過程模型和框架,還涉及慣用過程和敏捷過程在指導思想上的分歧。第二部分“建!苯o出了分析方法和設計方法,重點講解面向?qū)ο蠓椒ê蚒ML建模,介紹基于模式的設計以及用于移動應用程序的設計。此外,用戶體驗設計也在本部分展開。第三部分“質(zhì)量與安全”介紹了有關(guān)質(zhì)量管理的概念、規(guī)程、技術(shù)和方法,幫助軟件團隊很好地評估軟件質(zhì)量,評審軟件工程工作產(chǎn)品,實施軟件質(zhì)量保證規(guī)程,并正確地運用有效的測試策略和技術(shù)。此外,我們還介紹了如何在增量軟件開發(fā)模型中插入軟件安全性實踐。第四部分“軟件項目管理”介紹了與計劃、管理和控制軟件開發(fā)項目的人員有關(guān)的問題。第五部分“高級課題”討論了軟件過程改進和軟件工程的發(fā)展趨勢。在本書中,還通過模塊的方式,介紹了一個軟件團隊(虛構(gòu)的)所經(jīng)歷的考驗和困難,并提供了與章節(jié)主題相關(guān)的方法和工具的補充材料。
這五個部分的劃分有利于教師根據(jù)學時和教學要求安排課堂內(nèi)容。在一個學期內(nèi)可以安排一個部分的內(nèi)容,也可以安排多個部分的內(nèi)容。軟件工程概論課程可以從五個部分中選擇若干章作為教材。側(cè)重分析和設計的軟件工程課程可以從部分和第二部分中選取素材。面向測試的軟件工程課程則可以從部分和第三部分中選取素材,還應加上第二部分中的一些內(nèi)容。側(cè)重管理的課程應突出部分和第四部分的內(nèi)容。我們用上述方式組織第9版的內(nèi)容,旨在為教師提供多種教學安排的選擇。但無論如何選擇這些內(nèi)容,都可以從“支持系統(tǒng)”中獲得補充資源。
相關(guān)資源
可以通過教師網(wǎng)站訪問各種資源,包括一個資源豐富的在線學習中心(其中包括習題解決方案)、各種基于Web的資源(軟件工程檢查單)、一套不斷演化的“小工具”以及綜合案例研究。專業(yè)資源提供了數(shù)百種分類的Web參考資料,使學生可以更深入地探索軟件工程,同時,參考資料庫還有指向數(shù)百個可下載參考資料的鏈接,這些參考資料提供了獲取高級軟件工程信息的深入來源。此外,還提供了完整的在線教師指南,包括輔助教學材料以及可用于授課的PPT。
在本書的教師指南中,我們?yōu)楦鞣N類型的軟件工程課程提出了建議,提供了與課程配合開展的軟件項目、部分習題的題解和許多有用的教學輔助工具。
由于有了在線支持系統(tǒng)的配合,本書既有內(nèi)容上的深度,又有一定的靈活性,這些優(yōu)勢是傳統(tǒng)的教科書所無法比擬的。
布魯斯·馬克西姆(Bruce Maxim)編寫了第9版的新內(nèi)容,而羅杰·普萊斯曼(Roger Pressman)則擔任主編,并對相關(guān)內(nèi)容做出了貢獻。
掃描二維碼可獲得的中文材料
本書采用一書一碼的方式,即一本書對應一個專有的二維碼(見本書前面的襯紙)。掃描二維碼獲取閱讀權(quán)限后,可瀏覽以下電子數(shù)據(jù)資源。
附錄1 UML簡介
參考文獻
未來我們還可能通過該二維碼提供更多的增值服務,例如習題答案、教師的授課視頻等。
致謝
卡內(nèi)基·梅隆大學軟件工程研究所的Nancy Mead撰寫了有關(guān)軟件安全工程的章節(jié);渥太華大學的Tim Lethbridge協(xié)助我們編寫了UML和OCL示例,以及本書配套的案例研究;Colby學院的Dale Skrien編寫了附錄1的UML教程;密歇根大學迪爾伯恩分校的William Grosky與他的學生Terry Ruas合作編寫了附錄2的數(shù)據(jù)科學概述;我們的澳大利亞同事Margaret Kellow更新了本書配套的Web教學資料。此外,我們還要感謝Austin Krauss,他從高級軟件工程師的角度,對電子游戲產(chǎn)業(yè)的軟件開發(fā)提供了寶貴意見。
特別感謝
十分高興有機會與羅杰合作,參與本書第9版的撰寫工作。在此期間我的兒子Benjamin成為軟件工程經(jīng)理,而我的女兒Katherine則利用她的藝術(shù)背景創(chuàng)建了本書各章中的插圖。我十分高興地看到他們已經(jīng)長大成人,并和他們的孩子(Isla、Emma和 Thelma)一起享受快樂時光。同時非常感謝妻子Norma,她的支持使我能夠?qū)⑺锌臻e時間都投入到本書的寫作之中。
布魯斯·R. 馬克西姆(Bruce R. Maxim)
隨著本書各版本的不斷推出,我的兩個兒子Mathew和Michael也逐漸從小男孩成長為男子漢。他們在生活中的成熟、品格和成功鼓舞著我。經(jīng)過多年的職業(yè)發(fā)展,我們?nèi)齻人現(xiàn)在一起在我們于2012年創(chuàng)立的公司中工作,沒有什么比這更讓我自豪了。我的兩個兒子現(xiàn)在也已經(jīng)有了自己的孩子—Maya和Lily。后要感謝我的妻子Barbara,她對我花費如此多的時間在辦公室工作表示理解與支持,并且鼓勵我繼續(xù)寫作本書的下一個版本。
羅杰·S.普萊斯曼(Roger S. Pressman)
羅杰·S. 普萊斯曼(Roger S. Pressman)
軟件工程界國際知名的顧問和作家,作為工程師、經(jīng)理人、教授、演講家和企業(yè)家奮戰(zhàn)在這一領(lǐng)域近50年。他現(xiàn)任一家咨詢公司的總裁,致力于協(xié)助企業(yè)建立有效的軟件工程實踐;還是一家汽車零部件公司的創(chuàng)始人,專注于為特斯拉汽車設計和生產(chǎn)配件產(chǎn)品。
布魯斯·R. 馬克西姆(Bruce R. Maxim)
作為軟件工程師、項目經(jīng)理、教授、作家和咨詢師,擁有超過30年的從業(yè)經(jīng)驗,研究興趣涉及軟件工程、用戶體驗設計、游戲開發(fā)和工程教育等領(lǐng)域。他曾任某游戲開發(fā)公司的首席技術(shù)官,現(xiàn)任密歇根大學迪爾伯恩分校教授,為該校工程與計算機科學學院建立了游戲?qū)嶒炇摇?
改編者序
譯者序
前言
作者簡介
第1章 軟件與軟件工程 1
1.1 軟件的本質(zhì) 3
1.1.1 定義軟件 4
1.1.2 軟件應用領(lǐng)域 5
1.1.3 遺留軟件 6
1.2 定義軟件工程學科 6
1.3 軟件過程 7
1.3.1 過程框架 7
1.3.2 普適性活動 8
1.3.3 過程的適應性調(diào)整 9
1.4 軟件工程實踐 9
1.4.1 實踐的精髓 9
1.4.2 通用原則 10
1.5 這一切是如何開始的 12
1.6 小結(jié) 13
習題與思考題 13
部分 軟件過程
第2章 過程模型 16
2.1 通用過程模型 16
2.2 定義框架活動 18
2.3 明確任務集 19
2.4 慣用過程模型 19
2.4.1 瀑布模型 20
2.4.2 原型開發(fā)過程模型 21
2.4.3 演化過程模型 22
2.4.4 統(tǒng)一過程模型 24
2.5 產(chǎn)品和過程 26
2.6 小結(jié) 27
習題與思考題 27
第3章 敏捷和敏捷過程 29
3.1 什么是敏捷 30
3.2 敏捷及變更成本 30
3.3 什么是敏捷過程 31
3.3.1 敏捷原則 31
3.3.2 敏捷開發(fā)戰(zhàn)略 32
3.4 Scrum 32
3.4.1 Scrum團隊和制品 34
3.4.2 沖刺規(guī)劃會議 34
3.4.3 每日Scrum會議 34
3.4.4 沖刺評審會議 35
3.4.5 沖刺回顧 35
3.5 其他敏捷框架 35
3.5.1 XP框架 36
3.5.2 看板法 37
3.5.3 DevOps 38
3.6 小結(jié) 39
習題與思考題 40
第4章 推薦的過程模型 41
4.1 需求定義 44
4.2 初步體系結(jié)構(gòu)設計 44
4.3 資源估算 45
4.4 首次原型構(gòu)建 46
4.5 原型評價 48
4.6 繼續(xù)與否的決策 49
4.7 原型演化 50
4.7.1 新原型范圍 51
4.7.2 構(gòu)建新原型 51
4.7.3 測試新原型 51
4.8 原型發(fā)布 52
4.9 維護發(fā)布軟件 52
4.10 小結(jié) 54
習題與思考題 55
第5章 軟件工程的人員方面 56
5.1 軟件工程師的特質(zhì) 56
5.2 軟件工程心理學 57
5.3 軟件團隊 58
5.4 團隊結(jié)構(gòu) 59
5.5 社交媒體的影響 60
5.6 全球化團隊 60
5.7 小結(jié) 61
習題與思考題 61
第二部分 建模
第6章 理解需求 64
6.1 需求工程 65
6.1.1 起始 65
6.1.2 獲取 65
6.1.3 細化 66
6.1.4 協(xié)商 66
6.1.5 規(guī)格說明 66
6.1.6 確認 67
6.1.7 需求管理 67
6.2 建立根基 68
6.2.1 確認利益相關(guān)者 68
6.2.2 識別多重觀點 68
6.2.3 協(xié)作 68
6.2.4 首次提問 69
6.2.5 非功能需求 70
6.2.6 可追溯性 70
6.3 獲取需求 70
6.3.1 協(xié)作收集需求 70
6.3.2 使用場景 73
6.3.3 獲取工作產(chǎn)品 74
6.4 開發(fā)用例 74
6.5 構(gòu)建分析模型 77
6.5.1 分析模型的元素 78
6.5.2 分析模式 79
6.6 協(xié)商需求 80
6.7 需求監(jiān)控 81
6.8 確認需求 81
6.9 小結(jié) 81
習題與思考題 82
第7章 需求建!?一種推薦的方法 83
7.1 需求分析 84
7.1.1 總體目標和原理 84
7.1.2 分析的經(jīng)驗原則 85
7.1.3 需求建模原則 85
7.2 基于場景建模 86
7.2.1 參與者和用戶概要文件 86
7.2.2 創(chuàng)建用例 86
7.2.3 編寫用例 89
7.3 基于類建模 91
7.3.1 識別分析類 91
7.3.2 定義屬性和操作 93
7.3.3 UML類模型 94
7.3.4 類–職責–協(xié)作者建模 96
7.4 功能建模 98
7.4.1 過程視圖 98
7.4.2 UML順序圖 99
7.5 行為建模 100
7.5.1 識別用例事件 100
7.5.2 UML狀態(tài)圖 101
7.5.3 UML活動圖 102
7.6 小結(jié) 104
習題與思考題 105
第8章 設計概念 106
8.1 軟件工程中的設計 107
8.2 設計過程 109
8.2.1 軟件質(zhì)量指導原則和屬性 109
8.2.2 軟件設計的演化 110
8.3 設計概念 111
8.3.1 抽象 111
8.3.2 體系結(jié)構(gòu) 112
8.3.3 模式 112
8.3.4 關(guān)注點分離 113
8.3.5 模塊化 113
8.3.6 信息隱蔽 114
8.3.7 功能獨立 114
8.3.8 逐步求精 115
8.3.9 重構(gòu) 115
8.3.10 設計類 116
8.4 設計模型 118
8.4.1 設計建模原則 119
8.4.2 數(shù)據(jù)設計元素 120
8.4.3 體系結(jié)構(gòu)設計元素 120
8.4.4 接口設計元素 120
8.4.5 構(gòu)件級設計元素 122
8.4.6 部署級設計元素 122
8.5 小結(jié) 123
習題與思考題 124
第9章 體系結(jié)