0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

模块化满足数据和控制耦合

星星科技指导员 来源:嵌入式计算设计 作者:JAY THOMAS 2022-11-01 11:15 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

自软件工程学科诞生以来,模块化一直是永恒的口号之一。这种结构化设计和功能分解方法将软件分解为具有明确接口的明确定义的功能单元或模块。这种方法的成熟价值是高质量的软件。但是,当您采用模块化时,软件测试必须检查模块组合在一起并交互的方式。这种测试被称为“数据和控制耦合”。

让我们来了解一下如何使用软件系统中的控制和数据耦合来评估系统的模块化,并提供宝贵的好处,包括:

• 提高软件可测试性• 提高软件可维护性

• 减少变更

的影响• 简化软件重用

术语“内聚”描述了模块化软件组件的属性。具有明确定义的接口并独立于其他模块运行的模块被认为具有高水平的内聚力。例如,命令行 MD5 加密哈希生成器是演示高级别内聚的软件组件的示例。输入是任何描述的数据对象(例如文件),输出是base-64哈希表示。由于哈希生成器采用单个输入,提供单个输出并且没有外部依赖项,因此它被认为表现出高水平的内聚力。

光谱的另一端是飞行控制系统。这些高度依赖于飞机的当前状态(例如,飞机是否在地面上)和传入的飞行数据流(例如,空速、高度、姿态等),因此具有低水平的内聚力。

凝聚力会显著影响任何试图从一个系统中提取软件模块以便在另一个系统中重用的人,他们会很乐意告诉你关于阻碍的隐藏依赖关系的战争故事。问题就在这里:如果模块不是真正内聚的,那么怎么可能在它的所有依赖项的上下文中测试每个模块呢?为此,您必须了解软件模块之间存在的耦合。这种耦合提供了一种衡量软件内聚力的方法,还提供了可用于评估和提高软件质量的指标。

耦合的概念在1980年Meiler Page-Jones的《结构化系统设计实用指南》一书中定义为“一个模块对另一个模块的依赖程度;具体来说,衡量一个模块中的缺陷在另一个模块中显示为缺陷的可能性,或者一个模块中的更改需要更改另一个模块的可能性。

他确定了耦合的两种基本风格,并将它们定义为:

• 控制耦合 - 一种耦合类型,其中一个模块将信息传达给另一个模块,以明确影响后者

• 数据耦合 - 一种耦合形式,其中一个模块将信息传达给另一个模块

让我们看一个例子来阐明两者之间的差异。

飞机发动机控制系统消耗高度和空速等空气数据信息,但是当飞机在地面和空中时,使用不同的控制算法。选择使用哪种算法由起落架系统的“车轮重量”信号决定,该信号指示飞机是否在地面上。在此示例中,发动机控制系统对高度和空速数据流的依赖性表明与提供它们的系统存在很强的数据耦合。同样,“车轮上的重量”信号表示发动机控制系统和起落架系统之间的强控制耦合。

耦合指标可用于在整个软件设计和验证过程中提高软件质量。目的是表明软件模块仅以软件设计预期的方式相互影响,确保没有计划外、异常或错误的行为。在设计过程中记录数据和控制耦合提供了一组在软件集成过程中进行测试的要求。同样,确保在软件测试期间执行模块之间的数据和控制耦合,表明软件的集成和架构得到了充分验证。

许多准则,例如定义民用机载系统创建适航法规的DO-178C标准,要求对安全关键软件进行控制和数据耦合评估,以确保满足这些设计,集成和测试目标。同样,英国国防部标准 00-55“国防设备中安全相关软件的要求”要求使用控制和数据耦合等指标来评估软件模块化。

测量控制和数据耦合是通过控制和数据流分析的组合来实现的。控制流分析在调用层次结构的程序和单个过程上执行。

数据流分析通过源代码跟踪变量,并报告任何异常使用。此检查在过程级别和作为系统范围分析的一部分执行。这是一种非常强大的技术,不仅可以为数据耦合评估提供基础,还可以检测其他严重问题,例如在初始化之前使用的变量或在其边界之外访问的数组。

尽管从命名中很容易假设控制流分析提供了控制耦合和数据耦合的数据流分析的可见性,但事实并非如此。控制流和数据流分析对于评估控制和数据耦合都是必要的。

