软考 结构化开发(耦合与内聚)

213 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第14天,点击查看活动详情

今天是最后一天啦!榨汁杯!我来啦!!

可惜收不到快递QAQ

1. 耦合

耦合是模块之间相对独立性(互相连接的紧密程度)的度量。

取决于各个模块之间接口的复杂程度、调用模块的方式以及通过接口的信息类型等。

image.png

  1. 无直接耦合:耦合性最弱,模块独立性最高
  2. 数据耦合:传递的是简单的数据值
  3. 标记耦合:传递的是数据结构
  4. 控制耦合:传递的是控制变量,被调用模块通过该控制变量的值有选择的执行模块内的某一功能
  5. 外部耦合:通过软件之外的环境联结
  6. 公共耦合:通过一个公共数据环境相互作用关系的那些模块间的耦合
  7. 内容耦合:一个模块直接使用另一个模块的内部数据,或通过非正常入口转入另一个模块内部

2. 内聚

内聚是对一个模块内部各个元素彼此结合的紧密程度的度量。一个内聚程度高的模块(在理想情况下)应当只做一件事。

image.png

  1. 偶然内聚(巧合内聚):模块内的各处理元素没有任何联系
  2. 逻辑内聚:模块内执行若干个逻辑上相似功能,通过参数确定该模块完成哪一个功能
  3. 时间内聚:把需要同时执行的动作组合在一起形成的模块
  4. 过程内聚:一个模块完成多个任务,这些任务必须按指定的过程执行
  5. 通信内聚:模块内所有处理元素都在同一个数据结构上操作,或各处理使用相同的输入数据或者产生相同的输出数据
  6. 顺序内聚:一个模块内各个处理元素都密切相关于同一功能且必须顺序执行前一功能元素的输出是下一功能元素的输入
  7. 功能内聚:最强的内聚,模块内的所有元素共同作用完成一个功能,缺一不可

耦合性和内聚性是模块独立性的两个定性标准,在将软件系统划分模块时,应尽量做到高内聚、低耦合,提高模块的独立性。