主要内容

本页采用了机器翻译。点击此处可查看英文原文。

从度量盘迁移到模型可维护性仪表盘

模型可维护性仪表板从工程中的模型设计工件收集度量数据,以帮助您评估设计的大小、架构和复杂性。如果您目前仅使用度量仪表板分析模型的大小、架构和复杂度,那么您可以改用模型可维护性仪表板模型可维护性仪表板无需编译模型即可收集度量,并自动识别因工程变更而过时的度量结果。您可以为模型创建一个工程,修复工件可追溯性问题,并更新用于收集和显示度量结果的代码,从而迁移到模型可维护性仪表板

度量仪表板模型可维护性仪表板度量结果之间存在差异。这些差异是意料之中的,因为这些仪表盘使用不同的度量,并且计算度量结果的方式也不同。有关各项度量的比较,请参阅 选择要收集的度量

模型可维护性仪表板不支持度量仪表板的所有功能。有关详细信息,请参阅限制。如果您正在使用这些功能之一,则应继续使用度量仪表板

模型可维护性仪表板的优势

度量仪表板在单个模型或子系统上运行,需要对许多度量进行计算密集型的基于编译的分析。

模型可维护性仪表板可以分析工程中的 Simulink® 模型、Stateflow® 图和 MATLAB® 代码,以帮助您确定设计中的某些部分是否过于复杂,需要重构。模型可维护性仪表板可以:

  • 无需编译模型即可收集度量。

  • 追踪模型与相关设计工件之间的关系。

  • 自动识别因工程变更而过时的度量结果。

  • 汇总软件组件中各个软件单元的度量。您可以使用工程标签对单元和组件进行分类,从而明确指定聚合边界。

  • 提供度量仪表板中没有的度量,例如 霍尔斯特德难度。有关度量的概述,请参阅 模型可维护性度量

  • 生成包含度量结果的报告。

此外,模型可维护性仪表板使用与模型测试仪表板相同的仪表板用户界面和度量 API。

有关仪表板度量和结果的概述,请参阅 分析度量结果、监控进度并找出问题

如何迁移到模型可维护性仪表板

您可以按照以下步骤迁移到模型可维护性仪表板:为您的模型设置一个工程,修复工件可追溯性问题,并更新您用于收集和显示度量结果的代码。

创建并打开工程

要使用模型可维护性仪表板,您的模型必须位于一个工程中。工程文件夹和引用的工程文件夹定义了仪表板度量分析的工件范围,并帮助仪表板检测度量结果何时过时。如果您已经有一个包含模型的工程,请打开该工程。否则,您可以直接从模型创建工程,或者创建一个空工程。有关详细信息,请参阅创建工程以使用模型设计和模型测试仪表板

打开仪表盘并启用工件追踪

打开工程后,打开模型可维护性仪表板。在工程选项卡的工具部分中,点击模型设计仪表板

首次打开工程仪表板时,将打开“启用工件跟踪”对话框,提示您为该工程启用工件跟踪。该仪表盘使用工件追踪来创建数字线程,以监控工程的变化并确定这些变化是否使度量结果失效。点击启用并继续,为工程创建数字线索。

仪表盘窗口打开,并自动打开工程中某个模型的模型可维护性仪表盘选项卡。仪表板窗口提供了一个集中位置,您可以在其中打开工程中模型的仪表板,查看度量​​结果,分析受影响的工件,并生成有关工程中工件的质量和合规性的报告。有关详细信息,请参阅使用仪表盘分析您的工程

审查单元和组件

您的单位和组件显示在模型可维护性仪表板工程面板中。单元是软件架构中的功能实体,您可以独立执行和测试它,也可以将其作为更大系统测试的一部分来执行和测试。组件是将多个可测试单元整合在一起的实体。默认情况下,仪表板将工程文件夹中的每个 Simulink 模型视为一个单元,将每个 System Composer™ 架构模型视为一个组件。该仪表板将模型分为单元和组件,因为软件开发标准(例如 ISO 26262-6)定义了单元测试的目标。有关信息,请参阅 将模型按层级结构分类为组件或单元

