系统设计基本原理-耦合与内聚

news2024/11/29 10:54:21

耦合

耦合是模块之间的相互独立性(互相连接的紧密程度)的度量,耦合取决于各个模块之间接口的复杂程度、调用模块的方式以及通过接口的信息类型等。

耦合类型

在这里插入图片描述

  1. 无直接耦合:指两个模块之间没有直接的关系,它们分别从属于不同模块的控制与调用,它们之间不传递任何信息。因此,模块间耦合性最弱,模块独立性最高。

  2. 数据耦合:指两个模块之间有调用关系,传递的只是简单的数据值,相当于高级语言中的值传递。

  3. 标记耦合:指两个模块之间传递的是数据结构。

  4. 控制耦合:指一个模块调用另一个模块时,传递的是控制变量,被调用的模块通过该控制变量的值有选择的执行模块内的某一个功能。因此,被调用模块应具有多个功能,那个功能起作用受调用模块控制。

  5. 外部耦合:模块之间通过软件之外的环境联合(如I/O将模块耦合到特定的设备、格式、通信协议上)时称为外部耦合。

  6. 公共耦合:指通过一个公共数据环境相互作用的那些模块间的耦合。

  7. 内容耦合:当一个模块直接使用另一个模块内部的数据,或通过非正常的入口转入另一个模块内部时,这种模块之间的耦合称为内容耦合。

内聚

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

内聚类型:

在这里插入图片描述

  1. 偶然内聚(巧合内聚):指一个模块内的各处理元素之间没有任何联系。
  2. 逻辑内聚:把模块内执行若干个逻辑上相似的功能,通过参数确定该模块完成那一个功能。
  3. 时间内聚:把需要同时执行的动作组合在一起形成的模块称为时间内聚模块。
  4. 过程内聚:指一个模块内完成多个任务,这些任务必须按照指定的过程执行。
  5. 通信内聚:指模块内的所有处理元素都在同一个数据结构上操作,或者各处理使用相同的输入数据或者产生相同的输出数据。
  6. 顺序内聚:指一个模块内的各个处理元素都密切相关于同一功能且必须顺序执行,前一个功能元素的输出就是下一个功能元素的输入。
  7. 功能内聚:这个是最强的内聚,指模块内的所有元素共同作用完成同一个功能,缺一不可。
耦合性和内聚性是模块独立性的两个定性标准,在将软件系统划分模块时,应尽量做到高内聚、低耦合,提高模块的独立性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/523919.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

k8s基础11——安全控制之RBAC用户授权、RBAC用户组授权、SA程序授权

文章目录 一、K8s安全框架1.1 鉴权1.1.1 HTTPS证书认证1.1.2 HTTP Token认证 1.2 授权1.3 准入控制1.4 集群四大角色 二、RBAC给用户授权(TLS)2.1 签发客户端证书2.2 生成kubeconfig授权文件2.2.1 手动生成2.2.2 脚本生成2.2.3 切换操作集群 2.3 定义RBA…

移动应用开发实验-内容提供者-ContentResolver的使用