无论正在开发的软件是否对安全至关重要,通过控制和数据耦合来测量软件模块的内聚力都有助于提高软件可测试性和可维护性,同时减少变更的影响,简化软件重用。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 发动机
    +关注

    关注

    33

    文章

    2725

    浏览量

    72879
  • 控制系统
    +关注

    关注

    41

    文章

    6989

    浏览量

    114388
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    MC68334:32位模块化控制器的技术剖析与应用潜力

    MC68334:32位模块化控制器的技术剖析与应用潜力 在电子工程领域,高性能、高集成度的微控制器一直是推动创新的核心力量。MC68334作为一款32位模块化
    的头像 发表于 04-09 10:30 178次阅读

    深度剖析MC68331:32位模块化控制器的卓越之选

    富的功能,成为了众多应用场景下的理想选择。今天,我们就来深入剖析一下MC68331的强大特性和技术细节。 文件下载: MC68331CAG16.pdf 一、MC68331概述 MC68331是一款高度集成的32位微控制器,它将高性能的数据处理能力与强大的外设子系统完美结合
    的头像 发表于 04-09 10:15 166次阅读

    LuatOS 系统框架的模块化设计原理

     LuatOS 的设计核心在于高度模块化与松耦合架构。系统将硬件驱动、通信协议、定时任务等封装为独立模块,通过统一的注册与回调机制接入主事件循环。这种设计不仅提升了代码复用率,也使得开发者可以按需
    的头像 发表于 02-03 15:56 288次阅读
    LuatOS 系统框架的<b class='flag-5'>模块化</b>设计原理

    端到端与模块化自动驾驶的数据标注要求有何不同?

    [首发于智驾最前沿微信公众号]自动驾驶技术路径的每一次技术转向,都伴随着底层数据处理逻辑的彻底重构。过去,智驾系统普遍依赖模块化设计,将驾驶任务拆解为感知、预测、规控等独立环节;而今,以端到端技术为
    的头像 发表于 01-27 09:48 1118次阅读
    端到端与<b class='flag-5'>模块化</b>自动驾驶的<b class='flag-5'>数据</b>标注要求有何不同?

    模块化高精度铷原子钟存在的意义

    ”到“可重构系统”的跨越,为现代高精度时频应用提供了全新模式。 一、模块化设计的本质突破:从“整机”到“模块” 一般铷原子钟的功能集成度高且采用整机形式,而SYN3306的模块化架构可将设备划分为原子物理
    的头像 发表于 01-21 19:09 267次阅读

    鼎阳科技推PXIe模块化示波器、PXIe模块化矢量网络分析仪产品组合,构建新一代模块化、软件定义的测试平台

    新品发布 2026年1月12日,鼎阳科技全新推出PXIe模块化示波器、PXIe模块化矢量网络分析仪和USB矢量网络分析仪三款新品,并同步推出三款PXIe嵌入式控制器与PXIe混合机箱。基于模块
    的头像 发表于 01-14 10:35 6.6w次阅读
    鼎阳科技推PXIe<b class='flag-5'>模块化</b>示波器、PXIe<b class='flag-5'>模块化</b>矢量网络分析仪产品组合,构建新一代<b class='flag-5'>模块化</b>、软件定义的测试平台

    探索Amphenol RJE1Y系列模块化电缆组件的卓越性能

    探索Amphenol RJE1Y系列模块化电缆组件的卓越性能 作为电子工程师,在设计项目中,选择合适的电缆组件至关重要。今天,我们来深入了解Amphenol的RJE1Y系列模块化电缆组件,看看它能
    的头像 发表于 12-11 14:25 516次阅读

    modbus消息帧的模块化架构介绍

    MODBUS消息帧的模块化架构 1. 地址字段:通信寻址的核心 Modbus RTU协议采用单字节(8位)地址字段,支持1-247个从站设备(0保留为广播地址)。 广播机制:地址0的报文会被所有从站
    发表于 11-17 08:15

    工业人速看!什么是耦合模块?什么是插片式I/O模块

    什么是耦合模块耦合模块,在模块化I/O系统中,可以理解为 “通信管理中枢” 或 “大脑”。 耦合
    的头像 发表于 11-03 09:31 975次阅读
    工业人速看!什么是<b class='flag-5'>耦合</b>器<b class='flag-5'>模块</b>?什么是插片式I/O<b class='flag-5'>模块</b>?

    新品发布|LRM模块化高速连接器

    认证发明专利。该款连接器是一种模块化、高性能高速率的系统连接器产品,多腔体模块化设计可以支持多种信号类型,射频、高频高速、光信号及电源的混合传输,不同的腔体可以灵
    的头像 发表于 10-20 17:02 2355次阅读
    新品发布|LRM<b class='flag-5'>模块化</b>高速连接器

    新品推荐|模块化集成式高速连接器

    LRM连接器随着电子技术的快速发展,在电力传输、工业自动、航空航天等领域,对高效、稳定、可靠的电气连接解决方案的需求日益增长。因此日晟万晟开发了新一代模块化集成式高速连接器-LRM系列,该款连接器
    的头像 发表于 07-07 18:15 1747次阅读
    新品推荐|<b class='flag-5'>模块化</b>集成式高速连接器

    鸿蒙5开发宝藏案例分享---模块化设计案例分享

    鸿蒙模块化开发大揭秘!官方隐藏案例实战指南 大家好呀! 最近在HarmonyOS文档里挖到一个宝藏——官方其实藏了大量模块化设计案例!很多小伙伴可能没注意到,今天我就带大家手把手拆解这些黄金实践,附
    发表于 06-12 16:17

    原理图模块化,BOM 物料位号处理

    原理图模块化,把常用的模块保存成一个PART(在TOOL 菜单下 选择 Generate Part)。保存成OLB格式。使用的时候,就像使用元器件一样,从库里面拖出来直接放到原理图上即可。 问题是
    发表于 06-09 19:27

    什么是模块化计算机?搞清楚用途和应用场景,别再瞎选了!

    如果你是搞工业自动、医疗设备、交通控制,甚至是军事装备的,那你大概率已经听过“模块化计算机”这个词。要是你还没了解,那这篇文章就是为你写的。作为一个在工业计算领域摸爬滚打十多年的从业者,我可以很负责任地说:
    的头像 发表于 06-04 11:00 1188次阅读
    什么是<b class='flag-5'>模块化</b>计算机?搞清楚用途和应用场景,别再瞎选了!

    如何用模块化仪器高效测试嵌入式微控制器?

    从冰箱到飞机,嵌入式微控制器如何确保稳定运行?面对复杂的混合信号与串行协议,工程师如何快速验证与调试?本文揭秘模块化仪器的全能测试方案——数字仪、任意波形发生器、数字I/O模块联动执
    的头像 发表于 05-13 15:06 772次阅读
    如何用<b class='flag-5'>模块化</b>仪器高效测试嵌入式微<b class='flag-5'>控制</b>器?