如果要从仪表板中排除某些模型,请通过在工程中标记哪些模型是单元或组件,并配置仪表板以识别该标签来指定这些模型,如 将模型指定为组件和单元 所示。如果您期望某个模型出现在工程面板中,但它没有出现,请参阅 修复工件问题

修复工件问题

该仪表板会查找工程中的工件问题,这些问题会导致信息未保存、可移植性问题或工件之间关系不明确。这些问题可能导致某些工件无法显示在仪表盘中,从而导致度量结果不正确。您可以使用可追溯性选项卡上的工件问题按钮来调查工件问题。仪表盘工具栏中的警告图标 和错误图标 指示工件问题。点击可追溯性选项卡,然后点击工件问题按钮,即可调查问题。有关如何查看工件问题的信息,请参阅 在工程中查看工件问题。有关如何修复工件问题的信息,请参阅 解决缺失的工件、链接和结果

收集仪表盘结果

模型可维护性仪表板从工程中的模型设计工件收集度量数据,以帮助您评估设计的大小、架构和复杂性。仪表板无需编译模型即可收集这些度量,并且当工程中的工件发生变化时,可以自动识别过时的度量结果。

要查看有关度量的信息以及模型可维护性仪表板如何计算度量值,请指向小组件,然后指向小组件右上角的三个点,并点击帮助图标 。有关模型可维护性仪表板及其度量的概述,请参阅 使用模型可维护性仪表板监控设计复杂性模型可维护性度量

Mouse pointing to three dots in top-right corner of Complexity widgetMouse pointing to Help icon for Complexity widget

更新程序化度量收集

对于度量仪表板,您可以使用 slmetric.Engine 对象来收集度量结果。对于模型可维护性仪表板,您可以使用 metric.Engine 对象来收集度量结果。两种仪表盘以编程方式收集度量的方式类似,但您需要更新代码。此表显示了收集模型度量结果的程序差异,在本例中,该指标结果是指名为 myModel 的模型中 Simulink 块的数量。有关详细信息,请参阅 metric.Engine以编程方式收集模型可维护性度量

功能slmetric.Engine API 用于度量仪表板metric.Engine API 用于模型可维护性仪表板更多信息
创建度量引擎

metric_engine = slmetric.Engine();

metric_engine = metric.Engine();

请参阅 metric.Engine

明确分析范围

setAnalysisRoot(metric_engine,'Root','myModel','RootType','Model');

对于模型可维护性仪表板,您不需要设置分析根。默认情况下,execute 函数会分析工程中的单位和组件。如果您只想收集特定模型的度量,可以使用 execute 函数的 ArtifactScope 名称-值参量指定模型,如下所示。

请参阅 execute 函数。

收集度量结果
execute(metric_engine,'mathworks.metrics.SimulinkBlockCount');
model = [which("myModel.slx"),"myModel"];
execute(metric_engine,"slcomp.SimulinkBlocks", ...
    ArtifactScope = model);

请参阅 execute 函数。

两个仪表盘都提供了模型规模、架构和复杂性的度量。但是,对于某些度量,您可能会看到度量仪表板模型可维护性仪表板结果之间存在差异。有关度量的比较,请参阅 选择要收集的度量 中的度量比较。

获取度量结果

results = getMetrics(metric_engine,'mathworks.metrics.SimulinkBlockCount');

results = getMetrics(metric_engine,"slcomp.SimulinkBlocks");

请参阅 getMetrics 函数。

获取可用度量
modelMetrics = slmetric.metric.getAvailableMetrics();

maintainabilityMetrics = getAvailableMetricIds(metric_engine, ...
    App="DashboardApp", ...
    Dashboard="ModelMaintainability");

请参阅 getAvailableMetricIds 函数。

有关模型可维护性度量的详细信息,请参阅 模型可维护性度量

选择要收集的度量

模型可维护性仪表板提供与度量仪表板中的 大小度量架构度量 类似的大小、架构和复杂度度量。某些度量仪表板度量,如 合规性度量可读性度量,目前尚不支持。有关详细信息,请参阅限制

这些表格总结了度量仪表板中的度量与模型可维护性仪表板中的度量之间的关系。

注意

