【60天备战2024年11月软考高级系统架构设计师——第21天:系统架构设计原则——高内聚低耦合】

在软件架构设计中,“高内聚低耦合”是至关重要的设计原则,它能够提高系统的可维护性、可扩展性和灵活性。理解并实践这一原则可以帮助系统架构师在设计过程中构建出健壮的系统。

什么是高内聚?

高内聚指的是模块内部的功能相关性强,模块内部的各个功能应紧密关联、协同工作。一个高内聚的模块通常有明确的职责,只负责完成一类具体任务,而不会涉及其他不相关的功能。这样设计的好处是模块内部的修改不会影响到其他模块,提升了系统的可维护性。

什么是低耦合?

低耦合指的是模块之间的依赖程度要尽可能低。低耦合的模块相互独立,彼此之间的改动不会对其他模块产生大的影响。通过减少模块之间的依赖性,系统在扩展和维护时更加灵活。

实现高内聚低耦合的策略
  1. 模块化设计:将系统功能划分为多个小模块,每个模块只处理一类相关功能。
  2. 接口隔离原则:使用接口和抽象类定义模块间的依赖,减少直接依赖具体实现。
  3. 关注点分离:把不同的功能职责分开,比如将业务逻辑、数据处理和用户接口等分别封装到不同的模块中。
  4. 事件驱动架构:通过事件机制解耦不同模块的交互,实现松耦合。
例题

例题 1:在系统设计中,为什么要追求“高内聚低耦合”?

A. 提高系统的计算性能
B. 增加代码的复杂性
C. 提高系统的可维护性和灵活性
D. 降低系统的开发时间

答案:C. 提高系统的可维护性和灵活性
解析:高内聚低耦合能够让系统的每个模块独立工作,减少模块间的依赖,从而提高系统的可维护性和灵活性。

例题 2:以下哪一项是“低耦合”设计的好处?

A. 模块之间的紧密连接
B. 增加系统的依赖性
C. 降低模块间的依赖性
D. 模块内部功能松散

答案:C. 降低模块间的依赖性
解析:低耦合设计强调模块之间的独立性,减少模块间的依赖,可以使系统更加灵活,便于扩展和维护。

例题 3:高内聚设计的主要目标是什么?

A. 将多个无关的功能放在同一个模块中
B. 减少模块内部功能的关联
C. 确保模块内部的功能紧密相关
D. 增加模块间的依赖

答案:C. 确保模块内部的功能紧密相关
解析:高内聚强调模块内部的功能要紧密相关,模块的职责应清晰明确,以提高代码的可维护性和可读性。


例题 4:以下哪种策略可以帮助实现低耦合?

A. 在模块之间传递全局变量
B. 使用接口或抽象类来定义模块之间的依赖
C. 将所有功能集中在一个模块中
D. 允许模块之间频繁调用彼此的内部方法

答案:B. 使用接口或抽象类来定义模块之间的依赖
解析:通过使用接口或抽象类来定义模块之间的交互,可以减少模块对具体实现的依赖,从而实现低耦合设计。


例题 5:下列哪一项最符合“高内聚低耦合”的设计原则?

A. 所有模块共享相同的数据存储
B. 每个模块有清晰的职责和最少的外部依赖
C. 每个模块依赖于多个其他模块的内部实现
D. 各个模块间的功能相互交织,无法独立修改

答案:B. 每个模块有清晰的职责和最少的外部依赖
解析:高内聚低耦合设计强调模块职责清晰,并减少模块间的依赖,从而使得每个模块可以独立开发和维护。


例题 6:当系统需要频繁修改业务逻辑时,使用高内聚低耦合的设计原则有什么优势?

A. 所有模块都需要同时修改,增加一致性
B. 可以仅修改受影响的模块,减少其他模块的改动
C. 增加了系统的复杂度,降低可维护性
D. 模块之间的强依赖会帮助更快定位问题

答案:B. 可以仅修改受影响的模块,减少其他模块的改动
解析:高内聚低耦合的设计使得系统的某个模块修改时,不会影响其他模块,从而降低了系统维护的成本和风险。

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

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

相关文章

【JAVA开源】基于Vue和SpringBoot的校园美食分享平台

本文项目编号 T 033 ,文末自助获取源码 \color{red}{T033,文末自助获取源码} T033,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…

多层感知机paddle

