軟件工程導(dǎo)論總復(fù)習(xí)市公開課金獎(jiǎng)市賽課一等獎(jiǎng)?wù)n件_第1頁
軟件工程導(dǎo)論總復(fù)習(xí)市公開課金獎(jiǎng)市賽課一等獎(jiǎng)?wù)n件_第2頁
軟件工程導(dǎo)論總復(fù)習(xí)市公開課金獎(jiǎng)市賽課一等獎(jiǎng)?wù)n件_第3頁
軟件工程導(dǎo)論總復(fù)習(xí)市公開課金獎(jiǎng)市賽課一等獎(jiǎng)?wù)n件_第4頁
軟件工程導(dǎo)論總復(fù)習(xí)市公開課金獎(jiǎng)市賽課一等獎(jiǎng)?wù)n件_第5頁
已閱讀5頁,還剩133頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

軟件工程總復(fù)習(xí)GIS0902第1頁第1章概述1.1軟件危機(jī)產(chǎn)生原因消除路徑1.2軟件工程定義基本原理:7條軟件工程方法學(xué):定義、三要素、分類第2頁第1章概述1.3軟件生命周期3個(gè)時(shí)期、若干階段1.4軟件過程瀑布模型快速原型模型增量模型螺旋模型噴泉模型RUP靈敏過程和極限編程微軟過程第3頁練習(xí)題開發(fā)軟件所需高成本和產(chǎn)品低質(zhì)量之間有著尖銳矛盾,這種現(xiàn)象稱做()。A.軟件工程 B.軟件周期 C.軟件危機(jī) D.軟件產(chǎn)生瀑布模型本質(zhì)上是一個(gè)()模型。A.線性次序B.次序迭代C.線性迭代D.早期產(chǎn)品瀑布模型存在問題是()。A.用戶輕易參加開發(fā) B.缺乏靈活性C.用戶與開發(fā)者易溝通D.適用可變需求第4頁練習(xí)題原型化方法是用戶和設(shè)計(jì)者之間執(zhí)行一個(gè)交互組成,適合用于()系統(tǒng)。A.需求不確定性高 B.需求確定 C.管理信息 D.實(shí)時(shí)第5頁什么是軟件工程?軟件工程目標(biāo)是什么?答:軟件工程是①將系統(tǒng)化、規(guī)范、可度量方法應(yīng)用于軟件開發(fā)、運(yùn)行和維護(hù)過程,即將工程化應(yīng)用于軟件開發(fā)和管理之中,②對①中所選方法研究。目標(biāo):經(jīng)濟(jì)開發(fā)出高質(zhì)量軟件并有效維護(hù)它。第6頁指出瀑布模型中以下任務(wù)次序:驗(yàn)收測試,項(xiàng)目計(jì)劃,單元測試,需求評審,成本預(yù)計(jì),概要設(shè)計(jì),詳細(xì)設(shè)計(jì),系統(tǒng)測試,設(shè)計(jì)評審,編碼,需求規(guī)格說明書。答:項(xiàng)目計(jì)劃,成本預(yù)計(jì),需求規(guī)格說明書,需求評審,概要設(shè)計(jì),詳細(xì)設(shè)計(jì),設(shè)計(jì)評審,編碼,單元測試,系統(tǒng)測試,驗(yàn)收測試第7頁第二章可行性研究2.1任務(wù)項(xiàng)目定義可行性分析軟件計(jì)劃分類:經(jīng)濟(jì)可行性、技術(shù)可行性、社會可行性、法律可行性、操作可行性2.2可行性研究過程復(fù)查系統(tǒng)規(guī)模和目標(biāo)研究當(dāng)前正在使用系統(tǒng)導(dǎo)出新系統(tǒng)高層邏輯模型第8頁第二章可行性研究4.深入定義問題5.導(dǎo)出和評價(jià)供選擇解法6.推薦行動方針7.草擬開發(fā)計(jì)劃8.書寫文檔提交審查第9頁第二章可行性研究2.3系統(tǒng)流程圖系統(tǒng)流程圖是概括地描繪物理系統(tǒng)傳統(tǒng)工具,即用圖形符號以黑盒子形式描繪組成系統(tǒng)每個(gè)部件(程序、文檔、數(shù)據(jù)庫、人工過程等)。第10頁第二章可行性研究2.4數(shù)據(jù)流圖數(shù)據(jù)流圖(DataFlowDiagram)是一個(gè)圖形化技術(shù),它描繪信息流和數(shù)據(jù)從輸入移動到輸出過程中所經(jīng)受變換。

數(shù)據(jù)流圖和數(shù)據(jù)字典(DataDictionary)共同組成了系統(tǒng)邏輯模型。數(shù)據(jù)流圖描繪系統(tǒng)邏輯模型,即對系統(tǒng)所完成功效進(jìn)行描述。數(shù)據(jù)字典準(zhǔn)確定義數(shù)據(jù)流圖中每個(gè)元素。第11頁第二章可行性研究數(shù)據(jù)流圖中主要圖形元素:數(shù)據(jù)加工(數(shù)據(jù)變換)數(shù)據(jù)源點(diǎn)或終點(diǎn)(外部實(shí)體)數(shù)據(jù)流數(shù)據(jù)存放文件第12頁第二章可行性研究數(shù)據(jù)流圖層次結(jié)構(gòu):在多層數(shù)據(jù)流圖中,頂層流圖僅包含一個(gè)加工,它代表被開發(fā)系統(tǒng)。它輸入流是該系統(tǒng)輸入數(shù)據(jù),輸出流是系統(tǒng)所輸出數(shù)據(jù)底層流圖是指其加工不需再做分解數(shù)據(jù)流圖,它處于最底層中間層流圖則表示對其上層父圖細(xì)化。它每一加工可能繼續(xù)細(xì)化,形成子圖。第13頁第二章可行性研究2.5數(shù)據(jù)字典數(shù)據(jù)詞典與數(shù)據(jù)流圖配合,能清楚地表示數(shù)據(jù)處理要求詞條描述——對于在數(shù)據(jù)流圖中每一個(gè)被命名圖形元素,均加以定義,其內(nèi)容有:名字,別名或編號,分類,描述,定義,位置,其它,等第14頁第二章可行性研究2.6成本/效益分析開發(fā)一個(gè)軟件系統(tǒng)是一個(gè)投資,期望未來取得更大經(jīng)濟(jì)效益。經(jīng)濟(jì)效益通常表現(xiàn)為降低運(yùn)行費(fèi)用或(和)增加收入。 第15頁練習(xí)題軟件可行性研究實(shí)質(zhì)上是要進(jìn)行一次()需求分析、設(shè)計(jì)過程。A、簡化、壓縮 B、詳細(xì) C、徹底 D、深入可行性研究目標(biāo)是()A、分析開發(fā)系統(tǒng)必要性 B、確定系統(tǒng)建設(shè)方案 C、分析系統(tǒng)風(fēng)險(xiǎn) D、確定是否值得開發(fā)系統(tǒng)第16頁可行性研究是在(A)之前A、系統(tǒng)開發(fā) B、測試 C、試運(yùn)行 D、集成測試可行性研究需要時(shí)間長短取決于系統(tǒng)規(guī)模,普通來說,可行性研究成本只是預(yù)期總成本(C)。A、1% B、20% C、8% D、50%第17頁數(shù)據(jù)字典是用來定義()中各個(gè)成份詳細(xì)含義。A、程序流程圖B、功效結(jié)構(gòu)圖 C、系統(tǒng)結(jié)構(gòu)圖D、數(shù)據(jù)流圖數(shù)據(jù)流程圖是(A)方法中用于表示系統(tǒng)邏輯模型一個(gè)圖形工具。A、SA B、SD C、SP D、SC第18頁DFD中每個(gè)加工最少有(A)。A、一個(gè)輸入流或一個(gè)輸出流 B、一個(gè)輸入流和一個(gè)輸出流C、一個(gè)輸入流 D、一個(gè)輸出流第19頁(D)工具在軟件詳細(xì)設(shè)計(jì)過程中不采取。A、判定表 B、IPO圖 C、PDL D、DFD圖第20頁可行性研究匯報(bào)主要內(nèi)容是什么?答:可行性研究主要包含以下幾個(gè)部分:(1)概述(2)技術(shù)可行性(3)項(xiàng)目成熟程度(4)市場需求情況和風(fēng)險(xiǎn)分析(5)投資估算及資金籌措(6)經(jīng)濟(jì)與社會效益(7)綜合實(shí)力和產(chǎn)業(yè)基礎(chǔ)(8)項(xiàng)目實(shí)施進(jìn)度計(jì)劃(9)其它尚需要說明必要方面(10)結(jié)論第21頁什么是數(shù)據(jù)流圖?其作用是什么?其中基本符號各表示什么含義?答:數(shù)據(jù)流圖:簡稱DFD,就是采取圖形方式來表示系統(tǒng)邏輯功效、數(shù)據(jù)在系統(tǒng)內(nèi)部邏輯流向和邏輯變換過程,是結(jié)構(gòu)化系統(tǒng)分析方法主要表示工具及用于表示軟件模型一個(gè)圖示方法。數(shù)據(jù)流圖基本符號意思:

1.矩形表示數(shù)據(jù)外部實(shí)體;

2.圓角矩形表示變換數(shù)據(jù)處理邏輯;

3.少右面邊矩形表示數(shù)據(jù)存放;4.箭頭表示數(shù)據(jù)流。第22頁什么是數(shù)據(jù)字典?其作用是什么?它有哪些條目?答:數(shù)據(jù)字典,主要用來描述數(shù)據(jù)流程圖中數(shù)據(jù)流、數(shù)據(jù)存放、處理過程和和數(shù)據(jù)源點(diǎn)/終點(diǎn)。作用:數(shù)據(jù)流程圖描述了系統(tǒng)邏輯結(jié)構(gòu),其中四個(gè)基本圖形元素含義無法在數(shù)據(jù)流程圖中詳細(xì)說明,所以數(shù)據(jù)流程圖需要與其它工具配合使用,數(shù)據(jù)字典就是這么工具之一。包含條目:數(shù)據(jù)流詞條數(shù)據(jù)元素詞條數(shù)據(jù)存放詞條數(shù)據(jù)加工處理詞條數(shù)據(jù)源點(diǎn)及終點(diǎn)詞條第23頁請依據(jù)以下業(yè)務(wù)描述繪制數(shù)據(jù)流圖。

樓宇服務(wù)系統(tǒng)能夠運(yùn)行在小區(qū)內(nèi)部寬帶網(wǎng)上,向樓宇服務(wù)員、住戶、樓長提供以下功效:(1)向住戶提供個(gè)人信息注冊功效、費(fèi)用查詢、家政預(yù)約功效;(2)向樓長提供意見提交功效;(3)向樓宇服務(wù)員提供繳費(fèi)管理、家政查詢、用戶查詢功效。第24頁第25頁第3章需求分析3.1需求分析任務(wù)p563.2獲取需求方法訪談面向數(shù)據(jù)流自頂向下求精簡易應(yīng)用規(guī)格說明技術(shù)快速建立軟件原型3.3分析建模與規(guī)格說明分析建模:數(shù)據(jù)模型、功效模型和行為模型軟件需求規(guī)格說明:需求分析階段得到最主要文檔第26頁3.4實(shí)體-聯(lián)絡(luò)圖3.5數(shù)據(jù)規(guī)范化3.6狀態(tài)轉(zhuǎn)換圖狀態(tài)事件符號3.7其它圖形工具層次方框圖Warnier圖IPO圖3.8驗(yàn)證軟件需求方法、工具第27頁練習(xí)題什么是需求分析?需求分析階段基本任務(wù)是什么?答:所謂"需求分析",是指對要處理問題進(jìn)行詳細(xì)分析,搞清楚問題要求,包含需要輸入什么數(shù)據(jù),要得到什么結(jié)果,最終應(yīng)輸出什么。能夠說,“需求分析”就是確定要計(jì)算機(jī)“做什么”。任務(wù):確定軟件項(xiàng)目標(biāo)目標(biāo)和范圍。調(diào)查使用者要求,分析軟件必須做什么,編寫需求規(guī)格說明書等它相關(guān)文檔,并進(jìn)行必要需求審查。除此之外,還包含需求變更控制,需求風(fēng)險(xiǎn)控制,需求版本控制等對需求管理工作第28頁什么是結(jié)構(gòu)化分析方法?該方法使用什么描述工具?答:結(jié)構(gòu)化分析方法是面向數(shù)據(jù)流方法,所以,此方法研究關(guān)鍵是數(shù)據(jù)組成和數(shù)據(jù)流向和對數(shù)據(jù)加工處理。結(jié)構(gòu)化分析方法用抽象模型概念,按照軟件內(nèi)部數(shù)據(jù)傳遞、變換關(guān)系,自頂向下逐層分解,直至找到滿足功效要求全部可實(shí)現(xiàn)軟件元素為止描述工具:1系統(tǒng)流程圖2數(shù)據(jù)流程圖3數(shù)據(jù)字典4IPO圖5層次方框圖6實(shí)體—關(guān)系圖7狀態(tài)—變遷圖第29頁結(jié)構(gòu)化分析方法經(jīng)過哪些步驟來實(shí)現(xiàn)?答:1)

確定系統(tǒng)功效要求2)

確定系統(tǒng)數(shù)據(jù)要求3)

確定系統(tǒng)操作要求和界面要求4)

確定系統(tǒng)性能要求5)

確定系統(tǒng)運(yùn)行要求6)

取得當(dāng)前系統(tǒng)物理模型7)

抽象出當(dāng)前系統(tǒng)邏輯模型8)

建立目標(biāo)系統(tǒng)邏輯模型。9)