度量仪表板模型可维护性仪表板度量结果之间存在差异。这些差异是意料之中的,因为这些仪表盘使用不同的度量,并且计算度量结果的方式也不同。具体来说,度量仪表板使用模型的编译表示来计算许多度量结果,这可能与您编辑的 Simulink 模型不同。模型可维护性仪表板使用模型本身的图形表示来计算度量结果,并将分析范围限定在工程文件夹中的每个单元或组件及其支持工件。

大小度量

度量仪表板功能请使用此方法
Simulink 模块度量

模型可维护性仪表板还提供了度量仪表板中没有的其他 Simulink 架构度量。

子系统度量

无替代品

库链接度量

无替代品

MATLAB 代码的有效行数度量

Stateflow 图对象度量

模型可维护性仪表板提供了度量仪表板中没有的其他 Stateflow 架构度量。

Stateflow 模块的代码行数度量
子系统深度度量

模型可维护性仪表板提供了度量仪表板中没有的其他 组件结构体和接口度量。

输入输出度量

输入输出组件接口端口

显式输入输出度量
文件度量

无替代品

MATLAB 函数度量

模型可维护性仪表板提供其他 MATLAB 架构度量。

模型文件计数

无替代品

参数度量

无替代品

Stateflow 图度量

模型可维护性仪表板提供了度量仪表板中没有的其他 Stateflow 架构度量。

架构度量

度量仪表板功能请使用此方法
圈复杂度度量

作为向模型可维护性仪表板过渡的一部分,圈复杂度度量已被几个新的度量所取代,这些新指标旨在提供对设计复杂度的更全面的评估。

这些度量根据设计中可能的执行路径数量来评估您的设计模型、图和代码的复杂性。这些度量计算的是设计圈复杂度,这与圈复杂度和其他复杂度计算不同。与以往依赖于已编译模型的方法不同,这些新度量分析的是模型的图形表示,而已编译模型在模型编译过程中会进行转换和优化。这种方法允许模型可维护性仪表板评估您维护的设计工件,而不是已编译模型的中间表示。

克隆内容度量

无替代品

克隆检测度量

无替代品

库内容度量

无替代品

限制

模型可维护性仪表板不支持度量仪表板中的某些功能。

子系统仪表盘

模型可维护性仪表板不提供直接在子系统上打开仪表板并在仪表板小组件中显示子系统度量结果的功能。但是,当您点击模型可维护性仪表板中的小组件时,该应用程序会提供一个表格,其中包含各个 Simulink 模型层、MATLAB 函数和方法以及 Stateflow 对象的详细度量结果。有关模型可维护性仪表板中详细度量结果的示例,请参阅 使用模型可维护性仪表板监控设计复杂性 中的度量详细信息。如果您需要仪表板小组件显示子系统的信息,请使用度量仪表板

建模规范合规性

模型可维护性仪表板不提供模型顾问检查问题、代码分析器警告或 Simulink 诊断警告的合规性度量。如果在度量仪表板合规性度量可读性度量 中使用建模规范合规性组,则使用度量仪表板

Modeling Guideline Compliance section with metric results for high-integrity and MAAB checks

实际再利用和潜在再利用

模型可维护性仪表板不提供实际和潜在的模型组件和子组件重用的架构度量。如果在度量仪表板中使用实际重用潜在重用小组件,或者使用度量克隆内容度量克隆检测度量库内容度量,则使用度量仪表板

Architecture section with metric results for Actual Reuse and Potential Reuse of modeling components

自定义度量

默认情况下,模型可维护性仪表板不提供创建自定义度量的功能。如果您有自定义度量,例如继承自抽象基类 slmetric.metric.Metric模型顾问配置的合规性度量 的 MATLAB 类,请联系 MathWorks® 咨询服务,以获取创建模型可维护性仪表板自定义度量的帮助。否则,请使用度量仪表板

自定义仪表盘布局

模型可维护性仪表板不提供自定义仪表板布局或其他仪表板功能(如合规性阈值)的功能。要查看模型可维护性仪表板的仪表板布局示例,请参阅 使用模型可维护性仪表板监控设计复杂性。如果您需要不同的仪表板小组件、容器和自定义小组件布局,请使用度量仪表板

另请参阅

主题