1. 程式人生 > >連載06:軟件體系設計新方向:數學抽象、設計模式、系統架構與方案設計(簡化版)(袁曉河著)

連載06:軟件體系設計新方向:數學抽象、設計模式、系統架構與方案設計(簡化版)(袁曉河著)

pad box 表現 -a 標準 orm ack ace ria

可置換性

可置換繼續向上融入了分層、虛擬化、微內核等架構設計中,所以正確性、穩定性和可測試性等等特性以外還需要新增一個新的非功能屬性,這就是可置換性,可置換性是一個比較隱式的特性,其外在表現不太為人所知,雖然在設計過程中,我們已經使用了可置換性的非功能屬性來描述和審查設計,例如:我們的設計模型是否能夠有效替換現實中的系統呢?在設計中我們經常這樣地詢問,但是可置換性卻一直沒有作為一項獨立的非功能屬性,那麽可置換性的定義是什麽呢?其應用領域是什麽呢?其使用限制又是什麽呢?其為什麽是一個隱藏的屬性而並不為人熟知呢?其於其他特新之間又有什麽聯系以及矛盾呢?

解答這樣的問題非常有趣,其實可置換性和其他的眾多非功能屬性是相互隱含的,例如前面談到的可擴展性,如果一個系統的可置換性能力越強,其可擴展性也就越強,但是反過來則不成立,可置換性是可擴展性的一個基本要素,又例如可修改性,讓系統具有可調整的能力,在軟件系統中,具有可置換性特征的對象其可修改能力是最強的,其最為特殊的可置換性具有眾多特殊特征(例如對稱、雙向等特征)於一體的,這樣其修改的靈活性也就是最強的。

在《架構風格與基於網絡的軟件架構設計》中,Roy Thomas Fielding博士將各種非功能屬性進行詳細的分解,將這些特性劃分成性能、可靠性、可移植性、可重用性、可配置性、可擴展性、可見性、可定制性、可進化性、可修改性、簡單性、可伸縮性等多個具有對架構風格約束的非功能屬性,但是對於可置換性來說,其不是一個約束性的非功能屬性,而是一個衡量軟件系統設計的標準屬性,所以在很長的一段時間內,其一直作為隱藏的非功能屬性而不被察覺,所以,我們可以看出可置換性在其基礎的位置是非常重要的。

但是,可置換性與上面提到的一些非功能屬性是相互制約、相互影響的,例如采用了可置換性可能會引入更多的間接處理方式,其性能就會受到影響,可靠性也可能系統的復雜化而下降,但是與其他的一些非功能屬性卻是其相互依存、相互促進的,比如可移植性、可重用性、可擴展性、可修改性、可伸縮性等都相一致。


連載06:軟件體系設計新方向:數學抽象、設計模式、系統架構與方案設計(簡化版)(袁曉河著)