版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、張應(yīng)博張應(yīng)博繼續(xù)迭代繼續(xù)迭代-3-QABCDA1A2A2aA2bA2cA2dA2eB1B2C1C2D1D2D3C2aC2bC2cD4B3A3B2aB2bB2cB2dB2e-4-w從順序開發(fā)過程到迭代式開發(fā)從順序開發(fā)過程到迭代式開發(fā)w典型的迭代計劃典型的迭代計劃w進入下一個開發(fā)周期進入下一個開發(fā)周期w分析階段分析階段w設(shè)計階段設(shè)計階段-5-w典型的迭代計劃典型的迭代計劃w進入下一個開發(fā)周期進入下一個開發(fā)周期w分析階段分析階段w設(shè)計階段設(shè)計階段-6-w使用順序過程(如瀑布式模型)可以解決很多開使用順序過程(如瀑布式模型)可以解決很多開發(fā)過程中的工程問題,一個典型的順序過程開發(fā)發(fā)過程中的工程問題,一
2、個典型的順序過程開發(fā)過程是按五個步驟進行的:過程是按五個步驟進行的:n完全理解將要解決的問題及其需求和約束;將它們準(zhǔn)完全理解將要解決的問題及其需求和約束;將它們準(zhǔn)確地描述出來,并確認(rèn)所有感興趣的合作者都同意這確地描述出來,并確認(rèn)所有感興趣的合作者都同意這正是他們想達到的目標(biāo)正是他們想達到的目標(biāo)n設(shè)計一個能夠滿足所有需求和約束的解決方案,仔細設(shè)計一個能夠滿足所有需求和約束的解決方案,仔細驗證這個設(shè)計并確認(rèn)所有感興趣的合作者都認(rèn)可它是驗證這個設(shè)計并確認(rèn)所有感興趣的合作者都認(rèn)可它是一個正確的設(shè)計一個正確的設(shè)計n使用最好的工程技術(shù)實現(xiàn)解決方案使用最好的工程技術(shù)實現(xiàn)解決方案n驗證實現(xiàn)是否滿足了規(guī)定的需求
3、驗證實現(xiàn)是否滿足了規(guī)定的需求n交付產(chǎn)品;問題解決了!交付產(chǎn)品;問題解決了!-7-w如果順序過程真的是理想的方法,為什么在項目如果順序過程真的是理想的方法,為什么在項目中沒能更成功地運用它呢?中沒能更成功地運用它呢?n我們做了錯誤的假設(shè)我們做了錯誤的假設(shè)n軟件開發(fā)的語境與其它工程規(guī)則有所不同軟件開發(fā)的語境與其它工程規(guī)則有所不同n沒有考慮到一些人為的因素沒有考慮到一些人為的因素n人們試圖將這個方法置于某些特定的定義良好的環(huán)境人們試圖將這個方法置于某些特定的定義良好的環(huán)境中工作,但是這個環(huán)境已經(jīng)超出了它的承擔(dān)范圍中工作,但是這個環(huán)境已經(jīng)超出了它的承擔(dān)范圍n我們?nèi)耘f停留在軟件工程的探索階段;我們沒有像
4、造我們?nèi)耘f停留在軟件工程的探索階段;我們沒有像造橋業(yè)那樣具有上百年的經(jīng)驗,使造座大橋就像一個機橋業(yè)那樣具有上百年的經(jīng)驗,使造座大橋就像一個機械過程;這是最主要的原因械過程;這是最主要的原因-8-w假設(shè)假設(shè)1:需求是固定的:需求是固定的n在一開始我們就抓住了問題的全部,我們可以將所有的需求明在一開始我們就抓住了問題的全部,我們可以將所有的需求明確無誤地記錄下來,并在一個非常穩(wěn)定的基礎(chǔ)上開始啟動一個確無誤地記錄下來,并在一個非常穩(wěn)定的基礎(chǔ)上開始啟動一個項目項目w用戶會改變用戶會改變w問題會改變問題會改變w技術(shù)基礎(chǔ)會改變技術(shù)基礎(chǔ)會改變w市場會改變市場會改變w不可能得到足夠詳細和精確的需求不可能得到足
5、夠詳細和精確的需求w假設(shè)假設(shè)2:我們可以在進行實際開發(fā)之前做出正確的設(shè)計:我們可以在進行實際開發(fā)之前做出正確的設(shè)計n可以確信我們的設(shè)計是問題的正確解決方案;可以確信我們的設(shè)計是問題的正確解決方案;“正確正確”意味著意味著所有明顯的質(zhì)量特性(正確性、高效率、可行性等)所有明顯的質(zhì)量特性(正確性、高效率、可行性等)n軟件工程至今沒有達到象其它工程那樣規(guī)范,永遠找不到這個軟件工程至今沒有達到象其它工程那樣規(guī)范,永遠找不到這個標(biāo)準(zhǔn)標(biāo)準(zhǔn)-9-RDCTRDCTRDCTRDCT時時 間間R:需求分析;:需求分析;D:設(shè)計;:設(shè)計;C:編碼,單元測試;:編碼,單元測試;T:集成,測試:集成,測試-10-w迭代
6、技術(shù)很容易理解,但不容易做到,它迭代技術(shù)很容易理解,但不容易做到,它在解決問題的同時也帶來了很多問題:在解決問題的同時也帶來了很多問題:n如何將各個迭代階段的成果聚合成一個產(chǎn)品?如何將各個迭代階段的成果聚合成一個產(chǎn)品?又如何避免在混亂的設(shè)計中開始一個周期的又如何避免在混亂的設(shè)計中開始一個周期的迭代開發(fā)?迭代開發(fā)?n在每個迭代開發(fā)周期中你要選擇做些什么?在每個迭代開發(fā)周期中你要選擇做些什么?你將要考慮那些需求以及有什么樣的風(fēng)險?你將要考慮那些需求以及有什么樣的風(fēng)險?-11-w制定一個迭代計劃可以遵循以下步驟制定一個迭代計劃可以遵循以下步驟n給迭代的成功定義目標(biāo)準(zhǔn)則;在迭代結(jié)束時給迭代的成功定義目
7、標(biāo)準(zhǔn)則;在迭代結(jié)束時的迭代評估評審中使用這些準(zhǔn)則,以判斷迭的迭代評估評審中使用這些準(zhǔn)則,以判斷迭代是成功還是失敗代是成功還是失敗n明確要開發(fā)或要更新的、具體的、可度量的明確要開發(fā)或要更新的、具體的、可度量的制品以及要完成的活動制品以及要完成的活動n從一個典型的迭代工作分解結(jié)構(gòu)開始,并考從一個典型的迭代工作分解結(jié)構(gòu)開始,并考慮當(dāng)前必定要發(fā)生的實際活動慮當(dāng)前必定要發(fā)生的實際活動n估計每個活動的持續(xù)時間和工作量,注意要估計每個活動的持續(xù)時間和工作量,注意要控制在預(yù)算的資源范圍之內(nèi)控制在預(yù)算的資源范圍之內(nèi)-12-w從順序開發(fā)過程到迭代式開發(fā)從順序開發(fā)過程到迭代式開發(fā)w進入下一個開發(fā)周期進入下一個開發(fā)周
8、期w分析階段分析階段w設(shè)計階段設(shè)計階段-13-14-目標(biāo):目標(biāo):確定項目的軟件范圍和邊界條件確定項目的軟件范圍和邊界條件識別系統(tǒng)的關(guān)鍵用例識別系統(tǒng)的關(guān)鍵用例展示或示范至少一個針對主要情景的候選架構(gòu)展示或示范至少一個針對主要情景的候選架構(gòu)估計整個項目需要的費用和時間表,并對下一估計整個項目需要的費用和時間表,并對下一階段給出詳細評估階段給出詳細評估評估風(fēng)險(不確定性的來源)評估風(fēng)險(不確定性的來源)目標(biāo):目標(biāo):以實際所能達到的最快速度定義、確以實際所能達到的最快速度定義、確認(rèn)構(gòu)架并將其基線化認(rèn)構(gòu)架并將其基線化設(shè)置構(gòu)想的基線設(shè)置構(gòu)想的基線為構(gòu)造階段的高可信度計劃設(shè)定基線為構(gòu)造階段的高可信度計劃設(shè)定
9、基線演示說明基線構(gòu)架可以在合理的時間演示說明基線構(gòu)架可以在合理的時間以合理的費用支持這個構(gòu)想以合理的費用支持這個構(gòu)想目標(biāo):目標(biāo):通過優(yōu)化資源和避免不必要的浪費和通過優(yōu)化資源和避免不必要的浪費和返工,降低開發(fā)成本返工,降低開發(fā)成本以實際最快的速度提高產(chǎn)品質(zhì)量以實際最快的速度提高產(chǎn)品質(zhì)量以實際最快的速度產(chǎn)生一個可用版本以實際最快的速度產(chǎn)生一個可用版本目標(biāo):目標(biāo):達到用戶自我可支持的程度達到用戶自我可支持的程度項目相關(guān)人員合作完成實施基線,并項目相關(guān)人員合作完成實施基線,并與構(gòu)想的評價準(zhǔn)則相一致與構(gòu)想的評價準(zhǔn)則相一致以實際可能最快速度和最高效益達到以實際可能最快速度和最高效益達到最終的產(chǎn)品基線最終的
10、產(chǎn)品基線-15-w迭代計劃描述了項目經(jīng)歷一個迭代周期時迭代計劃描述了項目經(jīng)歷一個迭代周期時要執(zhí)行的工作要執(zhí)行的工作n先啟階段的迭代,目的是定義項目構(gòu)想和業(yè)先啟階段的迭代,目的是定義項目構(gòu)想和業(yè)務(wù)用例務(wù)用例n精化階段的早期迭代,目的是建立一個構(gòu)架精化階段的早期迭代,目的是建立一個構(gòu)架原型原型n構(gòu)建階段的晚期迭代,目的是實現(xiàn)這個系統(tǒng)構(gòu)建階段的晚期迭代,目的是實現(xiàn)這個系統(tǒng)-16-業(yè)務(wù)建模:業(yè)務(wù)建模:定義了系統(tǒng)構(gòu)想和系統(tǒng)范圍定義了系統(tǒng)構(gòu)想和系統(tǒng)范圍工件:涉眾需要、業(yè)務(wù)用例、風(fēng)工件:涉眾需要、業(yè)務(wù)用例、風(fēng)險清單險清單需求:需求:概述和闡明系統(tǒng)的功能性概述和闡明系統(tǒng)的功能性工件:用例模型、術(shù)語表工件:用例
11、模型、術(shù)語表項目管理:項目管理:考慮項目可行性和項目計劃大綱考慮項目可行性和項目計劃大綱精化項目計劃精化項目計劃工件:項目計劃工件:項目計劃-17-需求:需求:更詳細理解驅(qū)動源,并檢查結(jié)果更詳細理解驅(qū)動源,并檢查結(jié)果重新考慮用例和風(fēng)險重新考慮用例和風(fēng)險構(gòu)造用戶界面原型構(gòu)造用戶界面原型工件:用例模型、補充規(guī)格說明;迭代計劃工件:用例模型、補充規(guī)格說明;迭代計劃、風(fēng)險清單;用戶界面原型、風(fēng)險清單;用戶界面原型分析設(shè)計:分析設(shè)計:找到明顯的類,做初始子系統(tǒng)分割找到明顯的類,做初始子系統(tǒng)分割精化和同構(gòu)類,確定對架構(gòu)重要的類精化和同構(gòu)類,確定對架構(gòu)重要的類考慮低層次的包分割考慮低層次的包分割調(diào)整以適應(yīng)實
12、現(xiàn)環(huán)境,決定關(guān)鍵情景設(shè)計,調(diào)整以適應(yīng)實現(xiàn)環(huán)境,決定關(guān)鍵情景設(shè)計,定義正式類接口定義正式類接口定義系統(tǒng)的初步架構(gòu),并進行評審定義系統(tǒng)的初步架構(gòu),并進行評審工件:軟件架構(gòu)文檔工件:軟件架構(gòu)文檔實現(xiàn):實現(xiàn):考慮架構(gòu)的物理封裝考慮架構(gòu)的物理封裝計劃集成計劃集成實現(xiàn)類和集成實現(xiàn)類和集成工件:項目計劃工件:項目計劃測試:測試:計劃集成測試和系統(tǒng)測試計劃集成測試和系統(tǒng)測試評估可執(zhí)行的框架評估可執(zhí)行的框架評估迭代本身評估迭代本身工件:測試計劃;風(fēng)險清單、項目計劃、迭工件:測試計劃;風(fēng)險清單、項目計劃、迭代計劃代計劃-18-項目管理:項目管理:計劃迭代計劃迭代評估迭代本身評估迭代本身工件:迭代計劃、風(fēng)險清單;項
13、目計劃工件:迭代計劃、風(fēng)險清單;項目計劃分析設(shè)計:分析設(shè)計:精化用例實現(xiàn)精化用例實現(xiàn)實現(xiàn):實現(xiàn):計劃系統(tǒng)級集成計劃系統(tǒng)級集成開發(fā)代碼和測試單元開發(fā)代碼和測試單元集成子系統(tǒng)集成子系統(tǒng)發(fā)布子系統(tǒng)發(fā)布子系統(tǒng)集成系統(tǒng)集成系統(tǒng)工件:集成構(gòu)造計劃工件:集成構(gòu)造計劃測試:測試:計劃和設(shè)計系統(tǒng)級測試計劃和設(shè)計系統(tǒng)級測試計劃和設(shè)計子系統(tǒng)級和系統(tǒng)級集成測試計劃和設(shè)計子系統(tǒng)級和系統(tǒng)級集成測試測試子系統(tǒng)測試子系統(tǒng)測試集成測試集成測試系統(tǒng)測試系統(tǒng)工件:測試情景和測試規(guī)程工件:測試情景和測試規(guī)程-19-w從順序開發(fā)過程到迭代式開發(fā)從順序開發(fā)過程到迭代式開發(fā)w典型的迭代計劃典型的迭代計劃w分析階段分析階段w設(shè)計階段設(shè)計階段
14、-20-開發(fā)周期開發(fā)周期1開發(fā)周期開發(fā)周期2開發(fā)周期開發(fā)周期3購買商品購買商品-版本版本1購買商品購買商品-版本版本2登錄登錄退還商品退還商品啟動系統(tǒng)啟動系統(tǒng)開發(fā)周期開發(fā)周期4購買商品購買商品-版本版本3管理用戶管理用戶-21-啟動Administrator現(xiàn)金支付CardProcessingCompany支票支付CheckProcessingCompanyCashier購買商品Account信用卡支付-22-23-24-25-26-w從順序開發(fā)過程到迭代式開發(fā)從順序開發(fā)過程到迭代式開發(fā)w典型的迭代計劃典型的迭代計劃w進入下一個開發(fā)周期進入下一個開發(fā)周期w設(shè)計階段設(shè)計階段-27-w分析工作的目
15、標(biāo)是建立分析工作的目標(biāo)是建立分析模型分析模型n該模型關(guān)注系統(tǒng)需要做什么,但把系統(tǒng)如何該模型關(guān)注系統(tǒng)需要做什么,但把系統(tǒng)如何做的細節(jié)留給設(shè)計工作流做的細節(jié)留給設(shè)計工作流w分析階段的兩個主要制品:分析階段的兩個主要制品:n分析類分析類w業(yè)務(wù)領(lǐng)域中建模的主要概念業(yè)務(wù)領(lǐng)域中建模的主要概念n用例實現(xiàn)用例實現(xiàn)w演示分析類的實例如何交互以實現(xiàn)由用例所說明演示分析類的實例如何交互以實現(xiàn)由用例所說明的系統(tǒng)行為的系統(tǒng)行為-28-物理的或者實在的對象物理的或者實在的對象信用卡、支票信用卡、支票規(guī)格說明、設(shè)計或者事務(wù)描述規(guī)格說明、設(shè)計或者事務(wù)描述地點地點事務(wù)事務(wù)現(xiàn)金支付、信用卡現(xiàn)金支付、信用卡支付、支票支付支付、支票
16、支付在線事務(wù)處理項在線事務(wù)處理項人的角色人的角色包含其他事務(wù)的包容器包含其他事務(wù)的包容器被包含在包容器內(nèi)的事物被包含在包容器內(nèi)的事物系統(tǒng)外部的其他計算機系統(tǒng)或機械電子設(shè)備系統(tǒng)外部的其他計算機系統(tǒng)或機械電子設(shè)備信用卡授權(quán)系統(tǒng)、信用卡授權(quán)系統(tǒng)、支票授權(quán)服務(wù)機構(gòu)支票授權(quán)服務(wù)機構(gòu)-29-抽象的名詞性概念抽象的名詞性概念組織組織事件事件過程(一般不用,但有時也用概念表達)過程(一般不用,但有時也用概念表達)規(guī)則和策略規(guī)則和策略目錄目錄財政收支、工作情況、合同等的記錄財政收支、工作情況、合同等的記錄應(yīng)收帳目應(yīng)收帳目金融工具和服務(wù)機構(gòu)金融工具和服務(wù)機構(gòu)手冊、書籍手冊、書籍-30-wCreditCardwCh
17、eckwCashPaymentwCreditPaymentwCheckPaymentwCreditAuthService、CreditApprovalRequst、CreditApprovalReplywCheckAuthService、CheckApprovalRequst、CheckApprovalReplywAccount-31-w當(dāng)一個概念模型的規(guī)模增大時,需要考慮當(dāng)一個概念模型的規(guī)模增大時,需要考慮將模型中的元素劃分成更小的子集將模型中的元素劃分成更小的子集w將元素組織成包的好處是可以將細粒度的將元素組織成包的好處是可以將細粒度的元素用更高的抽象程度來組織元素用更高的抽象程度來組織支
18、持更高支持更高層次的視圖和用簡單的分組來觀察一個模層次的視圖和用簡單的分組來觀察一個模型型n所有權(quán)和引用所有權(quán)和引用n包依賴包依賴-32-w為了將概念模型劃分成包,將符合下面條為了將概念模型劃分成包,將符合下面條件的元素放在一起:件的元素放在一起:n在相同的問題領(lǐng)域中在相同的問題領(lǐng)域中在概念或用途上關(guān)系在概念或用途上關(guān)系緊密緊密n同一個類型層次中同一個類型層次中n參與同一個用例參與同一個用例n關(guān)聯(lián)緊密關(guān)聯(lián)緊密-33-Authorization TransactionsCore ElementsSalesProductsPayments-34-w在包的內(nèi)部,對概念模型進行精化在包的內(nèi)部,對概念模
19、型進行精化n創(chuàng)建泛化創(chuàng)建泛化-特化關(guān)系層次特化關(guān)系層次n增加關(guān)聯(lián)類型增加關(guān)聯(lián)類型n增加聚合關(guān)系增加聚合關(guān)系n-35-w泛化(泛化(generalization)是在定義超類型(普)是在定義超類型(普通的概念)與子類型(特殊的概念)的關(guān)系提取通的概念)與子類型(特殊的概念)的關(guān)系提取共同之處的活動共同之處的活動w在概念模型中確定泛化關(guān)系是有價值的,因為它在概念模型中確定泛化關(guān)系是有價值的,因為它們的存在可以使我們更普通的、更精化的和更抽們的存在可以使我們更普通的、更精化的和更抽象的方式理解概念,這種方法使得表達更加簡練、象的方式理解概念,這種方法使得表達更加簡練、理解更加深入并減少信息的重復(fù)理解
20、更加深入并減少信息的重復(fù)w盡管現(xiàn)在著重于一個概念模型而不是一個軟件的盡管現(xiàn)在著重于一個概念模型而不是一個軟件的實現(xiàn),但在以后的子類型和超類型的實現(xiàn)中使用實現(xiàn),但在以后的子類型和超類型的實現(xiàn)中使用繼承機制能產(chǎn)生更好的軟件繼承機制能產(chǎn)生更好的軟件-36-w一個可能的子類型必須符合以下規(guī)則一個可能的子類型必須符合以下規(guī)則n100%規(guī)則(定義一致性)規(guī)則(定義一致性)nIs-a規(guī)則(集合成員關(guān)系一致性)規(guī)則(集合成員關(guān)系一致性)w何時定義一個子類型何時定義一個子類型n子類型有額外重要的屬性子類型有額外重要的屬性n子類型有額外重要的關(guān)聯(lián)子類型有額外重要的關(guān)聯(lián)n子類型概念以不同于超類型或其他子類型的重要的
21、方式被操作、操縱、子類型概念以不同于超類型或其他子類型的重要的方式被操作、操縱、反應(yīng)或處理反應(yīng)或處理n子類型概念描述一個有生氣的事物,它不同于超類型或其他子類型的行子類型概念描述一個有生氣的事物,它不同于超類型或其他子類型的行為方式表現(xiàn)為方式表現(xiàn)w何時定義一個超類型何時定義一個超類型n可能的子類型描述了相似概念的變體可能的子類型描述了相似概念的變體n子類型遵從子類型遵從100%規(guī)則和規(guī)則和Is-a規(guī)則規(guī)則n所有的子類型有相同的可被分解并可在超類型中表現(xiàn)出的屬性所有的子類型有相同的可被分解并可在超類型中表現(xiàn)出的屬性n所有的子類型有相同的可被分解并可涉及到超類型的關(guān)聯(lián)所有的子類型有相同的可被分解并
22、可涉及到超類型的關(guān)聯(lián)-37-AuthorizationServiceCreditAuthServiceCheckAuthService-38-PaymentAuthorizationTransactionPaymentAuthorizationReplyCheckPaymentApprovalReplyCheckPaymentDenialReplyCreditPaymentApprovalReplyCreditPaymentDenialReplyCheckPaymentApprovalRequestCreditPaymentApprovalRequestPaymentAuthorization
23、Request-39-w如果類型如果類型T的每個實例還必須是它的一個的每個實例還必須是它的一個子類型的成員,那么類型子類型的成員,那么類型T就被稱為一個就被稱為一個抽象類型(抽象類型(abstract type)n一個抽象類型不能被具體化,在概念模型中一個抽象類型不能被具體化,在概念模型中定義抽象類型,從而闡明問題領(lǐng)域規(guī)則定義抽象類型,從而闡明問題領(lǐng)域規(guī)則CashPaymentCreditPaymentCheckPaymentCashPayment CreditPaymentCheckPayment-40-w在一個概念模型中,如果一個類型在一個概念模型中,如果一個類型T的一的一個屬性個屬性A可
24、以同時有多個值,那么不要將可以同時有多個值,那么不要將屬性屬性A放在放在T中。要將中。要將A放在另外一個與放在另外一個與T關(guān)聯(lián)的類型中,如:關(guān)聯(lián)的類型中,如:n一個一個Person(人)可能有很多電話號碼,將(人)可能有很多電話號碼,將電話號碼放入另一個類型中,如電話號碼放入另一個類型中,如PhoneNumber(電話號碼)或(電話號碼)或ContactInformation(聯(lián)系方式)中,并且(聯(lián)系方式)中,并且使這些類型中的多個與使這些類型中的多個與Person關(guān)聯(lián)關(guān)聯(lián)-41-w一個概念模型中,一個多對多的關(guān)聯(lián)是一個考慮關(guān)聯(lián)類型的通用線一個概念模型中,一個多對多的關(guān)聯(lián)是一個考慮關(guān)聯(lián)類型的通
25、用線索,具體的來說一個關(guān)聯(lián)類型可能是有用的線索:索,具體的來說一個關(guān)聯(lián)類型可能是有用的線索:n一個屬性和一個關(guān)聯(lián)相關(guān)一個屬性和一個關(guān)聯(lián)相關(guān)n關(guān)聯(lián)類型的實例的生存周期依賴于關(guān)聯(lián)關(guān)聯(lián)類型的實例的生存周期依賴于關(guān)聯(lián)n在兩個概念間有一個多對多的關(guān)聯(lián)和與關(guān)聯(lián)本身相關(guān)的一些信息在兩個概念間有一個多對多的關(guān)聯(lián)和與關(guān)聯(lián)本身相關(guān)的一些信息n只有關(guān)聯(lián)類型的一個實例存在于參與關(guān)聯(lián)的兩個對象之間只有關(guān)聯(lián)類型的一個實例存在于參與關(guān)聯(lián)的兩個對象之間-42-w在如下情況下需要考慮聚合關(guān)系在如下情況下需要考慮聚合關(guān)系n部分的生存周期被限制在整體的生存周期內(nèi)部分的生存周期被限制在整體的生存周期內(nèi)部分的創(chuàng)建和刪部分的創(chuàng)建和刪除依
26、賴于整體除依賴于整體n有一個明顯的整體有一個明顯的整體-部分的物質(zhì)上或邏輯上的集合部分的物質(zhì)上或邏輯上的集合n整體的一些特性傳遞給部分,如它的位置整體的一些特性傳遞給部分,如它的位置n整體的操作傳遞給部分,如銷毀、移動和記錄整體的操作傳遞給部分,如銷毀、移動和記錄w顯示聚合的好處顯示聚合的好處n闡明了關(guān)于部分獨立于整體的合格存在的領(lǐng)域限制闡明了關(guān)于部分獨立于整體的合格存在的領(lǐng)域限制n有助于運用有助于運用GRASP的創(chuàng)建者模式找出創(chuàng)建者的創(chuàng)建者模式找出創(chuàng)建者n運用到整體的操作(如復(fù)制、刪除)常常必須傳遞到部分運用到整體的操作(如復(fù)制、刪除)常常必須傳遞到部分n確定與一個部分相關(guān)的整體支持封裝;確
27、定與一個部分相關(guān)的整體支持封裝;GRASP中的中的“Dont Talk to Strangers”(不要和陌生人講話)模式被用來在整體(不要和陌生人講話)模式被用來在整體中隱藏部分中隱藏部分-43-44-Core ElementsSalesProductsPaymentsAuthorization Transactions-45-46-47-48-49-PaymentAuthorizationTransactionPaymentAuthorizationReplyPaymentAuthorizationRequestCheckPaymentApprovalReplyCheckPaymentDe
28、nialReplyCheckPayment(from Payments)CheckPaymentApprovalRequestCreditPaymentApprovalReplyCreditPaymentDenialReplyCreditPayment(from Payments)CreditPaymentApprovalRequest-50- : Cashier : SystementerItem(UPC,quantity)endSale()-51- : Cashier : Account : CardProcessingCompany : SystemmakeCreditPayment(c
29、cNum,exprieDate)requestApproval(request)handleCreditReply(reply)addApproval(reply)-52- : CheckProcessingCompany : Cashier : SystemmakeCheckPayment(id)requestApproval(request)handleCheckReply(reply)-53-wmakeCreditPaymentn創(chuàng)建和請求一個信用卡支付進行授權(quán)創(chuàng)建和請求一個信用卡支付進行授權(quán)whandleCreditReplyn響應(yīng)從信用卡授權(quán)服務(wù)機構(gòu)發(fā)回的授權(quán)應(yīng)響應(yīng)從信用卡授權(quán)服務(wù)機
30、構(gòu)發(fā)回的授權(quán)應(yīng)答,如果被認(rèn)可,完成銷售并將支付信息答,如果被認(rèn)可,完成銷售并將支付信息記錄到應(yīng)收帳目中記錄到應(yīng)收帳目中wmakeCheckPaymentn創(chuàng)建和請求一個支票卡支付進行授權(quán)創(chuàng)建和請求一個支票卡支付進行授權(quán)whandleCheckPaymentn響應(yīng)從支票授權(quán)服務(wù)機構(gòu)發(fā)回的授權(quán)應(yīng)答,響應(yīng)從支票授權(quán)服務(wù)機構(gòu)發(fā)回的授權(quán)應(yīng)答,如果被認(rèn)可,完成銷售如果被認(rèn)可,完成銷售w重命名重命名makePaymentn為為makeCashPayment-54-w狀態(tài)圖(狀態(tài)圖(Statechart Diagram)說明一個對象的重要)說明一個對象的重要事件和狀態(tài),以及對象響應(yīng)事件的行為事件和狀態(tài),以及對
31、象響應(yīng)事件的行為n事件(事件(event)是一個有意義或值得注意的事情)是一個有意義或值得注意的事情n狀態(tài)(狀態(tài)(state)是一個對象在某一時刻的狀況)是一個對象在某一時刻的狀況n轉(zhuǎn)移(轉(zhuǎn)移(transition)是兩個狀態(tài)之間的關(guān)系,表示當(dāng)一個事件發(fā))是兩個狀態(tài)之間的關(guān)系,表示當(dāng)一個事件發(fā)生時,對象從先前的狀態(tài)轉(zhuǎn)移到后續(xù)的狀態(tài)生時,對象從先前的狀態(tài)轉(zhuǎn)移到后續(xù)的狀態(tài)w狀態(tài)圖主要應(yīng)用:軟件中的類,概念,用例狀態(tài)圖主要應(yīng)用:軟件中的類,概念,用例轉(zhuǎn)移IdleActiveoff hookon hook初始狀態(tài)狀態(tài)事件-55-WaitForSaleEnteringItemsWaitingForPay
32、mentAuthorizingPaymententerItementerItemendSalehandleReplymakeCashPaymentmakeCreditPaymentmakeCheckPayment-56-w從順序開發(fā)過程到迭代式開發(fā)從順序開發(fā)過程到迭代式開發(fā)w典型的迭代計劃典型的迭代計劃w進入下一個開發(fā)周期進入下一個開發(fā)周期w分析階段分析階段-57-w體系結(jié)構(gòu)設(shè)計體系結(jié)構(gòu)設(shè)計w用例實現(xiàn)(設(shè)計)用例實現(xiàn)(設(shè)計)n通過通過GRASP模式進行類的職責(zé)分配模式進行類的職責(zé)分配n應(yīng)用更多的模式完善類的職責(zé)分配過程應(yīng)用更多的模式完善類的職責(zé)分配過程w構(gòu)造設(shè)計類圖構(gòu)造設(shè)計類圖w精化設(shè)計類圖精
33、化設(shè)計類圖-58-w專家、創(chuàng)建者、高內(nèi)聚、低耦合、控制者專家、創(chuàng)建者、高內(nèi)聚、低耦合、控制者w其它其它4個個GRASP模式模式n多態(tài)多態(tài)n純虛構(gòu)純虛構(gòu)n中介者中介者n不要和陌生人講話不要和陌生人講話-59-w解決方案解決方案n當(dāng)相關(guān)的可選擇的方法或行為隨著類型(類)變化時,將行為當(dāng)相關(guān)的可選擇的方法或行為隨著類型(類)變化時,將行為的職責(zé)的職責(zé)使用多態(tài)(使用多態(tài)(Polymorphism)操作)操作分配給那些行為分配給那些行為變化的類型變化的類型n推論:不要測試對象的類型和使用條件邏輯來執(zhí)行基于類型的推論:不要測試對象的類型和使用條件邏輯來執(zhí)行基于類型的變化的可選擇的方法變化的可選擇的方法w問
34、題問題n如何處理基于類型的選擇如何處理基于類型的選擇n如何創(chuàng)建可插入的軟件構(gòu)件如何創(chuàng)建可插入的軟件構(gòu)件w優(yōu)點優(yōu)點n為不期而來的新變化所需要的將來的擴展時很容易被添加的為不期而來的新變化所需要的將來的擴展時很容易被添加的(OCP)w其它名稱其它名稱n自己做(自己做(Do it Myself)、不要是何種類型()、不要是何種類型(Dont Ask “What Kind?”)-60-61-w和專家模式一樣,多態(tài)的使用是模式和專家模式一樣,多態(tài)的使用是模式“自己做自己做”的核心思想之一,一種支付的核心思想之一,一種支付Payment授權(quán)自己,授權(quán)自己,而不是通過作用在這種支付而不是通過作用在這種支付P
35、ayment的外部操的外部操作來授權(quán)它作來授權(quán)它這正是面向?qū)ο蟮木杷谶@正是面向?qū)ο蟮木杷趙如果專家可以刻畫成最重要的基本的如果專家可以刻畫成最重要的基本的模式,模式,那么在面向?qū)ο笤O(shè)計中的多態(tài)就是最重要的基本那么在面向?qū)ο笤O(shè)計中的多態(tài)就是最重要的基本的的模式模式n多態(tài)是一個基本的原則,基于這個原則,可以在設(shè)計多態(tài)是一個基本的原則,基于這個原則,可以在設(shè)計一個系統(tǒng)如何被組織以處理工作的過程中創(chuàng)建總體的一個系統(tǒng)如何被組織以處理工作的過程中創(chuàng)建總體的策略和工作計劃策略和工作計劃n一個基于通過多態(tài)來分配職責(zé)的設(shè)計可以很容易地被一個基于通過多態(tài)來分配職責(zé)的設(shè)計可以很容易地被擴展以處理新的變化擴展
36、以處理新的變化-62-w解決方案解決方案n給一個人造類分配一組高度內(nèi)聚的職責(zé);人造類不代表問題領(lǐng)給一個人造類分配一組高度內(nèi)聚的職責(zé);人造類不代表問題領(lǐng)域的任何事物域的任何事物它只是虛構(gòu)的事物,為了支持高度的內(nèi)聚性、它只是虛構(gòu)的事物,為了支持高度的內(nèi)聚性、低耦合和重用低耦合和重用n這樣一個類是想象出來的虛構(gòu)物;在理想情況下,分配給這個這樣一個類是想象出來的虛構(gòu)物;在理想情況下,分配給這個虛構(gòu)物的職責(zé)支持高內(nèi)聚和低耦合,這樣一個虛構(gòu)物的設(shè)計是虛構(gòu)物的職責(zé)支持高內(nèi)聚和低耦合,這樣一個虛構(gòu)物的設(shè)計是非常干凈的或純的非常干凈的或純的因此這是一個純虛構(gòu)(因此這是一個純虛構(gòu)(pure fabrication
37、)n一個純虛構(gòu)意味著虛構(gòu)某些事物,不到迫不得已不要這樣做!一個純虛構(gòu)意味著虛構(gòu)某些事物,不到迫不得已不要這樣做!w問題問題n在什么情況下、什么時候虛構(gòu)類在什么情況下、什么時候虛構(gòu)類w優(yōu)點優(yōu)點n職責(zé)被分解為一個細粒度的類,這個類僅關(guān)注相關(guān)任務(wù)的一個職責(zé)被分解為一個細粒度的類,這個類僅關(guān)注相關(guān)任務(wù)的一個特定集合,所以支持高內(nèi)聚特定集合,所以支持高內(nèi)聚n細粒度的純虛構(gòu)類增加了重用性(使用到其他的應(yīng)用中)細粒度的純虛構(gòu)類增加了重用性(使用到其他的應(yīng)用中)-63-w假設(shè)需要支持在一個關(guān)系數(shù)據(jù)庫中保存假設(shè)需要支持在一個關(guān)系數(shù)據(jù)庫中保存Sale實例,根據(jù)實例,根據(jù)專家模式,有理由將職責(zé)分配給專家模式,有理由
38、將職責(zé)分配給Sale,但是:,但是:nSale的內(nèi)聚性:這個任務(wù)需要一個相對大量的支持面向?qū)ο髷?shù)的內(nèi)聚性:這個任務(wù)需要一個相對大量的支持面向?qū)ο髷?shù)據(jù)庫的操作,而這些操作與據(jù)庫的操作,而這些操作與Sale概念無關(guān)概念無關(guān)nSale的耦合度:的耦合度:Sale必須同關(guān)系數(shù)據(jù)庫的接口相連接,而且這必須同關(guān)系數(shù)據(jù)庫的接口相連接,而且這些耦合對于另一個領(lǐng)域?qū)ο蟛贿B貫些耦合對于另一個領(lǐng)域?qū)ο蟛贿B貫n低重用問題:在關(guān)系數(shù)據(jù)庫中保存對象對于許多需要提供這種低重用問題:在關(guān)系數(shù)據(jù)庫中保存對象對于許多需要提供這種支持的類來說是一個非常普通的任務(wù),將職責(zé)放在支持的類來說是一個非常普通的任務(wù),將職責(zé)放在Sale類中則
39、類中則在其他類做同樣的事情時很難重用,會出現(xiàn)大量的重復(fù)在其他類做同樣的事情時很難重用,會出現(xiàn)大量的重復(fù)w構(gòu)造一個純虛構(gòu)的類構(gòu)造一個純虛構(gòu)的類PersistentStorageBroker(持久(持久存儲代理),這個類僅僅負責(zé)某種持久的存儲介質(zhì)(如存儲代理),這個類僅僅負責(zé)某種持久的存儲介質(zhì)(如關(guān)系數(shù)據(jù)庫)中存取對象關(guān)系數(shù)據(jù)庫)中存取對象nSale保持了良好的設(shè)計,具有高內(nèi)聚、低耦合保持了良好的設(shè)計,具有高內(nèi)聚、低耦合nPersistentStorageBroker相對內(nèi)聚相對內(nèi)聚nPersistentStorageBroker類是一個非常通用和可重用的對象類是一個非常通用和可重用的對象-64-
40、w討論討論n一個純虛構(gòu)必須被設(shè)計成具有好的重用性,這可以通過保證其一個純虛構(gòu)必須被設(shè)計成具有好的重用性,這可以通過保證其職責(zé)是很小和內(nèi)聚的來實現(xiàn);這些類往往具有一組細粒度的職職責(zé)是很小和內(nèi)聚的來實現(xiàn);這些類往往具有一組細粒度的職責(zé)責(zé)n一個純虛構(gòu)通?;谙嚓P(guān)的功能劃分,它是一種以功能為中心一個純虛構(gòu)通常基于相關(guān)的功能劃分,它是一種以功能為中心的對象的對象n一個純虛構(gòu)通常被考慮成一個體系結(jié)構(gòu)中高層面向?qū)ο蠓?wù)層一個純虛構(gòu)通常被考慮成一個體系結(jié)構(gòu)中高層面向?qū)ο蠓?wù)層的一部分的一部分w潛在問題潛在問題n好的面向?qū)ο蟮脑O(shè)計思想是以對象為中心而不是以功能為中心好的面向?qū)ο蟮脑O(shè)計思想是以對象為中心而不是以功
41、能為中心n濫用這種做法,會導(dǎo)致一個面向功能或面向過程的設(shè)計,并且濫用這種做法,會導(dǎo)致一個面向功能或面向過程的設(shè)計,并且這個設(shè)計還要用面向?qū)ο蟮恼Z言實現(xiàn)這個設(shè)計還要用面向?qū)ο蟮恼Z言實現(xiàn)-65-w解決方案解決方案n將職責(zé)分配給一個中間對象以便在其他構(gòu)件或服務(wù)之將職責(zé)分配給一個中間對象以便在其他構(gòu)件或服務(wù)之間進行仲裁,這些構(gòu)件或服務(wù)沒有被直接耦合間進行仲裁,這些構(gòu)件或服務(wù)沒有被直接耦合n這個中間對象(這個中間對象(intermediary)在其他構(gòu)件或服務(wù))在其他構(gòu)件或服務(wù)間創(chuàng)建一個中介者(間創(chuàng)建一個中介者(Indirection)w問題問題n誰要避開直接的耦合?如何分類耦合的對象以便支持誰要避開直接的耦合?如何分類耦合的對象以便支持低耦合并保持高重用性低耦合并保持高重用性w優(yōu)點優(yōu)點n低耦合低耦合-66-Modem:dial(phoneNum) :OS_OpenPort(1) :OS_Dial(phoneNum) : CreditPayment : CreditAu
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 物流配送中的倉儲安全管理措施
- 2026浙江臺州椒江區(qū)第三中心幼兒園總園及分園教師招聘備考題庫及答案詳解(考點梳理)
- 2026福建三明市殯葬服務(wù)中心招聘勞務(wù)派遣人員2人備考題庫及完整答案詳解一套
- 2026浙江省中國聯(lián)合網(wǎng)絡(luò)通信有限公司溫州市分公司校園招聘10人備考題庫及一套完整答案詳解
- 2026浙江臺州市黃巖區(qū)體育事業(yè)發(fā)展中心招聘編制外人員1人備考題庫及完整答案詳解1套
- 2026湖北武漢格魯伯實驗學(xué)校招聘3人備考題庫及參考答案詳解一套
- 幼兒園假期安全教育教案設(shè)計
- 2026重慶市智匯人才開發(fā)有限公司永川分公司招聘中山路街道全日制公益性崗位人員5人備考題庫及答案詳解(奪冠系列)
- 2026湖北省面向上海大學(xué)普通選調(diào)生招錄備考題庫及參考答案詳解
- 酒店前臺客戶投訴處理流程培訓(xùn)
- 電力設(shè)備檢測方案
- AI大模型在混凝土增強模型中的應(yīng)用研究
- 醫(yī)院培訓(xùn)課件:《標(biāo)本采集方法》
- GB/T 18006.1-2025塑料一次性餐飲具通用技術(shù)要求
- 成都新易盛高速率光模塊技術(shù)與產(chǎn)線擴產(chǎn)升級項目環(huán)境影響報告表
- 5噸鹵制品污水處理方案
- 2026屆安徽省馬鞍山和縣聯(lián)考化學(xué)九年級第一學(xué)期期末達標(biāo)測試試題含解析
- 高速公路原材取樣課件
- 《勞模工匠之光》課件 第二單元 改革攻堅的先鋒
- 股骨干骨折脂肪栓塞護理查房
- 美容護膚技術(shù)授課張秀麗天津醫(yī)學(xué)高等??茖W(xué)校04課件
評論
0/150
提交評論