内聚强度
内聚类型(由高到低) | 描述 |
---|---|
功能内聚(Functional cohesion,最高) | 完成一个单一功能,各个部分协同工作,缺一不可 |
依序内聚性/顺序内聚(Sequential cohesion) | 处理元素相关,而且必须顺序执行。一个模块的各个成分和同一个功能密切相关,而且一个成分的输出作为另一个成分的输入 |
通信内聚/信息内聚(Communicational cohesion) | 如果一个模块的所有成分都操作同一数据集或生成同一数据集。模块完成多个功能,各个功能都在同一数据结构上操作,这个模块的所有功能都是基于同一个数据结构(符号表),因此,它是一个通讯内聚的模块 |
过程内聚Procedural cohesion | 构件或者操作的组合方式是,允许在调用前面的构件或操作之后,马上调用后面的构件或操作,即使两者之间没有数据进行传递。 |
瞬时内聚/时间内聚Temporal cohesion | 如果一个模块完成的功能必须在同一时间内执行(如系统初始化),但这些功能只是因为时间因素关联在一起,则称为时间内聚。 |
逻辑内聚Logical cohesion | 几个逻辑上相关的功能被放在同一模块中。如一个模块读取各种不同类型外设的输入。尽管逻辑内聚比偶然内聚合理一些,但逻辑内聚的模块各成分在功能上并无关系,即使局部功能的修改有时也会影响全局,因此这类模块的修改也比较困难。 |
偶然内聚(巧合内聚)Coincidental cohesion | 如果一个模块的各成分之间毫无关系,则称为偶然内聚,也就是说模块完成一组任务,这些任务之间的关系松散,实际上没有什么联系。 |
耦合强度
耦合类型(由低到高) | 描述 |
---|---|
非直接耦合/讯息耦合(message coupling,是无耦合之外,耦合度最低的耦合) | 可以借由以下二个方式达成:状态的去中心化(例如在对象中),组件间利用传入值或消息传递 (计算器科学)来通信。 |
资料耦合/数据耦合(data coupling) | 是指模块借由传入值共享数据,每一个数据都是最基本的数据,而且只分享这些数据(例如传递一个整数给计算平方根的函数))。 |
特征耦合/标记耦合(stamp coupling) | 也称为数据结构耦合,是指几个模块共享一个复杂的数据结构,如高级语言中的数组名、记录名、文件名等这些名字即标记,其实传递的是这个数据结构的地址 |
控制耦合(control coupling) | 指一个模块调用另一个模块时,传递的是控制变量(如开关、标志等),被调模块通过该控制变量的值有选择地执行块内某一功能 |
外部耦合(external coupling) | 发生在二个模组共用一个外加的资料格式、通讯协定或是设备界面,基本上和模组和外部工具及设备的沟通有关。 |
共用耦合/公共耦合(common coupling) | 也称为全局耦合(global coupling.)指通过一个公共数据环境相互作用的那些模块间的耦合。公共耦合的复杂程度随耦合模块的个数增加而增加。 |
内容耦合(content coupling,耦合度最高) | 也称为病态耦合(pathological coupling)当一个模块直接使用另一个模块的内部数据,或通过非正常入口而转入另一个模块内部。 |