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