我是荔园微风,作为一名在IT界整整25年的老兵,今天总结一下Windows编辑开发中的内聚性、内聚类型、耦合性和耦合类型。
软件设计的基本原则是信息隐蔽性与模块独立性。
模块设计目标是高内聚,低耦合。
然后记住下面这张神图,一张图可抵千言万语。
一、内聚。
内聚是一个模块内部各个元素彼此结合的紧密程度的度量。一个模块内部各个元素之间的联系越紧密,则它的内聚性就越高,相对地,它与其他模块之间的耦合性就会降低,而模块独立性就越强。
内聚性按强度从低到高有7种类型如下。
偶然内聚(最弱)
又称巧合内聚,模块的各成分之间毫无关系
逻辑内聚
逻辑上相关的功能被放在同一模块中。如一个模块读取各种不同类型外设的输入
时间内聚
模块完成的功能必须在同一时间内执行(如系统初始化),但这些功能只是因为时间因素关联在一起
过程内聚
模块内部的处理成分是相关的,而且这些处理必须以特定的次序执行
通信内聚
模块的所有元素都操作同一个数据集或生成同一个数据集
顺序内聚
模块的各个成分和同一个功能密切相关,而且一个成分的输出作为另一个成分的输入
功能内聚(最强)
模块的所有成分对于完成单一的功能都是必需的,则称为功能内聚
内聚性参考记忆口诀为:“偶逻时过通顺功”。
也可以记作:偶然巡逻的时候,沿路走过去打了拳法,拳法打后通顺了我气,真是好功夫啊。
怎么样,用这个方法好记吧,哈哈。
二、耦合
耦合是各模块间结合紧密度的一种度量。
耦合性由低到高有7种类型如下。
非直接耦合(最低)
模块之间没有直接关系,模块之间的联系完全通过主模块的控制和调用来实现
数据耦合
模块访问,通过简单数据参数来交换输入、输出信息
标记耦合
一个数据结构的一部分借助于模块接口被传递
控制耦合
一个模块通过传送开关、标识、名字等控制信息明显地控制选择另一个模块的功能
外部耦合
一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息
公共耦合
多个模块访问同一个全局数据区
内容耦合(最高)
如果发生下列情形,两个模块间就发生了内容耦合:(1)一个模块直接访问另一个模块的内部数据。(2)一个模块不通过正常入口转到另一模块内部。(3)两个模块有一部分程序代码重叠(只可能出现在汇编语言中)。(4)一个模块有多个入口
耦合性参考记忆口诀为:“非数标控外公内”。
也可以记作:如果非要用数据标准来控制对外的和对公的内部工作流程,那一定是很严格的了。
怎么样,用这个方法好记吧,哈哈。
作者简介:荔园微风,1981年生,高级工程师,浙大工学硕士,软件工程项目主管,做过程序员、软件设计师、系统架构师,早期的Windows程序员,Visual Studio忠实用户,C/C++使用者,是一位在计算机界学习、拼搏、奋斗了25年的老将,经历了UNIX时代、桌面WIN32时代、Web应用时代、云计算时代、手机安卓时代、大数据时代、ICT时代、AI深度学习时代、智能机器时代,我不知道未来还会有什么时代,只记得这一路走来,充满着艰辛与收获,愿同大家一起走下去,充满希望的走下去。