關(guān)于我們
書單推薦
新書推薦
|
軟件工程:實踐者的研究方法(原書第8版·本科教學(xué)版)
本書自第1版出版至今,30多年來在軟件工程界產(chǎn)生了巨大而深遠(yuǎn)的影響。第8版繼承了之前版本的風(fēng)格與優(yōu)勢,系統(tǒng)地講解軟件過程、建模、質(zhì)量管理、項目管理等基礎(chǔ)知識,涵蓋相關(guān)概念、原則、方法和工具,并且提供豐富的輔助閱讀資源和網(wǎng)絡(luò)資源,指導(dǎo)有興趣的讀者進行更深入的學(xué)習(xí)和研究。本書是面向本科生的版本,保留了完整版中的基礎(chǔ)內(nèi)容,壓縮或刪除了一些高級內(nèi)容,更加適合作為高等院校計算機、軟件工程及相關(guān)專業(yè)的軟件工程課程教材。
前 言Software Engineering: A Practitioner’s Approach, Eighth Edition, Chinese Abridgement
如果有這樣一款計算機軟件,它能滿足用戶的需求,能在相當(dāng)長的時間內(nèi)無故障地運行,修改起來輕松便捷,使用起來更是得心應(yīng)手,那么,這款軟件必定是成功的,它切實改善了我們的生活。但是,如果有這樣一款軟件,它令用戶失望,錯誤頻出,修改起來困難重重,使用起來更是舉步維艱,那么,這必定是一款失敗的軟件,它使我們的生活一團糟。誰都希望開發(fā)出優(yōu)秀的軟件,為我們的生活帶來便利,而不是把自己陷入失敗的深淵。要想使軟件獲得成功,在設(shè)計和構(gòu)建軟件時就需要有規(guī)范,需要采用工程化的方法。
自本書第1版問世以來的近35年中,軟件工程已經(jīng)從少數(shù)倡導(dǎo)者提出的一些朦朧概念發(fā)展成為一門正規(guī)的工程學(xué)科,已被公認(rèn)為是一個值得深入研究、認(rèn)真學(xué)習(xí)和熱烈討論的課題。在整個行業(yè)中,軟件工程師已經(jīng)代替程序員成為人們優(yōu)先選擇的工作崗位,軟件過程模型、軟件工程方法和軟件工具都已在全行業(yè)的所有環(huán)節(jié)成功采用。
盡管管理人員和一線專業(yè)人員都承認(rèn)需要有更為規(guī)范的軟件方法,但他們卻始終在爭論應(yīng)該采用什么樣的規(guī)范。有許多個人和公司至今仍在雜亂無章地開發(fā)著自己的軟件,甚至即使他們正在開發(fā)的系統(tǒng)要服務(wù)于當(dāng)今最為先進的技術(shù),狀況也仍是如此。許多專業(yè)人員和學(xué)生并不了解現(xiàn)代方法,這導(dǎo)致他們所開發(fā)的軟件質(zhì)量很差,因而造成了嚴(yán)重的后果。此外,有關(guān)軟件工程方法真實本質(zhì)的爭論一直持續(xù)進行著。軟件工程的地位問題已成為一門對比研究課題。人們對軟件工程的態(tài)度已經(jīng)有所改善,研究工作已取得了進展,不過要成為一門完全成熟的學(xué)科,我們還有大量的工作要做。
我們希望本書能夠成為引導(dǎo)讀者進入正在走向成熟的軟件工程學(xué)科的入門讀物,和以前的7個版本一樣,第8版對學(xué)生和專業(yè)人員同樣具有很強的吸引力。它既是軟件專業(yè)人員的工作指南,也是高年級本科生和一年級研究生的綜合性參考書。
第8版中包含了許多新的內(nèi)容,它絕不只是前一版的簡單更新。這一版不僅對內(nèi)容做了適當(dāng)?shù)男薷,而且調(diào)整了全書的結(jié)構(gòu),以改進教學(xué)順序;同時更加強調(diào)一些新的和重要的軟件工程過程和軟件工程實踐知識。此外,本書進一步加強了“支持系統(tǒng)”,為學(xué)生、教師和專業(yè)人員提供了更為豐富的知識資源。讀者可訪問專門為本書建立的網(wǎng)站(www.mhhe.com/pressman)查閱這些信息。
篇章結(jié)構(gòu)本書共26章,分為四個部分。這種劃分有利于那些無法在一個學(xué)期內(nèi)講完全書內(nèi)容的教師靈活安排教學(xué)。
第一部分“軟件過程”給出了有關(guān)軟件過程的各種不同觀點,討論了所有重要的過程模型,還涉及慣用過程和敏捷過程在指導(dǎo)思想上的分歧。第二部分“建!苯o出了分析方法和設(shè)計方法,重點講解面向?qū)ο蠓椒ê蚒ML建模。第三部分“質(zhì)量管理”介紹了有關(guān)質(zhì)量管理的概念、規(guī)程和方法,使得軟件團隊能夠很好地評估軟件質(zhì)量,實施軟件質(zhì)量保證規(guī)程,并正確地運用有效的測試策略和戰(zhàn)術(shù)。第四部分“管理軟件項目”介紹了與計劃、管理和控制軟件開發(fā)項目的人員有關(guān)的問題。
第8版沿用了前面幾個版本的做法,在各章中都提供了大量的輔助閱讀信息,包括一個虛擬軟件團隊在工作中遇到困難時展開的對話,還包括對各章相關(guān)知識給出的補充方法和工具。
致謝我們要特別感謝渥太華大學(xué)的Tim Lethbridge,他幫助我們開發(fā)了UML和OCL的案例,以及配合本書內(nèi)容的其他案例研究。Colby學(xué)院的Dale Skrien開發(fā)了附錄1的UML教輔資源。他們的幫助和意見都是十分寶貴的。此外也感謝高級軟件工程師Austin Krauss,他提供了關(guān)于視頻游戲產(chǎn)業(yè)軟件開發(fā)的寶貴意見。同時,要對為第8版評審做出貢獻(xiàn)的幾位教授表示感謝,他們是佛羅里達(dá)大學(xué)的Manuel E. Bermudez、堪薩斯州立大學(xué)的Scott DeLoach、密歇根州立大學(xué)的Alex Liu和猶他州立大學(xué)的Dean Mathias。正是他們的詳盡而真誠的評審意見幫助了我們,使得本書更加完善。
特別感謝十分高興有機會與羅杰合作,參與本書第8版的撰寫工作。在此期間我的兒子Benjamin推出了他的第一款移動App,我的女兒Katherine開始了她的室內(nèi)設(shè)計生涯。我十分高興地看到他們已經(jīng)長大成人。同時非常感謝妻子Norma,她熱情地支持我,使我能夠?qū)⑺锌臻e時間都投入本書的寫作。
布魯斯R. 馬克西姆(Bruce R. Maxim)隨著本書各版本的不斷推出,我的兩個兒子Mathew和Michael也逐漸從小男孩成長為男子漢。他們在生活中的成熟、品格和成功鼓舞著我,沒有什么比這更讓我自豪了。他們現(xiàn)在也已經(jīng)有了自己的孩子——Maya和 Lily,這兩個女孩已經(jīng)是移動計算時代新智能設(shè)備方面的奇才。最后要感謝妻子Barbara,她寬容我花費如此多的時間在辦公室工作,并且還鼓勵我繼續(xù)寫作本書的下一個版本。
羅杰 S.普萊斯曼(Roger S. Pressman)
改編者序Software Engineering: A Practitioner’s Approach, Eighth Edition, Chinese AbridgementPressman博士的《軟件工程:實踐者的研究方法》(第8版)加入了Maxim博士的工作,一如既往是軟件工程領(lǐng)域的經(jīng)典教材。
此次本科教學(xué)版的推出,主要是為了與第7版本科教學(xué)版保持一致,使內(nèi)容更符合普通高校本科生的課程大綱,適合本科學(xué)生在一學(xué)期內(nèi)掌握軟件工程最核心的基礎(chǔ)內(nèi)容,也幫助更多學(xué)生更好地接受英文原版教材。
與原版相比,第8版本科教學(xué)版的改動內(nèi)容如下。
我們注意到新版增加了移動App和安全工程這兩塊非常重要的內(nèi)容。然而,考慮到課時限制,我們只保留了安全工程部分,將移動App的內(nèi)容留給研究生課程。與第7版的改動宗旨相似,我們主要關(guān)注公共框架中的基本概念,而將WebApp、移動App、度量及其他高級課題內(nèi)容留給研究生階段的課程。
本科教學(xué)版不包含但適合研究生階段學(xué)習(xí)的章節(jié)有:完整版第16章(基于模式的設(shè)計),第17章(WebApp設(shè)計),第18章(移動App設(shè)計),第20章(評審技術(shù)),第25章(測試WebApp),第26章(測試移動App),第28章(形式化建模與驗證),第36章(維護與再工程),以及關(guān)于高級課題的第五部分。完整版第30章(產(chǎn)品度量)也是比較高級的課題,但概要介紹框架性概念的30.1節(jié)可保留,此節(jié)被移到第21章(軟件質(zhì)量保證)最后,變?yōu)?1.10節(jié)。
此外,為了與第7版本科教學(xué)版保持一致,下列章節(jié)中還做了少量裁減:
1. 所有與WebApp和移動App相關(guān)的章節(jié)都被刪除,具體包括:11.5節(jié)、14.5節(jié)、15.5節(jié)、22.5~22.6節(jié)、29.4節(jié)、32.2.6節(jié)、34.5.4 節(jié)。
2. 第3、4章:裁減3.5節(jié)和4.4~4.5節(jié)屬于研究生課程中的高級內(nèi)容。
3. 第7章:該章只是引言,其核心內(nèi)容將在后面的章節(jié)中逐一展開介紹。為減少學(xué)生必須閱讀的篇幅,該章被整體刪除。
4. 第8章:裁減8.2.5~8.2.6節(jié)、8.6~8.8節(jié)屬于研究生課程中的高級內(nèi)容。
5. 第23章:裁減23.4.4節(jié)、23.6.1節(jié)、23.6.4節(jié)、23.8~23.10節(jié)屬于研究生課程中的高級內(nèi)容。
6. 對于本科課程而言,了解關(guān)于度量和估算的基本概念就足夠了,因此32.4~32.6節(jié)以及33.9~33.10節(jié)也作為高級內(nèi)容被裁減。
經(jīng)過壓縮,英文完整版900余頁的篇幅被大幅壓縮到中文版400頁左右。由于我們只是就知識點做了裁減,對于保留部分并未刪減原作的語言和案例,所以不會對寫作風(fēng)格造成明顯的破壞。鑒于改編者的經(jīng)驗和學(xué)識有限,對于裁減內(nèi)容的定奪或存在欠妥之處,歡迎廣大讀者批評指正。
陳越2016年11月譯 者 序Software Engineering: A Practitioner’s Approach, Eighth Edition, Chinese Abridgement本書是國際知名軟件工程專家羅杰 S. 普萊斯曼(Roger S. Pressman)的最新著作。自35年前第1版問世以來,這本書在軟件工程界產(chǎn)生了巨大而深遠(yuǎn)的影響。其權(quán)威性是無可置疑的,在培養(yǎng)軟件工程專業(yè)人才方面所起的作用也是顯而易見的。在這一版中,新加入的布魯斯(Bruce)作為第二作者參與了本書的編寫工作。
我自20世紀(jì)80年代中期開始從事高校軟件工程方面的教學(xué)與科研工作,多年來,這本書的各個版本一直是我的重要參考書,它給了我許多啟發(fā)和幫助,我也曾多次向許多業(yè)界好友和學(xué)生推薦此書。
如今基于計算機的系統(tǒng)已經(jīng)廣泛而深入地滲透到經(jīng)濟、國防和人們?nèi)粘I畹母鱾領(lǐng)域,特別是在互聯(lián)網(wǎng)的推動下,不僅許多行業(yè)得以改進和更新,而且產(chǎn)生了一批新的行業(yè),展現(xiàn)了全新的業(yè)態(tài)。我們必須意識到,在計算機不斷向社會的深度和廣度層面發(fā)展的過程中,軟件始終處在系統(tǒng)的核心地位,起著中樞和靈魂的作用,而且這種作用正日益突出。因此,如何為現(xiàn)代化系統(tǒng)配備合格和優(yōu)良的軟件也就更加受到人們的廣泛關(guān)注。
本書系統(tǒng)地論證了軟件工程領(lǐng)域的基本知識和最新研究成果,包括新的概念、原則、技術(shù)、方法和工具。同時書中還為讀者提供了進一步學(xué)習(xí)和研究的線索,包括許多可供利用的網(wǎng)上資料和信息。與第7版相比,本版繼承了一些優(yōu)點,同時也做了一些改動、擴充和更新。
本書特點1. 全書內(nèi)容分為四個部分,共26章,還包括兩個附錄。四個部分的內(nèi)容分別為軟件過程、建模、質(zhì)量管理和管理軟件項目。
2. 本書繼承了前一版的特色,突出了軟件質(zhì)量管理的內(nèi)容,同時也加強了軟件過程部分。此外,增加的內(nèi)容還包括:軟件工程工作對人員的要求;近年來軟件產(chǎn)業(yè)發(fā)展中出現(xiàn)的新課題——軟件系統(tǒng)安全性和移動App。
3. 仍然在各章的開頭給出“要點瀏覽”(包括概念、人員、重要性、步驟、工作產(chǎn)品和質(zhì)量保證措施)以及“關(guān)鍵概念”(全章內(nèi)容的關(guān)鍵詞)。
4. 仍然在各章的末尾給出“習(xí)題與思考題”以及“擴展閱讀與信息資源”,這些都非常適合有興趣、有需要的讀者沿著所提供的線索開展進一步的學(xué)習(xí)和研究。
5. 仍然保留了本書歷次版本在各章中為讀者提供的多種形式的輔助閱讀信息,可以說這是本書的一個突出特點。這些信息從形式上分為兩類:一類是采用通欄形式的說明框,包括要點瀏覽、信息欄、軟件工具和SafeHome對話框等。
……
Roger S. Pressman軟件過程改善和軟件工程技術(shù)方面的國際知名人士,目前還擔(dān)任R. S. Pressman and Associates 公司總裁。30多年來,他作為軟件工程師、管理人員、教授、作者及咨詢顧問始終工作在軟件工程領(lǐng)域。Pressman博士著有6部著作,并撰寫了很多技術(shù)文章,是多種行業(yè)期刊的固定撰稿人,曾任多個行業(yè)雜志的編委,多年來一直擔(dān)任 《IEEE Software》雜志的Manager專欄的編輯。Pressman博士是知名的演講者,曾在許多行業(yè)會議上演講,他還是美國計算機協(xié)會 (ACM)、美國電氣與電子工程師協(xié)會(IEEE)等組織的成員。
目 錄
Software Engineering: A Practitioner’s Approach, Eighth Edition, Chinese Abridgement
出版者的話
改編者序
譯者序
前言
第1章 軟件的本質(zhì) 1
1.1 軟件的本質(zhì) 3
1.1.1 定義軟件 3
1.1.2 軟件應(yīng)用領(lǐng)域 4
1.1.3 遺留軟件 5
1.2 軟件的變更本質(zhì) 6
1.2.1 WebApp 6
1.2.2 移動App 7
1.2.3 云計算 7
1.2.4 產(chǎn)品線軟件 8
習(xí)題與思考題 8
擴展閱讀與信息資源 8
第2章 軟件工程 10
2.1 定義軟件工程學(xué)科 11
2.2 軟件過程 11
2.2.1 過程框架 12
2.2.2 普適性活動 12
2.2.3 過程的適應(yīng)性調(diào)整 13
2.3 軟件工程實踐 13
2.3.1 實踐的精髓 14
2.3.2 通用原則 14
2.4 軟件開發(fā)神話 16
2.5 這一切是如何開始的 18
習(xí)題與思考題 19
擴展閱讀與信息資源 19
第一部分 軟件過程
第3章 軟件過程結(jié)構(gòu) 22
3.1 通用過程模型 23
3.2 定義框架活動 24
3.3 明確任務(wù)集 24
3.4 過程模式 25
習(xí)題與思考題 27
擴展閱讀與信息資源 27
第4章 過程模型 29
4.1 慣用過程模型 30
4.1.1 瀑布模型 30
4.1.2 增量過程模型 32
4.1.3 演化過程模型 32
4.1.4 并發(fā)模型 36
4.1.5 演化過程的最終評述 37
4.2 專用過程模型 38
4.2.1 基于構(gòu)件的開發(fā) 38
4.2.2 形式化方法模型 39
4.2.3 面向方面的軟件開發(fā) 39
4.3 統(tǒng)一過程 40
4.3.1 統(tǒng)一過程的簡史 41
4.3.2 統(tǒng)一過程的階段 41
4.4 產(chǎn)品和過程 42
習(xí)題與思考題 43
擴展閱讀與信息資源 43
第5章 敏捷開發(fā) 45
5.1 什么是敏捷 46
5.2 敏捷及變更成本 47
5.3 什么是敏捷過程 47
5.3.1 敏捷原則 48
5.3.2 敏捷開發(fā)戰(zhàn)略 49
5.4 極限編程 49
5.4.1 極限編程過程 49
5.4.2 工業(yè)極限編程 51
5.5 其他敏捷過程模型 53
5.5.1 Scrum 53
5.5.2 動態(tài)系統(tǒng)開發(fā)方法 54
5.5.3 敏捷建模 55
5.5.4 敏捷統(tǒng)一過程 56
5.6 敏捷過程工具集 57
習(xí)題與思考題 58
擴展閱讀與信息資源 58
第6章 軟件工程的人員方面 60
6.1 軟件工程師的特質(zhì) 60
6.2 軟件工程心理學(xué) 61
6.3 軟件團隊 62
6.4 團隊結(jié)構(gòu) 63
6.5 敏捷團隊 64
6.5.1 通用敏捷團隊 64
6.5.2 XP團隊 65
6.6 社交媒體的影響 66
6.7 軟件工程中云的應(yīng)用 67
6.8 協(xié)作工具 67
6.9 全球化團隊 68
習(xí)題與思考題 69
擴展閱讀與信息資源 69
第二部分 建模
第7章 理解需求 72
7.1 需求工程 73
7.2 建立根基 78
7.2.1 確認(rèn)利益相關(guān)者 78
7.2.2 識別多重觀點 78
7.2.3 協(xié)同合作 79
7.2.4 首次提問 79
7.3 獲取需求 80
7.3.1 協(xié)作收集需求 80
7.3.2 質(zhì)量功能部署 82
7.3.3 使用場景 83
7.3.4 獲取工作產(chǎn)品 84
7.3.5 敏捷需求獲取 84
7.3.6 面向服務(wù)的方法 84
7.4 開發(fā)用例 85
7.5 構(gòu)建分析模型 88
7.5.1 分析模型的元素 89
7.5.2 分析模式 91
7.5.3 敏捷需求工程 91
7.5.4 自適應(yīng)系統(tǒng)的需求 91
7.6 避免常見錯誤 92
習(xí)題與思考題 92
擴展閱讀與信息資源 93
第8章 需求建模:基于場景的方法 95
8.1 需求分析 96
8.1.1 總體目標(biāo)和原理 96
8.1.2 分析的經(jīng)驗原則 97
8.1.3 域分析 97
8.1.4 需求建模的方法 99
8.2 基于場景建模 100
8.2.1 創(chuàng)建初始用例 100
8.2.2 細(xì)化初始用例 102
8.2.3 編寫正式用例 103
8.3 補充用例的UML模型 105
8.3.1 開發(fā)活動圖 105
8.3.2 泳道圖 106
習(xí)題與思考題 107
擴展閱讀與信息資源 107
第9章 需求建模:基于類的方法 108
9.1 識別分析類 108
9.2 描述屬性 111
9.3 定義操作 111
9.4 類–職責(zé)–協(xié)作者建模 113
9.5 關(guān)聯(lián)和依賴 118
9.6 分析包 118
習(xí)題與思考題 119
擴展閱讀與信息資源 119
第10章 需求建模:行為和模式 121
10.1 生成行為模型 121
10.2 識別用例事件 122
10.3 狀態(tài)表達(dá) 122
10.4 需求建模的模式 125
10.4.1 發(fā)現(xiàn)分析模式 125
10.4.2 需求模式舉例:執(zhí)行器–傳感器 126
習(xí)題與思考題 129
擴展閱讀與信息資源 129
第11章 設(shè)計概念 131
11.1 軟件工程中的設(shè)計 132
11.2 設(shè)計過程 134
11.2.1 軟件質(zhì)量指導(dǎo)原則和屬性 134
11.2.2 軟件設(shè)計的演化 136
11.3 設(shè)計概念 137
11.3.1 抽象 137
11.3.2 體系結(jié)構(gòu) 137
11.3.3 模式 138
11.3.4 關(guān)注點分離 138
11.3.5 模塊化 138
11.3.6 信息隱蔽 139
11.3.7 功能獨立 139
11.3.8 求精 140
11.3.9 方面 140
11.3.10 重構(gòu) 141
11.3.11 面向?qū)ο蟮脑O(shè)計概念 141
11.3.12 設(shè)計類 142
你還可能感興趣
我要評論
|