每一種架構(gòu)模式都有它的優(yōu)缺點以及潛在風(fēng)險,選擇正確模式來滿足需求功能和質(zhì)量特性是非常重要的.質(zhì)量特性在需求分析過程中已經(jīng)定義了, 質(zhì)量特性可分為三種類型:
1. 實現(xiàn)特性.
* 協(xié)作性.在內(nèi)部組件與外界通用訪問與交換數(shù)據(jù). 協(xié)作性需要松散依賴的基礎(chǔ)架構(gòu).
* 可維護(hù)性與擴(kuò)展性. 修改系統(tǒng)與方便地擴(kuò)展的能力.
* 可測試性. 幫助系統(tǒng)創(chuàng)建測試用例. 可測試性通常需要完整的系統(tǒng)設(shè)計與實現(xiàn)文檔.
* 輕便性. 系統(tǒng)級的獨立于軟件與硬件平臺. 系統(tǒng)開發(fā)用高級編程語言通常具有這個特性. 一個典例的例子就是JAVA, 大多數(shù)JAVA程序編譯一次可以在任何地方運(yùn)行.
* 伸縮性. 適用增加用戶請求量的能力. 系統(tǒng)設(shè)計中伸縮性是比較討厭的瓶頸.
* 靈活性. 系統(tǒng)易于修改適應(yīng)于非原始設(shè)計的系統(tǒng)不同環(huán)境或問題, 系統(tǒng)開發(fā)使用面向組件或面向服務(wù)的架構(gòu)通常處理這個特性.
2. 運(yùn)行時特性.
* 可用性. 一個系統(tǒng)應(yīng)該具有24/7的能力. 可用性通過復(fù)制與謹(jǐn)慎設(shè)計可應(yīng)付硬件, 軟件, 網(wǎng)絡(luò)故障來實現(xiàn).
* 安全性. 一個系統(tǒng)應(yīng)對內(nèi)外界各種類型的攻擊. 安全性能通過安裝防火墻, 創(chuàng)建認(rèn)證與授權(quán)過程與使用加密.
* 性能. 增加一個系統(tǒng)效率系統(tǒng)到響應(yīng)時間, 吞吐量, 資源利用, 通常與其它幾個特性呈對立系統(tǒng).
* 易用性. 用戶使用系統(tǒng)時感到滿意. 易用性包含完整性, 正確性, 兼容性幾個因素, 也包括友好的用戶界面, 完整文檔與技術(shù)支持.
* 可靠性. 準(zhǔn)確的輸出結(jié)果. MTTF(平均失效前時間), 從故障中恢復(fù), 故障預(yù)測.
* 可維護(hù)性(擴(kuò)展性, 適用性,可服務(wù)性, 測試性, 兼容性, 可配制性, 軟件系統(tǒng)易于修改.
3. 業(yè)務(wù)特性.
* 市場時效性. 從需求分析到產(chǎn)品發(fā)布之日所需時間.
* 成本. 構(gòu)建到運(yùn)維系統(tǒng)的消耗.
* 生命周期. 一個產(chǎn)品”存活”到”退休”期間時間
在大多數(shù)情況下,沒有一個單一架構(gòu)模式能同時滿足所有質(zhì)量特性. 軟件架構(gòu)師通常需要在很多特性之間做出權(quán)衡. 典型成對應(yīng)系統(tǒng)質(zhì)量特生有這些:
* 空間與時間的取舍. 空間換時間, 或是時間換空間.
* 可靠性與性能的取舍. 例如, 像CSharp這樣的語言實現(xiàn)防止內(nèi)存溢出可能, 但純C語言使用指針可以性能高但可靠性低.
* 可伸縮性與性能的取舍. 例如, 一個典型的方法來提高服務(wù)的可伸縮性運(yùn)用復(fù)制服務(wù)器。 為了確保所有服務(wù)器的一致性,以確保每個服務(wù)器都有相同的一致性的數(shù)據(jù),整個服務(wù)的性能就會受到影響。
在選擇架構(gòu)模式時,不能滿足所有的質(zhì)量特性,系統(tǒng)分析師或軟件架構(gòu)師需要與客戶一起來確定質(zhì)量特性的優(yōu)先級。通過枚舉備選體系結(jié)構(gòu)設(shè)計和計算加權(quán)來評價質(zhì)量屬性, 以便軟件架構(gòu)師可以優(yōu)化設(shè)計與選擇最合適的方案。
作者:Petter Liu
出處:http://www.rzrgm.cn/wintersun/
本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責(zé)任的權(quán)利。
該文章也同時發(fā)布在我的獨立博客中-Petter Liu Blog。
浙公網(wǎng)安備 33010602011771號