多层感知机——paddle部分 本文部分为paddle框架以及部分理论分析,torch框架对应代码可见多层感知机 import paddle print("paddle version:",paddle.__version__)paddle version: 2.6.1多层感知机(MLP,也称为神经网络&#xff0…

Visual Studio-X64汇编编写

纯64位汇编: includelib ucrt.lib includelib legacy_stdio_definitions.lib includelib user32.libextern printf:proc extern MessageBoxA:proc.data szFormat db "%s",0 szHello db "HelloWorld",0 szRk db "123",0.code start p…

鸿蒙生态应用

鸿蒙生态应用开发核心概念 HarmonyOS 应用:使用 HarmonyOS SDK 开发的应用程序,能够在华为终端设备 (如:手机、平板等)上运行,其有两种形态: ⚫ 传统方式的需要安装的 App。 ⚫ 轻量级&#xf…

碎纸片的自动拼接复原技术

摘要:破碎文件的拼接在司法物证复原、历史文献修复以及军事情报获取等领域都有着重要的应用。目前发现对碎纸片的拼接大部分由人工完成,准确率较高,但耗费大量人力财力及时间,效率很低。随着计算机技术的发展,人们试图…

java 解析excel

在Java中解析Excel文件,可以使用Apache POI库。以下是一个简单的例子,展示如何使用Apache POI读取一个Excel文件(假设为.xlsx格式)的内容。 首先,确保你的项目中包含了Apache POI的依赖。如果你使用Maven,…

结构体易忘点

结构体初始化 当我们去初始化一个结构体的时候,我们常常会按变量顺序初始化,但其实也可以不按顺序,同时也可以部分数据初始化。 结构体对齐 结构体里面的成员有一定的对齐规则,他不是每一个空间都存着有效数据的,有些…

综合时如何计算net delay?

在PR阶段,互连线的延迟可以通过抽取net的rc值计算得到。而在综合阶段,因为没有实际的布局布线,便无法去抽取net上的rc值。那么,线负载模型(wire load model)便派上用场了。 所谓线负载模型,就是…

力扣上刷题之C语言实现(数组)

一. 简介 本文记录一下力扣的逻辑题。主要是数组方面的,使用 C语言实现。 二. 力扣上刷题之C语言实现 1. 两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target的那 两个 整数,并返回它们的数…

uni-app安装插件

1.通过插件市场安装https://ext.dcloud.net.cn 打开HBuilderX编辑器。 点击菜单栏中的“工具”->“插件安装”。 这里会看到已安装插件和安装新插件两个选项卡,点击安装新插件, 能看到一些核心插件,如果所需要的插件在核心插件里面有&…

PyCharm和VS Code 安装通义灵码,可本地安装包安装,解决插件安装不上问题

PyCharm和VS Code 安装通义灵码,可本地安装包安装,解决插件安装不上问题 PyCharm、VS Code 安装通义灵码介绍主要应用场景支持编程语言安装指南JetBrains IDEs 中安装指南步骤 1:准备工作步骤 2:在 JetBrains IDEs 中安装通义灵码…

【快速笔记】freeRTOS

第十八章 低功耗Tickless模式 睡眠模式:__WFI 中断唤醒 __WFE 事件唤醒 CPU CLK关闭 停止模式:RAM保持 中断唤醒 当 STM32F103 处于休眠模式的时候 Cortex-M3 内核停止运行,但是其他外设运行正常, 比如 NVIC、SRAM 等。 休眠模式的功耗比其他…

集运系统核心功能模块:打造高效集运仓日常管理

在跨境电商的快速发展背景下,集运业务作为物流环节中的重要一环,其效率和管理的精细化程度直接影响着客户体验和企业效益。集运系统作为提升管理效率的关键工具,需要具备一系列核心模块来确保业务的顺畅运行。以下是集运系统在日常管理中不可…

汇总:工业导管生产中 17种检测仪进行品质检测

定义 1)泛指做疏导用的管子。2)工业用导管即钻孔灌注桩水下浇灌砼导管。混凝土灌注导管用于大型的桥梁工程、中铁工程、公路工程、水电工程、高层地基的钻孔灌注桩的水下浇筑使用。 种类 工业导管种类繁多,主要包括钢管、铜管、不锈钢管、PVC…

golang操作mysql利器-gorm

1、傻瓜示例 GORM通过将数据库表中的数据映射到面向对象的模型中,简化了数据库操作,使得开发者可以很方便的使用代码来操作数据库,而无需编写SQL语句。 目前有个mysql表:miniprogram_orders,其存储了所有用户对应的订…

2023年全国研究生数学建模竞赛华为杯B题DFT类矩阵的整数分解逼近求解全过程文档及程序

2023年全国研究生数学建模竞赛华为杯 B题 DFT类矩阵的整数分解逼近 原题再现: 一、问题背景   离散傅里叶变换(Discrete Fourier Transform,DFT)作为一种基本工具广泛应用于工程、科学以及数学领域。例如,通信信号…

基于深度学习的手势识别算法(论文复现)

基于深度学习的手势识别算法(论文复现) 本文所涉及所有资源均在传知代码平台可获取 文章目录 基于深度学习的手势识别算法(论文复现)概述算法原理核心逻辑效果演示使用方式 概述 本文基于论文 Simple Baselines for Human Pose Es…

Sublime Text 3 相关设置

打开设置 { “font_size”: 16, // 字体大小 “save_on_focus_lost”: true, // 自动保存 }

YOLOv8改进系列,YOLOv8 Neck结构引入BiFPN

摘要 模型效率在计算机视觉中变得越来越重要。本文系统地研究了神经网络架构设计选择用于目标检测,并提出了几项关键优化以提高效率。首先,提出了一种加权双向特征金字塔网络(BiFPN),它允许轻松快速的多尺度特征融合;其次,我们提出了一种复合缩放方法,该方法同时均匀地…

MATLAB 在数学建模中的深入应用:从基础到高级实践

目录 前言 一、MATLAB基础知识 1.1 MATLAB工作环境简介 1.1.1 命令窗口(Command Window) 1.1.2 工作区(Workspace) 1.1.3 命令历史(Command History) 1.1.4 编辑器(Editor) 1…