修正開發(fā)計(jì)劃10)假如需要?jiǎng)t開發(fā)系統(tǒng)原型第30頁第5章總體設(shè)計(jì)5.1設(shè)計(jì)過程經(jīng)典總體設(shè)計(jì)過程包含下述9個(gè)步驟:1.構(gòu)想供選擇方案2.選取合理方案3.推薦最正確方案4.功效分解5.設(shè)計(jì)軟件結(jié)構(gòu)6.設(shè)計(jì)數(shù)據(jù)庫7.制訂測試計(jì)劃8.書寫文檔9.審查和復(fù)審第31頁5.2設(shè)計(jì)原理p941、模塊化2、抽象3、逐步求精4、信息隱蔽和局部化5、模塊獨(dú)立第32頁5.2.6模塊獨(dú)立性度量標(biāo)準(zhǔn)1.耦合第33頁2.內(nèi)聚內(nèi)聚標(biāo)志一個(gè)模塊內(nèi)各個(gè)元素彼此結(jié)合緊密程度,它是信息隱藏和局部化概念自然擴(kuò)展。設(shè)計(jì)時(shí)應(yīng)該力爭做到高內(nèi)聚,通常中等程度內(nèi)聚也是能夠采取,而且效果和高內(nèi)聚相差不多;不過,低內(nèi)聚很壞,不要使用。第34頁5.3、設(shè)計(jì)啟發(fā)規(guī)則1、提升模塊獨(dú)立性2、模塊規(guī)模適中3、深度、寬度、扇入、扇出適當(dāng)4、作用域在控制域內(nèi)5、降低接口復(fù)雜程度6、單出口單入口,防止內(nèi)容耦合7、模塊功效可預(yù)測第35頁5.4描繪軟件結(jié)構(gòu)圖形工具層次圖和HIPO圖5.5面向數(shù)據(jù)流設(shè)計(jì)方法變換流事務(wù)流變換分析和事務(wù)分析步驟第36頁在SD方法中全方面指導(dǎo)模塊劃分最主要標(biāo)準(zhǔn)是?(模塊獨(dú)立性)第37頁什么是概要設(shè)計(jì)?有哪些基本任務(wù)?答:概要設(shè)計(jì):依據(jù)用戶需求先確定軟件系統(tǒng)總體結(jié)構(gòu)和總設(shè)計(jì)標(biāo)準(zhǔn)基本任務(wù):構(gòu)想供選擇方案。推薦最正確方案。功效分解,確定軟件結(jié)構(gòu)。設(shè)計(jì)軟件結(jié)構(gòu)。制訂測試計(jì)劃。數(shù)據(jù)設(shè)計(jì)。書寫文檔。包含總體設(shè)計(jì)規(guī)格說明書。用戶手冊。測試計(jì)劃。設(shè)計(jì)審查和復(fù)審。第38頁模塊內(nèi)聚有哪幾個(gè)?模塊間耦合有哪幾個(gè)?答:內(nèi)聚分為七種類型:巧合內(nèi)聚——一個(gè)模塊執(zhí)行多個(gè)完全互不相關(guān)動作,那么這個(gè)模塊就有巧合內(nèi)聚邏輯內(nèi)聚——當(dāng)一個(gè)模塊執(zhí)行一系列相關(guān)動作時(shí),稱其有邏輯內(nèi)聚。時(shí)間性內(nèi)聚——當(dāng)一個(gè)模塊內(nèi)多個(gè)任務(wù)是與時(shí)間相關(guān)時(shí),這個(gè)模塊含有時(shí)間性內(nèi)聚。過程內(nèi)聚——模塊執(zhí)行若干動作之間有次序關(guān)系。通信內(nèi)聚——模塊執(zhí)行若干動作之間有次序關(guān)系,而且全部動作是在相同數(shù)據(jù)上執(zhí)行。信息內(nèi)聚——一個(gè)模塊中執(zhí)行一系列動作,每個(gè)動作都有自己入口點(diǎn)和處理代碼,全部動作都作用在相同數(shù)據(jù)結(jié)構(gòu)上,這么模塊叫做信息內(nèi)聚。功效性內(nèi)聚——一個(gè)模塊中各個(gè)部分都是完成某一詳細(xì)功效必不可少組成部分第39頁耦合分為七類:內(nèi)容耦合——假如一個(gè)模塊直接參考另一個(gè)模塊內(nèi)容,則這兩個(gè)模塊是內(nèi)容耦合。公共耦合——假如多個(gè)模塊都訪問同一個(gè)公共數(shù)據(jù)環(huán)境,則稱它們是公共耦合。外部耦合——假如兩個(gè)模塊都訪問同一個(gè)全局簡單變量而不是同一全局?jǐn)?shù)據(jù)結(jié)構(gòu),而且,不是經(jīng)過參數(shù)表傳遞該全局變量信息,則這兩個(gè)模塊屬于外部耦合。控制耦合——假如模塊A向模塊B傳遞一個(gè)控制信息,則稱這兩個(gè)模塊是控制耦合數(shù)據(jù)結(jié)構(gòu)耦合——當(dāng)一個(gè)模塊調(diào)用另一個(gè)模塊時(shí)傳遞了整個(gè)數(shù)據(jù)結(jié)構(gòu),這兩個(gè)模塊之間含有數(shù)據(jù)結(jié)構(gòu)耦合。數(shù)據(jù)耦合——假如兩個(gè)模塊傳遞是數(shù)據(jù)項(xiàng),則這兩個(gè)模塊是數(shù)據(jù)耦合。非直接耦合——假如兩個(gè)模塊之間沒有直接關(guān)系,它們之間聯(lián)絡(luò)完全經(jīng)過主模塊控制和調(diào)用來實(shí)現(xiàn),這就是非直接耦合。第40頁什么是變換流?什么是事物流?答:變換型數(shù)據(jù)流能夠劃分為顯著三部分:邏輯輸入,中心變換,邏輯輸出事務(wù)流特點(diǎn)是數(shù)據(jù)沿某個(gè)輸入路徑流動,該路徑將外部信息轉(zhuǎn)換成事務(wù),其中發(fā)射出多條事務(wù)處理路徑中心處理被稱為中心事務(wù)第41頁第6章詳細(xì)設(shè)計(jì)6.1詳細(xì)設(shè)計(jì)任務(wù)(1)過程設(shè)計(jì)。確定每個(gè)模塊詳細(xì)算法。(2)數(shù)據(jù)設(shè)計(jì)。設(shè)計(jì)模塊內(nèi)所需要數(shù)據(jù)結(jié)構(gòu)。(3)接口設(shè)計(jì)。確定模塊間接口信息以及用戶界面(比如GUI設(shè)計(jì))。(4)為每個(gè)模塊設(shè)計(jì)一組測試用例。(5)編寫文檔,參加復(fù)審。第42頁6.2人機(jī)界面設(shè)計(jì)6.2.1界面設(shè)計(jì)基本類型6.2.2人機(jī)界面設(shè)計(jì)指南第43頁6.3過程設(shè)計(jì)工具6.3.1程序流程圖6.3.2合圖(N-S圖)6.3.3PAD圖6.3.4判定表6.3.5判定樹6.3.6過程設(shè)計(jì)語言第44頁6.4面向數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)方法6.4.1Jackson圖6.4.2改進(jìn)Jackson圖6.4.3Jackson方法第45頁6.5程序復(fù)雜程度定量度量詳細(xì)設(shè)計(jì)階段模塊質(zhì)量是否很高,需要深入衡量。定量度量方法作用:把程序復(fù)雜程度乘以適當(dāng)常數(shù)可估算出軟件中錯(cuò)誤數(shù)量級軟件開發(fā)工作量;結(jié)果可用來比較兩個(gè)不一樣設(shè)計(jì)或兩個(gè)不一樣算法優(yōu)劣。第46頁流圖計(jì)算環(huán)形復(fù)雜度方法環(huán)形復(fù)雜度用途6.5.1McCabe方法第47頁所謂流圖實(shí)質(zhì)上是“退化了”程序流程圖,它僅僅描繪程序控制流程,完全不表現(xiàn)對數(shù)據(jù)詳細(xì)操作以及分支或循環(huán)詳細(xì)條件。轉(zhuǎn)換規(guī)則:程序流程圖中次序處理框序列和菱形判定框,能夠映射成流圖中一個(gè)結(jié)點(diǎn)。流圖中箭頭線稱為邊,代表控制流。一條邊必須終止于一個(gè)結(jié)點(diǎn)復(fù)合條件要轉(zhuǎn)換成若干個(gè)簡單條件6.5.1.1流圖(I)第48頁環(huán)形復(fù)雜度定量度量程序邏輯復(fù)雜度。有了描繪程序控制流流圖之后,能夠用下述3種方法中任何一個(gè)來計(jì)算環(huán)形復(fù)雜度。(1)流圖中區(qū)域數(shù)等于環(huán)形復(fù)雜度。(2)流圖G環(huán)形復(fù)雜度V(G)=E-N+2,其中,E是流圖中邊條數(shù),N是結(jié)點(diǎn)數(shù)。(3)流圖G環(huán)形復(fù)雜度V(G)=P+1,其中,P是流圖中判定結(jié)點(diǎn)數(shù)目。6.5.1.2環(huán)形復(fù)雜度計(jì)算(I)第49頁程序環(huán)形復(fù)雜度取決于程序控制流復(fù)雜程度,也即是取決于程序結(jié)構(gòu)復(fù)雜程度。McCabe研究大量程序后發(fā)覺,環(huán)形復(fù)雜度高程序往往是最困難、最輕易出問題程序。模塊規(guī)模以V(G)≤10為宜,也就是說,V(G)=10是模塊規(guī)模一個(gè)更科學(xué)更準(zhǔn)確上限。6.5.1.2環(huán)形復(fù)雜度用途第50頁Halstead方法是另一個(gè)著名方法,它依據(jù)程序中運(yùn)算符和操作數(shù)總數(shù)來度量程序復(fù)雜程度。令N1為程序中運(yùn)算符出現(xiàn)總次數(shù),N2為操作數(shù)出現(xiàn)總次數(shù),程序長度N定義為:N=N1+N26.5.2Halstead方法(I)第51頁詳細(xì)設(shè)計(jì)基本任務(wù)是什么?有那幾個(gè)描述方法?答:詳細(xì)設(shè)計(jì)階段任務(wù)是要為編寫程序代碼設(shè)計(jì)“圖紙”,由程序員按“圖紙”用某種高級程序設(shè)計(jì)語言編寫程序代碼。主要方法有程序流程圖、合圖(N-S圖)、PAD圖、判定表、判定樹、過程設(shè)計(jì)語言(PDL)第52頁第7章實(shí)現(xiàn)通常把編碼和測試統(tǒng)稱為實(shí)現(xiàn)。編碼就是把軟件設(shè)計(jì)結(jié)果翻譯成用某種程序設(shè)計(jì)語言書寫程序。作為軟件工程過程一個(gè)階段,編碼是對設(shè)計(jì)深入詳細(xì)化,程序質(zhì)量主要取決于軟件設(shè)計(jì)質(zhì)量。所選取程序設(shè)計(jì)語言特點(diǎn)及編碼格調(diào)也將對程序可靠性、可讀性、可測試性和可維護(hù)性產(chǎn)生深遠(yuǎn)影響。第53頁7.1.1選擇程序設(shè)計(jì)語言7.1.2編碼格調(diào)7.1編碼第54頁暴露問題并不是軟件測試最終目標(biāo),發(fā)覺問題是為了處理問題,測試階段根本目標(biāo)是盡可能多地發(fā)覺并排除軟件中潛藏錯(cuò)誤,最終把一個(gè)高質(zhì)量軟件系統(tǒng)交給用戶使用。7.2軟件測試基礎(chǔ)第55頁7.2.3測試方法(I)測試技術(shù)1、白盒測試(WhiteBoxTesting)2、黑盒測試(BlackBoxTesting)結(jié)構(gòu)測試功效測試第56頁大型軟件系統(tǒng)測試過程基本上由下述幾個(gè)步驟組成。1.模塊測試在設(shè)計(jì)得好軟件系統(tǒng)中,模塊含有低耦合、高內(nèi)聚特點(diǎn)。所以,有可能把每個(gè)模塊作為一個(gè)單獨(dú)實(shí)體來測試,測試方案也比較輕易設(shè)計(jì)。模塊測試又稱為單元測試。在這個(gè)測試步驟中所發(fā)覺往往是編碼和詳細(xì)設(shè)計(jì)錯(cuò)誤。7.2.4測試步驟(I)第57頁2.子系統(tǒng)測試子系統(tǒng)測試是把經(jīng)過單元測試模塊放在一起形成一個(gè)子系統(tǒng)來測試,著重測試模塊間接口。3.系統(tǒng)測試系統(tǒng)測試是把經(jīng)過測試子系統(tǒng)裝配成一個(gè)完整系統(tǒng)來測試。在這個(gè)測試步驟中發(fā)覺往往是軟件設(shè)計(jì)中錯(cuò)誤,也可能發(fā)覺需求說明中錯(cuò)誤。不論是子系統(tǒng)測試還是系統(tǒng)測試,都兼有檢測和組裝兩重含義,通常稱為集成測試。7.2.4測試步驟(II)第58頁4.驗(yàn)收測試驗(yàn)收測試是在用戶主動參加下進(jìn)行,而且可能主要使用實(shí)際數(shù)據(jù)(系統(tǒng)未來要處理信息)進(jìn)行測試。驗(yàn)收測試目標(biāo)是驗(yàn)證系統(tǒng)確實(shí)能夠滿足用戶需要,在這個(gè)測試步驟中發(fā)覺往往是系統(tǒng)需求說明書中錯(cuò)誤。驗(yàn)收測試也稱為確認(rèn)測試。7.2.4測試步驟(III)第59頁5.平行運(yùn)行所謂平行運(yùn)行就是同時(shí)運(yùn)行新開發(fā)出來系統(tǒng)和將被它取代舊系統(tǒng),方便比較新舊兩個(gè)系統(tǒng)處理結(jié)果。這么做詳細(xì)目標(biāo)有以下幾點(diǎn):(1)能夠在準(zhǔn)生產(chǎn)環(huán)境中運(yùn)行新系統(tǒng)而又不冒風(fēng)險(xiǎn);(2)用戶能有一段熟悉新系統(tǒng)時(shí)間;(3)能夠驗(yàn)證用戶指南和使用手冊之類文檔;(4)能夠以準(zhǔn)生產(chǎn)模式對新系統(tǒng)進(jìn)行全負(fù)荷測試,能夠用測試結(jié)果驗(yàn)證性能指標(biāo)。7.2.4測試步驟(IV)第60頁單元測試集中檢測軟件設(shè)計(jì)最小單元——模塊。前提是首先經(jīng)過編譯程序語法檢驗(yàn)。對主要執(zhí)行通路進(jìn)行測試,方便發(fā)覺模塊內(nèi)部錯(cuò)誤。單元測試主要使用白盒測試技術(shù),而且對多個(gè)模塊測試能夠并行地進(jìn)行。7.3單元測試第61頁7.3.1測試重點(diǎn)(I)在單元測試期間著重從下述5個(gè)方面對模塊進(jìn)行測試。1.模塊接口2.局部數(shù)據(jù)結(jié)構(gòu)3.主要執(zhí)行通路4.犯錯(cuò)處理通路5.邊界條件第62頁模塊并不是一個(gè)獨(dú)立程序,所以必須為每個(gè)單元測試開發(fā)驅(qū)動程序和(或)存根程序。通常驅(qū)動程序也就是一個(gè)“主程序”,調(diào)用該模塊。存根程序代替被測試模塊所調(diào)用模塊。所以存根程序也能夠稱為“虛擬子程序”。7.3.3計(jì)算機(jī)測試第63頁7.4集成測試集成測試非漸增式測試漸增式測試先分別測試每個(gè)模塊,再把全部模塊按設(shè)計(jì)要求放在一起結(jié)合成所要程序把下一個(gè)要測試模塊同已經(jīng)測試好那些模塊結(jié)合起來進(jìn)行測試,測試完以后再把下一個(gè)應(yīng)該測試模塊結(jié)合進(jìn)來測試第64頁自頂向下優(yōu)點(diǎn):不需要測試驅(qū)動程序,能夠在測試階段早期實(shí)現(xiàn)并驗(yàn)證系統(tǒng)主要功效。缺點(diǎn):需要存根程序,低層關(guān)鍵模塊中錯(cuò)誤發(fā)覺較晚。而自底向上與之相反。第65頁在集成測試過程中每當(dāng)一個(gè)新模塊結(jié)合進(jìn)來時(shí),程序就發(fā)生了改變。這些改變有可能使原來工作正常功效出現(xiàn)問題。在集成測試范圍中,所謂回歸測試是指重新執(zhí)行已經(jīng)做過測試某個(gè)子集,以確保上述這些改變沒有帶來非預(yù)期副作用。7.4.4回歸測試第66頁確認(rèn)測試也稱為驗(yàn)收測試,它目標(biāo)是驗(yàn)證軟件有效性。軟件有效性一個(gè)簡單定義是:假如軟件功效和性能如同用戶所合理期待那樣,軟件就是有效。7.5確認(rèn)測試第67頁確認(rèn)測試必須有用戶主動參加,或者以用戶為主進(jìn)行。確認(rèn)測試通常使用黑盒測試法。經(jīng)過測試和調(diào)試要確保軟件能滿足全部功效要求,能到達(dá)每個(gè)性能要求。7.5.1確認(rèn)測試范圍第68頁Alpha測試由用戶在開發(fā)者場所進(jìn)行,而且在開發(fā)者對用戶“指導(dǎo)”下進(jìn)行測試。Alpha測試是在受控環(huán)境中進(jìn)行。與Alpha測試不一樣,開發(fā)者通常不在Beta測試現(xiàn)場,Beta測試是軟件在開發(fā)者不能控制環(huán)境中“真實(shí)”應(yīng)用。7.5.2Alpha和Beta測試(II)第69頁也叫玻璃盒測試(GlassBoxTesting)。對軟件過程性細(xì)節(jié)做細(xì)致檢驗(yàn)。這一方法是把測試對象看作一個(gè)打開盒子,它允許測試人員利用程序內(nèi)部邏輯結(jié)構(gòu)及相關(guān)信息,來設(shè)計(jì)或選擇測試用例,對程序全部邏輯路徑進(jìn)行測試。7.6白盒測試技術(shù)第70頁邏輯覆蓋測試5種標(biāo)準(zhǔn)第71頁輸入A,B,C,D(A>5)or(B>6)X=A+BX=A-B(C>A)and(D<B)Y=C+DY=C-D輸出X,Y真真條件組合測試第72頁參考答案條件組合覆蓋四個(gè)條件組合A>5、B>6、C>A、D<B第一個(gè)判斷組合為TTTFFTFF第二個(gè)判斷組合為TTTFFTFF把兩個(gè)判斷組合在一起組成條件組合覆蓋(有各種組合情況,寫出一個(gè)即可,以下)

