52浙江大學(xué)王燦《軟件體系結(jié)構(gòu)》視頻課程PPT5_可用性和可修改性設(shè)計_第1頁
52浙江大學(xué)王燦《軟件體系結(jié)構(gòu)》視頻課程PPT5_可用性和可修改性設(shè)計_第2頁
52浙江大學(xué)王燦《軟件體系結(jié)構(gòu)》視頻課程PPT5_可用性和可修改性設(shè)計_第3頁
52浙江大學(xué)王燦《軟件體系結(jié)構(gòu)》視頻課程PPT5_可用性和可修改性設(shè)計_第4頁
52浙江大學(xué)王燦《軟件體系結(jié)構(gòu)》視頻課程PPT5_可用性和可修改性設(shè)計_第5頁
已閱讀5頁,還剩20頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、實現(xiàn)質(zhì)量屬性 (1) 實現(xiàn)質(zhì)量屬性 n上節(jié)課討論了各種系統(tǒng)質(zhì)量屬性,卻沒有談及 如何實現(xiàn)這些質(zhì)量屬性 n質(zhì)量屬性的實現(xiàn)依賴于我們稱之為“戰(zhàn)術(shù)”的 基本構(gòu)架決策 q給定一個質(zhì)量屬性,“戰(zhàn)術(shù)”幫助構(gòu)架師使用相應(yīng) 的構(gòu)架策略或模式來進行設(shè)計,達成響應(yīng)的質(zhì)量屬 性 質(zhì)量屬性需求構(gòu)架決策 戰(zhàn)術(shù) n什么使得不同的設(shè)計表現(xiàn)出不同的質(zhì)量特性 q可移植性 q高性能 q可集成性 n“戰(zhàn)術(shù)”是影響質(zhì)量屬性響應(yīng)控制的設(shè)計決策 n戰(zhàn)術(shù)的集合 n系統(tǒng)設(shè)計有決策集合組成 q有些決策確保系統(tǒng)功能的實現(xiàn) q有些決策幫助控制質(zhì)量屬性“戰(zhàn)術(shù)” n“戰(zhàn)術(shù)”是構(gòu)架師所使用的設(shè)計方法 戰(zhàn)術(shù)示例 n一個典型的戰(zhàn)術(shù)示例是通過“引入冗余”來提

2、 高系統(tǒng)可用性 q這往往意味著系統(tǒng)中要有響應(yīng)的同步機制 n該示例揭示 q戰(zhàn)術(shù)可以進一步的被精練 n比如:冗余戰(zhàn)術(shù)可以被進一步的被精練為數(shù)據(jù)冗余和計算 冗余,通常我們以層次結(jié)構(gòu)的形式組織戰(zhàn)術(shù) q模式是戰(zhàn)術(shù)的打包 可用性戰(zhàn)術(shù) n可用性的回顧 q定義 q故障 VS. 錯誤 q = 平均正常工作時間 / (平均正常工作時間+ 平均修復(fù)時間) n可用性戰(zhàn)術(shù) q將阻止錯誤發(fā)展成故障 q或?qū)㈠e誤影響限制在一定范圍內(nèi),從而使修復(fù)成為可能 n保持可用性的方法通常包括: q一些冗余 q一些檢測故障的監(jiān)控機制 q一些恢復(fù)機制 控制可用控制可用 性的戰(zhàn)術(shù)性的戰(zhàn)術(shù) 錯誤錯誤錯誤被屏蔽錯誤被屏蔽 或系統(tǒng)被修復(fù)或系統(tǒng)被修復(fù)

3、 錯誤檢測戰(zhàn)術(shù) n命令/響應(yīng)(Ping/echo) q層次形式組織的“命令/響應(yīng)”錯誤檢測機制 n心跳 (“死人計時器”) q一個組件定時發(fā)出一個心跳消息,另一個組件接聽 該消息 n異常/中斷 q通過拋出異常來識別錯誤,異常處理程序通常在同 一進程內(nèi)捕獲并處理異常 錯誤恢復(fù)戰(zhàn)術(shù) n錯誤恢復(fù)通常由兩部分組成 q準(zhǔn)備恢復(fù) q恢復(fù)系統(tǒng) n常用的準(zhǔn)備和恢復(fù)戰(zhàn)術(shù) q表決 q主動冗余 q被動冗余 q備件 q重新引入 表決戰(zhàn)術(shù) (1) n運行在冗余處理器上的每個進程都具有相等的輸入, 它們計算發(fā)給表決器的一個簡單的輸出值。如果表決 器檢測到單個處理器的異常行為,那么就中止這一行 為 n常用的表決算法 q多數(shù)

