【软工视频】模块独立性

模块

“模块”一般具有如下三个基本属性:

功能:描述该模块实现什么功能;逻辑:描述该模块内部怎么做;状态:该模块使用时的环境和条件。

模块独立性

是指软件系统中每个模块只涉及软件要求的具体的子功能。一般采用两个准则度量模块独立性,即模块间耦合和模块间内聚。最终理想的结果是达到:高内聚低耦合

模块间的耦合

【软工视频】模块独立性

上图是各个耦合的耦合性和独立性排序。

非直接耦合(nondirect coupling):如果两个模块间没有直接的关系。

【软工视频】模块独立性

数据耦合(data coupling):一个模块访问另一个模块时,彼此之间是通过简单数据参数(不是控制参数、公共数据结构或外部变量)来交换输入、输出信息的。

标记耦合(stamp coupling): 通过参数表传递记录信息。

控制耦合(control coupling): 通过传送开关、标志、名字等控制信息,明显的控制选择另一模块。

【软工视频】模块独立性

外部耦合(external coupling):一组模块全部访问统一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息。

公共耦合(common coupling):一组模块都访问同一公共数据模块。公共耦合有两种情况:松散的和紧密的。合理使用,可以减少内存量。

【软工视频】模块独立性

内容耦合(content coupling):强耦合,一个模块可以直接调用另一个。如图,A模块直接进入了B模块,没有通过头部进入两模块有代码的重叠。或者一个模块有多个入口,也是content coupling。

【软工视频】模块独立性

 接口方式的不同:

直接调用--内容耦合

通过过程语句调用--其他类型耦合

数据项调用--数据耦合

变量名或数据结构调用-标记耦合

开关量或者逻辑量来调用--控制耦合

与外部数据-外部耦合

公共数据区域--公共耦合

接口之间没有任何联系-非直接耦合

通过上述,可以总结出:

多用数据耦合

少用控制耦合

限制公共耦合

禁用内容耦合

 模块间的内聚

【软工视频】模块独立性

功能内聚(functional cohesion):一个模块中各个部分都是完成某一具体功能必不可少的的组成部分,是不可分割的。

信息内聚(informational cohesion): 完成多个功能,各个功能都在同一数据结构上操作 ,每一项功能有一个唯一的入口点。

【软工视频】模块独立性

通信内聚(communication cohesion):一个模块内部功能部分都是用了相同的输入数据,或产生了相同的输出数据。

过程内聚(procedural cohesion): 使用流程图作为工具设计程序时,把流程图中的某一部分划出组成模块,就得到过程内聚模块。

时间内聚(classical cohesion):各个功能的执行与时间有关,通常要求所有功能必须在同一时间段内执行。

逻辑内聚(logical cohesion):把几种相关的功能组合在一起。

 【软工视频】模块独立性

巧合内聚(coincidental cohesion):各部分之间没有直接的联系,或者即使有联系,这种联系也很松散。 

【软工视频】模块独立性