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