關(guān)于我們
書單推薦
新書推薦
|
軟件工程方法與實(shí)踐
本書分別從傳統(tǒng)的結(jié)構(gòu)化軟件開發(fā)方法學(xué)和面向?qū)ο筌浖_發(fā)方法學(xué)兩個(gè)方面介紹軟件工程的理論和方法,并將其融入實(shí)踐,通過豐富的案例介紹軟件分析與設(shè)計(jì)方法及其模型,深入講解軟件開發(fā)各個(gè)階段的技術(shù)、方法和管理過程,主要內(nèi)容包括:軟件工程基礎(chǔ),結(jié)構(gòu)化分析、設(shè)計(jì)與測試,面向?qū)ο蠓治、設(shè)計(jì)與測試,軟件維護(hù)與項(xiàng)目管理。
前 言
軟件工程包含一系列軟件開發(fā)的基本原理、方法和實(shí)踐經(jīng)驗(yàn),用來指導(dǎo)人們進(jìn)行正確的軟件開發(fā)。軟件工程強(qiáng)調(diào)從工程化的原理出發(fā),按照標(biāo)準(zhǔn)化規(guī)程和軟件開發(fā)實(shí)踐來引導(dǎo)軟件開發(fā)人員進(jìn)行軟件開發(fā)和實(shí)踐活動(dòng),并進(jìn)行過程改進(jìn),促進(jìn)軟件企業(yè)向標(biāo)準(zhǔn)化和成熟化的方向發(fā)展。軟件工程是一門理論與實(shí)踐相結(jié)合的學(xué)科,更注重通過實(shí)踐來理解原理和方法。為此,我們結(jié)合多年的軟件工程教學(xué)和項(xiàng)目開發(fā)經(jīng)驗(yàn),通過5個(gè)項(xiàng)目實(shí)例,從不同的角度、利用不同的方法學(xué)來循序漸進(jìn)地介紹軟件開發(fā)過程中所涉及的原理、方法和技術(shù)。本書的另一個(gè)特色是從問題的角度引導(dǎo)學(xué)生根據(jù)自己的體會(huì)來討論軟件開發(fā)過程中的問題,進(jìn)而理解軟件工程的概念和原理,總結(jié)出一些有效的方法和實(shí)踐經(jīng)驗(yàn)。 編寫思想本書強(qiáng)調(diào)以問題為引導(dǎo)的軟件工程所涉及的概念和方法,進(jìn)而討論具體的過程及其優(yōu)缺點(diǎn),并結(jié)合具體案例進(jìn)行解析,讓學(xué)生對問題產(chǎn)生的原因和新方法的提出有更深入的理解,還支持學(xué)生進(jìn)行深入閱讀。 我們將傳統(tǒng)的結(jié)構(gòu)化方法學(xué)和面向?qū)ο蠓椒▽W(xué)分開介紹,這有利于學(xué)生理解二者的本質(zhì)區(qū)別,厘清其分析與設(shè)計(jì)模型的不同特點(diǎn),從而針對不同的項(xiàng)目來選擇不同的開發(fā)方法學(xué)和過程。從結(jié)構(gòu)化到面向?qū)ο蟮穆肪也便于學(xué)生逐步接受軟件開發(fā)的思想和本質(zhì)。 結(jié)構(gòu)化方法學(xué)。重點(diǎn)討論開發(fā)過程、原理和方法,這些都可以推廣到面向?qū)ο蟮拈_發(fā)范型中。最后通過胰島素輸送這一高要求系統(tǒng)案例介紹如何將這些方法應(yīng)用到實(shí)踐中。 面向?qū)ο蠓椒▽W(xué)。重點(diǎn)討論面向?qū)ο蠓治瞿P秃驮O(shè)計(jì)模型的構(gòu)建,強(qiáng)調(diào)它們之間的關(guān)系,抓住面向?qū)ο竽P烷_發(fā)的要點(diǎn),通過UML建模語言來描述分析和設(shè)計(jì)模型,進(jìn)一步加深學(xué)生對面向?qū)ο竽P捅举|(zhì)的理解,同時(shí)也清楚其適用的情況。最后通過POS機(jī)這一復(fù)雜系統(tǒng)案例幫助學(xué)生掌握面向?qū)ο蠓治雠c設(shè)計(jì)的主要思想。 本書還注重本科生研究性教學(xué)實(shí)踐,針對現(xiàn)代軟件開發(fā)方法—敏捷方法,重點(diǎn)介紹結(jié)對編程,在幫助學(xué)生理解結(jié)對編程思想的同時(shí),分析其中存在的問題和解決方法,結(jié)合系統(tǒng)需求進(jìn)行設(shè)計(jì)、實(shí)現(xiàn)與測試。通過這一過程可達(dá)到研究性教學(xué)的目的,也可將結(jié)對編程作為學(xué)期項(xiàng)目。 組織結(jié)構(gòu)本書分為四個(gè)部分,共14章內(nèi)容。第一部分“軟件工程基礎(chǔ)”(第1~4章)主要從軟件危機(jī)引出軟件工程的基本概念和基本原理,介紹軟件開發(fā)的工程化思想和開發(fā)過程等。第二部分“結(jié)構(gòu)化分析、設(shè)計(jì)與測試”(第5~9章)針對傳統(tǒng)結(jié)構(gòu)化的軟件開發(fā)方法學(xué),主要介紹其基本概念、分析與設(shè)計(jì)過程、分析與設(shè)計(jì)模型、軟件測試原理和技術(shù)、高要求系統(tǒng)的分析與設(shè)計(jì)方法等。第三部分“面向?qū)ο蠓治、設(shè)計(jì)與測試”(第10~12章)將介紹面向?qū)ο蠓椒▽W(xué)的基本概念、用例分析模型及其設(shè)計(jì)過程、面向?qū)ο蠓治雠c設(shè)計(jì)模型、面向?qū)ο蟮膶?shí)現(xiàn)以及測試技術(shù)。第四部分“軟件維護(hù)與項(xiàng)目管理”(第13、14章)主要介紹軟件維護(hù)策略與方法、軟件項(xiàng)目管理概念與原理、軟件成本估算以及項(xiàng)目計(jì)劃與管理。 案例由于本書分別介紹了傳統(tǒng)的結(jié)構(gòu)化方法學(xué)和面向?qū)ο蠓椒▽W(xué)兩大體系,因此專門選擇了適合不同方法學(xué)的具有代表性的案例進(jìn)行研究,以便讀者能夠深入理解其各自的優(yōu)勢。這些案例中既有簡單常見的應(yīng)用系統(tǒng),如面對面結(jié)對編程系統(tǒng)和ATM系統(tǒng);也有比較實(shí)用的系統(tǒng),如POS機(jī)系統(tǒng);還有一些稍微復(fù)雜的系統(tǒng),如分布式結(jié)對編程系統(tǒng)和胰島素輸送系統(tǒng)。這些系統(tǒng)由簡單到復(fù)雜,循序漸進(jìn),引導(dǎo)學(xué)生逐步理解系統(tǒng)的開發(fā)過程和關(guān)鍵問題。 面對面結(jié)對編程系統(tǒng)是一個(gè)輔助學(xué)生進(jìn)行結(jié)對編程和學(xué)習(xí)的系統(tǒng),該系統(tǒng)支持角色交換、信息統(tǒng)計(jì)和相容性分析等功能,克服了編程過程中的一些不便,如交換位置、相互干擾等。同時(shí),該系統(tǒng)采用一臺(tái)主機(jī)支持結(jié)對,還具有節(jié)約實(shí)驗(yàn)室建設(shè)費(fèi)用等優(yōu)點(diǎn)。 POS機(jī)系統(tǒng)是電子收款機(jī)系統(tǒng)的簡稱,通過計(jì)算機(jī)來處理銷售和支付信息。該系統(tǒng)包括計(jì)算機(jī)終端、條碼掃描儀、現(xiàn)金抽屜、票據(jù)打印機(jī)等硬件以及支持系統(tǒng)運(yùn)轉(zhuǎn)的軟件,能夠?yàn)椴煌⻊?wù)的應(yīng)用程序提供接口。收銀員通過條碼掃描儀讀取的或鍵盤輸入的商品條碼號來記錄商品信息,系統(tǒng)自動(dòng)計(jì)算銷售總價(jià)。收銀員通過系統(tǒng)能夠處理支付,包括現(xiàn)金支付、信用卡支付和支票支付。經(jīng)理通過系統(tǒng)能夠處理顧客退貨。 ATM系統(tǒng)即自動(dòng)柜員機(jī)系統(tǒng),能夠自動(dòng)處理銀行儲(chǔ)戶的各種業(yè)務(wù),如取款、存款、轉(zhuǎn)賬、查詢、修改密碼等。ATM軟件系統(tǒng)使客戶能夠直接訪問銀行計(jì)算機(jī)完成交易,無需銀行工作人員的介入。 分布式結(jié)對編程系統(tǒng)支持跨地域的結(jié)對編程或?qū)W習(xí)。為了支持異地結(jié)對者像在本地一樣方便地工作,系統(tǒng)通過文本、音頻和視頻進(jìn)行交流。系統(tǒng)與集成開發(fā)環(huán)境進(jìn)行集成,包括VC++、Eclipse等開發(fā)環(huán)境。系統(tǒng)支持角色交換,但通常不嚴(yán)格遵循“驅(qū)動(dòng)者”和“領(lǐng)航者”的角色,所以分布結(jié)對編程的工具應(yīng)該允許合作者很容易地訪問控制鍵盤。 胰島素輸送系統(tǒng)是關(guān)于人體胰腺操作(一種體內(nèi)組織)的仿真,其目標(biāo)是幫助那些糖尿病患者控制血糖水平。該系統(tǒng)用于監(jiān)控血糖濃度,根據(jù)需要輸送正確劑量的胰島素,對安全性的要求非常高。 意見與反饋本書第1~4章由竇萬峰編寫,第5~9章由竇萬峰和林燕平編寫,第10~13章由竇萬峰和李亞楠編寫,第14章由竇萬峰和潘媛媛編寫。全書由竇萬峰統(tǒng)稿、校對。 由于作者水平有限,因此難免有疏漏之處,懇請各位讀者指正,意見可發(fā)至郵箱douwf-fly@163.com。尤其是關(guān)于書中所選案例的詳細(xì)程度和多樣性,請讀者多提意見,以便以后進(jìn)行改進(jìn)和完善。 作者2016年9月
前言
第一部分 軟件工程基礎(chǔ) 第1章 軟件工程概述2 1.1 引言2 1.2 什么是軟件2 1.2.1 軟件的定義與特性2 1.2.2 軟件技術(shù)的演化3 1.3 什么是軟件工程4 1.3.1 軟件危機(jī)4 1.3.2 解決軟件危機(jī)的途徑5 1.3.3 軟件工程的定義5 1.4 軟件工程的基本原理與基本原則7 1.4.1 基本原理7 1.4.2 基本原則8 1.5 軟件工程開發(fā)方法學(xué)8 1.5.1 結(jié)構(gòu)化開發(fā)方法學(xué)9 1.5.2 面向?qū)ο箝_發(fā)方法學(xué)9 1.5.3 重型軟件工程與輕型軟件工程10 1.6 小結(jié)10 習(xí)題11 第2章 軟件過程12 2.1 引言12 2.2 什么是軟件過程12 2.2.1 軟件過程的定義12 2.2.2 軟件過程框架13 2.3 軟件產(chǎn)品與過程15 2.4 軟件生存周期17 2.5 軟件工程活動(dòng)18 2.6 小結(jié)20 習(xí)題21 第3章 軟件過程模型22 3.1 引言22 3.2 什么是軟件過程模型22 3.3 傳統(tǒng)的軟件過程模型22 3.3.1 瀑布模型22 3.3.2 增量模型24 3.3.3 螺旋模型25 3.4 面向?qū)ο竽P?6 3.4.1 構(gòu)件集成模型26 3.4.2 統(tǒng)一過程模型27 3.5 小結(jié)29 習(xí)題29 第4章 敏捷軟件開發(fā)方法30 4.1 引言30 4.2 敏捷軟件開發(fā)過程30 4.2.1 敏捷過程30 4.2.2 敏捷開發(fā)原則31 4.3 Scrum開發(fā)過程31 4.3.1 Scrum的特點(diǎn)31 4.3.2 Scrum模型與過程32 4.4 極限編程 33 4.4.1 什么是極限編程33 4.4.2 極限編程的要素34 4.5 結(jié)對編程35 4.5.1 什么是結(jié)對編程36 4.5.2 結(jié)對編程的優(yōu)勢分析37 4.5.3 結(jié)對編程的分類39 4.5.4 結(jié)對編程的方式39 4.6 小結(jié)41 習(xí)題41 第二部分 結(jié)構(gòu)化分析、設(shè)計(jì)與測試 第5章 軟件需求分析44 5.1 引言44 5.2 什么是軟件需求44 5.3 需求分析過程45 5.4 會(huì)談技術(shù)49 5.4.1 非正式會(huì)談49 5.4.2 正式會(huì)談49 5.5 調(diào)查技術(shù)50 5.5.1 確定調(diào)查內(nèi)容50 5.5.2 可靠可信分析51 5.6 場景分析技術(shù)51 5.7 小結(jié)52 習(xí)題52 第6章 結(jié)構(gòu)化分析53 6.1 引言53 6.2 結(jié)構(gòu)化分析模型53 6.3 面向數(shù)據(jù)流的建模方法54 6.3.1 數(shù)據(jù)流建模方法54 6.3.2 實(shí)例分析57 6.4 面向數(shù)據(jù)的建模方法58 6.4.1 數(shù)據(jù)建模方法58 6.4.2 實(shí)例分析59 6.5 面向狀態(tài)的建模方法60 6.5.1 狀態(tài)建模方法60 6.5.2 實(shí)例分析61 6.6 規(guī)格說明書編寫示例62 6.7 小結(jié)70 習(xí)題70 第7章 結(jié)構(gòu)化設(shè)計(jì)71 7.1 引言71 7.2 軟件設(shè)計(jì)過程71 7.3 軟件模塊化設(shè)計(jì)75 7.4 軟件結(jié)構(gòu)78 7.5 結(jié)構(gòu)化概要設(shè)計(jì)79 7.5.1 數(shù)據(jù)流模型79 7.5.2 數(shù)據(jù)流設(shè)計(jì)方法80 7.5.3 實(shí)例分析81 7.6 概要設(shè)計(jì)文檔編寫示例83 7.7 詳細(xì)設(shè)計(jì)90 7.8 結(jié)構(gòu)化詳細(xì)設(shè)計(jì)91 7.9 詳細(xì)設(shè)計(jì)文檔編寫示例98 7.10 編碼實(shí)現(xiàn)101 7.10.1 編碼語言101 7.10.2 編碼風(fēng)格102 7.11 小結(jié)103 習(xí)題103 第8章 結(jié)構(gòu)化軟件測試106 8.1 引言106 8.2 軟件測試的目的和原則106 8.3 軟件測試的基本過程108 8.3.1 單元測試108 8.3.2 集成測試110 8.3.3 確認(rèn)測試110 8.3.4 系統(tǒng)測試111 8.4 測試用例設(shè)計(jì)111 8.5 黑盒測試技術(shù)112 8.5.1 等價(jià)類劃分112 8.5.2 邊界值分析113 8.5.3 錯(cuò)誤推測114 8.5.4 因果圖114 8.6 白盒測試技術(shù)117 8.6.1 邏輯覆蓋117 8.6.2 路徑覆蓋120 8.6.3 循環(huán)路徑測試策略122 8.7 集成測試技術(shù)123 8.7.1 集成策略123 8.7.2 性能測試125 8.7.3 實(shí)例分析127 8.8 調(diào)試技術(shù)133 8.8.1 調(diào)試過程133 8.8.2 調(diào)試策略134 8.9 軟件測試文檔135 8.9.1 軟件測試計(jì)劃文檔135 8.9.2 集成測試文檔137 8.10 小結(jié)139 習(xí)題139 第9章 高要求系統(tǒng)的分析與設(shè)計(jì)140 9.1 引言140 9.2 什么是高要求系統(tǒng)140 9.3 高要求系統(tǒng)的需求分析142 9.3.1 風(fēng)險(xiǎn)需求描述143 9.3.2 安全性描述146 9.3.3 信息安全描述146 9.3.4 軟件可靠性描述146 9.3.5 胰島素輸送系統(tǒng)完整的需求描述147 9.4 形式化描述方法149 9.4.1 軟件過程中的形式化描述149 9.4.2 接口描述方法150 9.4.3 行為描述153 9.5 高要求系統(tǒng)的設(shè)計(jì)155 9.6 高要求系統(tǒng)的開發(fā)156 9.7 系統(tǒng)驗(yàn)證160 9.7.1 可靠性驗(yàn)證160 9.7.2 安全性保證161 9.7.3 信息安全評估164 9.8 小結(jié)165 習(xí)題166 第三部分 面向?qū)ο蠓治、設(shè)計(jì)與測試 第10章 面向?qū)ο蠓治?68 10.1 引言168 10.2 面向?qū)ο竽P?68 10.3 UML170 10.3.1 UML的組成170 10.3.2 UML的視圖171 10.4 面向?qū)ο蠓治鲞^程172 10.5 用例驅(qū)動(dòng)分析173 10.5.1 用例建模分析173 10.5.2 開發(fā)活動(dòng)圖177 10.5.3 開發(fā)泳道圖178 10.6 領(lǐng)域與業(yè)務(wù)建模179 10.6.1 識別業(yè)務(wù)類和領(lǐng)域類179 10.6.2 業(yè)務(wù)類圖180 10.6.3 識別屬性和操作181 10.6.4 開發(fā)協(xié)作圖182 10.6.5 開發(fā)包圖182 10.6.6 邏輯架構(gòu)183 10.7 系統(tǒng)行為建模185 10.7.1 系統(tǒng)順序圖185 10.7.2 建立操作契約186 10.7.3 建立順序圖187 10.7.4 系統(tǒng)狀態(tài)圖188 10.8 POS機(jī)系統(tǒng)案例分析188 10.9 分布式結(jié)對編程系統(tǒng)分析191 10.9.1 項(xiàng)目概述191 10.9.2 功能描述192 10.9.3 邏輯分析與建模200 10.10 小結(jié)204 習(xí)題205 第11章 面向?qū)ο笤O(shè)計(jì)206 11.1 引言206 11.2 面向?qū)ο笤O(shè)計(jì)模型206 11.3 構(gòu)件設(shè)計(jì)207 11.3.1 構(gòu)件設(shè)計(jì)的步驟207 11.3.2 構(gòu)件設(shè)計(jì)的原則208 11.4 并發(fā)性設(shè)計(jì)209 11.5 設(shè)計(jì)模式211 11.5.1 基于職責(zé)的設(shè)計(jì)211 11.5.2 常見的設(shè)計(jì)模式212 11.6 面向?qū)ο笤敿?xì)設(shè)計(jì)215 11.6.1 模型精化216 11.6.2 邏輯架構(gòu)精化設(shè)計(jì)219 11.6.3 分層設(shè)計(jì)221 11.6.4 類操作設(shè)計(jì)223 11.7 方法設(shè)計(jì)229 11.8 精化設(shè)計(jì)234 11.9 數(shù)據(jù)存儲(chǔ)與持久性設(shè)計(jì)238 11.10 部署設(shè)計(jì)與構(gòu)件圖243 11.11 小結(jié)244 習(xí)題245 第12章 面向?qū)ο髮?shí)現(xiàn)與測試246 12.1 引言246 12.2 面向?qū)ο髮?shí)現(xiàn)246 12.3 POS機(jī)系統(tǒng)實(shí)現(xiàn)247 12.4 分布式結(jié)對編程系統(tǒng)實(shí)現(xiàn)253 12.5 面向?qū)ο鬁y試256 12.6 面向?qū)ο鬁y試策略258 12.7 測試驅(qū)動(dòng)開發(fā)261 12.7.1 什么是測試驅(qū)動(dòng)開發(fā)261 12.7.2 測試驅(qū)動(dòng)開發(fā)的步驟264 12.7.3 編寫測試程序266 12.7.4 代碼重構(gòu)270 12.8 小結(jié)271 習(xí)題271 第四部分 軟件維護(hù)與項(xiàng)目管理 第13章 軟件維護(hù)274 13.1 引言274 13.2 軟件的可維護(hù)性275 13.3 軟件維護(hù)的類型275 13.4 軟件維護(hù)方法277 13.5 提高軟件的可維護(hù)性279 13.5.1 結(jié)構(gòu)化維護(hù)與非結(jié)構(gòu)化維護(hù)279 13.5.2 提高軟件可維護(hù)性的技術(shù)途徑280 13.6 小結(jié)281 習(xí)題281 第14章 軟件項(xiàng)目管理283 14.1 引言283 14.2 軟件項(xiàng)目組織285 14.3 軟件過程管理287 14.3.1 軟件過程度量287 14.3.2 軟件過程改進(jìn)288 14.3.3 軟件項(xiàng)目度量289 14.4 軟件項(xiàng)目風(fēng)險(xiǎn)管理289 14.4.1 風(fēng)險(xiǎn)識別289 14.4.2 風(fēng)險(xiǎn)預(yù)測290 14.4.3 風(fēng)險(xiǎn)管理290 14.5 軟件配置管理291 14.5.1 基本概念291 14.5.2 軟件配置管理過程292 14.6 軟件項(xiàng)目估算293 14.6.1 軟件項(xiàng)目資源293 14.6.2 軟件規(guī)模度量294 14.6.3 估算管理296 14.7 分解技術(shù)296 14.7.1 基于問題分解的估算296 14.7.2 基于過程分解的估算298 14.8 經(jīng)驗(yàn)估算技術(shù)299 14.8.1 專家類比推斷299 14.8.2 中級COCOMO估算模型300 14.9 軟件質(zhì)量管理303 14.9.1 軟件質(zhì)量保證303 14.9.2 軟件質(zhì)量度量305 14.10 項(xiàng)目進(jìn)度管理308 14.10.1 項(xiàng)目進(jìn)度管理計(jì)劃308 14.10.2 進(jìn)度安排309 14.10.3 進(jìn)度跟蹤管理311 14.11 小結(jié)311 習(xí)題312 參考文獻(xiàn)314
你還可能感興趣
我要評論
|