本書全面、系統(tǒng)地介紹軟件工程的基本概念、原理和典型的技術(shù)方法,在注重軟件工程學(xué)科的系統(tǒng)性、原理性的同時(shí),對(duì)于軟件工程生命周期的各階段,都有詳細(xì)案例對(duì)應(yīng),讓讀者能夠在了解基本理論知識(shí)的基礎(chǔ)上,提升實(shí)踐動(dòng)手能力,把所學(xué)內(nèi)容快速運(yùn)用到實(shí)際項(xiàng)目中。本書內(nèi)容共分11章:第1章是對(duì)軟件工程的概述;第2~5章按照軟件生命周期的開發(fā)順序,以結(jié)構(gòu)化方法為主線,介紹軟件工程各階段的任務(wù)、過程、方法和工具;第6章介紹軟件測(cè)試;第7~9章結(jié)合軟件生命周期過程,以面向?qū)ο蠓椒橹骶,介紹統(tǒng)一建模語言UML、面向?qū)ο蠓治黾斑^程、面向?qū)ο笤O(shè)計(jì)及建模、測(cè)試等內(nèi)容;第10章介紹軟件維護(hù);第11章介紹軟件項(xiàng)目管理及CMM。 軟件工程是強(qiáng)調(diào)基礎(chǔ)理論與項(xiàng)目實(shí)踐緊密結(jié)合的學(xué)科。因此,本書在講解理論、方法、過程的同時(shí),注重融入實(shí)際項(xiàng)目,并在每章后有針對(duì)性地提供專門設(shè)計(jì)的習(xí)題,讓讀者更好地在實(shí)踐中掌握基礎(chǔ)理論。
本書自2012年6月第1版出版發(fā)行起,至今已出版發(fā)行了3版,且已被全國(guó)多所高校選作教材用書,同時(shí)也被多所高校選為研究生入學(xué)考試參考用書,均取得了良好效果。隨著軟件工程學(xué)科的發(fā)展,軟件技術(shù)在不斷更新,軟件過程也在不停演化。作者運(yùn)用近年來從事軟件工程基礎(chǔ)課程和軟件工程綜合訓(xùn)練實(shí)訓(xùn)課的教學(xué)內(nèi)容,結(jié)合軟件開發(fā)的實(shí)踐經(jīng)驗(yàn),在延續(xù) 第?3版書整體結(jié)構(gòu)和篇幅基本不變的前提下,對(duì)內(nèi)容做了以下修正和補(bǔ)充。
。1)在國(guó)家課程思政背景下,結(jié)合教書育人的目標(biāo),本書體現(xiàn)三個(gè)方面的功能:思想性、知識(shí)性、能力性。通過對(duì)實(shí)際項(xiàng)目的分析,將知識(shí)點(diǎn)有效組織和連接,并把思政貫穿軟件生命周期的全過程,真正起到學(xué)習(xí)兼育人的作用。
。2)修改了第3版中的錯(cuò)誤,更加規(guī)范和完善了相關(guān)的圖、表,對(duì)文字?jǐn)⑹鲞M(jìn)行了進(jìn)一步的加工和潤(rùn)色。
(3)根據(jù)軟件工程學(xué)科發(fā)展和新技術(shù)的提出,以及項(xiàng)目實(shí)際應(yīng)用,刪除了部分使用較少的內(nèi)容。新增及補(bǔ)充部分內(nèi)容,如軟件的本質(zhì)、SCRUM、需求分析方法、系統(tǒng)持續(xù)集成、識(shí)別用例間行為等。
。4)在修改部分章習(xí)題的同時(shí),緊跟時(shí)代發(fā)展和應(yīng)用需求,新增部分綜合練習(xí),目的是讓讀者更好地在實(shí)踐中應(yīng)用軟件工程的基本原理、方法和 工具。
計(jì)算機(jī)專業(yè)的學(xué)生及相關(guān)技術(shù)人員大多重技術(shù)而輕文檔編寫。然而,在近年來廣受關(guān)注的敏捷過程的實(shí)施和實(shí)踐應(yīng)用中,有效的文檔編寫和文檔管理仍顯示出軟件生命周期的價(jià)值和在確保軟件質(zhì)量上的強(qiáng)大生命力。因此,本書第4版希望通過介紹軟件工程各階段所要編寫的文檔框架,來強(qiáng)調(diào)文檔對(duì)軟件工程過程實(shí)施、軟件質(zhì)量管理的重要性。
前言的最后給出本書的結(jié)構(gòu)圖,希望能幫助讀者更好地學(xué)習(xí)軟件工程。
本書結(jié)構(gòu)圖給讀者提供了兩類不同的學(xué)習(xí)路徑。
學(xué)習(xí)路徑一:以兩條不同的設(shè)計(jì)思想為主線,按照前后順序進(jìn)行學(xué)習(xí)。全書先基于結(jié)構(gòu)化程序設(shè)計(jì)思想,介紹軟件工程的基本理論、方法、過程與工具,讓讀者全面了解和掌握軟件工程生命周期各階段的任務(wù)、過程、技術(shù)、文檔等知識(shí)體系。之后基于面向?qū)ο蟪绦蛟O(shè)計(jì)思想,依托統(tǒng)一建模語言UML,深入理解和掌握面向?qū)ο蟮幕靖拍睢⒎庋b性、繼承性和多態(tài)性,完成面向?qū)ο筌浖こ痰姆治、設(shè)計(jì)、實(shí)現(xiàn)的軟件生命周期全過程。
學(xué)習(xí)路徑二:以兩條不同的設(shè)計(jì)思想為主線,按照結(jié)構(gòu)圖中虛線所連接的各章對(duì)照展開學(xué)習(xí)。這樣的學(xué)習(xí)思路,是將軟件工程生命周期各階段,按照結(jié)構(gòu)化程序設(shè)計(jì)思想與面向?qū)ο蟪绦蛟O(shè)計(jì)思想進(jìn)行對(duì)比學(xué)習(xí),便于讀者對(duì)于項(xiàng)目的同一階段應(yīng)采用何種方法實(shí)施能產(chǎn)生同步比較。
兩種學(xué)習(xí)路徑都涵蓋了軟件工程各階段知識(shí)點(diǎn),強(qiáng)調(diào)基本原理、方法與技術(shù)。兩種路徑均以實(shí)例為主線,把分散的知識(shí)點(diǎn)串聯(lián)起來,在注重理論與實(shí)踐相結(jié)合的同時(shí),強(qiáng)化學(xué)習(xí)實(shí)效。同時(shí),讀者通過對(duì)兩類不同設(shè)計(jì)思想的學(xué)習(xí),對(duì)比各自軟件過程中的原理與方法,自我分析和總結(jié)它們各自的優(yōu)缺點(diǎn),能更深入理解軟件工程原理與過程,從而理解不同軟件設(shè)計(jì)思想及開發(fā)方法對(duì)軟件分析、實(shí)現(xiàn)和維護(hù)的影響,以及對(duì)軟件質(zhì)量和項(xiàng)目管理的推動(dòng)作用。
編者向使用本書進(jìn)行教學(xué)的教師和同學(xué),以及對(duì)本書提出建議和意見的教師、學(xué)生及讀者表示誠(chéng)摯的謝意。由于編者水平有限,疏漏、欠妥、謬誤之處在所難免,懇請(qǐng)讀者指正。
本書配套的教學(xué)資源包括教學(xué)大綱、教學(xué)PPT、習(xí)題答案和在線題庫(kù),服務(wù)支持聯(lián)系QQ:381844463。
??????????????????????編 者
于北京理工大學(xué)
2023年1月
本書第2版自2015年6月出版以來,被眾多高校選作教材,還作為研究生入學(xué)考試的參考書,取得了良好的效果。根據(jù)作者近年來從事軟件工程基礎(chǔ)軟件工程綜合訓(xùn)練的教學(xué),并結(jié)合軟件開發(fā)的實(shí)踐經(jīng)驗(yàn),在保持原書結(jié)構(gòu)和篇幅基本不變的前提下,對(duì)第2版的內(nèi)容做了以下修正和 補(bǔ)充:
。1)修改了第2版中出現(xiàn)的錯(cuò)誤,更加規(guī)范和完善相關(guān)的圖、表,對(duì)文字?jǐn)⑹鲎隽诉M(jìn)一步的加工和潤(rùn)色。
。2)根據(jù)軟件工程的發(fā)展,以及項(xiàng)目實(shí)際的應(yīng)用,刪除了部分使用較少的內(nèi)容,包括4GT過程模型、基于構(gòu)建的開發(fā)模型、統(tǒng)一建模過程、Worrior圖、管道過濾器模型、面向數(shù)據(jù)的設(shè)計(jì)方法、Jackson圖等內(nèi)容。新增部分內(nèi)容,包括漸進(jìn)交付的迭代模型、軟件過程模型的比較、強(qiáng)調(diào)數(shù)據(jù)字典的作用、面向?qū)ο蟮姆治鲞^程、基于過程的面向?qū)ο蠹蓽y(cè)試、軟件維護(hù)評(píng)審等內(nèi)容,以反映軟件工程的最新發(fā)展。
。3)新增了部分章節(jié)后的習(xí)題,目的是讓讀者更好地在實(shí)踐中掌握基礎(chǔ)理論。
鑒于技術(shù)人員專注技術(shù)而輕文檔編寫的實(shí)際情況,即使敏捷過程、極限編程等近年來廣泛受到關(guān)注,也有一定程度的應(yīng)用與實(shí)踐,但有效的文檔和管理在軟件生命周期中仍有較高價(jià)值與強(qiáng)大的生命力。因此,本書第3版仍希望通過介紹軟件工程各階段的文檔框架編寫,來強(qiáng)化文檔對(duì)軟件工程實(shí)施的重要性。
下面給出本書的結(jié)構(gòu)圖,希望能給讀者更好地學(xué)習(xí)提供幫助。
在全書的結(jié)構(gòu)圖中,有兩類不同的學(xué)習(xí)路徑:
一是按照本書的章節(jié)順序進(jìn)行學(xué)習(xí)。先以結(jié)構(gòu)化程序設(shè)計(jì)為主,介紹軟件工程的基本理論、方法、過程與工具;然后以面向?qū)ο鬄橹,借助UML統(tǒng)一建模語言,完成對(duì)面向?qū)ο蠡靖拍、封裝性、繼承性和多態(tài)性的理解,學(xué)習(xí)面向?qū)ο蠓治雠c設(shè)計(jì)的過程。
二是按照結(jié)構(gòu)圖中虛線對(duì)應(yīng)的章節(jié)進(jìn)行學(xué)習(xí)。這樣的學(xué)習(xí)思路,是將軟件工程生命周期的各階段,按照結(jié)構(gòu)化方法和面向?qū)ο蠓椒ㄏ鄬?duì)比同時(shí)進(jìn) 行。這樣的學(xué)習(xí)路徑,便于用戶在同一階段、對(duì)同一項(xiàng)目采用何種方法進(jìn)行分析與設(shè)計(jì)產(chǎn)生同步比較。
無論使用哪種學(xué)習(xí)路徑進(jìn)行學(xué)習(xí),讀者通過對(duì)兩類設(shè)計(jì)思想的不同及軟件過程的比較,不僅能分析和總結(jié)它們各自的優(yōu)缺點(diǎn),還能更深入理解相同的軟件工程過程結(jié)合不同的軟件設(shè)計(jì)思想,對(duì)軟件分析、實(shí)現(xiàn)和維護(hù)的影響,對(duì)軟件質(zhì)量和管理發(fā)展的推動(dòng)。
由于作者水平有限,疏漏、欠妥、謬誤之處在所難免,懇請(qǐng)讀者指正。
??????????????????????作 者
于北京理工大學(xué)
2019年1月
本書第1版自2012年7月出版以來,作為各類學(xué)生授課的教材、不同讀者的參考書,以及一些高校用書,取得了良好效果。然而,隨著軟件工程的發(fā)展,為更好地服務(wù)于讀者,編者對(duì)原書內(nèi)容做了認(rèn)真修改,編寫第 2版。
根據(jù)作者近年來從事軟件工程課程教學(xué)和軟件開發(fā)的實(shí)踐經(jīng)驗(yàn),在保持原書結(jié)構(gòu)和篇幅基本不變的前提下,第2版主要做了以下修正和補(bǔ)充:
(1)修改了第1版中出現(xiàn)的錯(cuò)誤,更加規(guī)范和完善相關(guān)的圖、表,對(duì)文字?jǐn)⑹鲎隽诉M(jìn)一步的加工和潤(rùn)色。
。2)增加軟件工程中較重要的內(nèi)容。增加的內(nèi)容包括:基于構(gòu)件的開發(fā)模型,Rational統(tǒng)一建模過程,可行性研究及系統(tǒng)流程圖,需求驗(yàn)證,管道與過濾器模型,軟件設(shè)計(jì)驗(yàn)證,集成測(cè)試案例,確認(rèn)測(cè)試案例。
。3)作者認(rèn)為軟件工程基礎(chǔ)應(yīng)該注重基礎(chǔ)理論與實(shí)踐相結(jié)合的理念,因而增加了每章后的習(xí)題,特別是增加了實(shí)際分析、設(shè)計(jì)習(xí)題,讓讀者更好地在實(shí)踐中掌握基礎(chǔ)理論。
鑒于技術(shù)人員專注技術(shù)而輕文檔編寫的實(shí)際情況,本書第2版仍希望 通過介紹軟件工程各階段的編寫文檔框架,來強(qiáng)調(diào)文檔對(duì)軟件工程實(shí)施的 重要性。本書各章節(jié)的安排,是按照以結(jié)構(gòu)化設(shè)計(jì)思想為基礎(chǔ),全面介紹軟件工程過程各階段的過程、方法和工具,讓讀者對(duì)軟件工程的實(shí)施有一個(gè)完整、清晰的認(rèn)識(shí)。之后,再以面向?qū)ο笤O(shè)計(jì)思想為指導(dǎo),詳細(xì)介紹基于面向?qū)ο蟮能浖こ涕_發(fā)過程。
下面給出本書的結(jié)構(gòu)圖,希望能給讀者更好地學(xué)習(xí)提供幫助。
建議學(xué)習(xí)過程:
。1)第1章通過對(duì)軟件、軟件生命周期和軟件過程模型的介紹,讓讀者對(duì)軟件工程的基本原理、方法、過程有一個(gè)基本認(rèn)識(shí)。該章是全書的導(dǎo)論。
(2)第2~6章以結(jié)構(gòu)化方法為依托,按照軟件工程生命周期過程模型的需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼和測(cè)試等階段,全面介紹各階段涉及的過程、方法和工具,讓讀者對(duì)結(jié)構(gòu)化軟件工程的實(shí)施有一個(gè)完整、清晰的認(rèn)識(shí)。
。3)第7~9章以面向?qū)ο蠓椒橐劳,詳?xì)介紹基于UML的軟件工程,包括面向?qū)ο蠓治、面向(qū)ο笤O(shè)計(jì)、設(shè)計(jì)模式、數(shù)據(jù)設(shè)計(jì)和測(cè)試,使得讀者對(duì)面向?qū)ο筌浖こ痰膶?shí)施有一個(gè)完整、清晰的認(rèn)識(shí)。通過對(duì)這兩種
方法學(xué)的比較,洞悉它們各自的優(yōu)劣,從而更好地掌握和靈活應(yīng)用。
。4)第10章介紹作為軟件工程最后一個(gè)階段的軟件維護(hù)的內(nèi)容和過程,以及如何提高軟件的可維護(hù)性,實(shí)現(xiàn)軟件再工程。
。5)第11章介紹有關(guān)軟件項(xiàng)目管理的基本要求和內(nèi)容。該章應(yīng)該貫穿于整個(gè)學(xué)習(xí)過程中,或置于最初進(jìn)行學(xué)習(xí)也可行。只有通過合理的軟件項(xiàng)目管理這一平臺(tái),才能按時(shí)、保質(zhì)、保量地完成滿足用戶需求的、高質(zhì)量的、高可靠性的軟件產(chǎn)品。
。6)最后通過軟件工程綜合訓(xùn)練,配合一定的項(xiàng)目開發(fā)過程,真正把所學(xué)、所掌握的知識(shí)融入實(shí)際項(xiàng)目中去。
按照這樣的學(xué)習(xí)過程,讀者通過對(duì)兩類設(shè)計(jì)思想的不同以及軟件過程的比較,不僅能分析和總結(jié)它們各自的優(yōu)缺點(diǎn),還能更深入理解相同的軟件工程過程結(jié)合不同的軟件設(shè)計(jì)思想,對(duì)軟件分析、實(shí)現(xiàn)和維護(hù)的影響,對(duì)軟件質(zhì)量和管理發(fā)展的推動(dòng)。
由于作者水平有限,疏漏、不妥、錯(cuò)誤之處在所難免,懇請(qǐng)讀者指正。
??????????????????????作 者
于北京理工大學(xué)
2015年1月
軟件是信息化的核心之一,軟件產(chǎn)業(yè)展現(xiàn)國(guó)家科技發(fā)展的核心競(jìng)爭(zhēng)力,體現(xiàn)國(guó)家的綜合實(shí)力。隨著計(jì)算機(jī)應(yīng)用的不斷普及,互聯(lián)網(wǎng)應(yīng)用的不斷深入和網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,使軟件系統(tǒng)的規(guī)模和復(fù)雜度不斷增加,如何確保開發(fā)出符合用戶預(yù)期的、質(zhì)量有保證的軟件系統(tǒng)仍然面臨巨大挑戰(zhàn),軟件危機(jī)的障礙仍阻礙軟件的發(fā)展。
作為計(jì)算機(jī)科學(xué)技術(shù)的一個(gè)重要分支軟件工程學(xué),成為研究軟件需求、開發(fā)、維護(hù)、管理的普遍原理和技術(shù)相結(jié)合的、活躍的研究領(lǐng)域。隨著軟件工程的迅猛發(fā)展,新技術(shù)、新方法、新工具不斷涌現(xiàn),為讀者學(xué)習(xí)和研究這門學(xué)科創(chuàng)造了良好的基礎(chǔ)和難得的機(jī)遇。
作為軟件工程學(xué)的入門介紹,本書立足于基本的原理、概念、方法和工具,從實(shí)用的角度講解軟件系統(tǒng)需求、設(shè)計(jì)、實(shí)現(xiàn)、測(cè)試、維護(hù)和管理的內(nèi)容,同時(shí)兼顧對(duì)軟件工程過程介紹的全面性和系統(tǒng)性。
本書根據(jù)作者多年從事軟件工程課程教學(xué)和軟件開發(fā)的實(shí)踐經(jīng)驗(yàn),在介紹相關(guān)理論和過程的基礎(chǔ)上,著重講解軟件工程在實(shí)踐中的方法、技術(shù)和工具。本書的特點(diǎn)體現(xiàn)在:
。1)減少軟件工程理論的闡述,避免對(duì)不同過程和方法的學(xué)術(shù)討論。
(2)介紹軟件工程理論的基本概念和過程,它們對(duì)軟件過程實(shí)踐起著 基石和指導(dǎo)作用。
。3)每章最后對(duì)各章的主要內(nèi)容進(jìn)行總結(jié),便于讀者理解和掌握主要 內(nèi)容。
。4)鑒于技術(shù)人員專注技術(shù)而輕文檔編寫的實(shí)際情況,書中介紹了軟 件工程各階段需要編寫的文檔框架,并通過實(shí)例不斷強(qiáng)調(diào)文檔對(duì)實(shí)施軟件工程的重要性。
。5)本書中的主要案例都來自于作者的研究和實(shí)際工程項(xiàng)目,讓讀者 深切感受到書中介紹的理論是如何指導(dǎo)實(shí)踐的。
本書各章節(jié)的安排,是以結(jié)構(gòu)化設(shè)計(jì)思想為基礎(chǔ),全面介紹軟件工程過程各階段的過程、方法和工具,讓讀者對(duì)軟件工程的實(shí)施有一個(gè)完整、清晰的認(rèn)識(shí);之后,再以面向?qū)ο笤O(shè)計(jì)思想為指導(dǎo),詳細(xì)介紹基于面向?qū)ο蟮能浖こ涕_發(fā)過程。這樣編排的目的,是使讀者通過對(duì)兩類設(shè)計(jì)思想的不同以及軟件過程的比較,不僅能分析它們各自的優(yōu)缺點(diǎn),還能更深入理解相同的軟件工程過程結(jié)合不同的軟件設(shè)計(jì)思想,對(duì)軟件分析、實(shí)現(xiàn)和維護(hù)的影響,
對(duì)軟件質(zhì)量和管理發(fā)展的推動(dòng)。
下面簡(jiǎn)要介紹本書各章節(jié)的概貌,讓讀者對(duì)本書內(nèi)容有一個(gè)提綱挈領(lǐng)的了解。
第1章回顧了軟件危機(jī)的產(chǎn)生,介紹軟件工程的產(chǎn)生和發(fā)展,包括軟件工程的基本概念、目標(biāo)和實(shí)施原則。通過對(duì)軟件、軟件生命周期和軟件過程模型的介紹,讓讀者對(duì)軟件工程的基本原理、方法、過程有一個(gè)基本認(rèn)識(shí)。
第2章介紹軟件需求工程的基本概念、任務(wù)和原則,并詳細(xì)說明結(jié)構(gòu)化分析和建模過程,包括面向數(shù)據(jù)的數(shù)據(jù)建模、面向數(shù)據(jù)流的功能建模和面向狀態(tài)的行為建模。
第3章介紹軟件設(shè)計(jì)的基本概念、任務(wù)和原則,以及目前主流的軟件體系結(jié)構(gòu)設(shè)計(jì)模型,它們分別是以數(shù)據(jù)為中心的數(shù)據(jù)倉(cāng)庫(kù)模型、客戶端/服務(wù)器模式的分布式結(jié)構(gòu)模型和層次模型。
第4章從應(yīng)用角度出發(fā),詳細(xì)描述了結(jié)構(gòu)化設(shè)計(jì)的兩類設(shè)計(jì)方法:面向數(shù)據(jù)流的設(shè)計(jì)方法和面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法,及其它們的設(shè)計(jì)過程。
第5章從軟件工程范疇討論程序?qū)崿F(xiàn)和編碼,包括程序設(shè)計(jì)語言的分類、特性、準(zhǔn)則及程序編寫規(guī)范等。
第6章介紹進(jìn)行軟件測(cè)試的對(duì)象和測(cè)試技術(shù)。軟件測(cè)試對(duì)象不僅包括源碼,還包括設(shè)計(jì)方案、需求說明等軟件工程文檔。測(cè)試技術(shù)主要介紹白盒測(cè)試和黑盒測(cè)試。
第7章介紹面向?qū)ο筌浖こ痰慕;A(chǔ)。UML通過圖形化的表示機(jī)制,為面向?qū)ο蠓治龊驮O(shè)計(jì)提供統(tǒng)一的、標(biāo)準(zhǔn)化的視圖、圖、模型元素和通用機(jī)制,以刻畫面向?qū)ο蠓椒ā?br /> 第8章介紹面向?qū)ο蠓治龅慕_^程。面向?qū)ο蠓治瞿P椭饕?種獨(dú)立模型構(gòu)成:功能模型、靜態(tài)模型和動(dòng)態(tài)模型。該章詳細(xì)說明作為建;A(chǔ)的靜態(tài)模型的5個(gè)層次。
第9章介紹把面向?qū)ο蠓治鲭A段得到的需求模型轉(zhuǎn)換為符合用戶功能、性能,便于與某種面向?qū)ο蟪绦蛟O(shè)計(jì)語言編程的系統(tǒng)實(shí)現(xiàn)方案。
第10章介紹作為軟件工程最后一個(gè)階段的軟件維護(hù)的內(nèi)容和過程,以及如何提高軟件的可維護(hù)性和實(shí)現(xiàn)軟件再工程。
第11章介紹有關(guān)軟件項(xiàng)目管理的基本要求和內(nèi)容。通過對(duì)軟件項(xiàng)目的估算、項(xiàng)目進(jìn)度管理、風(fēng)險(xiǎn)管理、質(zhì)量管理、配置管理等內(nèi)容的介紹,明確只有對(duì)軟件工程實(shí)行全過程的計(jì)劃、組織和控制等一系列活動(dòng),才能得到符合用戶需求的、高質(zhì)量且高可靠性的軟件產(chǎn)品。
由于作者水平有限,疏漏、欠妥、謬誤之處在所難免,懇請(qǐng)讀者指正。
??????????????????????作 者
于北京理工大學(xué)
2012年1月
第1章 軟件工程概述 1
1.1 軟件工程的發(fā)展歷程 1
1.1.1 軟件危機(jī) 1
1.1.2 軟件危機(jī)出現(xiàn)的原因 3
1.1.3 軟件的本質(zhì)特性 4
1.1.4 軟件工程的發(fā)展 5
1.1.5 國(guó)內(nèi)軟件工程及軟件產(chǎn)業(yè)的發(fā)展 6
1.2 軟件工程的概念 7
1.2.1 軟件工程的定義 7
1.2.2 軟件工程的目標(biāo) 9
1.2.3 軟件工程的實(shí)施原則 10
1.2.4 軟件工程的基本原理 11
1.3 軟件與軟件過程 13
1.3.1 軟件的概念 13
1.3.2 軟件的分類 15
1.3.3 軟件生命周期 16
1.3.4 軟件過程 17
1.4 軟件過程模型 19
1.4.1 瀑布模型 19
1.4.2 原型模型 20
1.4.3 增量模型 21
1.4.4 螺旋模型 22
1.4.5 噴泉模型 23
1.4.6 敏捷過程模型 23
1.4.7 漸進(jìn)交付迭代模型 26
1.4.8 軟件過程模型的比較 28
1.5 軟件開發(fā)方法 28
1.5.1 結(jié)構(gòu)化開發(fā)方法 29
1.5.2 面向?qū)ο箝_發(fā)方法 29
1.6 案例描述 30
1.6.1 簡(jiǎn)歷信息自動(dòng)獲取和查詢系統(tǒng) 30
1.6.2 試卷自動(dòng)生成系統(tǒng) 31
1.7 本章小結(jié) 32
習(xí)題 33
第2章 軟件需求工程 35
2.1 軟件需求的基本概念 35
2.1.1 需求分析的任務(wù) 35
2.1.2 需求分析的原則 36
2.1.3 需求分析的內(nèi)容 37
2.1.4 需求分析的方法 38
2.2 可行性分析 39
2.2.1 可行性分析的內(nèi)容 40
2.2.2 系統(tǒng)流程圖 41
2.3 需求工程的過程 42
2.3.1 需求工程中的參與人員 42
2.3.2 需求工程中的活動(dòng) 43
2.3.3 需求工程的管理 44
2.4 需求獲取技術(shù) 45
2.5 結(jié)構(gòu)化需求分析和建模 48
2.5.1 結(jié)構(gòu)化需求分析概述 48
2.5.2 面向數(shù)據(jù)的數(shù)據(jù)建模 49
2.5.3 面向數(shù)據(jù)流的功能建模 50
2.5.4 面向狀態(tài)轉(zhuǎn)換的行為建模 56
2.6 數(shù)據(jù)字典 58
2.6.1 數(shù)據(jù)字典的編寫要求 58
2.6.2 數(shù)據(jù)字典的定義 59
2.7 案例簡(jiǎn)歷信息自動(dòng)獲取和查詢系統(tǒng)的需求建模 61
2.7.1 數(shù)據(jù)建模E-R圖描述 61
2.7.2 功能建模數(shù)據(jù)流圖 61
2.7.3 行為建模狀態(tài)轉(zhuǎn)換圖 63
2.7.4 加工邏輯PDL語言的描述 63
2.7.5 數(shù)據(jù)字典 63
2.8 需求評(píng)審 65
2.8.1 軟件需求規(guī)格說明 65
2.8.2 需求評(píng)審標(biāo)準(zhǔn)及需求驗(yàn)證 68
2.8.3 需求變更管理 70
2.9 本章小結(jié) 71
習(xí)題 72
第3章 軟件設(shè)計(jì)基礎(chǔ) 75
3.1 軟件設(shè)計(jì)概述 75
3.1.1 軟件設(shè)計(jì)與軟件需求 75
3.1.2 軟件設(shè)計(jì)的任務(wù) 76
3.1.3 軟件設(shè)計(jì)的原則 78
3.2 軟件體系結(jié)構(gòu)設(shè)計(jì) 79
3.2.1 體系結(jié)構(gòu)設(shè)計(jì)概述 79
3.2.2 以數(shù)據(jù)為中心的數(shù)據(jù)倉(cāng)庫(kù)模型 80
3.2.3 客戶端/服務(wù)器模式的分布式結(jié)構(gòu) 81
3.2.4 層次模型 83
3.2.5 MVC模型 84
3.3 模塊化設(shè)計(jì) 85
3.3.1 軟件模塊化與分解 85
3.3.2 抽象 86
3.3.3 信息隱藏 87
3.3.4 模塊獨(dú)立性 88
3.3.5 啟發(fā)式規(guī)則 91
3.4 界面設(shè)計(jì) 94
3.4.1 界面設(shè)計(jì)的任務(wù) 94
3.4.2 界面設(shè)計(jì)的原則 95
3.4.3 界面設(shè)計(jì)的特性 96
3.5 軟件設(shè)計(jì)評(píng)審 96
3.5.1 軟件設(shè)計(jì)規(guī)格說明 96
3.5.2 軟件設(shè)計(jì)評(píng)審標(biāo)準(zhǔn) 100
3.5.3 軟件設(shè)計(jì)驗(yàn)證 101
3.6 本章小結(jié) 102
習(xí)題 103
第4章 結(jié)構(gòu)化設(shè)計(jì)方法 105
4.1 結(jié)構(gòu)化設(shè)計(jì)方法概述 105
4.2 面向數(shù)據(jù)流的設(shè)計(jì)方法 106
4.2.1 層次圖和結(jié)構(gòu)圖 106
4.2.2 變換分析法 108
4.2.3 事務(wù)分析法 111
4.2.4 混合分析法 113
4.3 案例簡(jiǎn)歷信息自動(dòng)獲取和查詢系統(tǒng)的數(shù)據(jù)流設(shè)計(jì)方法 114
4.3.1 用變換分析法進(jìn)行設(shè)計(jì) 114
4.3.2 用事務(wù)分析法進(jìn)行設(shè)計(jì) 115
4.3.3 兩種方法的比較 116
4.4 結(jié)構(gòu)化詳細(xì)設(shè)計(jì)的工具 117
4.4.1 程序流程圖 117
4.4.2 盒圖 118
4.4.3 問題分析圖 119
4.4.4 判定樹 121
4.4.5 判定表 121
4.4.6 詳細(xì)設(shè)計(jì)工具的比較 123
4.5 本章小結(jié) 124
習(xí)題 124
第5章 軟件實(shí)現(xiàn) 127
5.1 軟件實(shí)現(xiàn)的任務(wù) 127
5.2 程序設(shè)計(jì)語言 128
5.2.1 程序設(shè)計(jì)語言的分類 128
5.2.2 程序設(shè)計(jì)語言的特性 129
5.2.3 選擇程序設(shè)計(jì)語言 130
5.3 程序設(shè)計(jì)風(fēng)格 131
5.3.1 程序編排和組織的準(zhǔn)則 132
5.3.2 程序設(shè)計(jì)的效率 136
5.4 軟件重用 138
5.5 代碼評(píng)審 139
5.6 本章小結(jié) 142
習(xí)題 143
第6章 軟件測(cè)試 146
6.1 軟件測(cè)試基礎(chǔ) 146
6.1.1 軟件測(cè)試概念 146
6.1.2 軟件測(cè)試過程模型 147
6.1.3 軟件測(cè)試原則 149
6.1.4 軟件測(cè)試在軟件開發(fā)各階段的工作流程 151
6.1.5 軟件測(cè)試信息流 153
6.1.6 軟件測(cè)試技術(shù)分類 153
6.2 白盒測(cè)試 155
6.2.1 邏輯覆蓋 155
6.2.2 循環(huán)測(cè)試 158
6.2.3 路徑測(cè)試 160
6.3 黑盒測(cè)試 163
6.3.1 等價(jià)類劃分 164
6.3.2 邊界值分析 165
6.3.3 錯(cuò)誤推測(cè)法 166
6.3.4 因果圖法 167
6.4 白盒測(cè)試和黑盒測(cè)試的比較 169
6.4.1 應(yīng)用角度的不同 169
6.4.2 白盒測(cè)試的優(yōu)點(diǎn)與不足 170
6.4.3 黑盒測(cè)試的優(yōu)點(diǎn)與不足 170
6.5 軟件測(cè)試策略 170
6.5.1 單元測(cè)試 171
6.5.2 集成測(cè)試 173
6.5.3 確認(rèn)測(cè)試 177
6.5.4 系統(tǒng)測(cè)試 178
6.6 調(diào)試 180
6.6.1 軟件調(diào)試過程 180
6.6.2 軟件調(diào)試方法 181
6.7 持續(xù)集成 182
6.7.1 持續(xù)集成的概念 182
6.7.2 持續(xù)集成的原則 183
6.8 軟件測(cè)試報(bào)告 184
6.8.1 軟件測(cè)試說明 184
6.8.2 軟件測(cè)試報(bào)告 185
6.9 本章小結(jié) 186
習(xí)題 187
第7章 統(tǒng)一建模語言UML 190
7.1 UML的發(fā)展 190
7.1.1 UML的產(chǎn)生 190
7.1.2 UML的構(gòu)成 191
7.1.3 UML的特點(diǎn) 192
7.2 面向?qū)ο蠡A(chǔ) 192
7.2.1 面向?qū)ο蟮幕靖拍?192
7.2.2 共享 198
7.3 UML視圖 198
7.4 UML的圖和模型元素 200
7.4.1 用例圖 200
7.4.2 類圖 202
7.4.3 包圖 203
7.4.4 狀態(tài)圖 204
7.4.5 活動(dòng)圖 204
7.4.6 順序圖 206
7.4.7 協(xié)作圖 206
7.4.8 構(gòu)件圖 207
7.4.9 配置圖 208
7.5 UML的關(guān)系 209
7.5.1 關(guān)聯(lián)關(guān)系 209
7.5.2 泛化關(guān)系 211
7.5.3 依賴關(guān)系 215
7.5.4 實(shí)現(xiàn)關(guān)系 216
7.6 UML的通用機(jī)制 216
7.6.1 修飾 217
7.6.2 注釋 217
7.6.3 規(guī)格說明 217
7.6.4 擴(kuò)展機(jī)制 217
7.7 基于UML的軟件過程 219
7.8 本章小結(jié) 221
習(xí)題 222
第8章 面向?qū)ο蠓治觥 ?24
8.1 面向?qū)ο蠓治龈攀?224
8.1.1 傳統(tǒng)軟件過程中的不足 224
8.1.2 面向?qū)ο蟮奶攸c(diǎn) 225
8.1.3 面向?qū)ο蠓治龅幕具^程 226
8.1.4 面向?qū)ο蠓治龅?類模型 226
8.1.5 靜態(tài)模型的5個(gè)層次 227
8.2 建立功能模型(用例模型) 228
8.2.1 識(shí)別參與者 229
8.2.2 識(shí)別用例 229
8.2.3 識(shí)別用例間關(guān)系 231
8.2.4 識(shí)別用例間行為 231
8.2.5 用例描述文檔 233
8.3 建立靜態(tài)模型(對(duì)象模型) 234
8.3.1 識(shí)別類與對(duì)象 234
8.3.2 劃分主題 236
8.3.3 確定結(jié)構(gòu) 237
8.3.4 確定屬性 238
8.3.5 確定服務(wù) 238
8.3.6 類圖描述文檔 239
8.3.7 包圖描述文檔 240
8.4 建立動(dòng)態(tài)模型 241
8.4.1 建立順序圖及其描述文檔 241
8.4.2 建立狀態(tài)圖及其描述文檔 243
8.4.3 建立協(xié)作圖及其描述文檔 244
8.4.4 建立活動(dòng)圖及其描述文檔 245
8.5 會(huì)議中心系統(tǒng)的面向?qū)ο蠓治霭咐芯?246
8.5.1 建立功能模型用例分析 247
8.5.2 建立靜態(tài)模型5層結(jié)構(gòu) 247
8.5.3 建立動(dòng)態(tài)模型交互行為 250
8.6 本章小結(jié) 251
習(xí)題 251
第9章 面向?qū)ο笤O(shè)計(jì) 254
9.1 面向?qū)ο笤O(shè)計(jì)概述 254
9.1.1 面向?qū)ο蠓治雠c設(shè)計(jì)的關(guān)系 254
9.1.2 面向?qū)ο笤O(shè)計(jì)原則 255
9.2 精化類及類間關(guān)系 256
9.2.1 設(shè)計(jì)類的屬性 256
9.2.2 設(shè)計(jì)類的方法 257
9.2.3 設(shè)計(jì)類間泛化關(guān)系 257
9.2.4 優(yōu)化設(shè)計(jì) 259
9.3 數(shù)據(jù)設(shè)計(jì) 261
9.3.1 基于關(guān)系數(shù)據(jù)庫(kù)的數(shù)據(jù)設(shè)計(jì) 261
9.3.2 基于其他方式的數(shù)據(jù)設(shè)計(jì) 264
9.4 人機(jī)交互設(shè)計(jì) 264
9.5 建立實(shí)現(xiàn)模型 265
9.5.1 構(gòu)件圖及其描述文檔 265
9.5.2 配置圖及其描述文檔 267
9.6 設(shè)計(jì)模式簡(jiǎn)介 268
9.6.1 概述 268
9.6.2 Singleton模式 269
9.6.3 Abstract Factory模式 271
9.6.4 Mediator模式 272
9.6.5 Adapter模式 275
9.6.6 Iterator模式 277
9.6.7 State模式 279
9.7 面向?qū)ο蟮臏y(cè)試 281
9.7.1 面向?qū)ο鬁y(cè)試概述 281
9.7.2 面向?qū)ο蟮念悳y(cè)試 282
9.7.3 基于過程的面向?qū)ο髥卧獪y(cè)試 287
9.8 本章小結(jié) 288
習(xí)題 289
第10章 軟件維護(hù) 292
10.1 軟件維護(hù)概述 292
10.1.1 軟件維護(hù)的任務(wù) 292
10.1.2 軟件維護(hù)的特點(diǎn) 293
10.1.3 軟件維護(hù)的分類 293
10.2 軟件維護(hù)過程 294
10.2.1 軟件維護(hù)方式 295
10.2.2 軟件維護(hù)管理的基本內(nèi)容 296
10.2.3 維護(hù)中存在的問題 301
10.2.4 維護(hù)活動(dòng)記錄 302
10.3 軟件的可維護(hù)性 302
10.3.1 可維護(hù)性因素 302
10.3.2 提高軟件的可維護(hù)性 303
10.4 逆向工程 306
10.5 軟件維護(hù)評(píng)審 307
10.5.1 軟件維護(hù)規(guī)格說明文檔 307
10.5.2 軟件維護(hù)評(píng)審 310
10.6 本章小結(jié) 311
習(xí)題 312
第11章 軟件項(xiàng)目管理 314
11.1 軟件項(xiàng)目管理概述 314
11.1.1 軟件項(xiàng)目管理的特點(diǎn)和內(nèi)容 314
11.1.2 軟件項(xiàng)目管理目標(biāo) 315
11.1.3 軟件項(xiàng)目管理的4P觀點(diǎn) 316
11.2 軟件項(xiàng)目規(guī)模度量 317
11.2.1 代碼行技術(shù) 318
11.2.2 功能點(diǎn)計(jì)算 319
11.2.3 代碼行與功能點(diǎn)間的轉(zhuǎn)換 322
11.3 軟件項(xiàng)目估算 322
11.3.1 代碼行和功能點(diǎn)的其他估算模型 323
11.3.2 專家估算模型 323
11.3.3 Putnam模型 324
11.3.4 COCOMO模型 324
11.3.5 項(xiàng)目估算模型的小結(jié) 326
11.4 項(xiàng)目進(jìn)度管理 327
11.4.1 項(xiàng)目進(jìn)度控制 327
11.4.2 甘特圖 328
11.4.3 工程網(wǎng)絡(luò)圖 329
11.5 項(xiàng)目風(fēng)險(xiǎn)管理 331
11.5.1 軟件風(fēng)險(xiǎn)概念 331
11.5.2 風(fēng)險(xiǎn)管理過程 331
11.6 項(xiàng)目質(zhì)量管理 335
11.6.1 軟件質(zhì)量因素 335
11.6.2 軟件質(zhì)量保證活動(dòng) 339
11.6.3 軟件質(zhì)量保證計(jì)劃 340
11.7 軟件配置管理 341
11.7.1 軟件配置項(xiàng) 342
11.7.2 配置管理過程 342
11.7.3 軟件配置管理計(jì)劃 345
11.8 項(xiàng)目人員組織管理 346
11.8.1 團(tuán)隊(duì)組織 347
11.8.2 團(tuán)隊(duì)組織方式 347
11.9 軟件能力成熟度模型 349
11.9.1 基本概念 349
11.9.2 軟件能力成熟度模型等級(jí) 350
11.9.3 關(guān)鍵過程域 351
11.10 本章小結(jié) 352
習(xí)題 353
參考文獻(xiàn) 356
X
軟件工程基礎(chǔ)(第4版)
XVII
目錄