4、規(guī)則 q首選組件 表決戰(zhàn)術(shù) (2) n表決戰(zhàn)術(shù)可以用于糾正算法的錯誤或處理器的 錯誤,或者某個模塊或組件的錯誤 n如果出現(xiàn)故障會帶來嚴(yán)重的后果,則冗余組件 可能是多樣的 q每個冗余組件的軟件由不同小組開發(fā) q在不同的平臺上執(zhí)行. 主動冗余(熱啟動)戰(zhàn)術(shù) n所有冗余組件在啟動的時候同步,以并行的方 式對時間作出響應(yīng),因而它們都處在相同的狀 態(tài)。通常,作出響應(yīng)的第一個組件的結(jié)果被采 用,其他響應(yīng)被丟棄 q組件間的同步是通過將傳遞給任何冗余組件的消息 發(fā)送給所有冗余組件 n發(fā)生錯誤時,使用該戰(zhàn)術(shù)的系統(tǒng)的停機時間通 常是幾毫秒 q恢復(fù)時間就是組件間的切換時間,因為冗余組件間 狀態(tài)一致,備份都是最新的

5、q在高可用性的分布式系統(tǒng)中,冗余可能在通信路徑 上 被動冗余戰(zhàn)術(shù) n一個組件(主組件)對事件作出響應(yīng), 并通知其他組件(備用組件)它們必須 進行的狀態(tài)更新 q同步是主組件的責(zé)任,它可以通過對備用組 件的原子廣播來保證同步 n當(dāng)系統(tǒng)發(fā)生錯誤時 q首先要確保備用組件的狀態(tài)時最新的 q該戰(zhàn)術(shù)依賴與備用組件對工作進行可靠接管 備件戰(zhàn)術(shù) n在備件戰(zhàn)術(shù)中,配置有相應(yīng)的備件平臺來取代 各種出故障的組件 n當(dāng)故障出現(xiàn)時,備件必須啟動并進行相應(yīng)的配 置,對狀態(tài)進行初始化,才能替代出故障的組 件 n進行同步并對故障的組件進行接管時,往往使 用檢查點(checkpoint)日志(logging)的 技術(shù) 重新引入戰(zhàn)

6、術(shù) n該戰(zhàn)術(shù)依賴于對發(fā)生故障的組件進行糾正后的 重新引入 qshadow操作:以前出現(xiàn)故障的組件在短時間內(nèi)以 “shadow模式”(類似于測試模式)運行,以確 保它能夠勝任工作組件的要求 q狀態(tài)再同步:重新引入后,最好能用一條消息就將 狀態(tài)刷到最新 q檢查點/回滾:使用類似于數(shù)據(jù)庫中的恢復(fù)機制的技 術(shù) 錯誤預(yù)防戰(zhàn)術(shù) n從服務(wù)中刪除 q從操作中刪除系統(tǒng)的一個組件,以執(zhí)行某些活動來 防止預(yù)期發(fā)生的故障。例如:重新啟動組件,以防 內(nèi)存泄漏導(dǎo)致故障發(fā)生 n事務(wù)處理 q幾個有序步驟的綁定,是的這些步驟都能被完成或 撤銷,保證一致性,防止沖突 n進程監(jiān)視器 q檢測到進程中的錯誤后,將之刪除并重新創(chuàng)建一實

7、例并初始化狀態(tài) 可用行戰(zhàn)術(shù)層次結(jié)構(gòu) 命令命令/響應(yīng)響應(yīng) 心跳心跳 異常異常 表決表決 主動冗余主動冗余 被動冗余被動冗余 備件備件 從服務(wù)中刪除從服務(wù)中刪除 事務(wù)事務(wù) 進程監(jiān)視器進程監(jiān)視器 Shadow 狀態(tài)再同步狀態(tài)再同步 檢查點檢查點/回滾回滾 故障故障 故障被故障被 屏蔽或屏蔽或 修復(fù)修復(fù) 可修改性戰(zhàn)術(shù) n目標(biāo):控制實施、測試和部署修改的時間和成本 n提高可修改性的主要方法 q局部化修改局部化修改 q防止連鎖反應(yīng)防止連鎖反應(yīng) q延遲綁定時間延遲綁定時間 控制可修改控制可修改 性的戰(zhàn)術(shù)性的戰(zhàn)術(shù) 變更到達變更到達 在預(yù)算范圍內(nèi)在預(yù)算范圍內(nèi) 實施修改實施修改 測試修改測試修改 部署修改部署修改