ABCDXYTTTT(10,10,15,5,20,10)TFTF(10,5,15,10,15,15)FTFT(5,10,5,5,15,10)FFFF(5,5,5,5,0,10)第73頁1.基本路徑測試使用基本路徑測試技術(shù)設(shè)計(jì)測試用例步驟以下:第一步,依據(jù)過程設(shè)計(jì)結(jié)果畫出對應(yīng)流圖。第二步,計(jì)算流圖環(huán)形復(fù)雜度。第三步,確定線性獨(dú)立路徑基本集合。第四步,設(shè)計(jì)可強(qiáng)制執(zhí)行基本集合中每條路徑測試用例。7.6.2控制結(jié)構(gòu)測試(I)第74頁黑盒測試著重測試軟件功效。它很可能發(fā)覺白盒測試不易發(fā)覺其它類型錯(cuò)誤。黑盒測試力圖發(fā)覺下述類型錯(cuò)誤:①功效不正確或遺漏了功效;②界面錯(cuò)誤;③數(shù)據(jù)結(jié)構(gòu)錯(cuò)誤或外部數(shù)據(jù)庫訪問錯(cuò)誤;④性能錯(cuò)誤;⑤初始化和終止錯(cuò)誤。7.7黑盒測試技術(shù)第75頁7.7黑盒測試技術(shù)1、等價(jià)劃分2、邊界值分析3、錯(cuò)誤推測4、因果圖法第76頁調(diào)試是在測試發(fā)覺錯(cuò)誤之后排除錯(cuò)誤過程。7.8.1調(diào)試過程調(diào)試過程總會有以下兩種結(jié)果之一:①找到了問題原因并把問題更正和排除掉了;②沒找出問題原因。在后一個(gè)情況下,調(diào)試人員能夠猜測一個(gè)原因,并設(shè)計(jì)測試用例來驗(yàn)證這個(gè)假設(shè),重復(fù)此過程直至找到原因并更正了錯(cuò)誤。7.8調(diào)試第77頁1.軟件可靠性定義軟件可靠性是程序在給定時(shí)間間隔內(nèi),按照規(guī)格說明書要求成功地運(yùn)行概率。2.軟件可用性軟件可用性是程序在給定時(shí)間點(diǎn),按照規(guī)格說明書要求,成功地運(yùn)行概率。7.9軟件可靠性

