版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
11軟件工程學(xué)概述2可行性研究3需求分析形式化說明技術(shù)總體設(shè)計(jì)6詳細(xì)設(shè)計(jì)7實(shí)現(xiàn)8維護(hù)9面向?qū)ο笙嚓P(guān)內(nèi)容10軟件項(xiàng)目管理軟件工程導(dǎo)論復(fù)習(xí)11軟件工程學(xué)概述7實(shí)現(xiàn)軟件工程導(dǎo)論復(fù)習(xí)2第1章軟件工程學(xué)概述
1、什么是軟件危機(jī)?P12、軟件危機(jī)產(chǎn)生的原因有哪些?P33、什么是軟件工程?P54、軟件工程方法學(xué)包含哪些要素?P95、在軟件過程中有哪些模型?他們各自的特點(diǎn)是哪些?P15—P222第1章軟件工程學(xué)概述1、什么是軟件危機(jī)?P13第2章可行性研究
1、可行性研究的目的是什么?P252、應(yīng)從哪些方面研究可行性?P253、如何畫系統(tǒng)流程圖?P27—P304、如何畫數(shù)據(jù)流圖?P30—P375、了解數(shù)據(jù)字典及成本效益分析。3第2章可行性研究1、可行性研究的目的是什么?P254數(shù)據(jù)流圖(DataFlowDiagram,DFD)是描述系統(tǒng)中數(shù)據(jù)流程的圖形工具,它標(biāo)識(shí)了一個(gè)系統(tǒng)的邏輯輸入和邏輯輸出,以及把邏輯輸入轉(zhuǎn)換為邏輯輸出所需的加工處理。2.4數(shù)據(jù)流圖2.4數(shù)據(jù)流圖(DFD)數(shù)據(jù)存儲(chǔ)數(shù)據(jù)源點(diǎn)或終點(diǎn)處理加工名數(shù)據(jù)流數(shù)據(jù)流名文件名實(shí)體名箭頭圓或橢圓單或雙杠矩形框還有一些輔助的圖例:一、數(shù)據(jù)流圖的圖符四種基本圖形符號(hào):TAB*CTAB*CTAB+CTAB+CTABC+TABC+*
與
+或互斥+4數(shù)據(jù)流圖(DataFlowDiagram,DFD)是描52.4數(shù)據(jù)流圖舉例:儲(chǔ)戶儲(chǔ)戶1記錄存款信息打印存款信息存款單存款信息存款存單3計(jì)算利息4打印利息清單存款信息利息值利息清單D1存款信息存款信息252.4數(shù)據(jù)流圖舉例:儲(chǔ)戶儲(chǔ)戶1記錄存款打印存款存款單存款6細(xì)化后的計(jì)算機(jī)儲(chǔ)蓄系統(tǒng)軟件結(jié)構(gòu)6細(xì)化后的計(jì)算機(jī)儲(chǔ)蓄系統(tǒng)軟件結(jié)構(gòu)7第3章需求分析
1、需求分析的基本任務(wù)是什么?P46-P482、分析建模
2.1什么是模型?模型:就是為了理解事物而對(duì)事物做出的一種抽象,是對(duì)事物的一種無歧義的書面描述。通常,模型由一組圖形符號(hào)和組織這些符號(hào)的規(guī)則組成。
2.2數(shù)據(jù)模型(E-R)、功能模型(2.4節(jié)數(shù)據(jù)流圖)、行為模型(狀態(tài)轉(zhuǎn)換圖是行為模型的基礎(chǔ))3、要從哪些方面驗(yàn)證軟件需求?P607第3章需求分析1、需求分析的基本任務(wù)是什么?P468第4章形式化說明技術(shù)
軟件工程的使用方法非形式化:用自然語言描述需求規(guī)格說明半形式化:用數(shù)據(jù)流圖或?qū)嶓w—聯(lián)系圖建立模型形式化:描述系統(tǒng)性質(zhì)的基于數(shù)學(xué)的技術(shù)1、有窮狀態(tài)機(jī)P67—P722、Petri網(wǎng)技術(shù)P72—P758第4章形式化說明技術(shù)軟件工程的使用方法非形式化:用9第5章總體設(shè)計(jì)
1、在設(shè)計(jì)過程中,總體設(shè)計(jì)一般有哪兩個(gè)主要階段組成?P812、什么模塊化?模塊獨(dú)立性包含哪些內(nèi)容?度量準(zhǔn)則是什么?P85—P893、啟發(fā)規(guī)則有哪些?P90—P924、描繪軟件結(jié)構(gòu)的圖形工具P92-P945、面向數(shù)據(jù)流的設(shè)計(jì)方法P95—P1029第5章總體設(shè)計(jì)1、在設(shè)計(jì)過程中,總體設(shè)計(jì)一般有哪兩105.2設(shè)計(jì)原理5.2.1模塊化
模塊是程序?qū)ο笥忻值募?。例如,過程、函數(shù)、子程序、宏等,是構(gòu)成軟件系統(tǒng)結(jié)構(gòu)的基本元素。
模塊化就是將系統(tǒng)劃分為若干個(gè)模塊,每個(gè)模塊完成一個(gè)子功能。模塊化的目的是將系統(tǒng)“分而治之”,模塊化能夠降低問題的復(fù)雜性,使軟件結(jié)構(gòu)清晰,易閱讀、易理解,易于測(cè)試和調(diào)試,因而也有助于提高軟件的可靠性。105.2設(shè)計(jì)原理5.2.1模塊化模塊是程序?qū)ο笥忻?1模塊化降低軟件復(fù)雜度的簡(jiǎn)單證明5.2.5模塊獨(dú)立5.2.5模塊獨(dú)立“模塊”,又稱“構(gòu)件”,一般指用一個(gè)名字可調(diào)用的一段程序。它一般具有如下三個(gè)基本屬性:⑴功能即指該模塊實(shí)現(xiàn)什么功能,做什么事情。必須注意:模塊功能,應(yīng)是該模塊本身的功能加上它所調(diào)用的所有子模塊的功能。⑵邏輯即描述模塊內(nèi)部怎么做。⑶狀態(tài)即該模塊使用時(shí)的環(huán)境和條件。所謂模塊的獨(dú)立性,是指軟件系統(tǒng)中每個(gè)模塊只涉及軟件要求的具體的子功能,而和軟件系統(tǒng)中其他模塊的接口是簡(jiǎn)單的。即功能專一,模塊之間無過多的相互作用的模塊。這種類型的模塊可以并行開發(fā),模塊獨(dú)立性越強(qiáng),開發(fā)越容易。獨(dú)立性強(qiáng)的模塊,還能減少錯(cuò)誤的影響,使模塊容易組合、修改及測(cè)試。11模塊化降低軟件復(fù)雜度的簡(jiǎn)單證明5.2.5模塊獨(dú)立5.2125.2.5模塊獨(dú)立性模塊獨(dú)立性的度量標(biāo)準(zhǔn)是兩個(gè)定性準(zhǔn)則:
耦合性用于描述模塊之間聯(lián)系的緊密程度。
內(nèi)聚性用于描述模塊內(nèi)部聯(lián)系的緊密程度。模塊獨(dú)立性比較強(qiáng)的模塊應(yīng)該是具有高內(nèi)聚性和的低耦合度。
125.2.5模塊獨(dú)立性模塊獨(dú)立性的度量標(biāo)準(zhǔn)是兩個(gè)定性準(zhǔn)則13圖5.8變換型數(shù)據(jù)流圖的基本模型
5.5.1概念–
變換流13圖5.8變換型數(shù)據(jù)流圖的基本模型5.5.1概念14圖事務(wù)型數(shù)據(jù)流圖的基本模型5.5.1概念–
事務(wù)流14圖事務(wù)型數(shù)據(jù)流圖的基本模型5.5.1概念–事15變換分析設(shè)計(jì):把具有變換流特點(diǎn)的數(shù)據(jù)流圖按預(yù)先確定的模式映射成軟件結(jié)構(gòu)。不具有顯著的事務(wù)特點(diǎn)。雖然在任何情況下都可以使用變換分析方法設(shè)計(jì)軟件結(jié)構(gòu),但是在數(shù)據(jù)流具有明顯的事務(wù)特點(diǎn)時(shí),也就是有一個(gè)明顯的“發(fā)射中心”(事務(wù)中心)時(shí),還是以采用事務(wù)分析方法為宜。兩者的主要差別僅在于由數(shù)據(jù)流圖到軟件結(jié)構(gòu)的映射方法不同。15變換分析設(shè)計(jì):把具有變換流特點(diǎn)的數(shù)據(jù)流圖按預(yù)先確定的模式16第6章詳細(xì)設(shè)計(jì)
1、結(jié)構(gòu)程序設(shè)計(jì)中有哪幾種基本控制結(jié)構(gòu)?P1082、了解人機(jī)界面的設(shè)計(jì)。3、掌握過程設(shè)計(jì)的工具(程序流程圖、盒圖、PAD圖,判定樹)P114—P1194、面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法(Jackson圖)5、程序復(fù)雜度的定量度量(McCabe)16第6章詳細(xì)設(shè)計(jì)1、結(jié)構(gòu)程序設(shè)計(jì)中有哪幾種基本控制176.1結(jié)構(gòu)程序設(shè)計(jì)6.1結(jié)構(gòu)程序設(shè)計(jì)圖6.13種基本的控制結(jié)構(gòu)176.1結(jié)構(gòu)程序設(shè)計(jì)6.1結(jié)構(gòu)程序設(shè)計(jì)圖6.1186.1結(jié)構(gòu)程序設(shè)計(jì)其他常用的控制結(jié)構(gòu)圖6.2其他常用的控制結(jié)構(gòu)186.1結(jié)構(gòu)程序設(shè)計(jì)其他常用的控制結(jié)構(gòu)圖6.2其196.3.1程序流程圖
程序流程圖是最早出現(xiàn)且使用較為廣泛的算法表達(dá)工具之一,能夠有效地描述問題求解過程中的程序邏輯結(jié)構(gòu)。程序流程圖中經(jīng)常使用的基本符號(hào)如圖6.3所示。圖6.3程序流程圖中使用的符號(hào)196.3.1程序流程圖程序流程圖是最早20N-S圖又稱為盒圖,它是為了保證結(jié)構(gòu)化程序設(shè)計(jì)而由Nassi和Shneiderman共同提出的一種圖形工具。在N-S圖中,所有的程序結(jié)構(gòu)均使用矩形框表示,它可以清晰地表達(dá)結(jié)構(gòu)中的嵌套及模塊的層次關(guān)系。N-S圖中,基本控制結(jié)構(gòu)的表示符號(hào)如圖6.4所示。6.3.2N-S圖20N-S圖又稱為盒圖,它是為了保證結(jié)構(gòu)化程序設(shè)計(jì)而由Nas216.3.2N-S圖圖6.4盒圖的基本符號(hào)216.3.2N-S圖圖6.4盒圖的基本符號(hào)22圖6.5PAD中基本符號(hào)順序結(jié)構(gòu);(b)分支結(jié)構(gòu);(c)多分支CASE結(jié)構(gòu);(d)當(dāng)型循環(huán);(e);直到型循環(huán);(f)語句標(biāo)號(hào);(g)定義6.3.3PAD圖22圖6.5PAD中基本符號(hào)6.3.3PAD圖236.3.3PAD圖圖6.6使用PAD圖提供的定義功能來逐步求精的例子236.3.3PAD圖圖6.6使用PAD圖提供的定246.4面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法6.4面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法Jackson方法和Warnier方法是最著名的兩個(gè)面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法246.4面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法6.4面向數(shù)據(jù)結(jié)25Jackson方法是由英國的M.A.Jackson在1975年首先提出的,他同時(shí)還提出了與這種方法配套使用的、用于描述系統(tǒng)數(shù)據(jù)結(jié)構(gòu)和程序結(jié)構(gòu)的圖形工具,被稱為Jackson圖。Jackson方法從目標(biāo)系統(tǒng)的輸入、輸出數(shù)據(jù)結(jié)構(gòu)入手,導(dǎo)出程序框架結(jié)構(gòu),再補(bǔ)充其他細(xì)節(jié),就可得到完整的程序結(jié)構(gòu)圖。這一方法對(duì)輸入、輸出數(shù)據(jù)結(jié)構(gòu)明確的中、小型系統(tǒng)特別有效,如商業(yè)應(yīng)用中的文件、表格處理。該方法也可與其他方法結(jié)合,用于模塊的詳細(xì)設(shè)計(jì)。6.4面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法6.4.1Jackson圖25Jackson方法是由英國的M.A.Jackson在1926圖6.8三種基本結(jié)構(gòu)在Jackson圖中的表示符號(hào)(a)順序結(jié)構(gòu);(b)選擇結(jié)構(gòu);(c);循環(huán)結(jié)構(gòu)6.4.1Jackson圖(a)(c)(b)26圖6.8三種基本結(jié)構(gòu)在Jackson圖中的表示符號(hào)6276.4面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法6.4.2改進(jìn)的Jackson圖圖6.9改進(jìn)的Jackson圖276.4面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法6.4.2改進(jìn)的286.5程序復(fù)雜程度的定量度量
定量度量程序復(fù)雜程度的方法很有價(jià)值:把程序的復(fù)雜程度乘以適當(dāng)常數(shù)即可估算出軟件中錯(cuò)誤的數(shù)量以及軟件開發(fā)需要用的工作量,定量度量的結(jié)果可以用來比較兩個(gè)不同的設(shè)計(jì)或兩個(gè)不同算法的優(yōu)劣;程序的定量的復(fù)雜程度可以作為模塊規(guī)模的精確限度。286.5程序復(fù)雜程度的定量度量定量度量296.5程序復(fù)雜程度的定量度量6.5.1McCabe方法McCabe方法根據(jù)程序控制流的復(fù)雜程度定量度量程序的復(fù)雜程度,這樣度量出的結(jié)果稱為程序的環(huán)形復(fù)雜度。為了突出表示程序的控制流,人們通常使用流圖(也稱為程序圖)。所謂流圖實(shí)質(zhì)上是“退化了的”程序流程圖,它僅僅描繪程序的控制流程,完全不表現(xiàn)對(duì)數(shù)據(jù)的具體操作以及分支或循環(huán)的具體條件。296.5程序復(fù)雜程度的定量度量6.5.1McCa306.5程序復(fù)雜程度的定量度量圖6.16把程序流程圖影射成流圖306.5程序復(fù)雜程度的定量度量圖6.16把程序流程31
環(huán)形復(fù)雜度定量度量程序的邏輯復(fù)雜度。有了描繪程序控制流的流圖之后,可以用下述3種方法中的任何一種來計(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計(jì)算環(huán)形復(fù)雜度的方法31環(huán)形復(fù)雜度定量度量程序的邏輯復(fù)雜度。有了描繪程序32第7章實(shí)現(xiàn)
1、編碼2、測(cè)試技術(shù)P139—P1693、調(diào)試的途徑有哪些?P1684、軟件可靠性和可用性的基本概念P16932第7章實(shí)現(xiàn)1、編碼33
編碼:把軟件設(shè)計(jì)結(jié)果翻譯成用某種程序語言書寫的程序。測(cè)試:軟件測(cè)試的目的是在軟件投入生產(chǎn)性運(yùn)行前,盡可能多的發(fā)現(xiàn)軟件中的錯(cuò)誤。
實(shí)現(xiàn)編碼和測(cè)試33編碼:把軟件設(shè)計(jì)結(jié)果翻譯成用某種程序語言書寫的程序。實(shí)347.2軟件測(cè)試基礎(chǔ)7.2軟件測(cè)試基礎(chǔ)
軟件測(cè)試:為發(fā)現(xiàn)程序中的錯(cuò)誤而執(zhí)行程序的過程。軟件測(cè)試的準(zhǔn)則(盡早和不斷的測(cè)試、徹底測(cè)試的不可能、軟件測(cè)試是有風(fēng)險(xiǎn)的行為、并非所有的軟件錯(cuò)誤都能恢復(fù)、反向思維邏輯、由小到大的測(cè)試范圍、避免檢查自己的代碼、追溯至用戶需求)測(cè)試方法(黑盒測(cè)試和白盒測(cè)試)測(cè)試步驟(模塊測(cè)試、子系統(tǒng)測(cè)試、系統(tǒng)測(cè)試、驗(yàn)收測(cè)試、平行運(yùn)行)347.2軟件測(cè)試基礎(chǔ)7.2軟件測(cè)試基礎(chǔ)軟件測(cè)試:為35
測(cè)試內(nèi)容模塊模塊接口測(cè)試局部數(shù)據(jù)結(jié)構(gòu)測(cè)試重要路徑測(cè)試錯(cuò)誤處理測(cè)試邊界條件測(cè)試I/O參數(shù)值的個(gè)數(shù)、類型、次序、格式是否正確,I/O文件屬性、操作是否正確等。數(shù)據(jù)說明是否正確、一致,變量及其初值定義是否正確等。檢查“錯(cuò)誤處理程序”本身的錯(cuò)誤。邊界條件常包括循環(huán)邊界,最大最小值、控制流中等于、大于、小于的比較值等。重要路徑通常是指完成模塊功能的主要路徑,一般是控制結(jié)構(gòu)。也稱模塊測(cè)試(moduletesting)7.3.1單元測(cè)試重點(diǎn)7.3單元測(cè)試35測(cè)試內(nèi)容模塊模塊接口測(cè)試局部數(shù)據(jù)結(jié)構(gòu)測(cè)試重要路徑測(cè)試錯(cuò)36白盒法又稱為邏輯覆蓋法,其測(cè)試用例選擇,是按照不同覆蓋標(biāo)準(zhǔn)確定的。語句覆蓋判定覆蓋條件覆蓋判定條件覆蓋條件組合覆蓋弱強(qiáng)7.6白盒測(cè)試技術(shù)7.6白盒測(cè)試技術(shù)36白盒法又稱為邏輯覆蓋法,其測(cè)試用例選擇,是按照不同覆蓋標(biāo)37①語句覆蓋:選擇足夠的測(cè)試用例,使得程序中每個(gè)語句至少都能被執(zhí)行一次。②
判定覆蓋:執(zhí)行足夠的測(cè)試用例,使得程序中每個(gè)判定至少都獲得一次“真”值和“假”值。③條件覆蓋:執(zhí)行足夠的測(cè)試用例,使得判定中的每個(gè)條件獲得各種可能的結(jié)果。④
判定/條件覆蓋:執(zhí)行足夠的測(cè)試用例,使得判定中每個(gè)條件取到各種可能的值,并使每個(gè)判定取到各種可能的結(jié)果。⑤
條件組合覆蓋:執(zhí)行足夠的例子,使得每個(gè)判定中條件的各種可能組合都至少出現(xiàn)一次。白盒法常用的覆蓋標(biāo)準(zhǔn)37①語句覆蓋:選擇足夠的測(cè)試用例,使得程序中每個(gè)語句至38等價(jià)分類法邊值分析法錯(cuò)誤推測(cè)法黑盒法
不考慮程序的內(nèi)部結(jié)構(gòu)與特性,只根據(jù)程序功能或程序的外部特性設(shè)計(jì)測(cè)試用例。7.7黑盒測(cè)試技術(shù)7.7黑盒測(cè)試技術(shù)38等邊錯(cuò)黑盒法7.7黑盒測(cè)試技術(shù)7.7黑盒測(cè)試391、等價(jià)分類法基本思想:根據(jù)程序的I/O特性,將程序的定義域劃分為有限個(gè)等價(jià)區(qū)段—“等價(jià)類”,從等價(jià)類中選擇出的用例,具有“代表性”。等價(jià)類分為:有效等價(jià)類
—對(duì)于程序的規(guī)格說明是合理的、有意義的輸入數(shù)據(jù)構(gòu)成的集合。無效等價(jià)類
—對(duì)于程序的規(guī)格說明,是不合理的,是沒有意義的輸入數(shù)據(jù)構(gòu)成的集合。391、等價(jià)分類法基本思想:根據(jù)程序的I/O特性,將程序的定402、邊值分析法基本思想:選擇等價(jià)類的邊緣值作為測(cè)試用例,讓每個(gè)等價(jià)類的邊界都得到測(cè)試,選擇測(cè)試用例既考慮輸入亦考慮輸出。分析步驟:
A、先劃分等價(jià)類。
B、選擇測(cè)試用例,測(cè)試等價(jià)類邊界。邊界選擇原則:
A、按照輸入值范圍的邊界。
B、按照輸入/輸出值個(gè)數(shù)的邊界。
C、輸出值域的邊界。
D、輸入/輸出有序集的邊界。
402、邊值分析法基本思想:選擇等價(jià)類的邊緣值作為測(cè)試用例413、錯(cuò)誤推測(cè)法
錯(cuò)誤推測(cè)法的概念:憑經(jīng)驗(yàn)或直覺推測(cè)可能的錯(cuò)誤,列出程序中可能有的錯(cuò)誤和容易發(fā)生錯(cuò)誤的特殊情況,選擇測(cè)試用例。
錯(cuò)誤推測(cè)方法的基本思想:列舉出程序中所有可能有的錯(cuò)誤和容易發(fā)生錯(cuò)誤的特殊情況,根據(jù)它們選擇測(cè)試用例。例如:在單元測(cè)試時(shí)曾列出的許多在模塊中常見的錯(cuò)誤、以前產(chǎn)品測(cè)試中曾經(jīng)發(fā)現(xiàn)的錯(cuò)誤等,這些就是經(jīng)驗(yàn)的總結(jié)。還有,輸入數(shù)據(jù)和輸出數(shù)據(jù)為0的情況、輸入表格為空格或輸入表格只有一行等。這些都是容易發(fā)生錯(cuò)誤的情況,可選擇這些情況下的例子作為測(cè)試用例。413、錯(cuò)誤推測(cè)法錯(cuò)誤推測(cè)法的概念:憑經(jīng)驗(yàn)或直覺推測(cè)可能的42
調(diào)試(也稱為糾錯(cuò))作為成功測(cè)試的后果出現(xiàn),也就是說,調(diào)試是在測(cè)試發(fā)現(xiàn)錯(cuò)誤之后排除錯(cuò)誤的過程。
調(diào)試過程如下圖所示:7.8調(diào)試7.8調(diào)試42調(diào)試(也稱為糾錯(cuò))作為成功測(cè)試的后果出現(xiàn),也就是說,調(diào)43
無論采用什么方法,調(diào)試的目標(biāo)都是尋找軟件錯(cuò)誤的原因并改正錯(cuò)誤。通常需要把系統(tǒng)地分析、直覺和運(yùn)氣組合起來,才能實(shí)現(xiàn)上述目標(biāo)。一般說來,有下列3種調(diào)試途徑可以采用:蠻干法回溯法原因排除法7.8調(diào)試途徑43無論采用什么方法,調(diào)試的目標(biāo)都是尋找軟件錯(cuò)誤的原因并44
軟件可靠性的定義:對(duì)于軟件可靠性有許多不同的定義,其中多數(shù)人承認(rèn)的一個(gè)定義是:軟件可靠性是程序在給定的時(shí)間間隔內(nèi),按照規(guī)格說明書的規(guī)定成功地運(yùn)行的概率
軟件可用性的一個(gè)定義:軟件可用性是程序在給定的時(shí)間點(diǎn),按照規(guī)格說明書的規(guī)定,成功地運(yùn)行的概率。7.9調(diào)試7.9軟件的可靠性44軟件可靠性的定義:對(duì)于軟件可靠性有許多不同的定義,其中45第8章維護(hù)
1、軟件維護(hù)的定義P1792、了解軟件維護(hù)的特點(diǎn)3、軟件維護(hù)過程中維護(hù)組織包括哪些人員?P1828.4決定軟件的可維護(hù)性的因素有哪些?P185—P1868.5軟件再工程過程45第8章維護(hù)1、軟件維護(hù)的定義P179468.1軟件維護(hù)的定義8.1軟件維護(hù)的定義
軟件維護(hù)是指軟件系統(tǒng)交付使用以后,為了改正錯(cuò)誤或滿足新的需求而修改軟件的過程。按照不同的維護(hù)目的,維護(hù)工作可分成4類。完善性維護(hù)(PerfectiveMaintenance):擴(kuò)充原有系統(tǒng)的功能,提高原有系統(tǒng)的性能,滿足用戶的實(shí)際需要。糾錯(cuò)性維護(hù)(CorrectiveMaintenance):對(duì)在測(cè)試階段未能發(fā)現(xiàn)的,在軟件投入使用后才逐漸暴露出來的錯(cuò)誤的測(cè)試、診斷、定位、糾錯(cuò)以及驗(yàn)證、修改的回歸測(cè)試過程。適應(yīng)性維護(hù)(AdaptiveMaintenance):要使運(yùn)行的軟件能適應(yīng)運(yùn)行環(huán)境的變動(dòng)而修改軟件的過程。預(yù)防性維護(hù)(PreventiveMaintenance):為了進(jìn)一步改善軟件的可靠性和易維護(hù)性,或者為將來的維護(hù)奠定更好的基礎(chǔ)而對(duì)軟件進(jìn)行修改。(8.5節(jié))468.1軟件維護(hù)的定義8.1軟件維護(hù)的定義軟件478.3軟件維護(hù)過程圖8.1維護(hù)組織478.3軟件維護(hù)過程圖8.1維護(hù)組織488.4軟件的可維護(hù)性軟件的可維護(hù)性定性地定義為:維護(hù)人員理解、改正、改動(dòng)或改進(jìn)這個(gè)軟件的難易程度。重用:同一事物不做修改或稍加改動(dòng)就在不同環(huán)境中多次重復(fù)使用。提高可維護(hù)性是支配軟件工程方法學(xué)所有步驟的關(guān)鍵目標(biāo)。488.4軟件的可維護(hù)性軟件的可維護(hù)性定性地定義為:維護(hù)49第9章面向?qū)ο笙嚓P(guān)內(nèi)容
1、面向?qū)ο蠓椒▽W(xué)概述P193—P2002、面向?qū)ο蠼#êw第9章和第10章)3、面向?qū)ο蠓治龅幕具^程4、面向?qū)ο蟮脑O(shè)計(jì)準(zhǔn)則49第9章面向?qū)ο笙嚓P(guān)內(nèi)容1、面向?qū)ο蠓椒▽W(xué)概述509.1.1要點(diǎn)9.1概述
面向?qū)ο蠓椒▽W(xué)的出發(fā)點(diǎn)和基本原則,是盡可能模擬人類習(xí)慣的思維方式,使開發(fā)軟件的方法與過程盡可能接近人類認(rèn)識(shí)世界解決問題的方法與過程,也就是使描述問題的問題空間(也稱為問題域)與實(shí)現(xiàn)解法的解空間(也稱為求解域)在結(jié)構(gòu)上盡可能一致。認(rèn)為客觀世界是由各種對(duì)象組成的,任何事物都是對(duì)象,復(fù)雜的對(duì)象可以由比較簡(jiǎn)單的對(duì)象以某種方式組合而成。把所有對(duì)象都劃分成各種對(duì)象類(簡(jiǎn)稱為類,class),每個(gè)對(duì)象類都定義了一組數(shù)據(jù)和一組方法。按照子類(或稱為派生類)與父類(或稱為基類)的關(guān)系,把若干個(gè)對(duì)象類組成一個(gè)層次結(jié)構(gòu)的系統(tǒng)(也稱為類等級(jí))。對(duì)象彼此之間僅能通過傳遞消息互相聯(lián)系。509.1.1要點(diǎn)9.1概述面向?qū)ο蠓椒▽W(xué)的出發(fā)51
面向?qū)ο蟮姆椒▽W(xué)可以用下列方程來概括:OO=objects+classes+inheritance+communicationwithmessages也就是說,面向?qū)ο缶褪羌仁褂脤?duì)象又使用類和繼承等機(jī)制,而且對(duì)象之間僅能通過傳遞消息實(shí)現(xiàn)彼此通信。如果僅使用對(duì)象和消息,則這種方法可以稱為基于對(duì)象的(object-based)方法,而不能稱為面向?qū)ο蟮姆椒?;如果進(jìn)一步要求把所有對(duì)象都劃分為類,則這種方法可稱為基于類的(class-based)方法,但仍然不是面向?qū)ο蟮姆椒ā?/p>
只有同時(shí)使用對(duì)象、類、繼承和消息的方法,才是真正面向?qū)ο蟮姆椒ā?1面向?qū)ο蟮姆椒▽W(xué)可以用下列方程來概括:52類(Class)類又稱對(duì)象類(ObjectClass),是一組具有相同屬性和相同操作的對(duì)象的集合。在一個(gè)類中,每個(gè)對(duì)象都是類的實(shí)例(instance)
,它們都可以使用類中提供的函數(shù)。類具有屬性,用數(shù)據(jù)結(jié)構(gòu)來描述類的屬性,類具有操作,它是對(duì)象的行為的抽象,操作實(shí)現(xiàn)的過程稱為方法(method)
,方法有方法名,方法體和參數(shù)。
由于對(duì)象是類的實(shí)例,在進(jìn)行分析和設(shè)計(jì)時(shí),通常把注意力集中在類上,而不是具體的對(duì)象上。9.1.4其它概念52類(Class)由于對(duì)象是類的實(shí)例,在進(jìn)行分53
實(shí)例:實(shí)際上類是建立對(duì)象時(shí)使用的“樣板”,按照這個(gè)樣板所建立的一個(gè)個(gè)具體的對(duì)象,就是類的實(shí)際例子,通常稱為實(shí)例。當(dāng)使用“對(duì)象”這個(gè)術(shù)語時(shí),既可以指一個(gè)具體的對(duì)象,也可以泛指一般的對(duì)象,但是,當(dāng)使用“實(shí)例”這個(gè)術(shù)語時(shí),必然是指一個(gè)具體的對(duì)象。53實(shí)例:實(shí)際上類是建立對(duì)象時(shí)使用的“樣板”54幾何對(duì)象顏色位置移動(dòng)(delta:矢量)選擇(P:指針型):布爾型旋轉(zhuǎn)(角度)圖9.5對(duì)象類的描述人姓名:字符串年齡:整型改換工作改換地址文件文件名文件大小最近更新日期打印(人)里斯28繪圖員人民路8號(hào)(人)張山24程序員無圖9.6對(duì)象的描述對(duì)象和類的描述
對(duì)象和類一般采用“對(duì)象圖”和“類圖”來描述。類名屬性運(yùn)算
對(duì)象圖
類圖54幾何對(duì)象圖9.5對(duì)象類的描述人文件(人)(人)圖9.655消息(Message)
消息就是向?qū)ο蟀l(fā)出的服務(wù)請(qǐng)求(互相聯(lián)系、協(xié)同工作等)。對(duì)象之間的聯(lián)系可表示為對(duì)象間的消息傳遞,即對(duì)象間的通訊機(jī)制。一個(gè)消息應(yīng)該包含以下信息:消息名、接收消息對(duì)象的標(biāo)識(shí)、服務(wù)標(biāo)識(shí)、消息和方法、輸入信息、回答信息。注意:在并發(fā)系統(tǒng)中,多個(gè)控制線程(ThreadofControl)并發(fā)執(zhí)行,情況就復(fù)雜得多,消息可以是發(fā)出服務(wù)請(qǐng)求、提交數(shù)據(jù)、發(fā)布事件信息、或是傳遞同步控制信息。在對(duì)象的操作中當(dāng)一個(gè)消息發(fā)送給某個(gè)對(duì)象時(shí),消息包含接收對(duì)象去執(zhí)行某種操作的消息。55消息(Message)注意:在并發(fā)系統(tǒng)中,多個(gè)控制線56消息(Message)屬性:姓名年齡單位職稱工資狀態(tài):李立
25
計(jì)算機(jī)系講師
900屬性:調(diào)工資評(píng)職稱受聘方法:調(diào)工資(計(jì)算公式)評(píng)職稱(步驟、條件)屬性:調(diào)工資評(píng)職稱受聘李立,調(diào)工資(??????)數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)值人事處向?qū)ο蟀l(fā)消息執(zhí)行的操作方法體類:教師對(duì)象:李立抽象實(shí)例抽象實(shí)例抽象方法名(參數(shù))圖9.7對(duì)象、類和消息傳遞56消息(Message)屬性:姓名狀態(tài):李立屬性:調(diào)工資方57
方法:就是對(duì)象所能執(zhí)行的操作,也就是類中所定義的服務(wù)。方法描述了對(duì)象執(zhí)行操作的算法,響應(yīng)消息的方法。在C++語言中把方法稱為成員函數(shù)。
屬性:就是類中所定義的數(shù)據(jù),它是對(duì)客觀世界實(shí)體所具有的性質(zhì)的抽象。類的每個(gè)實(shí)例都有自己特有的屬性值。在C++語言中把屬性稱為數(shù)據(jù)成員。57方法:就是對(duì)象所能執(zhí)行的操作,也就是類中所定義的服務(wù)。58
繼承(Inheritance)
繼承是使用現(xiàn)存的定義作為基礎(chǔ),建立新定義的技術(shù)。是父類和子類之間共享數(shù)據(jù)結(jié)構(gòu)和方法的機(jī)制,這是類之間的一種關(guān)系。在定義和實(shí)現(xiàn)一個(gè)類的時(shí)候,可以在一個(gè)已經(jīng)存在的類的基礎(chǔ)上來進(jìn)行,把這個(gè)已經(jīng)存在的類所定義的內(nèi)容做為自己的內(nèi)容,并加入若干新內(nèi)容。繼承性分:?jiǎn)沃乩^承:一個(gè)子類只有一個(gè)父類。即子類只繼承一個(gè)父類的數(shù)據(jù)結(jié)構(gòu)和方法。多重繼承:一個(gè)子類可有多個(gè)父類。繼承多個(gè)父類的數(shù)據(jù)結(jié)構(gòu)和方法。基類子類A子類B圖9.9繼承性描述現(xiàn)存類定義父類(基類)新類定義子類(派生類)繼承圖9.8繼承性58繼承(Inheritance)基類子類A子類B圖959圖9.8實(shí)現(xiàn)繼承機(jī)制的原理59圖9.8實(shí)現(xiàn)繼承機(jī)制的原理60
多態(tài)性:
(Polymorphism)是指相同的操作或函數(shù),過程作用于不同的對(duì)象上并獲得不同的結(jié)果。多態(tài)即一個(gè)名字可具有多種語義。
即相同的操作的消息發(fā)送給不同的對(duì)象時(shí),每個(gè)對(duì)象將根據(jù)自己所屬類中所定義的操作去執(zhí)行,故產(chǎn)生不同的結(jié)果。例如:“繪圖”操作,作用在“橢圓”和“矩形”上,畫出不同的圖形。
有兩種重載:函數(shù)重載是指在同一作用域內(nèi)的若干個(gè)參數(shù)特征不同的函數(shù)可以使用相同的函數(shù)名字;運(yùn)算符重載是指同一個(gè)運(yùn)算符可以施加于不同類型的操作數(shù)上面。當(dāng)然,當(dāng)參數(shù)特征不同或被操作數(shù)的類型不同時(shí),實(shí)現(xiàn)函數(shù)的算法或運(yùn)算符的語義是不相同的。重載進(jìn)一步提高了面向?qū)ο笙到y(tǒng)的靈活性和可讀性。60多態(tài)性:(Polymorphism)是指相同的操作或61
面向?qū)ο蠼<夹g(shù)所建立的3種模型,分別從3個(gè)不同側(cè)面描述了所要開發(fā)的系統(tǒng)。這3種模型相互補(bǔ)充、相互配合,使得我們對(duì)系統(tǒng)的認(rèn)識(shí)更加全面:功能模型指明了系統(tǒng)應(yīng)該“做什么”;動(dòng)態(tài)模型明確規(guī)定了什么時(shí)候(即在何種狀態(tài)下接受了什么事件的觸發(fā))做;對(duì)象模型則定義了做事情的實(shí)體。在面向?qū)ο蠓椒▽W(xué)中,對(duì)象模型是最基本最重要的,它為其他兩種模型奠定了基礎(chǔ),我們依靠對(duì)象模型完成3種模型的集成。3種模型之間的關(guān)系61面向?qū)ο蠼<夹g(shù)所建立的3種模型,分別從3個(gè)不同側(cè)面描62(1)面向?qū)ο蠓治龅娜齻€(gè)模型面向?qū)ο蠼J敲嫦驅(qū)ο蠓治龅年P(guān)鍵。面向?qū)ο蟮哪P桶ǎ簩?duì)象模型、動(dòng)態(tài)模型和功能模型。對(duì)象模型描述了系統(tǒng)的靜態(tài)結(jié)構(gòu);動(dòng)態(tài)模型描述了系統(tǒng)的互交次序;功能模型描述了系統(tǒng)的數(shù)據(jù)變換。不同的問題,三個(gè)子模型的側(cè)重程度不同,但是,對(duì)象模型是最基礎(chǔ)的、最核心的、最重要的。無論解決什么問題,首先要在問題域中提取和定義出對(duì)象模型。當(dāng)問題涉及用戶界與過程控制時(shí),動(dòng)態(tài)模型是重點(diǎn)。如果問題涉及大量數(shù)據(jù)變換,則功能模型非常重要。對(duì)象模型中的操作(服務(wù))可以出現(xiàn)在動(dòng)態(tài)模型和功能模型內(nèi)。面向?qū)ο蠓治龅幕具^程9.33個(gè)子模型與5個(gè)層次62(1)面向?qū)ο蠓治龅娜齻€(gè)模型面向?qū)ο蠓治龅幕?3(2)面向?qū)ο蠓治龅奈鍌€(gè)層次面向?qū)ο蠓治鲇晌鍌€(gè)主要活動(dòng)組成:主題層、類與對(duì)象層、結(jié)構(gòu)層、屬性層和服務(wù)層,見圖9.2。圖對(duì)象模型的五個(gè)層次3個(gè)子模型和5個(gè)層次63(2)面向?qū)ο蠓治龅奈鍌€(gè)層次圖對(duì)象模型的五64模塊化抽象信息隱藏弱耦合強(qiáng)內(nèi)聚可重用
面向?qū)ο笤O(shè)計(jì)的準(zhǔn)則面向?qū)ο笤O(shè)計(jì)的準(zhǔn)則64模塊化面向?qū)ο笤O(shè)計(jì)的準(zhǔn)則面向?qū)ο笤O(shè)計(jì)的準(zhǔn)則65
重用也叫再用或復(fù)用,是指同一事物不作修改或稍加改動(dòng)就多次重復(fù)使用。廣義地說,軟件重用可分為以下3個(gè)層次:(1)知識(shí)重用(例如,軟件工程知識(shí)的重用)。(2)方法和標(biāo)準(zhǔn)的重用(例如,面向?qū)ο蠓椒ɑ驀抑贫ǖ能浖_發(fā)規(guī)范的重用)。(3)軟件成分的重用。前兩個(gè)重用層次屬于知識(shí)工程研究的范疇,本節(jié)僅討論軟件成分重用問題。軟件重用軟件重用65重用也叫再用或復(fù)用,是指同一事物不作修改或稍加改66第10章軟件項(xiàng)目管理
1、了解如何估算軟件規(guī)模,如何進(jìn)行工作量的估算?2、制定進(jìn)度計(jì)劃的工具有哪些?P302—P3093、了解人員如何組織?4、軟件質(zhì)量的保證措施有哪些?P316—P3175、軟件配置管理P319—P3216、能力成熟度模型分為哪幾級(jí)?P322—P32466第10章軟件項(xiàng)目管理1、了解如何估算軟件規(guī)模,如67
不論從事哪種技術(shù)性項(xiàng)目,實(shí)際情況都是,在實(shí)現(xiàn)一個(gè)大目標(biāo)之前往往必須完成數(shù)以百計(jì)的小任務(wù)(也稱為作業(yè))。這些任務(wù)中有一些是處于“關(guān)鍵路徑”(見13.3.5節(jié))之外的,其完成時(shí)間如果沒有嚴(yán)重拖后,就不會(huì)影響整個(gè)項(xiàng)目的完成時(shí)間;其他任務(wù)則處于關(guān)鍵路徑之中,如果這些“關(guān)鍵任務(wù)”的進(jìn)度拖后,則整個(gè)項(xiàng)目的完成日期就會(huì)拖后,管理人員應(yīng)該高度關(guān)注關(guān)鍵任務(wù)的進(jìn)展情況。13.3進(jìn)度計(jì)劃13.3進(jìn)度計(jì)劃67不論從事哪種技術(shù)性項(xiàng)目,實(shí)際情況都是,在實(shí)現(xiàn)一個(gè)68軟件開發(fā)進(jìn)度計(jì)劃安排是一件困難的任務(wù),既要考慮各個(gè)子任務(wù)之間的相互聯(lián)系,盡可能并行地安排任務(wù),又要預(yù)見潛在的問題,提供意外事件的處理意見。
描述計(jì)劃進(jìn)度的主要工具有:一般的表格工具、甘特圖、PERT技術(shù)與CPM方法。1、一般的表格工具例如:進(jìn)度表(圖13.3)
▲▲▲軟件測(cè)試
▲▲▲
編碼
▲▲詳細(xì)設(shè)計(jì)
▲
▲▲總體設(shè)計(jì)▲▲▲需求分析123456789101112任務(wù)月份圖13.3進(jìn)度表010203040506070一月二月三月四月五月六月需求分析
總體設(shè)計(jì)詳細(xì)設(shè)計(jì)編碼、測(cè)試13.3.2
Gantt圖13.3.2Gantt圖68軟件開發(fā)進(jìn)度計(jì)劃安排是一件困難的任務(wù),既要考慮各個(gè)子69上一小節(jié)介紹的Gantt圖具有直觀簡(jiǎn)明和容易掌握、容易繪制的優(yōu)點(diǎn),但是Gantt圖也有3個(gè)主要缺點(diǎn):(1)不能顯式地描繪各項(xiàng)作業(yè)彼此間的依賴關(guān)系;(2)進(jìn)度計(jì)劃的關(guān)鍵部分不明確,難于判定哪些部分應(yīng)當(dāng)是主攻和主控的對(duì)象;(3)計(jì)劃中有潛力的部分及潛力的大小不明確,往往造成潛力的浪費(fèi)。工程網(wǎng)絡(luò)是制定進(jìn)度計(jì)劃時(shí)另一種常用的圖形工具,它同樣能描繪任務(wù)分解情況以及每項(xiàng)作業(yè)的開始時(shí)間和結(jié)束時(shí)間,此外,它還顯式地描繪各個(gè)作業(yè)彼此間的依賴關(guān)系。因此,工程網(wǎng)絡(luò)是系統(tǒng)分析和系統(tǒng)設(shè)計(jì)的強(qiáng)有力的工具。13.3.3工程網(wǎng)絡(luò)13.3.3工程網(wǎng)絡(luò)69上一小節(jié)介紹的Gantt圖具有直觀簡(jiǎn)明和容易掌握、容易繪70圖13.6舊木板房刷漆工程的完整的工程網(wǎng)絡(luò)13.3.4估算工程進(jìn)度70圖13.6舊木板房刷漆工程的完整的工程網(wǎng)絡(luò)13.3.7113.5質(zhì)量保證軟件質(zhì)量保證措施:基于非執(zhí)行的測(cè)試(也稱為復(fù)審或評(píng)審),基于執(zhí)行的測(cè)試(即以前講過的軟件測(cè)試)和程序正確性證明。基于非執(zhí)行的測(cè)試(也稱為復(fù)審或評(píng)審),主要用來保證在編碼之前各階段產(chǎn)生的文檔的質(zhì)量;基于執(zhí)行的測(cè)試(即以前講過的軟件測(cè)試)需要在程序編寫出來之后進(jìn)行,它是保證軟件質(zhì)量的最后一道防線;程序正確性證明使用數(shù)學(xué)方法嚴(yán)格驗(yàn)證程序是否與對(duì)它的說明完全一致。7113.5質(zhì)量保證軟件質(zhì)量保證措施:基于非執(zhí)行的測(cè)試(也721.軟件配置項(xiàng):軟件過程的輸出信息可以分為3類:①計(jì)算機(jī)程序(源代碼和可執(zhí)行程序);②描述計(jì)算機(jī)程序的文檔(供技術(shù)人員或用戶使用);③數(shù)據(jù)(程序內(nèi)包含的或在程序外的)。上述這些項(xiàng)組成了在軟件過程中產(chǎn)生的全部信息,我們把它們統(tǒng)稱為軟件配置,而這些項(xiàng)就是軟件配置項(xiàng)。13.6.1軟件配置2.基線:是一個(gè)軟件配置管理概念,基線就是通過了正式復(fù)審的軟件配置項(xiàng)。在軟件配置項(xiàng)變成基線之前,可以迅速而非正式地修改它。一旦建立了基線之后,雖然仍然可以實(shí)現(xiàn)變化,但是,必須應(yīng)用特定的、正式的過程(稱為規(guī)程)來評(píng)估、實(shí)現(xiàn)和驗(yàn)證每個(gè)變化。721.軟件配置項(xiàng):軟件過程的輸出信息可以分為3類:①73CMM將軟件過程的成熟度分為5個(gè)級(jí)別(MaturityLevels)
,如圖所示,5個(gè)等級(jí)分別是:初始級(jí)可重復(fù)級(jí)已定義級(jí)已管理級(jí)優(yōu)化級(jí)13.7.2
軟件過程的成熟度等級(jí)1、初始級(jí)(Initial)2、可重復(fù)(Repeatable)3、已定義級(jí)(Defined)4、已管理級(jí)(Managed)5、優(yōu)化級(jí)(Optimizing)
SW-CMM為每個(gè)軟件組織建立和改善軟件過程提供了一個(gè)階梯式的過程成熟度框架,這一框架由5個(gè)成熟度等級(jí)構(gòu)成。除初始級(jí)以外,其余的成熟度等級(jí)都包含了若干個(gè)關(guān)鍵過程區(qū)域,每個(gè)關(guān)鍵過程區(qū)域又包含了若干個(gè)關(guān)鍵實(shí)踐,這些關(guān)鍵實(shí)踐按照5個(gè)共同特點(diǎn)加以組織。
圖13.7成熟度等級(jí)單擊鼠標(biāo)左鍵查看相應(yīng)內(nèi)容73CMM將軟件過程的成熟度分為5個(gè)級(jí)別(Maturity74祝大家學(xué)習(xí)愉快!74祝大家學(xué)習(xí)愉快!751軟件工程學(xué)概述2可行性研究3需求分析形式化說明技術(shù)總體設(shè)計(jì)6詳細(xì)設(shè)計(jì)7實(shí)現(xiàn)8維護(hù)9面向?qū)ο笙嚓P(guān)內(nèi)容10軟件項(xiàng)目管理軟件工程導(dǎo)論復(fù)習(xí)11軟件工程學(xué)概述7實(shí)現(xiàn)軟件工程導(dǎo)論復(fù)習(xí)76第1章軟件工程學(xué)概述
1、什么是軟件危機(jī)?P12、軟件危機(jī)產(chǎn)生的原因有哪些?P33、什么是軟件工程?P54、軟件工程方法學(xué)包含哪些要素?P95、在軟件過程中有哪些模型?他們各自的特點(diǎn)是哪些?P15—P222第1章軟件工程學(xué)概述1、什么是軟件危機(jī)?P177第2章可行性研究
1、可行性研究的目的是什么?P252、應(yīng)從哪些方面研究可行性?P253、如何畫系統(tǒng)流程圖?P27—P304、如何畫數(shù)據(jù)流圖?P30—P375、了解數(shù)據(jù)字典及成本效益分析。3第2章可行性研究1、可行性研究的目的是什么?P2578數(shù)據(jù)流圖(DataFlowDiagram,DFD)是描述系統(tǒng)中數(shù)據(jù)流程的圖形工具,它標(biāo)識(shí)了一個(gè)系統(tǒng)的邏輯輸入和邏輯輸出,以及把邏輯輸入轉(zhuǎn)換為邏輯輸出所需的加工處理。2.4數(shù)據(jù)流圖2.4數(shù)據(jù)流圖(DFD)數(shù)據(jù)存儲(chǔ)數(shù)據(jù)源點(diǎn)或終點(diǎn)處理加工名數(shù)據(jù)流數(shù)據(jù)流名文件名實(shí)體名箭頭圓或橢圓單或雙杠矩形框還有一些輔助的圖例:一、數(shù)據(jù)流圖的圖符四種基本圖形符號(hào):TAB*CTAB*CTAB+CTAB+CTABC+TABC+*
與
+或互斥+4數(shù)據(jù)流圖(DataFlowDiagram,DFD)是描792.4數(shù)據(jù)流圖舉例:儲(chǔ)戶儲(chǔ)戶1記錄存款信息打印存款信息存款單存款信息存款存單3計(jì)算利息4打印利息清單存款信息利息值利息清單D1存款信息存款信息252.4數(shù)據(jù)流圖舉例:儲(chǔ)戶儲(chǔ)戶1記錄存款打印存款存款單存款80細(xì)化后的計(jì)算機(jī)儲(chǔ)蓄系統(tǒng)軟件結(jié)構(gòu)6細(xì)化后的計(jì)算機(jī)儲(chǔ)蓄系統(tǒng)軟件結(jié)構(gòu)81第3章需求分析
1、需求分析的基本任務(wù)是什么?P46-P482、分析建模
2.1什么是模型?模型:就是為了理解事物而對(duì)事物做出的一種抽象,是對(duì)事物的一種無歧義的書面描述。通常,模型由一組圖形符號(hào)和組織這些符號(hào)的規(guī)則組成。
2.2數(shù)據(jù)模型(E-R)、功能模型(2.4節(jié)數(shù)據(jù)流圖)、行為模型(狀態(tài)轉(zhuǎn)換圖是行為模型的基礎(chǔ))3、要從哪些方面驗(yàn)證軟件需求?P607第3章需求分析1、需求分析的基本任務(wù)是什么?P4682第4章形式化說明技術(shù)
軟件工程的使用方法非形式化:用自然語言描述需求規(guī)格說明半形式化:用數(shù)據(jù)流圖或?qū)嶓w—聯(lián)系圖建立模型形式化:描述系統(tǒng)性質(zhì)的基于數(shù)學(xué)的技術(shù)1、有窮狀態(tài)機(jī)P67—P722、Petri網(wǎng)技術(shù)P72—P758第4章形式化說明技術(shù)軟件工程的使用方法非形式化:用83第5章總體設(shè)計(jì)
1、在設(shè)計(jì)過程中,總體設(shè)計(jì)一般有哪兩個(gè)主要階段組成?P812、什么模塊化?模塊獨(dú)立性包含哪些內(nèi)容?度量準(zhǔn)則是什么?P85—P893、啟發(fā)規(guī)則有哪些?P90—P924、描繪軟件結(jié)構(gòu)的圖形工具P92-P945、面向數(shù)據(jù)流的設(shè)計(jì)方法P95—P1029第5章總體設(shè)計(jì)1、在設(shè)計(jì)過程中,總體設(shè)計(jì)一般有哪兩845.2設(shè)計(jì)原理5.2.1模塊化
模塊是程序?qū)ο笥忻值募?。例如,過程、函數(shù)、子程序、宏等,是構(gòu)成軟件系統(tǒng)結(jié)構(gòu)的基本元素。
模塊化就是將系統(tǒng)劃分為若干個(gè)模塊,每個(gè)模塊完成一個(gè)子功能。模塊化的目的是將系統(tǒng)“分而治之”,模塊化能夠降低問題的復(fù)雜性,使軟件結(jié)構(gòu)清晰,易閱讀、易理解,易于測(cè)試和調(diào)試,因而也有助于提高軟件的可靠性。105.2設(shè)計(jì)原理5.2.1模塊化模塊是程序?qū)ο笥忻?5模塊化降低軟件復(fù)雜度的簡(jiǎn)單證明5.2.5模塊獨(dú)立5.2.5模塊獨(dú)立“模塊”,又稱“構(gòu)件”,一般指用一個(gè)名字可調(diào)用的一段程序。它一般具有如下三個(gè)基本屬性:⑴功能即指該模塊實(shí)現(xiàn)什么功能,做什么事情。必須注意:模塊功能,應(yīng)是該模塊本身的功能加上它所調(diào)用的所有子模塊的功能。⑵邏輯即描述模塊內(nèi)部怎么做。⑶狀態(tài)即該模塊使用時(shí)的環(huán)境和條件。所謂模塊的獨(dú)立性,是指軟件系統(tǒng)中每個(gè)模塊只涉及軟件要求的具體的子功能,而和軟件系統(tǒng)中其他模塊的接口是簡(jiǎn)單的。即功能專一,模塊之間無過多的相互作用的模塊。這種類型的模塊可以并行開發(fā),模塊獨(dú)立性越強(qiáng),開發(fā)越容易。獨(dú)立性強(qiáng)的模塊,還能減少錯(cuò)誤的影響,使模塊容易組合、修改及測(cè)試。11模塊化降低軟件復(fù)雜度的簡(jiǎn)單證明5.2.5模塊獨(dú)立5.2865.2.5模塊獨(dú)立性模塊獨(dú)立性的度量標(biāo)準(zhǔn)是兩個(gè)定性準(zhǔn)則:
耦合性用于描述模塊之間聯(lián)系的緊密程度。
內(nèi)聚性用于描述模塊內(nèi)部聯(lián)系的緊密程度。模塊獨(dú)立性比較強(qiáng)的模塊應(yīng)該是具有高內(nèi)聚性和的低耦合度。
125.2.5模塊獨(dú)立性模塊獨(dú)立性的度量標(biāo)準(zhǔn)是兩個(gè)定性準(zhǔn)則87圖5.8變換型數(shù)據(jù)流圖的基本模型
5.5.1概念–
變換流13圖5.8變換型數(shù)據(jù)流圖的基本模型5.5.1概念88圖事務(wù)型數(shù)據(jù)流圖的基本模型5.5.1概念–
事務(wù)流14圖事務(wù)型數(shù)據(jù)流圖的基本模型5.5.1概念–事89變換分析設(shè)計(jì):把具有變換流特點(diǎn)的數(shù)據(jù)流圖按預(yù)先確定的模式映射成軟件結(jié)構(gòu)。不具有顯著的事務(wù)特點(diǎn)。雖然在任何情況下都可以使用變換分析方法設(shè)計(jì)軟件結(jié)構(gòu),但是在數(shù)據(jù)流具有明顯的事務(wù)特點(diǎn)時(shí),也就是有一個(gè)明顯的“發(fā)射中心”(事務(wù)中心)時(shí),還是以采用事務(wù)分析方法為宜。兩者的主要差別僅在于由數(shù)據(jù)流圖到軟件結(jié)構(gòu)的映射方法不同。15變換分析設(shè)計(jì):把具有變換流特點(diǎn)的數(shù)據(jù)流圖按預(yù)先確定的模式90第6章詳細(xì)設(shè)計(jì)
1、結(jié)構(gòu)程序設(shè)計(jì)中有哪幾種基本控制結(jié)構(gòu)?P1082、了解人機(jī)界面的設(shè)計(jì)。3、掌握過程設(shè)計(jì)的工具(程序流程圖、盒圖、PAD圖,判定樹)P114—P1194、面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法(Jackson圖)5、程序復(fù)雜度的定量度量(McCabe)16第6章詳細(xì)設(shè)計(jì)1、結(jié)構(gòu)程序設(shè)計(jì)中有哪幾種基本控制916.1結(jié)構(gòu)程序設(shè)計(jì)6.1結(jié)構(gòu)程序設(shè)計(jì)圖6.13種基本的控制結(jié)構(gòu)176.1結(jié)構(gòu)程序設(shè)計(jì)6.1結(jié)構(gòu)程序設(shè)計(jì)圖6.1926.1結(jié)構(gòu)程序設(shè)計(jì)其他常用的控制結(jié)構(gòu)圖6.2其他常用的控制結(jié)構(gòu)186.1結(jié)構(gòu)程序設(shè)計(jì)其他常用的控制結(jié)構(gòu)圖6.2其936.3.1程序流程圖
程序流程圖是最早出現(xiàn)且使用較為廣泛的算法表達(dá)工具之一,能夠有效地描述問題求解過程中的程序邏輯結(jié)構(gòu)。程序流程圖中經(jīng)常使用的基本符號(hào)如圖6.3所示。圖6.3程序流程圖中使用的符號(hào)196.3.1程序流程圖程序流程圖是最早94N-S圖又稱為盒圖,它是為了保證結(jié)構(gòu)化程序設(shè)計(jì)而由Nassi和Shneiderman共同提出的一種圖形工具。在N-S圖中,所有的程序結(jié)構(gòu)均使用矩形框表示,它可以清晰地表達(dá)結(jié)構(gòu)中的嵌套及模塊的層次關(guān)系。N-S圖中,基本控制結(jié)構(gòu)的表示符號(hào)如圖6.4所示。6.3.2N-S圖20N-S圖又稱為盒圖,它是為了保證結(jié)構(gòu)化程序設(shè)計(jì)而由Nas956.3.2N-S圖圖6.4盒圖的基本符號(hào)216.3.2N-S圖圖6.4盒圖的基本符號(hào)96圖6.5PAD中基本符號(hào)順序結(jié)構(gòu);(b)分支結(jié)構(gòu);(c)多分支CASE結(jié)構(gòu);(d)當(dāng)型循環(huán);(e);直到型循環(huán);(f)語句標(biāo)號(hào);(g)定義6.3.3PAD圖22圖6.5PAD中基本符號(hào)6.3.3PAD圖976.3.3PAD圖圖6.6使用PAD圖提供的定義功能來逐步求精的例子236.3.3PAD圖圖6.6使用PAD圖提供的定986.4面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法6.4面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法Jackson方法和Warnier方法是最著名的兩個(gè)面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法246.4面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法6.4面向數(shù)據(jù)結(jié)99Jackson方法是由英國的M.A.Jackson在1975年首先提出的,他同時(shí)還提出了與這種方法配套使用的、用于描述系統(tǒng)數(shù)據(jù)結(jié)構(gòu)和程序結(jié)構(gòu)的圖形工具,被稱為Jackson圖。Jackson方法從目標(biāo)系統(tǒng)的輸入、輸出數(shù)據(jù)結(jié)構(gòu)入手,導(dǎo)出程序框架結(jié)構(gòu),再補(bǔ)充其他細(xì)節(jié),就可得到完整的程序結(jié)構(gòu)圖。這一方法對(duì)輸入、輸出數(shù)據(jù)結(jié)構(gòu)明確的中、小型系統(tǒng)特別有效,如商業(yè)應(yīng)用中的文件、表格處理。該方法也可與其他方法結(jié)合,用于模塊的詳細(xì)設(shè)計(jì)。6.4面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法6.4.1Jackson圖25Jackson方法是由英國的M.A.Jackson在19100圖6.8三種基本結(jié)構(gòu)在Jackson圖中的表示符號(hào)(a)順序結(jié)構(gòu);(b)選擇結(jié)構(gòu);(c);循環(huán)結(jié)構(gòu)6.4.1Jackson圖(a)(c)(b)26圖6.8三種基本結(jié)構(gòu)在Jackson圖中的表示符號(hào)61016.4面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法6.4.2改進(jìn)的Jackson圖圖6.9改進(jìn)的Jackson圖276.4面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法6.4.2改進(jìn)的1026.5程序復(fù)雜程度的定量度量
定量度量程序復(fù)雜程度的方法很有價(jià)值:把程序的復(fù)雜程度乘以適當(dāng)常數(shù)即可估算出軟件中錯(cuò)誤的數(shù)量以及軟件開發(fā)需要用的工作量,定量度量的結(jié)果可以用來比較兩個(gè)不同的設(shè)計(jì)或兩個(gè)不同算法的優(yōu)劣;程序的定量的復(fù)雜程度可以作為模塊規(guī)模的精確限度。286.5程序復(fù)雜程度的定量度量定量度量1036.5程序復(fù)雜程度的定量度量6.5.1McCabe方法McCabe方法根據(jù)程序控制流的復(fù)雜程度定量度量程序的復(fù)雜程度,這樣度量出的結(jié)果稱為程序的環(huán)形復(fù)雜度。為了突出表示程序的控制流,人們通常使用流圖(也稱為程序圖)。所謂流圖實(shí)質(zhì)上是“退化了的”程序流程圖,它僅僅描繪程序的控制流程,完全不表現(xiàn)對(duì)數(shù)據(jù)的具體操作以及分支或循環(huán)的具體條件。296.5程序復(fù)雜程度的定量度量6.5.1McCa1046.5程序復(fù)雜程度的定量度量圖6.16把程序流程圖影射成流圖306.5程序復(fù)雜程度的定量度量圖6.16把程序流程105
環(huán)形復(fù)雜度定量度量程序的邏輯復(fù)雜度。有了描繪程序控制流的流圖之后,可以用下述3種方法中的任何一種來計(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計(jì)算環(huán)形復(fù)雜度的方法31環(huán)形復(fù)雜度定量度量程序的邏輯復(fù)雜度。有了描繪程序106第7章實(shí)現(xiàn)
1、編碼2、測(cè)試技術(shù)P139—P1693、調(diào)試的途徑有哪些?P1684、軟件可靠性和可用性的基本概念P16932第7章實(shí)現(xiàn)1、編碼107
編碼:把軟件設(shè)計(jì)結(jié)果翻譯成用某種程序語言書寫的程序。測(cè)試:軟件測(cè)試的目的是在軟件投入生產(chǎn)性運(yùn)行前,盡可能多的發(fā)現(xiàn)軟件中的錯(cuò)誤。
實(shí)現(xiàn)編碼和測(cè)試33編碼:把軟件設(shè)計(jì)結(jié)果翻譯成用某種程序語言書寫的程序。實(shí)1087.2軟件測(cè)試基礎(chǔ)7.2軟件測(cè)試基礎(chǔ)
軟件測(cè)試:為發(fā)現(xiàn)程序中的錯(cuò)誤而執(zhí)行程序的過程。軟件測(cè)試的準(zhǔn)則(盡早和不斷的測(cè)試、徹底測(cè)試的不可能、軟件測(cè)試是有風(fēng)險(xiǎn)的行為、并非所有的軟件錯(cuò)誤都能恢復(fù)、反向思維邏輯、由小到大的測(cè)試范圍、避免檢查自己的代碼、追溯至用戶需求)測(cè)試方法(黑盒測(cè)試和白盒測(cè)試)測(cè)試步驟(模塊測(cè)試、子系統(tǒng)測(cè)試、系統(tǒng)測(cè)試、驗(yàn)收測(cè)試、平行運(yùn)行)347.2軟件測(cè)試基礎(chǔ)7.2軟件測(cè)試基礎(chǔ)軟件測(cè)試:為109
測(cè)試內(nèi)容模塊模塊接口測(cè)試局部數(shù)據(jù)結(jié)構(gòu)測(cè)試重要路徑測(cè)試錯(cuò)誤處理測(cè)試邊界條件測(cè)試I/O參數(shù)值的個(gè)數(shù)、類型、次序、格式是否正確,I/O文件屬性、操作是否正確等。數(shù)據(jù)說明是否正確、一致,變量及其初值定義是否正確等。檢查“錯(cuò)誤處理程序”本身的錯(cuò)誤。邊界條件常包括循環(huán)邊界,最大最小值、控制流中等于、大于、小于的比較值等。重要路徑通常是指完成模塊功能的主要路徑,一般是控制結(jié)構(gòu)。也稱模塊測(cè)試(moduletesting)7.3.1單元測(cè)試重點(diǎn)7.3單元測(cè)試35測(cè)試內(nèi)容模塊模塊接口測(cè)試局部數(shù)據(jù)結(jié)構(gòu)測(cè)試重要路徑測(cè)試錯(cuò)110白盒法又稱為邏輯覆蓋法,其測(cè)試用例選擇,是按照不同覆蓋標(biāo)準(zhǔn)確定的。語句覆蓋判定覆蓋條件覆蓋判定條件覆蓋條件組合覆蓋弱強(qiáng)7.6白盒測(cè)試技術(shù)7.6白盒測(cè)試技術(shù)36白盒法又稱為邏輯覆蓋法,其測(cè)試用例選擇,是按照不同覆蓋標(biāo)111①語句覆蓋:選擇足夠的測(cè)試用例,使得程序中每個(gè)語句至少都能被執(zhí)行一次。②
判定覆蓋:執(zhí)行足夠的測(cè)試用例,使得程序中每個(gè)判定至少都獲得一次“真”值和“假”值。③條件覆蓋:執(zhí)行足夠的測(cè)試用例,使得判定中的每個(gè)條件獲得各種可能的結(jié)果。④
判定/條件覆蓋:執(zhí)行足夠的測(cè)試用例,使得判定中每個(gè)條件取到各種可能的值,并使每個(gè)判定取到各種可能的結(jié)果。⑤
條件組合覆蓋:執(zhí)行足夠的例子,使得每個(gè)判定中條件的各種可能組合都至少出現(xiàn)一次。白盒法常用的覆蓋標(biāo)準(zhǔn)37①語句覆蓋:選擇足夠的測(cè)試用例,使得程序中每個(gè)語句至112等價(jià)分類法邊值分析法錯(cuò)誤推測(cè)法黑盒法
不考慮程序的內(nèi)部結(jié)構(gòu)與特性,只根據(jù)程序功能或程序的外部特性設(shè)計(jì)測(cè)試用例。7.7黑盒測(cè)試技術(shù)7.7黑盒測(cè)試技術(shù)38等邊錯(cuò)黑盒法7.7黑盒測(cè)試技術(shù)7.7黑盒測(cè)試1131、等價(jià)分類法基本思想:根據(jù)程序的I/O特性,將程序的定義域劃分為有限個(gè)等價(jià)區(qū)段—“等價(jià)類”,從等價(jià)類中選擇出的用例,具有“代表性”。等價(jià)類分為:有效等價(jià)類
—對(duì)于程序的規(guī)格說明是合理的、有意義的輸入數(shù)據(jù)構(gòu)成的集合。無效等價(jià)類
—對(duì)于程序的規(guī)格說明,是不合理的,是沒有意義的輸入數(shù)據(jù)構(gòu)成的集合。391、等價(jià)分類法基本思想:根據(jù)程序的I/O特性,將程序的定1142、邊值分析法基本思想:選擇等價(jià)類的邊緣值作為測(cè)試用例,讓每個(gè)等價(jià)類的邊界都得到測(cè)試,選擇測(cè)試用例既考慮輸入亦考慮輸出。分析步驟:
A、先劃分等價(jià)類。
B、選擇測(cè)試用例,測(cè)試等價(jià)類邊界。邊界選擇原則:
A、按照輸入值范圍的邊界。
B、按照輸入/輸出值個(gè)數(shù)的邊界。
C、輸出值域的邊界。
D、輸入/輸出有序集的邊界。
402、邊值分析法基本思想:選擇等價(jià)類的邊緣值作為測(cè)試用例1153、錯(cuò)誤推測(cè)法
錯(cuò)誤推測(cè)法的概念:憑經(jīng)驗(yàn)或直覺推測(cè)可能的錯(cuò)誤,列出程序中可能有的錯(cuò)誤和容易發(fā)生錯(cuò)誤的特殊情況,選擇測(cè)試用例。
錯(cuò)誤推測(cè)方法的基本思想:列舉出程序中所有可能有的錯(cuò)誤和容易發(fā)生錯(cuò)誤的特殊情況,根據(jù)它們選擇測(cè)試用例。例如:在單元測(cè)試時(shí)曾列出的許多在模塊中常見的錯(cuò)誤、以前產(chǎn)品測(cè)試中曾經(jīng)發(fā)現(xiàn)的錯(cuò)誤等,這些就是經(jīng)驗(yàn)的總結(jié)。還有,輸入數(shù)據(jù)和輸出數(shù)據(jù)為0的情況、輸入表格為空格或輸入表格只有一行等。這些都是容易發(fā)生錯(cuò)誤的情況,可選擇這些情況下的例子作為測(cè)試用例。413、錯(cuò)誤推測(cè)法錯(cuò)誤推測(cè)法的概念:憑經(jīng)驗(yàn)或直覺推測(cè)可能的116
調(diào)試(也稱為糾錯(cuò))作為成功測(cè)試的后果出現(xiàn),也就是說,調(diào)試是在測(cè)試發(fā)現(xiàn)錯(cuò)誤之后排除錯(cuò)誤的過程。
調(diào)試過程如下圖所示:7.8調(diào)試7.8調(diào)試42調(diào)試(也稱為糾錯(cuò))作為成功測(cè)試的后果出現(xiàn),也就是說,調(diào)117
無論采用什么方法,調(diào)試的目標(biāo)都是尋找軟件錯(cuò)誤的原因并改正錯(cuò)誤。通常需要把系統(tǒng)地分析、直覺和運(yùn)氣組合起來,才能實(shí)現(xiàn)上述目標(biāo)。一般說來,有下列3種調(diào)試途徑可以采用:蠻干法回溯法原因排除法7.8調(diào)試途徑43無論采用什么方法,調(diào)試的目標(biāo)都是尋找軟件錯(cuò)誤的原因并118
軟件可靠性的定義:對(duì)于軟件可靠性有許多不同的定義,其中多數(shù)人承認(rèn)的一個(gè)定義是:軟件可靠性是程序在給定的時(shí)間間隔內(nèi),按照規(guī)格說明書的規(guī)定成功地運(yùn)行的概率
軟件可用性的一個(gè)定義:軟件可用性是程序在給定的時(shí)間點(diǎn),按照規(guī)格說明書的規(guī)定,成功地運(yùn)行的概率。7.9調(diào)試7.9軟件的可靠性44軟件可靠性的定義:對(duì)于軟件可靠性有許多不同的定義,其中119第8章維護(hù)
1、軟件維護(hù)的定義P1792、了解軟件維護(hù)的特點(diǎn)3、軟件維護(hù)過程中維護(hù)組織包括哪些人員?P1828.4決定軟件的可維護(hù)性的因素有哪些?P185—P1868.5軟件再工程過程45第8章維護(hù)1、軟件維護(hù)的定義P1791208.1軟件維護(hù)的定義8.1軟件維護(hù)的定義
軟件維護(hù)是指軟件系統(tǒng)交付使用以后,為了改正錯(cuò)誤或滿足新的需求而修改軟件的過程。按照不同的維護(hù)目的,維護(hù)工作可分成4類。完善性維護(hù)(PerfectiveMaintenance):擴(kuò)充原有系統(tǒng)的功能,提高原有系統(tǒng)的性能,滿足用戶的實(shí)際需要。糾錯(cuò)性維護(hù)(CorrectiveMaintenance):對(duì)在測(cè)試階段未能發(fā)現(xiàn)的,在軟件投入使用后才逐漸暴露出來的錯(cuò)誤的測(cè)試、診斷、定位、糾錯(cuò)以及驗(yàn)證、修改的回歸測(cè)試過程。適應(yīng)性維護(hù)(AdaptiveMaintenance):要使運(yùn)行的軟件能適應(yīng)運(yùn)行環(huán)境的變動(dòng)而修改軟件的過程。預(yù)防性維護(hù)(PreventiveMaintenance):為了進(jìn)一步改善軟件的可靠性和易維護(hù)性,或者為將來的維護(hù)奠定更好的基礎(chǔ)而對(duì)軟件進(jìn)行修改。(8.5節(jié))468.1軟件維護(hù)的定義8.1軟件維護(hù)的定義軟件1218.3軟件維護(hù)過程圖8.1維護(hù)組織478.3軟件維護(hù)過程圖8.1維護(hù)組織1228.4軟件的可維護(hù)性軟件的可維護(hù)性定性地定義為:維護(hù)人員理解、改正、改動(dòng)或改進(jìn)這個(gè)軟件的難易程度。重用:同一事物不做修改或稍加改動(dòng)就在不同環(huán)境中多次重復(fù)使用。提高可維護(hù)性是支配軟件工程方法學(xué)所有步驟的關(guān)鍵目標(biāo)。488.4軟件的可維護(hù)性軟件的可維護(hù)性定性地定義為:維護(hù)123第9章面向?qū)ο笙嚓P(guān)內(nèi)容
1、面向?qū)ο蠓椒▽W(xué)概述P193—P2002、面向?qū)ο蠼#êw第9章和第10章)3、面向?qū)ο蠓治龅幕具^程4、面向?qū)ο蟮脑O(shè)計(jì)準(zhǔn)則49第9章面向?qū)ο笙嚓P(guān)內(nèi)容1、面向?qū)ο蠓椒▽W(xué)概述1249.1.1要點(diǎn)9.1概述
面向?qū)ο蠓椒▽W(xué)的出發(fā)點(diǎn)和基本原則,是盡可能模擬人類習(xí)慣的思維方式,使開發(fā)軟件的方法與過程盡可能接近人類認(rèn)識(shí)世界解決問題的方法與過程,也就是使描述問題的問題空間(也稱為問題域)與實(shí)現(xiàn)解法的解空間(也稱為求解域)在結(jié)構(gòu)上盡可能一致。認(rèn)為客觀世界是由各種對(duì)象組成的,任何事物都是對(duì)象,復(fù)雜的對(duì)象可以由比較簡(jiǎn)單的對(duì)象以某種方式組合而成。把所有對(duì)象都劃分成各種對(duì)象類(簡(jiǎn)稱為類,class),每個(gè)對(duì)象類都定義了一組數(shù)據(jù)和一組方法。按照子類(或稱為派生類)與父類(或稱為基類)的關(guān)系,把若干個(gè)對(duì)象類組成一個(gè)層次結(jié)構(gòu)的系統(tǒng)(也稱為類等級(jí))。對(duì)象彼此之間僅能通過傳遞消息互相聯(lián)系。509.1.1要點(diǎn)9.1概述面向?qū)ο蠓椒▽W(xué)的出發(fā)125
面向?qū)ο蟮姆椒▽W(xué)可以用下列方程來概括:OO=objects+classes+inheritance+communicationwithmessages也就是說,面向?qū)ο缶褪羌仁褂脤?duì)象又使用類和繼承等機(jī)制,而且對(duì)象之間僅能通過傳遞消息實(shí)現(xiàn)彼此通信。如果僅使用對(duì)象和消息,則這種方法可以稱為基于對(duì)象的(object-based)方法,而不能稱為面向?qū)ο蟮姆椒?;如果進(jìn)一步要求把所有對(duì)象都劃分為類,則這種方法可稱為基于類的(class-based)方法,但仍然不是面向?qū)ο蟮姆椒ā?/p>
只有同時(shí)使用對(duì)象、類、繼承和消息的方法,才是真正面向?qū)ο蟮姆椒ā?1面向?qū)ο蟮姆椒▽W(xué)可以用下列方程來概括:126類(Class)類又稱對(duì)象類(ObjectClass),是一組具有相同屬性和相同操作的對(duì)象的集合。在一個(gè)類中,每個(gè)對(duì)象都是類的實(shí)例(instance)
,它們都可以使用類中提供的函數(shù)。類具有屬性,用數(shù)據(jù)結(jié)構(gòu)來描述類的屬性,類具有操作,它是對(duì)象的行為的抽象,操作實(shí)現(xiàn)的過程稱為方法(method)
,方法有方法名,方法體和參數(shù)。
由于對(duì)象是類的實(shí)例,在進(jìn)行分析和設(shè)計(jì)時(shí),通常把注意力集中在類上,而不是具體的對(duì)象上。9.1.4其它概念52類(Class)由于對(duì)象是類的實(shí)例,在進(jìn)行分127
實(shí)例:實(shí)際上類是建立對(duì)象時(shí)使用的“樣板”,按照這個(gè)樣板所建立的一個(gè)個(gè)具體的對(duì)象,就是類的實(shí)際例子,通常稱為實(shí)例。當(dāng)使用“對(duì)象”這個(gè)術(shù)語時(shí),既可以指一個(gè)具體的對(duì)象,也可以泛指一般的對(duì)象,但是,當(dāng)使用“實(shí)例”這個(gè)術(shù)語時(shí),必然是指一個(gè)具體的對(duì)象。53實(shí)例:實(shí)際上類是建立對(duì)象時(shí)使用的“樣板”128幾何對(duì)象顏色位置移動(dòng)(delta:矢量)選擇(P:指針型):布爾型旋轉(zhuǎn)(角度)圖9.5對(duì)象類的描述人姓名:字符串年齡:整型改換工作改換地址文件文件名文件大小最近更新日期打印(人)里斯28繪圖員人民路8號(hào)(人)張山24程序員無圖9.6對(duì)象的描述對(duì)象和類的描述
對(duì)象和類一般采用“對(duì)象圖”和“類圖”來描述。類名屬性運(yùn)算
對(duì)象圖
類圖54幾何對(duì)象圖9.5對(duì)象類的描述人文件(人)(人)圖9.6129消息(Message)
消息就是向?qū)ο蟀l(fā)出的服務(wù)請(qǐng)求(互相聯(lián)系、協(xié)同工作等)。對(duì)象之間的聯(lián)系可表示為對(duì)象間的消息傳遞,即對(duì)象間的通訊機(jī)制。一個(gè)消息應(yīng)該包含以下信息:消息名、接收消息對(duì)象的標(biāo)識(shí)、服務(wù)標(biāo)識(shí)、消息和方法、輸入信息、回答信息。注意:在并發(fā)系統(tǒng)中,多個(gè)控制線程(ThreadofControl)并發(fā)執(zhí)行,情況就復(fù)雜得多,消息可以是發(fā)出服務(wù)請(qǐng)求、提交數(shù)據(jù)、發(fā)布事件信息、或是傳遞同步控制信息。在對(duì)象的操作中當(dāng)一個(gè)消息發(fā)送給某個(gè)對(duì)象時(shí),消息包含接收對(duì)象去執(zhí)行某種操作的消息。55消息(Message)注意:在并發(fā)系統(tǒng)中,多個(gè)控制線130消息(Message)屬性:姓名年齡單位職稱工資狀態(tài):李立
25
計(jì)算機(jī)系講師
900屬性:調(diào)工資評(píng)職稱受聘方法:調(diào)工資(計(jì)算公式)評(píng)職稱(步驟、條件)屬性:調(diào)工資評(píng)職稱受聘李立,調(diào)工資(??????)數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)值人事處向?qū)ο蟀l(fā)消息執(zhí)行的操作方法體類:教師對(duì)象:李立抽象實(shí)例抽象實(shí)例抽象方法名(參數(shù))圖9.7對(duì)象、類和消息傳遞56消息(Message)屬性:姓名狀態(tài):李立屬性:調(diào)工資方131
方法:就是對(duì)象所能執(zhí)行的操作,也就是類中所定義的服務(wù)。方法描述了對(duì)象執(zhí)行操作的算法,響應(yīng)消息的方法。在C++語言中把方法稱為成員函數(shù)。
屬性:就是類中所定義的數(shù)據(jù),它是對(duì)客觀世界實(shí)體所具有的性質(zhì)的抽象。類的每個(gè)實(shí)例都有自己特有的屬性值。在C++語言中把屬性稱為數(shù)據(jù)成員。57方法:就是對(duì)象所能執(zhí)行的操作,也就是類中所定義的服務(wù)。132
繼承(Inheritance)
繼承是使用現(xiàn)存的定義作為基礎(chǔ),建立新定義的技術(shù)。是父類和子類之間共享數(shù)據(jù)結(jié)構(gòu)和方法的機(jī)制,這是類之間的一種關(guān)系。在定義和實(shí)現(xiàn)一個(gè)類的時(shí)候,可以在一個(gè)已經(jīng)存在的類的基礎(chǔ)上來進(jìn)行,把這個(gè)已經(jīng)存在的類所定義的內(nèi)容做為自己的內(nèi)容,并加入若干新內(nèi)容。繼承性分:?jiǎn)沃乩^承:一個(gè)子類只有一個(gè)父類。即子類只繼承一個(gè)父類的數(shù)據(jù)結(jié)構(gòu)和方法。多重繼承:一個(gè)子類可有多個(gè)父類。繼承多個(gè)父類的數(shù)據(jù)結(jié)構(gòu)和方法?;愖宇怉子類B圖9.9繼承性描述現(xiàn)存類定義父類(基類)新類定義子類(派生類)繼承圖9.8繼承性58繼承(Inheritance)基類子類A子類B圖9133圖9.8實(shí)現(xiàn)繼承機(jī)制的原理59圖9.8實(shí)現(xiàn)繼承機(jī)制的原理134
多態(tài)性:
(Polymorphism)是指相同的操作或函數(shù),過程作用于不同的對(duì)象上并獲得不同的結(jié)果。多態(tài)即一個(gè)名字可具有多種語義。
即相同的操作的消息發(fā)送給不同的對(duì)象時(shí),每個(gè)對(duì)象將根據(jù)自己所屬類中所定義的操作去執(zhí)行,故產(chǎn)生不同的結(jié)果。例如:“繪圖”操作,作用在“橢圓”和“矩形”上,畫出不同的圖形。
有兩種重載:函數(shù)重載是指在同一作用域內(nèi)的若干個(gè)參數(shù)特征不同的函數(shù)可以使用相同的函數(shù)名字;運(yùn)算符重載是指同一個(gè)運(yùn)算符可以施加于不同類型的操作數(shù)上面。當(dāng)然,當(dāng)參數(shù)特征不同或被操作數(shù)的類型不同時(shí),實(shí)現(xiàn)函數(shù)的算法或運(yùn)算符的語義是不相同的。重載進(jìn)一步提高了面向?qū)ο笙到y(tǒng)的靈活性和可讀性。60多態(tài)性:(Polymorphism)是指相同的操作或135
面向?qū)ο蠼<夹g(shù)所建立的3種模型,分別從3個(gè)不同側(cè)面描述了所要開發(fā)的系統(tǒng)。這3種模型相互補(bǔ)充、相互配合,使得我們對(duì)系統(tǒng)的認(rèn)識(shí)更加全面:功能模型指明了系統(tǒng)應(yīng)該“做什么”;動(dòng)態(tài)模型明確規(guī)定了什么時(shí)候(即在何種狀態(tài)下接受了什么事件的觸發(fā))做;對(duì)象模型則定義了做事情的實(shí)體。在面向?qū)ο蠓椒▽W(xué)中,對(duì)象模型是最基本最重要的,它為其他兩種模型奠定了基礎(chǔ),我們依靠對(duì)象模型完成3種模型的集成。3種模型之間的關(guān)系61面向?qū)ο蠼<夹g(shù)所建立的3種模型,分別從3個(gè)不同側(cè)面描136(1)面向?qū)ο蠓治龅娜齻€(gè)模型面向?qū)ο蠼J敲嫦驅(qū)ο蠓治龅年P(guān)鍵。面向?qū)ο蟮哪P桶ǎ簩?duì)象模型、動(dòng)態(tài)模型和功能模型。對(duì)象模型描述了系統(tǒng)的靜態(tài)結(jié)構(gòu);動(dòng)態(tài)模型描述了系統(tǒng)的互交次序;功能模型描述了系統(tǒng)的數(shù)據(jù)變換。不同的問題,三個(gè)子模型的側(cè)重程度不同,但是,對(duì)象模型是最基礎(chǔ)的、最核心的、最重要的。無論解決什么問題,首先要在問題域中提取和定義出對(duì)象模型。當(dāng)問題涉及用戶界與過程控制時(shí),動(dòng)態(tài)模型是
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國塑料成型模數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年中國一體化變頻節(jié)能器數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 軟件共課程設(shè)計(jì)
- 2024至2030年手動(dòng)扎口泵項(xiàng)目投資價(jià)值分析報(bào)告
- 2025至2030年中國合掌機(jī)數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 航空醫(yī)療急救課程設(shè)計(jì)
- 飯卡管理課程設(shè)計(jì)報(bào)告書
- 語音識(shí)別課程設(shè)計(jì) matlab
- 2024年燃?xì)夤娘L(fēng)粉腸爐項(xiàng)目可行性研究報(bào)告
- 2024年標(biāo)準(zhǔn)溫度和溫濕度箱項(xiàng)目可行性研究報(bào)告
- 醫(yī)院感染監(jiān)測(cè)清單
- 社區(qū)老年人項(xiàng)目計(jì)劃書
- 《1.我又長(zhǎng)大了一歲》教學(xué)課件∣泰山版
- 斷裂力學(xué)-1緒論課件
- 深基坑工程驗(yàn)收表
- 醫(yī)學(xué)交流課件:RCT的基本概念及原則(PPT 37頁)
- SLZ 549-2012 用水審計(jì)技術(shù)導(dǎo)則(試行)
- qes三體系審核培訓(xùn)ppt課件
- CASS文字編緝
- JJF 1406-2013 地面激光掃描儀校準(zhǔn)規(guī)范(原版-高清)
- 轉(zhuǎn)爐系統(tǒng)機(jī)械設(shè)備概述
評(píng)論
0/150
提交評(píng)論