文章目录 前言读取通讯录信息要求环境 具体实现主页面布局(activity_main.xml)关于RecyclerView库的相关问题添加RecyclerView库操作 解决报错Item布局(info.xml)添加访问权限编写实体类(ContactInfo.java)编写适配器(MyAdapter.java&#xf…

20 散列表的查找

散列表的查找 简介:散列表(也成哈希表)是一种高效的数据结构,他可以在平均复杂度为O(1)的情况下实现查找、插入和删除操作。 哈希表的基本思想是根据关键字的值来计算其应存储的位置。这个计算过程就是通过哈希函数来实现的。 根…

计算机视觉——day 91基于双网络的鲁棒特征高光谱目标检测(偏门且很水啊)

基于双网络的鲁棒特征高光谱目标检测 I. INTRODUCTIONII. 提出的方法A. 总体框架B.训练集构建C. Dual Networks III. EXPERIMENTSIV. 结论 I. INTRODUCTION 用于高光谱目标检测的深度网络训练通常面临样本有限的问题,在极端情况下,可能只有一个目标样本…

黑盒测试方法

1 等价类划分 1.1 定义 等价类划分法是一种典型的,并且是最基础的黑盒测试用例设计方法。采用等价类划分法时,完全不用考虑程序内部结构,设计测试用例的唯一依据是软件需求规格说明书。 所谓等价类,是输入条件的一个子集合&…

kali整体版本更新方法,为啥更新?

玩过kali都知道,如果不更新版本,那么安装某个软件总是有很多依赖版本问题,解决起来的确麻烦,这篇文章彻底解决这些问题。 1,更新源 国外源与国内源的选择 kali默认配置的是国外源,但国外源的下载速度非常慢…

基于容器和Kubernetes的应用无限扩容

基于应用负载动态管理CPU、内存等资源的使用是云原生架构的最佳实践之一,Kubernetes通过资源请求和限制以及HPA/VPA等机制,为云原生应用资源管理提供了很好的支持。原文: Infinite Scaling with Containers and Kubernetes[1] 如果没有足够资源让容器完成…

matlab第八章_Simulink简介

目录 Simulink简介 基本知识 Simulink组成 模块库简介 Simulink系统仿真 Stateflow建模与应用 Stateflow的定义 状态图编辑器 Stateflow流程图 Simulink简介 基本知识 Simulink是实现动态系统建模,仿真和分析的软件包,被广泛应用于线性系统&…

土地报征简介

报征概念: 土地报征是指国家为了人民整体利益出发,根据我国相关法律和法规的要求和流程, 将集体土地性质转化为国有土地性质,并给予被征地的对象给予合理的补偿和安置工作。报征4个价段: 1、组卷阶段 (1&…

Linux系统之top命令的基本使用

Linux系统之top命令的基本使用 一、top命令介绍二、检查本地环境1. 检查操作系统版本2. 检查系统内核版本 三、top命令的使用帮助1. top命令的选项2. top命令的交换命令 四、top显示信息解释1. top的第一行解释2. top的第二、三行信息解释3. top的第四、五行信息解释4. top的进…

Java 常用注解的使用

在Java中,注解(Annotation)是一种元数据,它提供了一种机制,可以将元数据与代码一起存储,并使其可用于编译器、解释器或其他工具的处理。注解可以在Java源代码中添加元数据,以提供更多的信息&…

【Linux】Linux基本指令(3)

一.时间的相关指令 date显示 单纯的输入 date 会以这种形式输出: 但其实这种形式我们看着是不太习惯的,我们可以指定形式输出: 格式为:date 选项 %H : 小时(00..23) %M : 分钟(00..59) %S : 秒(00..61) %X : 相当于 %H:%M:%S %d …

Qt扫盲-QPieSlice理论总结

QPieSlice理论总结 一、概述二、标签三、属性设置四、信号说明 一、概述 QPieSlice 类表示饼图中的单个QPieSlice。饼图QPieSlice有一个值和一个标签。将QPieSlice添加到饼图时,QPieSeries对象将自动计算QPieSlice的百分比,并与序列中所有QPieSlice的总…

Java SE(十一)之包装类(各种类型之间的转换)

文章目录 Object类 &Number类1.Object2.Number类 包装类,装箱,拆箱1.手动装箱/拆箱2.自动装箱/ 拆箱 应用——常见包装类1.Integer类2.Character类3.实战——各种类型之间的转换(1)int和Integer相互转换(2&#xf…

20230514-SmartChat测试效果图

E:\20230514-SmartChat测试效果图您好,我是SmartChat,新生代智能机器人,通过运用自然语言处理、机器学习和人工智能等高精尖技术,可以与您进行自然、流畅、有趣的对话,帮助您获取所需的信息和服务。无论您想要写商业计…

如何提高跨职能团队的绩效和成果

在50年代,当计算机仍被视为复杂的计算器时,西北互助人寿保险公司就计算机对未来业务的影响进行了研究。有趣的是,该公司的首席执行官为这项研究设立了一个不同寻常的团队——由来自多个部门的员工组成,每个人都看到了计算机在保险…

redis批处理任务,多线程 or pipeline

前言 工作中使用redis的时候遇到一个问题,如果我们要对存储在redis中的一批数据进行操作,为了加快处理的速度,我们一般有两种方式: 建立多个线程,使用多个连接发送请求使用redis提供的pipeline 引发了一个小思考&…

股票量价关系基础知识9----图解各阶段量价关系:价平量平

价平量平是指股价涨跌幅度不大,成交量持平,反映多空双方受不明朗因素困扰,均对后市走势持观望态度,投资者在此阶段不宜盲目入市,但具体到某一阶段又略有差异。 一、上涨初期的价平量平 (一)形态…

深度学习之图像分类(二):ZFNet

本专栏介绍基于深度学习进行图像识别的经典和前沿模型,将持续更新,包括不仅限于:AlexNet, ZFNet,VGG,GoogLeNet,ResNet,DenseNet,SENet,MobileNet&#xff0c…

SpringBoot 2.0 + Nacos + Sentinel 流控规则集中存储

前言 Sentinel 原生版本的规则管理通过API 将规则推送至客户端并直接更新到内存中,并不能直接用于生产环境。不过官方也提供了一种 Push模式,扩展读数据源ReadableDataSource,规则中心统一推送,客户端通过注册监听器的方式时刻监…