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

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

3天内不再提示

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

星星科技指导员 来源:嵌入式计算设计 作者:JAY THOMAS 2022-11-01 11:15 次阅读

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

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

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

• 减少变更

的影响• 简化软件重用

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

审核编辑:郭婷

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

    关注

    33

    文章

    2325

    浏览量

    67507
  • 控制系统
    +关注

    关注

    41

    文章

    5966

    浏览量

    108738
收藏 人收藏

    评论

    相关推荐

    电机的模块化分析

    电子发烧友网站提供《电机的模块化分析.pdf》资料免费下载
    发表于 04-19 09:18 0次下载

    模块化机房:数据中心的未来

    随着数字化转型加速,数据中心已成为企业运营的核心。传统的数据中心面临空间利用不足、能源效率低下、扩展性差和维护成本高等问题。模块化机房应运而生,它不仅克服了传统设计的局限,还为数据中心
    的头像 发表于 03-12 17:26 309次阅读

    模块化UPS是什么?模块化UPS电源并机的优点

    模块化UPS是什么?模块化UPS电源并机的优点  模块化UPS是一种将UPS电源拆分为多个独立模块的解决方案。每个模块包括一个或多个电池组、
    的头像 发表于 01-10 15:16 626次阅读

    什么是模块化锂电UPS?模块化UPS支持锂电池吗?

    锂电池具有较高的能量密度、长寿命和快速充电能力,因此成为了UPS供电系统的理想选择。 模块化UPS是指将整个UPS系统分解成若干模块,每个模块都具有自己的电池组、逆变器和控制电路。这样
    的头像 发表于 01-09 15:51 388次阅读

    单片机C语言模块化编程资料

    提到 C 语言源文件,大家都不会陌生。因为我们平常写的程序代码几乎都在这个 XX.C 文件里面。编译器也是以此文件来进行编译并生成相应的目标文件。作为模块化编程的组成基础,我们所要实现的所有
    发表于 09-28 07:23

    keysight是德 E4360A 模块化太阳能电池阵列仿真器主机

    keysight是德 E4360A 模块化太阳能电池阵列仿真器主机 主要特性与技术指标最大总输出功率(=所有模块输出功率之和) 1200 W(在 200 - 240 VAC 输入条
    发表于 09-12 10:03

    提高模块化UPS可靠性的方法

    数据中心在线式UPS市场中,工频机、高频机和模块机是三种常见的机型,模块化UPS以其下特性逐渐成为行业关注的焦点: ①功率模块可实现在线热插拔,在配电容量和蓄电池后备时间
    的头像 发表于 08-28 11:02 937次阅读
    提高<b class='flag-5'>模块化</b>UPS可靠性的方法

    67.067 模块化 模块化介绍

    模块代码
    充八万
    发布于 :2023年07月21日 05:31:03

    73.073 模块化 CommonJS模块化规范

    模块
    充八万
    发布于 :2023年07月21日 04:58:53

    68.068 模块化 模块化初体验

    模块管理工具
    充八万
    发布于 :2023年07月21日 04:53:09

    70.070 模块化 导入文件模块

    模块程序
    充八万
    发布于 :2023年07月21日 04:20:59

    智能设备控制模块化执行器开源项目

    电子发烧友网站提供《智能设备控制模块化执行器开源项目.zip》资料免费下载
    发表于 07-12 11:46 0次下载
    智能设备<b class='flag-5'>控制</b>的<b class='flag-5'>模块化</b>执行器开源项目

    PLC模块化和结构化编程实例

    模块化编程中OB1起着主程序的作用,FC或FB控制着不同的过程任务,相当于主循环程序的子程序。模块化编程中被调用块不向调用块返回数据
    的头像 发表于 07-10 14:42 626次阅读
    PLC<b class='flag-5'>模块化</b>和结构化编程实例

    使用DeepCover安全微控制器提高模块化求幂的速度

    本应用笔记描述了当使用具有模块化算术加速器(MAA)的MAXQ微控制器时,如何将模运算速度提高50%以上。
    的头像 发表于 06-16 11:45 453次阅读

    回应模块化机房和传统机房的区别-科兰

    如今数据中心的兴起使企业对机房的要求越来越高,运用比较广泛的就是模块化机房与普通机房,那么模块化机房与普通机房的区别有哪些呢?接下跟着科兰小编一起来了解一下吧。 模块化机房和传统机房的
    的头像 发表于 06-05 11:14 459次阅读