8、 局部化修改 (1) n一般來說(盡管不是非常精確),修改的模 塊越少,修改的成本就越低 n這組戰(zhàn)術(shù)的目標(biāo)是在設(shè)計期間為模塊分配責(zé) 任,以把預(yù)期的變更限定在一定范圍內(nèi) q維持語義的一致性 n語義一致性指模塊中責(zé)任間的關(guān)系。目標(biāo)是確保這 些責(zé)任能夠協(xié)同工作,不需過多依賴其他模塊 n“抽象通用服務(wù)” q預(yù)期期望的變更 n考慮預(yù)想的變更為責(zé)任或功能的分配提供指導(dǎo) q實際使用中,該戰(zhàn)術(shù)實施會有困難,因為很難預(yù)期所有變更 局部化修改 (2) n泛化模塊 q泛化模塊(使一個模塊更加通用)可以使它根據(jù)根 據(jù)輸入計算更廣泛的功能 q可以將一個模塊的輸入看成是該模塊定義的一種語 言 n可以在語言上應(yīng)對修改,而不

9、必去修改模塊 n限制可能的選擇 q修改(尤其在產(chǎn)品線中)的范圍可能非常大,因此 可能會影響很多模塊 q限制可能的選擇可以見地這些修改造成的影響 連鎖反應(yīng) & 模塊依賴性 n修改所產(chǎn)生的連鎖反應(yīng)就是需要改變該修改并沒有直接 影響到的模塊 q比如:模塊B依賴于模塊A,那么修改了模塊A后,有可 能相應(yīng)的必須修改模塊B n連鎖反應(yīng)的原因是模塊間的依賴性,常見的依賴性包括 q語法 n數(shù)據(jù):要使B能正確編譯和執(zhí)行,由A產(chǎn)生并由B使用的數(shù)據(jù)語 義必須與B的假定一致 n服務(wù):要使B能正確編譯和執(zhí)行,由A提供并由B調(diào)用的服務(wù)的 簽名必須與B的假定一致 q語義 n數(shù)據(jù)&服務(wù):要使B能正確執(zhí)行,由A提供并由B使用的

10、數(shù)據(jù)或 調(diào)用的服務(wù)必須與B的假定一致 模塊依賴性 (2) q順序 n數(shù)據(jù):要使B能正確執(zhí)行,它必須以一個固定的順序接收由A產(chǎn) 生的數(shù)據(jù)(比如:包頭要比包體先接收) n控制:要使B能正確執(zhí)行,A必須在一定的時間限制內(nèi)執(zhí)行 qA的一個接口身份 nA的接口身份(名稱或句柄)要與B的假設(shè)一致 qA的運行時位置 n要使B能正確執(zhí)行,A的運行時位置必須與B的假定一致 qA提供的服務(wù)/數(shù)據(jù)的質(zhì)量 qA的存在 qA的資源行為 防止連鎖反應(yīng) (1) n下面的戰(zhàn)術(shù),并不能一定組織語義變更造成的連鎖反應(yīng) n信息隱藏 q將某個模塊的責(zé)任分解成更小的部分,并選擇哪些部分為公有(可 見),哪些為私有(隱藏) n維持現(xiàn)有的

11、接口 q如果B依賴于A的一個接口名或簽名,則維持該接口和其語法可以使B 保持不變通常可以用以下戰(zhàn)術(shù)來達到這點 n添加接口 n添加適配器(提供原始A的簽名) n提供一個占位程序A(stub) n限制通訊路徑 q與一個被修改的模塊交互的模塊越少,被影響到的模塊也越少 防止連鎖反應(yīng) (2) n使用中間件:A 中間件 B (非語義型 依賴) q數(shù)據(jù)(語法):存儲庫充當(dāng)數(shù)據(jù)的生成者和使用者 之間的中間件 q服務(wù):faade、橋、mediator、代理、工廠模式等 都能將服務(wù)的語法從一種形式轉(zhuǎn)為另一種形式 qA的接口身份:使用Broker模式 qA的運行時位置:使用名稱服務(wù)器 qA的資源行為或A控制的資源:使用資源管理器 qA的存在:使用工廠模式 延遲綁定時間 n前面兩類戰(zhàn)術(shù)的目標(biāo)是使實現(xiàn)修改所要求改變 的模塊數(shù)量最少,但是可修改性同時也該包括: q部署時間 q允許非開發(fā)人員進行修改 n推遲綁定時間支持這兩種場景,但是需要額外 的基礎(chǔ)結(jié)構(gòu)支持 q靜態(tài)綁定 VS. 動態(tài)綁定 延遲綁定時間策略 n運行時注冊 q支持軟件實體的即插即用,但是需要管理注冊的模 塊 n配置文件 q在啟動時進行參數(shù)設(shè)置 n多態(tài)性 q允許方法調(diào)用的后期綁定,從而使對象有不同的動 態(tài)行為 n遵守已定義的協(xié)議 q允許獨立進程運行時綁定 可修改性戰(zhàn)術(shù)層次

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論