可置换性
可置换继续向上融入了分层、虚拟化、微内核等架构设计中,所以正确性、稳定性和可测试性等等特性以外还需要新增一个新的非功能属性,这就是可置换性,可置换性是一个比较隐式的特性,其外在表现不太为人所知,虽然在设计过程中,我们已经使用了可置换性的非功能属性来描述和审查设计,例如:我们的设计模型是否能够有效替换现实中的系统呢?在设计中我们经常这样地询问,但是可置换性却一直没有作为一项独立的非功能属性,那么可置换性的定义是什么呢?其应用领域是什么呢?其使用限制又是什么呢?其为什么是一个隐藏的属性而并不为人熟知呢?其于其他特新之间又有什么联系以及矛盾呢?
解答这样的问题非常有趣,其实可置换性和其他的众多非功能属性是相互隐含的,例如前面谈到的可扩展性,如果一个系统的可置换性能力越强,其可扩展性也就越强,但是反过来则不成立,可置换性是可扩展性的一个基本要素,又例如可修改性,让系统具有可调整的能力,在软件系统中,具有可置换性特征的对象其可修改能力是最强的,其最为特殊的可置换性具有众多特殊特征(例如对称、双向等特征)于一体的,这样其修改的灵活性也就是最强的。
在《架构风格与基于网络的软件架构设计》中,Roy Thomas Fielding博士将各种非功能属性进行详细的分解,将这些特性划分成性能、可靠性、可移植性、可重用性、可配置性、可扩展性、可见性、可定制性、可进化性、可修改性、简单性、可伸缩性等多个具有对架构风格约束的非功能属性,但是对于可置换性来说,其不是一个约束性的非功能属性,而是一个衡量软件系统设计的标准属性,所以在很长的一段时间内,其一直作为隐藏的非功能属性而不被察觉,所以,我们可以看出可置换性在其基础的位置是非常重要的。
但是,可置换性与上面提到的一些非功能属性是相互制约、相互影响的,例如采用了可置换性可能会引入更多的间接处理方式,其性能就会受到影响,可靠性也可能系统的复杂化而下降,但是与其他的一些非功能属性却是其相互依存、相互促进的,比如可移植性、可重用性、可扩展性、可修改性、可伸缩性等都相一致。
原文地址:http://blog.51cto.com/13832308/2132740