7.9.1基本概念第78頁可靠性和可用性之間主要差異是,可靠性意味著在0到t這段時(shí)間間隔內(nèi)系統(tǒng)沒有失效,而可用性只意味著在時(shí)刻t,系統(tǒng)是正常運(yùn)行。第79頁什么是軟件測試?答:軟件測試從廣義上講,是指軟件產(chǎn)品生存周期內(nèi)全部檢驗(yàn)、評審和確認(rèn)活動。從狹義上講,軟件測試是為了發(fā)覺錯(cuò)誤而執(zhí)行程序過程。或者說,軟件測試是依據(jù)軟件開發(fā)各個(gè)階段規(guī)格說明和程序內(nèi)部結(jié)構(gòu)而精心設(shè)計(jì)一批測試用例,用這些測試用例運(yùn)行程序,以發(fā)覺程序錯(cuò)誤過程。第80頁請說明集成測試、系統(tǒng)測試和驗(yàn)收測試有什么不一樣?答:集成測試界于單元測試和系統(tǒng)測試之間,起到“橋梁作用”,普通由開發(fā)小組采取白盒加黑盒方式來測試,既驗(yàn)證“設(shè)計(jì)”,又驗(yàn)證“需求”。

系統(tǒng)測試粒度最大,普通由獨(dú)立測試小組采取黑盒方式來測試,主要測試系統(tǒng)是否符合“需求規(guī)格說明書”。

