耦合与内聚的分类
耦合:指的是程序结构中各个模块之间相互关联的度量。
内聚:指的是一个模块内部各成分之间相关联程度的度量。
在软件系统的划分模块时,应尽量做到高内聚,低耦合,提高模块的独立性。
耦合的分类
耦合可以分为以下七种类型,耦合性由高到底分别是:
内容耦合:一个模块直接使用另一个模块的内部数据,或通过非正常入口转入另一个模块内部。
公共耦合:指一组模块访问一个公共数据环境,如全局数据结构。
外部耦合:指一组模块访问一个公共变量,这里指基本数据类型而不是数据结构(或者说对象)。
控制耦合:指一个模块调用另一个模块时,传递的是控制变量,被调用模块通过该控制变量的值选择执行模块内某一功能。那么也就是说,被调用的模块应具有多个功能。
标记耦合:耦合模块之间以数据结构传递(比如在java程序中,传递的就是一个对象)。
数据耦合:耦合模块之间有调用关系,传递的是简单数据类型的值(比如在java程序中,传递的就是一个基本数据类型的值)。
无直接耦合:指两个模块之间没有直接的关系,它们分别从属于不同模块的控制与调用,它们之间不传递任何信息。
内聚的分类
内聚可以分为以下七种类型,内聚性由高到低分别是:
功能内聚:指模块内的所有元素共同作用完成一个功能,缺一不可。
顺序内聚:指一个模块中的各个处理元素都密切相关于同一功能且必须顺序执行,前一功能元素的输出就是下一个功能元素的输入。
通信内聚:指模块内所有处理元素都在同一个数据结构上。
过程内聚:指一个模块完成多个任务,这些任务必须按指定的过程执行。
时间内聚:把需要同时执行的任务或动作组合在一起(如初始化模块)。
逻辑内聚:模块完成逻辑上相关的一组任务。
偶然内聚:指一个模块内的各处理元素之间没有任何联系或有松散的联系。