接口设计定理

接口设计定理
相关文章链接: 模块分解原理探索
前面几篇文章中讲过模块分解原理和接口关系稳定原理,这篇文章中将使用模块分解原理和接口关系稳定原理来推导一个重要的定理:接口设计定理。
在讲解接口设计定理前,先看一下Robert C.Martin著的《敏捷软件开发》一书中提到的一个“开放-封闭”原则,意思是说“软件实体(模块、类、函数等)应该是可以扩展的,但是是不可修改的”。
按照书中的意思,实际上应该把“开放-封闭”原则描述成“接口应该是可以扩展的,但是是不可修改的”,可能意思会更确切一些。
许多人可能感兴趣的是如何设计接口才能满足“开放-封闭原则”。
接口设计定理
定义:把符合接口关系稳定原理的系统称为 亚稳定系统,如果亚稳定系统中各个模块在发生变化时只需添加接口而不用修改已有的接口,那么称之为 稳定系统
根据稳定系统的定义,可以很容易得到以下推论:
推论:稳定系统中的接口是满足“开放-封闭”原则的。
当然满足“开放-封闭”原则的系统不一定是稳定系统,因为它不一定满足接口关系稳定原理。
设计一个稳定系统成了构架设计的重要目标,下面给出接口设计定理的描述:
接口设计定理 :当系统中的每个模块的接口集合是它所属专业领域的最优接口集合的一个子集时,系统是稳定系统。
当需求发生变化时,只需要将需求重新分解到各个专业模块里进行处理,由于每个专业模块已有接口集合都是所属专业领域的最优接口集合的一个子集,因此可以在整个专业领域的最优接口集合中找出对应的接口添加到已有的子集里使得新的问题得到解决,无需修改任何已有的接口,根据稳定系统的定义可以得出系统是稳定系统。
根据接口设计定理,在设计模块的接口时,需要在模块所属的专业领域范围内来设计接口,然后从专业领域范围内的最优接口集合中选择一个能覆盖当前需求的最小接口子集就可以了。
如何对整个专业领域设计最优接口集合呢?业界流行的“最小接口”和“人本接口”设计均属于最优的设计的一种。不过接口设计定理对设计人员的要求大大提高了,因为设计人员必须对系统中各个模块所属的不同专业领域都有非常全面的了解。
最优接口集合设计还需要遵循软件安全性设计的一些原则,如“测试空间要尽量小且容易构造”,“设计空间要满足需求情况下尽可能的小”等。
接口设计定理的意义
接口设计定理的意义在于如果业界将各个专业领域的最优接口集合定义好的话,那么设计人员就可以利用已有的最优接口集合来选择子集所需要的子集。大大缩减设计人员进行接口设计的难度。
不过现实情况中,许多专业领域都不成熟,无法对整个专业领域设计处最优接口集合,如果想要完全依赖接口设计定理来设计接口是很困难的,但是对已知成熟的专业领域,使用接口设计定理来设计接口是一个不错的选择。一般来说越上层的模块,接口设计的难度越大,而越下层的模块,接口设计的难度要低,因为下层模块通常都属于成熟的专业领域。

你可能感兴趣的:(敏捷开发,软件测试)