前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >软考高级架构师:内聚类型和耦合类型

软考高级架构师:内聚类型和耦合类型

作者头像
明明如月学长
发布2024-05-25 10:27:27
640
发布2024-05-25 10:27:27
举报

一、AI 讲解

在软件设计中,耦合(Coupling)和内聚(Cohesion)是两个非常重要的概念。它们描述了模块之间和模块内部的关系,理解这些概念有助于设计出高质量的软件系统。

在这里插入图片描述
在这里插入图片描述
耦合(Coupling)

耦合是指模块之间的依赖程度。耦合度越低,模块之间的依赖性越小,系统的可维护性和可扩展性越好。根据耦合的紧密程度,可以将耦合分为以下几种类型:

  1. 内容耦合(Content Coupling)
    • 一个模块直接修改或依赖另一个模块的内部数据或控制信息。
    • 耦合度最高,极其不推荐。
  2. 公共耦合(Common Coupling)
    • 多个模块共享同一组全局数据。
    • 如果全局数据发生变化,所有依赖这些数据的模块都可能受到影响。
  3. 控制耦合(Control Coupling)
    • 一个模块通过参数传递控制信息来影响另一个模块的执行流程。
    • 这会导致模块之间的强依赖,不利于模块的独立性。
  4. 外部耦合(External Coupling)
    • 模块之间依赖于外部接口或数据格式。
    • 这种耦合往往不可避免,但应尽量规范外部接口和数据格式。
  5. 标记耦合(Stamp Coupling)
    • 模块之间通过传递结构化的数据(如对象或结构体)进行交互。
    • 如果传递的数据结构发生变化,依赖这些数据的模块也需要修改。
  6. 数据耦合(Data Coupling)
    • 模块之间仅通过简单的数据参数(如基本类型)进行交互。
    • 耦合度最低,推荐使用。
内聚(Cohesion)

内聚是指模块内部各个元素之间的相关程度。内聚度越高,模块内部的元素越紧密相关,模块的职责越单一。根据内聚的紧密程度,可以将内聚分为以下几种类型:

  1. 偶然内聚(Coincidental Cohesion)
    • 模块内部的元素之间没有明显的关联,仅仅是为了完成某种目的而放在一起。
    • 内聚度最低,不推荐。
  2. 逻辑内聚(Logical Cohesion)
    • 模块内部的元素在逻辑上相关,但执行的任务可能不同。
    • 例如,一组执行不同操作的函数被放在同一个模块中。
  3. 时间内聚(Temporal Cohesion)
    • 模块内部的元素在时间上相关,即在同一时间点执行。
    • 例如,一组初始化任务被放在同一个模块中。
  4. 过程内聚(Procedural Cohesion)
    • 模块内部的元素在执行顺序上相关,即执行某个特定过程的各个步骤。
    • 例如,处理某个请求的各个步骤被放在同一个模块中。
  5. 通信内聚(Communicational Cohesion)
    • 模块内部的元素操作同一组数据或资源。
    • 例如,读写同一个文件的函数被放在同一个模块中。
  6. 顺序内聚(Sequential Cohesion)
    • 模块内部的元素需要按照特定顺序执行,一个元素的输出是下一个元素的输入。
    • 例如,处理流水线中的各个阶段被放在同一个模块中。
  7. 功能内聚(Functional Cohesion)
    • 模块内部的元素共同完成一个单一且明确的功能。
    • 内聚度最高,最为理想。
总结

耦合和内聚是衡量软件设计质量的重要指标。理想的设计应当尽量降低模块之间的耦合,同时提高模块内部的内聚。低耦合和高内聚有助于提升系统的可维护性、可扩展性和重用性。

二、题目

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-05-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、AI 讲解
    • 耦合(Coupling)
      • 内聚(Cohesion)
        • 总结
        • 二、题目
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档