驗(yàn)收測試與系統(tǒng)測試相同,主要區(qū)分是測試人員不一樣,驗(yàn)收測試由用戶執(zhí)行。第81頁什么是白盒測試?它適應(yīng)哪些測試?答:白盒測試也叫結(jié)構(gòu)測試,測試者需要了解被測程序內(nèi)部結(jié)構(gòu)。白盒測試通常依據(jù)覆蓋準(zhǔn)則設(shè)計(jì)測試用例,有語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋和條件組合覆蓋。白盒測試適用與單元測試、集成測試、系統(tǒng)測試第82頁采取黑盒技術(shù)設(shè)計(jì)測試用例有哪幾個(gè)方法?這些方法各有什么特點(diǎn)?答:黑盒測試設(shè)計(jì)測試用例方法有1)等價(jià)類劃分法特點(diǎn)是:a、測試內(nèi)容相同b、一個(gè)等價(jià)類中某個(gè)測試能夠發(fā)覺缺點(diǎn),那么這個(gè)等價(jià)類其它測試也能發(fā)覺缺點(diǎn)c、一個(gè)等價(jià)類中某個(gè)測試不能發(fā)覺缺點(diǎn),那么這個(gè)等價(jià)類其它測試也不能發(fā)覺缺點(diǎn)2)邊界值分析法特點(diǎn)是:用邊界值分析時(shí)時(shí)常收獲較大,它是在等價(jià)類邊界上選擇測試用例3)錯(cuò)誤推測法特點(diǎn)是:沒有確定步驟,很大程度上是憑借經(jīng)驗(yàn)進(jìn)行4)因果圖法特點(diǎn)是:考慮輸入條件間組合關(guān)系;考慮輸出條件對輸入條件信賴關(guān)系;測試用例發(fā)覺錯(cuò)誤效率高;能查出功效說明中一些不一致或遺漏第83頁白盒測試法有哪些覆蓋標(biāo)準(zhǔn)?試對它們檢錯(cuò)能力進(jìn)行比較。答:白盒測試覆蓋標(biāo)準(zhǔn)有:語句覆蓋->判定覆蓋->條件覆蓋->判定/條件覆

蓋->條件組合覆蓋->路徑覆蓋檢錯(cuò)能力由弱到強(qiáng)第84頁第8章維護(hù)第85頁8.1.1軟件維護(hù)定義所謂軟件維護(hù)就是在軟件已經(jīng)交付使用之后,為了更正錯(cuò)誤或滿足新需要而修改軟件過程。軟件維護(hù)包含下述4項(xiàng)活動。(1)更正性維護(hù):診療和更正錯(cuò)誤過程;(2)適應(yīng)性維護(hù):為了適應(yīng)新環(huán)境而修改軟件活動;(3)完善性維護(hù):增加新功效和修改已經(jīng)有功效維護(hù);(4)預(yù)防性維護(hù):給未來改進(jìn)奠定基礎(chǔ)而修改軟件維護(hù)。第86頁8.1.4軟件維護(hù)特點(diǎn)軟件結(jié)構(gòu)、系統(tǒng)接口、約束條件……???1、結(jié)構(gòu)化維護(hù)與非結(jié)構(gòu)化維護(hù)對比維護(hù)要求軟件配置只有代碼評價(jià)代碼重編程序復(fù)查完整配置評價(jià)設(shè)計(jì)文檔預(yù)計(jì)改動影響,計(jì)劃實(shí)施路徑修改設(shè)計(jì)重編程序復(fù)查交付使用第87頁8.2軟件維護(hù)活動(I)1、本質(zhì)上是修改和壓縮了軟件定義和開發(fā)過程。第88頁8.3程序修改步驟在軟件維護(hù)時(shí),必定會對源程序進(jìn)行修改。通常對源程序修改不能無計(jì)劃地倉促上陣,為了正確、有效地修改,需要經(jīng)歷以下三個(gè)步驟。

分析和了解程序

修改程序

