關(guān)于我們
書(shū)單推薦
新書(shū)推薦
|
軟件工程方法與實(shí)踐
本書(shū)分別從傳統(tǒng)的結(jié)構(gòu)化軟件開(kāi)發(fā)方法學(xué)和面向?qū)ο筌浖_(kāi)發(fā)方法學(xué)兩個(gè)方面介紹軟件工程的理論和方法,并將其融入實(shí)踐,通過(guò)豐富的案例介紹軟件分析與設(shè)計(jì)方法及其模型,深入講解軟件開(kāi)發(fā)各個(gè)階段的技術(shù)、方法和管理過(guò)程,主要內(nèi)容包括:軟件工程基礎(chǔ),結(jié)構(gòu)化分析、設(shè)計(jì)與測(cè)試,面向?qū)ο蠓治、設(shè)計(jì)與測(cè)試,軟件維護(hù)與項(xiàng)目管理。
前 言
軟件工程包含一系列軟件開(kāi)發(fā)的基本原理、方法和實(shí)踐經(jīng)驗(yàn),用來(lái)指導(dǎo)人們進(jìn)行正確的軟件開(kāi)發(fā)。軟件工程強(qiáng)調(diào)從工程化的原理出發(fā),按照標(biāo)準(zhǔn)化規(guī)程和軟件開(kāi)發(fā)實(shí)踐來(lái)引導(dǎo)軟件開(kāi)發(fā)人員進(jìn)行軟件開(kāi)發(fā)和實(shí)踐活動(dòng),并進(jìn)行過(guò)程改進(jìn),促進(jìn)軟件企業(yè)向標(biāo)準(zhǔn)化和成熟化的方向發(fā)展。軟件工程是一門(mén)理論與實(shí)踐相結(jié)合的學(xué)科,更注重通過(guò)實(shí)踐來(lái)理解原理和方法。為此,我們結(jié)合多年的軟件工程教學(xué)和項(xiàng)目開(kāi)發(fā)經(jīng)驗(yàn),通過(guò)5個(gè)項(xiàng)目實(shí)例,從不同的角度、利用不同的方法學(xué)來(lái)循序漸進(jìn)地介紹軟件開(kāi)發(fā)過(guò)程中所涉及的原理、方法和技術(shù)。本書(shū)的另一個(gè)特色是從問(wèn)題的角度引導(dǎo)學(xué)生根據(jù)自己的體會(huì)來(lái)討論軟件開(kāi)發(fā)過(guò)程中的問(wèn)題,進(jìn)而理解軟件工程的概念和原理,總結(jié)出一些有效的方法和實(shí)踐經(jīng)驗(yàn)。 編寫(xiě)思想本書(shū)強(qiáng)調(diào)以問(wèn)題為引導(dǎo)的軟件工程所涉及的概念和方法,進(jìn)而討論具體的過(guò)程及其優(yōu)缺點(diǎn),并結(jié)合具體案例進(jìn)行解析,讓學(xué)生對(duì)問(wèn)題產(chǎn)生的原因和新方法的提出有更深入的理解,還支持學(xué)生進(jìn)行深入閱讀。 我們將傳統(tǒng)的結(jié)構(gòu)化方法學(xué)和面向?qū)ο蠓椒▽W(xué)分開(kāi)介紹,這有利于學(xué)生理解二者的本質(zhì)區(qū)別,厘清其分析與設(shè)計(jì)模型的不同特點(diǎn),從而針對(duì)不同的項(xiàng)目來(lái)選擇不同的開(kāi)發(fā)方法學(xué)和過(guò)程。從結(jié)構(gòu)化到面向?qū)ο蟮穆肪也便于學(xué)生逐步接受軟件開(kāi)發(fā)的思想和本質(zhì)。 結(jié)構(gòu)化方法學(xué)。重點(diǎn)討論開(kāi)發(fā)過(guò)程、原理和方法,這些都可以推廣到面向?qū)ο蟮拈_(kāi)發(fā)范型中。最后通過(guò)胰島素輸送這一高要求系統(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烷_(kāi)發(fā)的要點(diǎn),通過(guò)UML建模語(yǔ)言來(lái)描述分析和設(shè)計(jì)模型,進(jìn)一步加深學(xué)生對(duì)面向?qū)ο竽P捅举|(zhì)的理解,同時(shí)也清楚其適用的情況。最后通過(guò)POS機(jī)這一復(fù)雜系統(tǒng)案例幫助學(xué)生掌握面向?qū)ο蠓治雠c設(shè)計(jì)的主要思想。 本書(shū)還注重本科生研究性教學(xué)實(shí)踐,針對(duì)現(xiàn)代軟件開(kāi)發(fā)方法—敏捷方法,重點(diǎn)介紹結(jié)對(duì)編程,在幫助學(xué)生理解結(jié)對(duì)編程思想的同時(shí),分析其中存在的問(wèn)題和解決方法,結(jié)合系統(tǒng)需求進(jìn)行設(shè)計(jì)、實(shí)現(xiàn)與測(cè)試。通過(guò)這一過(guò)程可達(dá)到研究性教學(xué)的目的,也可將結(jié)對(duì)編程作為學(xué)期項(xiàng)目。 組織結(jié)構(gòu)本書(shū)分為四個(gè)部分,共14章內(nèi)容。第一部分“軟件工程基礎(chǔ)”(第1~4章)主要從軟件危機(jī)引出軟件工程的基本概念和基本原理,介紹軟件開(kāi)發(fā)的工程化思想和開(kāi)發(fā)過(guò)程等。第二部分“結(jié)構(gòu)化分析、設(shè)計(jì)與測(cè)試”(第5~9章)針對(duì)傳統(tǒng)結(jié)構(gòu)化的軟件開(kāi)發(fā)方法學(xué),主要介紹其基本概念、分析與設(shè)計(jì)過(guò)程、分析與設(shè)計(jì)模型、軟件測(cè)試原理和技術(shù)、高要求系統(tǒng)的分析與設(shè)計(jì)方法等。第三部分“面向?qū)ο蠓治觥⒃O(shè)計(jì)與測(cè)試”(第10~12章)將介紹面向?qū)ο蠓椒▽W(xué)的基本概念、用例分析模型及其設(shè)計(jì)過(guò)程、面向?qū)ο蠓治雠c設(shè)計(jì)模型、面向?qū)ο蟮膶?shí)現(xiàn)以及測(cè)試技術(shù)。第四部分“軟件維護(hù)與項(xiàng)目管理”(第13、14章)主要介紹軟件維護(hù)策略與方法、軟件項(xiàng)目管理概念與原理、軟件成本估算以及項(xiàng)目計(jì)劃與管理。 案例由于本書(shū)分別介紹了傳統(tǒng)的結(jié)構(gòu)化方法學(xué)和面向?qū)ο蠓椒▽W(xué)兩大體系,因此專(zhuān)門(mén)選擇了適合不同方法學(xué)的具有代表性的案例進(jìn)行研究,以便讀者能夠深入理解其各自的優(yōu)勢(shì)。這些案例中既有簡(jiǎn)單常見(jiàn)的應(yīng)用系統(tǒng),如面對(duì)面結(jié)對(duì)編程系統(tǒng)和ATM系統(tǒng);也有比較實(shí)用的系統(tǒng),如POS機(jī)系統(tǒng);還有一些稍微復(fù)雜的系統(tǒng),如分布式結(jié)對(duì)編程系統(tǒng)和胰島素輸送系統(tǒng)。這些系統(tǒng)由簡(jiǎn)單到復(fù)雜,循序漸進(jìn),引導(dǎo)學(xué)生逐步理解系統(tǒng)的開(kāi)發(fā)過(guò)程和關(guān)鍵問(wèn)題。 面對(duì)面結(jié)對(duì)編程系統(tǒng)是一個(gè)輔助學(xué)生進(jìn)行結(jié)對(duì)編程和學(xué)習(xí)的系統(tǒng),該系統(tǒng)支持角色交換、信息統(tǒng)計(jì)和相容性分析等功能,克服了編程過(guò)程中的一些不便,如交換位置、相互干擾等。同時(shí),該系統(tǒng)采用一臺(tái)主機(jī)支持結(jié)對(duì),還具有節(jié)約實(shí)驗(yàn)室建設(shè)費(fèi)用等優(yōu)點(diǎn)。 POS機(jī)系統(tǒng)是電子收款機(jī)系統(tǒng)的簡(jiǎn)稱(chēng),通過(guò)計(jì)算機(jī)來(lái)處理銷(xiāo)售和支付信息。該系統(tǒng)包括計(jì)算機(jī)終端、條碼掃描儀、現(xiàn)金抽屜、票據(jù)打印機(jī)等硬件以及支持系統(tǒng)運(yùn)轉(zhuǎn)的軟件,能夠?yàn)椴煌⻊?wù)的應(yīng)用程序提供接口。收銀員通過(guò)條碼掃描儀讀取的或鍵盤(pán)輸入的商品條碼號(hào)來(lái)記錄商品信息,系統(tǒng)自動(dòng)計(jì)算銷(xiāo)售總價(jià)。收銀員通過(guò)系統(tǒng)能夠處理支付,包括現(xiàn)金支付、信用卡支付和支票支付。經(jīng)理通過(guò)系統(tǒng)能夠處理顧客退貨。 ATM系統(tǒng)即自動(dòng)柜員機(jī)系統(tǒng),能夠自動(dòng)處理銀行儲(chǔ)戶(hù)的各種業(yè)務(wù),如取款、存款、轉(zhuǎn)賬、查詢(xún)、修改密碼等。ATM軟件系統(tǒng)使客戶(hù)能夠直接訪問(wèn)銀行計(jì)算機(jī)完成交易,無(wú)需銀行工作人員的介入。 分布式結(jié)對(duì)編程系統(tǒng)支持跨地域的結(jié)對(duì)編程或?qū)W習(xí)。為了支持異地結(jié)對(duì)者像在本地一樣方便地工作,系統(tǒng)通過(guò)文本、音頻和視頻進(jìn)行交流。系統(tǒng)與集成開(kāi)發(fā)環(huán)境進(jìn)行集成,包括VC++、Eclipse等開(kāi)發(fā)環(huán)境。系統(tǒng)支持角色交換,但通常不嚴(yán)格遵循“驅(qū)動(dòng)者”和“領(lǐng)航者”的角色,所以分布結(jié)對(duì)編程的工具應(yīng)該允許合作者很容易地訪問(wèn)控制鍵盤(pán)。 胰島素輸送系統(tǒng)是關(guān)于人體胰腺操作(一種體內(nèi)組織)的仿真,其目標(biāo)是幫助那些糖尿病患者控制血糖水平。該系統(tǒng)用于監(jiān)控血糖濃度,根據(jù)需要輸送正確劑量的胰島素,對(duì)安全性的要求非常高。 意見(jiàn)與反饋本書(shū)第1~4章由竇萬(wàn)峰編寫(xiě),第5~9章由竇萬(wàn)峰和林燕平編寫(xiě),第10~13章由竇萬(wàn)峰和李亞楠編寫(xiě),第14章由竇萬(wàn)峰和潘媛媛編寫(xiě)。全書(shū)由竇萬(wàn)峰統(tǒng)稿、校對(duì)。 由于作者水平有限,因此難免有疏漏之處,懇請(qǐng)各位讀者指正,意見(jiàn)可發(fā)至郵箱douwf-fly@163.com。尤其是關(guān)于書(shū)中所選案例的詳細(xì)程度和多樣性,請(qǐng)讀者多提意見(jiàn),以便以后進(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 軟件工程開(kāi)發(fā)方法學(xué)8 1.5.1 結(jié)構(gòu)化開(kāi)發(fā)方法學(xué)9 1.5.2 面向?qū)ο箝_(kāi)發(fā)方法學(xué)9 1.5.3 重型軟件工程與輕型軟件工程10 1.6 小結(jié)10 習(xí)題11 第2章 軟件過(guò)程12 2.1 引言12 2.2 什么是軟件過(guò)程12 2.2.1 軟件過(guò)程的定義12 2.2.2 軟件過(guò)程框架13 2.3 軟件產(chǎn)品與過(guò)程15 2.4 軟件生存周期17 2.5 軟件工程活動(dòng)18 2.6 小結(jié)20 習(xí)題21 第3章 軟件過(guò)程模型22 3.1 引言22 3.2 什么是軟件過(guò)程模型22 3.3 傳統(tǒng)的軟件過(guò)程模型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)一過(guò)程模型27 3.5 小結(jié)29 習(xí)題29 第4章 敏捷軟件開(kāi)發(fā)方法30 4.1 引言30 4.2 敏捷軟件開(kāi)發(fā)過(guò)程30 4.2.1 敏捷過(guò)程30 4.2.2 敏捷開(kāi)發(fā)原則31 4.3 Scrum開(kāi)發(fā)過(guò)程31 4.3.1 Scrum的特點(diǎn)31 4.3.2 Scrum模型與過(guò)程32 4.4 極限編程 33 4.4.1 什么是極限編程33 4.4.2 極限編程的要素34 4.5 結(jié)對(duì)編程35 4.5.1 什么是結(jié)對(duì)編程36 4.5.2 結(jié)對(duì)編程的優(yōu)勢(shì)分析37 4.5.3 結(jié)對(duì)編程的分類(lèi)39 4.5.4 結(jié)對(duì)編程的方式39 4.6 小結(jié)41 習(xí)題41 第二部分 結(jié)構(gòu)化分析、設(shè)計(jì)與測(cè)試 第5章 軟件需求分析44 5.1 引言44 5.2 什么是軟件需求44 5.3 需求分析過(guò)程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 場(chǎng)景分析技術(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ī)格說(shuō)明書(shū)編寫(xiě)示例62 6.7 小結(jié)70 習(xí)題70 第7章 結(jié)構(gòu)化設(shè)計(jì)71 7.1 引言71 7.2 軟件設(shè)計(jì)過(guò)程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ì)文檔編寫(xiě)示例83 7.7 詳細(xì)設(shè)計(jì)90 7.8 結(jié)構(gòu)化詳細(xì)設(shè)計(jì)91 7.9 詳細(xì)設(shè)計(jì)文檔編寫(xiě)示例98 7.10 編碼實(shí)現(xiàn)101 7.10.1 編碼語(yǔ)言101 7.10.2 編碼風(fēng)格102 7.11 小結(jié)103 習(xí)題103 第8章 結(jié)構(gòu)化軟件測(cè)試106 8.1 引言106 8.2 軟件測(cè)試的目的和原則106 8.3 軟件測(cè)試的基本過(guò)程108 8.3.1 單元測(cè)試108 8.3.2 集成測(cè)試110 8.3.3 確認(rèn)測(cè)試110 8.3.4 系統(tǒng)測(cè)試111 8.4 測(cè)試用例設(shè)計(jì)111 8.5 黑盒測(cè)試技術(shù)112 8.5.1 等價(jià)類(lèi)劃分112 8.5.2 邊界值分析113 8.5.3 錯(cuò)誤推測(cè)114 8.5.4 因果圖114 8.6 白盒測(cè)試技術(shù)117 8.6.1 邏輯覆蓋117 8.6.2 路徑覆蓋120 8.6.3 循環(huán)路徑測(cè)試策略122 8.7 集成測(cè)試技術(shù)123 8.7.1 集成策略123 8.7.2 性能測(cè)試125 8.7.3 實(shí)例分析127 8.8 調(diào)試技術(shù)133 8.8.1 調(diào)試過(guò)程133 8.8.2 調(diào)試策略134 8.9 軟件測(cè)試文檔135 8.9.1 軟件測(cè)試計(jì)劃文檔135 8.9.2 集成測(cè)試文檔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 軟件過(guò)程中的形式化描述149 9.4.2 接口描述方法150 9.4.3 行為描述153 9.5 高要求系統(tǒng)的設(shè)計(jì)155 9.6 高要求系統(tǒng)的開(kāi)發(fā)156 9.7 系統(tǒng)驗(yàn)證160 9.7.1 可靠性驗(yàn)證160 9.7.2 安全性保證161 9.7.3 信息安全評(píng)估164 9.8 小結(jié)165 習(xí)題166 第三部分 面向?qū)ο蠓治、設(shè)計(jì)與測(cè)試 第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ū)ο蠓治鲞^(guò)程172 10.5 用例驅(qū)動(dòng)分析173 10.5.1 用例建模分析173 10.5.2 開(kāi)發(fā)活動(dòng)圖177 10.5.3 開(kāi)發(fā)泳道圖178 10.6 領(lǐng)域與業(yè)務(wù)建模179 10.6.1 識(shí)別業(yè)務(wù)類(lèi)和領(lǐng)域類(lèi)179 10.6.2 業(yè)務(wù)類(lèi)圖180 10.6.3 識(shí)別屬性和操作181 10.6.4 開(kāi)發(fā)協(xié)作圖182 10.6.5 開(kāi)發(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é)對(duì)編程系統(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 常見(jiàn)的設(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 類(lèi)操作設(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)與測(cè)試246 12.1 引言246 12.2 面向?qū)ο髮?shí)現(xiàn)246 12.3 POS機(jī)系統(tǒng)實(shí)現(xiàn)247 12.4 分布式結(jié)對(duì)編程系統(tǒng)實(shí)現(xiàn)253 12.5 面向?qū)ο鬁y(cè)試256 12.6 面向?qū)ο鬁y(cè)試策略258 12.7 測(cè)試驅(qū)動(dòng)開(kāi)發(fā)261 12.7.1 什么是測(cè)試驅(qū)動(dòng)開(kāi)發(fā)261 12.7.2 測(cè)試驅(qū)動(dòng)開(kāi)發(fā)的步驟264 12.7.3 編寫(xiě)測(cè)試程序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ù)的類(lèi)型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 軟件過(guò)程管理287 14.3.1 軟件過(guò)程度量287 14.3.2 軟件過(guò)程改進(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)識(shí)別289 14.4.2 風(fēng)險(xiǎn)預(yù)測(cè)290 14.4.3 風(fēng)險(xiǎn)管理290 14.5 軟件配置管理291 14.5.1 基本概念291 14.5.2 軟件配置管理過(guò)程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 基于問(wèn)題分解的估算296 14.7.2 基于過(guò)程分解的估算298 14.8 經(jīng)驗(yàn)估算技術(shù)299 14.8.1 專(zhuān)家類(lèi)比推斷299 14.8.2 中級(jí)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
你還可能感興趣
我要評(píng)論
|