高内聚低耦合的设计原则

软件系统的功能模块,是系统设计人员在对问题域进行归纳、总结、抽象的基础上所形成的,能够满足领域特定需求的软件功能实现。

设计人员在对问题域进行归纳、总结、抽象时,通常要遵循“高内聚低耦合”的设计原则。所谓内聚,是对归纳、总结和抽象后所形成的功能模块内部相关实体要素连接的紧密程度的一种度量,高内聚是说功能模块内部相关实体要素的相关性和连接性越紧密越好,这样的功能模块的独立性也越强。所谓耦合是对软件系统内各个功能模块间的紧密程度的一种度量,低耦合是说一个软件系统内的各个功能模块紧密程度越低越好,这样各个功能模块的独立性也就越强。

一个功能模块的内聚程度从低到高分为七个层次:

1.偶然性内聚,即模块内部各相关要素不存在必然联系,它们的聚合纯属巧合。在一个模块内部如果存在这样的要素,就要将它们彼此分开;

2.逻辑性内聚,即将具有相同或相似处理逻辑能力放到一个模块内,但它们所处理的实体对象间却不存在必然的相关性。这种内聚虽然比偶然性内聚好些,但当不相关的实体对象发生变化时,被内聚到一起的逻辑就很难适应个体对象的变化;

3.时间性内聚,即将在同一时间内执行的功能放到一个模块内,这种内聚设计只关注了功能执行的并发性,忽略了功能执行的连续性和逻辑的相关性;

4.过程性内聚,即将彼此相关的功能放到一个模块内,这些功能必须按照一定的次序执行。这种内聚设计将处理逻辑固化的一个功能模块内,这样的功能模块缺乏足够的灵活性和适应性;

5.通信性内聚,即将消费或生产相同数据集的功能放到一个功能模块内,这种内聚设计忽略了数据状态变化给用户应用逻辑所带来的个性化要求,特别是数据从生产到消费要经历多种状态变迁的时候,这时会给用户的使用体验带来不适;

6.顺序性内聚,即将输入和输出具有先后逻辑顺序的功能放到一个模块内,这种内聚设计在逻辑上是线性的,不能适应非线性的需要;

7.功能性内聚,即将彼此相关,通过协同共同完成同一功能的实体要素放到一个功能模块中,这内聚设计的结果是模块的独立性强。

功能模块间的耦合程度,从高到低也分为七个层次,分别是:

1.内容性耦合,即模块间存在某个模块访问另一个模块内部数据的情况,或者模块间不是通过正常的数据交换接口来交换数据的,都称其为内容性耦合,这种耦合或导致内容的混乱,引发逻辑冲突;

2.公共性耦合,即存在多个模块访问同一公共数据环境的情况,这种耦合会导致数据冲突或数据死锁;

3.外部性耦合,即多个模块做访问全局变量时,不通过约束的结构性参数来传递信息,而是直接使用简单的变量传递信息,这回导致逻辑语义的缺失,致使模块间的功能依赖不易理解;

4.控制性耦合,即一个模块通过开关、标识等信息选择性的直接控制另一个模块的功能,这种耦合通常具有逻辑上的相关性,可通过功能内聚将其放到一个功能模块中;

5.标记性耦合,即模块间通过参数表来传递和记录信息,这将导致模块间的参数状态依赖和顺序依赖;

6.数据性耦合,即模块间接依赖是通过数据交换来完成成的,数据交换过程中不存在控制信息,模块间只关注彼此的数据交换协议,而不关注模块内部的数据处理和逻辑控制;

7.非直接耦合,即平行模块间不存在彼此的依赖,它们的运行只依赖其上层模块的调度。

—— 完 ——
相关推荐
评论

立 为 非 似

中 谁 昨 此

宵 风 夜 星

。 露 , 辰

文章点击榜

细 无 轻 自

如 边 似 在

愁 丝 梦 飞

。 雨 , 花