重新驗(yàn)證程序第89頁8.4軟件可維護(hù)性(I)軟件可維護(hù)性是指糾正軟件系統(tǒng)出現(xiàn)錯(cuò)誤和缺點(diǎn),以及為滿足新要求進(jìn)行修改、擴(kuò)充或壓縮輕易程度。可維護(hù)性、可使用性、可靠性是衡量軟件質(zhì)量主要質(zhì)量特征,也是用戶十分關(guān)心幾個(gè)方面。軟件可維護(hù)性是軟件開發(fā)階段各個(gè)時(shí)期關(guān)鍵目標(biāo)。第90頁8.4.1決定軟件可維護(hù)性原因當(dāng)前廣泛使用是用以下七個(gè)特征來衡量程序可維護(hù)性。 可了解性 可使用性 可測試性 可移植性 可修改性 效率 可靠性第91頁軟件可維護(hù)性是軟件設(shè)計(jì)師最關(guān)注性能,談?wù)劄榱巳〉密浖己每删S護(hù)性,在設(shè)計(jì)時(shí)應(yīng)該注意哪些問題?答:為取得軟件良好可維護(hù)性,在設(shè)計(jì)階段應(yīng)該做一些變更試驗(yàn),檢驗(yàn)系統(tǒng)可維護(hù)性、靈活性和可移植性,設(shè)計(jì)時(shí)應(yīng)該將今后可能變更內(nèi)容與其它部分分離開來,而且遵照高內(nèi)聚、低偶合標(biāo)準(zhǔn)。第92頁在軟件文檔中,你認(rèn)為哪些文檔對于軟件維護(hù)最主要?需求分析文檔、設(shè)計(jì)文檔、程序文檔對軟件維護(hù)很主要第93頁軟件維護(hù)時(shí)源程序修改策略是什么?答:軟件維護(hù)時(shí)源程序修改策略是:因?yàn)檐浖S護(hù)最終落實(shí)在修改源程序和文檔上。為了正確、有效地修改源程序,通常要先分析和了解源程序,然后才能修改源程序,最終重新測試和驗(yàn)證源程序。第94頁9-13章關(guān)鍵點(diǎn)第95頁第9章面向?qū)ο蠓椒▽W(xué)引論9.1面向?qū)ο蠓椒▽W(xué)概述9.1.1傳統(tǒng)方法學(xué)缺點(diǎn)9.1.2面向?qū)ο箝_發(fā)方法9.1.3面向?qū)ο蠓椒P(guān)鍵點(diǎn)9.1.4面向?qū)ο蠓椒ńM成9.1.5面向?qū)ο蠓椒ㄟ^程9.1.6面向?qū)ο蠓椒▋?yōu)點(diǎn)第96頁9.2面向?qū)ο蟾拍?.2.1對象9.2.2類9.2.3實(shí)例9.2.4消息9.2.5方法9.2.6屬性9.2.7封裝9.2.8繼承9.2.9多態(tài)性9.2.10重載第97頁9.3面向?qū)ο蠼C嫦驅(qū)ο箝_發(fā)軟件,需要建立3種形式模型。對象模型。描述系統(tǒng)數(shù)據(jù)結(jié)構(gòu)—數(shù)據(jù)結(jié)構(gòu);用類圖描述動態(tài)模型。描述系統(tǒng)控制結(jié)構(gòu)—執(zhí)行操作;用狀態(tài)圖描述功效模型。描述系統(tǒng)功效—數(shù)值改變;用DFD描述這三種模型從不一樣側(cè)面描述了對系統(tǒng)需求。在面向?qū)ο蠓治?OOA)階段,這三種模型是必不可少。第98頁9.4對象模型對象模型描述了系統(tǒng)靜態(tài)結(jié)構(gòu)。OO方法強(qiáng)調(diào)圍繞對象而不是功效來結(jié)構(gòu)系統(tǒng)。使用統(tǒng)一建模語言UML(UnifiedModelingLanguage)提供類圖來建立對象模型。第99頁第100頁類圖中類之間關(guān)系關(guān)系含義符號關(guān)聯(lián)兩個(gè)元素之間關(guān)聯(lián)關(guān)系依賴兩個(gè)元素之間依賴關(guān)系泛化普通與特殊關(guān)系聚集整體與部分之間關(guān)聯(lián)關(guān)系組合更強(qiáng)一個(gè)整體與部分間擁相關(guān)系,整體負(fù)責(zé)部分創(chuàng)建和刪除實(shí)現(xiàn)規(guī)約(specification)與它實(shí)現(xiàn)之間關(guān)系第101頁9.5動態(tài)模型表示瞬時(shí)、行為化系統(tǒng)“控制”性質(zhì)要求了對象模型中對象正當(dāng)改變序列用狀態(tài)圖描述對象狀態(tài)、觸發(fā)狀態(tài)轉(zhuǎn)換事件、對象行為(對事件響應(yīng))每個(gè)類動態(tài)行為用一張狀態(tài)圖描繪,各個(gè)類狀態(tài)圖經(jīng)過共享事件合并起來組成整個(gè)系統(tǒng)動態(tài)模型,動態(tài)模型是基于事件共享而相互關(guān)聯(lián)一組狀態(tài)圖集合。相關(guān)概念事件:引發(fā)對象狀態(tài)轉(zhuǎn)換控制信息,瞬間完成。狀態(tài):對象在某個(gè)特定階段含有行為模式,有連續(xù)性。行為:對象所做一系列操作3.6節(jié)第102頁9.6功效模型UML提供用例圖也是進(jìn)行需求分析和建立功效模型強(qiáng)有力工具。一幅用例圖包含模型元素有系統(tǒng)、行為者、用例及用例之間關(guān)系。第103頁9.73種模型之間關(guān)系三種模型描述了系統(tǒng)不一樣方面對象模型動態(tài)模型功效模型對象靜態(tài)結(jié)構(gòu)及相互關(guān)系與時(shí)間和次序相關(guān)系統(tǒng)性質(zhì)與值改變相關(guān)系統(tǒng)性質(zhì)描述系統(tǒng)數(shù)據(jù)結(jié)構(gòu)控制結(jié)構(gòu)系統(tǒng)功效“干事主體”“什么時(shí)候干”“干什么”第104頁9.7.3種模型之間關(guān)系(續(xù))相互補(bǔ)充、相互配合,從不一樣側(cè)面反應(yīng)系統(tǒng)內(nèi)容,綜合起來則全方面地反應(yīng)了對目標(biāo)系統(tǒng)需求功效模型指明了系統(tǒng)應(yīng)該“做什么”;動態(tài)模型要求了“什么時(shí)候做”;對象模型則定義了“誰來做”功效模型中“處理”對象模型中“服務(wù)”動態(tài)模型中“行為”功效模型中“數(shù)據(jù)存放”、“數(shù)據(jù)源/終點(diǎn)”對象模型中“對象”功效模型中“數(shù)據(jù)流”對象模型中“屬性”第105頁第10章面向?qū)ο蠓治?0.1面向?qū)ο蠓治鲞^程首先,系統(tǒng)分析員要對需求文檔進(jìn)行分析。然后,是需求建模。最終,是需求評審。第106頁(2)面向?qū)ο蠓治鋈齻€(gè)模型與五個(gè)層次面向?qū)ο蠓治鋈齻€(gè)模型:面向?qū)ο蠓治瞿P桶簩ο竽P?、動態(tài)模型和功效模型。對象模型描述了系統(tǒng)靜態(tài)結(jié)構(gòu);動態(tài)模型描述了系統(tǒng)交互次序;功效模型描述了系統(tǒng)數(shù)據(jù)變換。其中,對象模型是最基礎(chǔ)、最關(guān)鍵、最主要。不論處理什么問題,首先要在問題域中提取和定義出對象模型。第107頁10.2需求陳說

10.2.1書寫關(guān)鍵點(diǎn)

10.2.2示例第108頁首先是建立問題域?qū)ο竽P?。然后再建立另外兩個(gè)子模型。需求陳說、應(yīng)用領(lǐng)域?qū)I(yè)知識以及關(guān)于客觀世界常識,是建立對象模型時(shí)主要信息起源。10.3建立對象模型第109頁對于僅存放靜態(tài)數(shù)據(jù)系統(tǒng)(比如數(shù)據(jù)庫)來說,動態(tài)模型并沒有什么意義。在開發(fā)交互式系統(tǒng)時(shí),動態(tài)模型卻起著很主要作用。假如搜集輸入信息是目標(biāo)系統(tǒng)一項(xiàng)主要工作,則在開發(fā)這類應(yīng)用系統(tǒng)時(shí)建立正確動態(tài)模型是至關(guān)主要。10.4建立動態(tài)模型第110頁第一步:是編寫經(jīng)典交互行為腳本。第二步,從腳本中提取出事件,確定觸發(fā)每個(gè)事件動作對象以及接收事件目標(biāo)對象。第三步,排列事件發(fā)生次序,確定每個(gè)對象可能有狀態(tài)及狀態(tài)間轉(zhuǎn)換關(guān)系,并用狀態(tài)圖描繪它們。最終,比較各個(gè)對象狀態(tài)圖,檢驗(yàn)它們之間一致性,確保事件之間匹配。第111頁功效模型表明了系統(tǒng)中數(shù)據(jù)之間依賴關(guān)系,以及相關(guān)數(shù)據(jù)處理功效,它由一組數(shù)據(jù)流圖組成。其中處理功效能夠用IPO圖(或表)、偽碼等各種方式深入描述。通常在建立了對象模型和動態(tài)模型之后再建立功能模型。10.5建立功效模型第112頁為建立完整對象模型,既要確定類中應(yīng)該定義屬性,又要確定類中應(yīng)該定義服務(wù)。在確定類中應(yīng)有服務(wù)時(shí),既要考慮該類實(shí)體常規(guī)行為,又要考慮在本系統(tǒng)中特殊需要服務(wù)。10.6定義服務(wù)第113頁第11章面向?qū)ο笤O(shè)計(jì)面向?qū)ο笤O(shè)計(jì)(OOD,Object-OrientedDesign)是面向?qū)ο蠓治龅綄?shí)現(xiàn)一個(gè)橋梁。面向?qū)ο蠓治鍪菍⒂脩粜枨蠼?jīng)過分析后,建立問題域準(zhǔn)確模型過程;而面向?qū)ο笤O(shè)計(jì)則是依據(jù)面向?qū)ο蠓治龅玫叫枨竽P?,建立求解域模型過程。即分析必須搞清楚系統(tǒng)“做什么”,而設(shè)計(jì)必須搞清楚系統(tǒng)“怎么做”,從分析到設(shè)計(jì)不是傳統(tǒng)方法轉(zhuǎn)換,而是平滑(無縫)過渡,而求解域模型是系統(tǒng)實(shí)現(xiàn)依據(jù)。第114頁11.1面向?qū)ο笤O(shè)計(jì)準(zhǔn)則(1)模塊化在面向?qū)ο箝_發(fā)方法中,將對象定義為模塊。對象把數(shù)據(jù)結(jié)構(gòu)和作用在數(shù)據(jù)上操作(方法)封裝起來組成模塊。對象是組成系統(tǒng)基本模塊。(2)抽象

