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

可置換性

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

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

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

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

 

發佈了42 篇原創文章 · 獲贊 2 · 訪問量 2364
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章