類是一個(gè)抽象數(shù)據(jù)類型,在該數(shù)據(jù)類型之上,能夠創(chuàng)建對象(類組員)。類包含相同對象共同屬性和服務(wù),它對外定義了公共接口,組成了類規(guī)格說明(即協(xié)議),供外界正當(dāng)訪問。(3)信息隱藏

在面向?qū)ο蠓椒ㄖ?,對象是屬性和服?wù)封裝體,這就實(shí)現(xiàn)了信息隱藏。類結(jié)構(gòu)分離了接口與實(shí)現(xiàn),類屬性表示方法和操作實(shí)現(xiàn)算法,對于類用戶來說,都應(yīng)該是隱藏,用戶只能經(jīng)過公共接口訪問類中屬性。第115頁(4)弱耦合所謂耦合,是指一個(gè)軟件結(jié)構(gòu)內(nèi)不一樣模塊之間互連依賴關(guān)系。依賴關(guān)系越多耦合度越強(qiáng),依賴關(guān)系越少耦合度越弱。在面向?qū)ο蠓椒ㄖ?,對象是最基本模塊,不一樣對象之間相互關(guān)聯(lián)依賴關(guān)系表示了耦合度。衡量設(shè)計(jì)優(yōu)良一個(gè)主要標(biāo)準(zhǔn)就是弱耦合,弱耦合設(shè)計(jì)中某個(gè)對象改變不會或極少影響到其它對象。不一樣對象之間耦合是不可防止。兩個(gè)對象必須相互聯(lián)絡(luò)相互依賴時(shí),應(yīng)該經(jīng)過類協(xié)議(即公共接口)實(shí)現(xiàn)兩個(gè)對象相互依賴(耦合),而不是經(jīng)過類詳細(xì)實(shí)現(xiàn)細(xì)節(jié)來描述。(5)強(qiáng)內(nèi)聚所謂內(nèi)聚,是一個(gè)模塊內(nèi)各個(gè)元素彼此結(jié)合緊密程度。結(jié)合得越緊密內(nèi)聚越強(qiáng),結(jié)合得越不緊密內(nèi)聚越弱。強(qiáng)內(nèi)聚也是衡量設(shè)計(jì)優(yōu)良一個(gè)主要標(biāo)準(zhǔn)。在面向?qū)ο笤O(shè)計(jì)中,內(nèi)聚可分為下述三類:第116頁1)服務(wù)(操作)內(nèi)聚。一個(gè)服務(wù)應(yīng)該是單一,即只完成一個(gè)任務(wù)。2)類內(nèi)聚。類內(nèi)聚要求類屬性和服務(wù)應(yīng)該是高內(nèi)聚,而且它們應(yīng)該是系統(tǒng)任務(wù)所必需。一個(gè)類應(yīng)該只有一個(gè)功效,假如某個(gè)類有多個(gè)功效,通常應(yīng)該把它分解成多個(gè)專用類。3)普通-特殊內(nèi)聚。普通-特殊內(nèi)聚表示:普通-特殊結(jié)構(gòu)符合領(lǐng)域知識表示形式,也就是說,特殊類應(yīng)該盡可能地繼承普通類屬性和服務(wù)。這么普通-特殊結(jié)構(gòu)是高內(nèi)聚。(6)可重用在面向?qū)ο笤O(shè)計(jì)中,一個(gè)類設(shè)計(jì)應(yīng)該含有通用性,為開發(fā)相同系統(tǒng)提供軟件重用可能。所以,在軟件開發(fā)過程中,為了實(shí)現(xiàn)重用,既要盡可能重用已經(jīng)有類,又要?jiǎng)?chuàng)建可重用新類。第117頁11.2啟發(fā)規(guī)則1.設(shè)計(jì)結(jié)果應(yīng)該清楚易懂2.普通-特殊結(jié)構(gòu)深度應(yīng)適當(dāng)3.設(shè)計(jì)簡單類4.使用簡單協(xié)議5.使用簡單服務(wù)6.把設(shè)計(jì)變動減至最小第118頁11.3軟件重用

重用也叫再用或復(fù)用,是指同一事物不作修改或稍加改動就屢次重復(fù)使用。軟件成份重用能夠深入劃分成以下3個(gè)級別:(1)代碼重用源代碼剪貼;源代碼包含;繼承;第119頁(2)設(shè)計(jì)結(jié)果重用設(shè)計(jì)結(jié)果重用指是,重用某個(gè)軟件系統(tǒng)設(shè)計(jì)模型(即求解域模型)。這個(gè)級別重用有利于把一個(gè)應(yīng)用系統(tǒng)移植到完全不一樣軟硬件平臺上。(3)分析結(jié)果重用這是一個(gè)更高級別重用,即重用某個(gè)系統(tǒng)分析模型。這種重用尤其適合用于用戶需求未改變,但系統(tǒng)體系結(jié)構(gòu)發(fā)生了根本改變場所。第120頁3.經(jīng)典可重用軟件成份更詳細(xì)地說,可能被重用軟件成份主要有以下10種:(1)項(xiàng)目計(jì)劃。(2)成本預(yù)計(jì)。(3)體系結(jié)構(gòu)。(4)需求模型和規(guī)格說明。(5)設(shè)計(jì)。(6)源代碼。(7)用戶文檔和技術(shù)文檔。(8)用戶界面。(9)數(shù)據(jù)。(10)測試用例。第121頁11.3.2類構(gòu)件利用面向?qū)ο蠹夹g(shù),能夠更方便更有效地實(shí)現(xiàn)軟件重用。面向?qū)ο蠹夹g(shù)中“類”,是比較理想可重用軟構(gòu)件,不妨稱之為類構(gòu)件。類構(gòu)件有3種重用方式,分別是實(shí)例重用、繼承重用和多態(tài)重用。第122頁11.4系統(tǒng)分解面向?qū)ο笤O(shè)計(jì)同過程設(shè)計(jì)一樣,自頂向下進(jìn)行功效分

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論