Main Content

Model Maintainability Metrics

R2026b

The Model Maintainability Dashboard helps you analyze the maintainability and complexity of the units and components in your design across the model development lifecycle. The dashboard collects metric data from the model design artifacts in a project, such as MATLAB® code, Simulink® models, and Stateflow® charts. You can also collect these metrics programmatically by using the metric.Engine API.

Use these tables to explore the model maintainability metrics, view their metric IDs, and access information about each metric.

The model maintainability metrics cover these areas:

To collect available model maintainability metrics programmatically, use the getAvailableMetricIds and execute functions.

metricEngine = metric.Engine;
ids = getAvailableMetricIds(metricEngine,App="DashboardApp",Dashboard="ModelMaintainability");
results = execute(metricEngine,ids)
For more information, see Collect Model Maintainability Metrics Programmatically.

If your scripts reference metric IDs from R2026a or earlier, see Migrate from Earlier Metric IDs.

Component Structure and Interfaces

Analyze the structure of a software component, including the hierarchy, ports, and signals.

MetricMetric ID
Component Structureslcomp.ComponentStructure
Simulink Component Interfacemodeldesign.SimulinkMaintainability[slcomp.ComponentInterface]
Input and Output Component Interface Signalsmodeldesign.SimulinkMaintainability[slcomp.ConnectedSignals]

Overall Maintainability

Assess the overall maintainability and complexity of each unit by examining aggregate complexity measures such as design cyclomatic complexity and Halstead difficulty.

MetricMetric ID
Overall Design Summarymodeldesign.OverallMaintainability[slcomp.OverallDesignSummary]

Simulink Maintainability

Assess the maintainability of Simulink design layers by examining complexity measures and the distribution of blocks, decisions, signal lines, and Goto blocks.

MetricMetric ID
Simulink Design Summarymodeldesign.SimulinkMaintainability[slcomp.DesignSummary]
Simulink Design Detailsmodeldesign.SimulinkMaintainability[slcomp.SimulinkDesignDetails]
Simulink Decision Distributionmodeldesign.SimulinkMaintainability[slcomp.DecisionDistribution]
Simulink Halstead Difficulty Distributionmodeldesign.SimulinkMaintainability[slcomp.HalsteadDifficultyDistribution]
Simulink Block Distributionmodeldesign.SimulinkMaintainability[slcomp.BlockDistribution]
Signal Line Distributionmodeldesign.SimulinkMaintainability[slcomp.SignalLineDistribution]
Goto Distributionmodeldesign.SimulinkMaintainability[slcomp.GotoDistribution]

To collect all of these Simulink maintainability metrics, you can use modeldesign.SimulinkMaintainability[] as the metric ID:

results = execute(metricEngine,modeldesign.SimulinkMaintainability[])

Stateflow Maintainability

Assess the maintainability of Stateflow design layers by examining complexity measures and the distribution of states, transitions, and decisions.

MetricMetric ID
Stateflow Design Summarymodeldesign.StateflowMaintainability[slcomp.DesignSummary]
Stateflow Design Detailsmodeldesign.StateflowMaintainability[slcomp.StateflowDesignDetails]
Stateflow Decision Distributionmodeldesign.StateflowMaintainability[slcomp.DecisionDistribution]
Stateflow Halstead Difficulty Distributionmodeldesign.StateflowMaintainability[slcomp.HalsteadDifficultyDistribution]
State Distributionmodeldesign.StateflowMaintainability[slcomp.StateDistribution]
Transition Distributionmodeldesign.StateflowMaintainability[slcomp.TransitionDistribution]

To collect all of these Stateflow maintainability metrics, you can use modeldesign.StateflowMaintainability[] as the metric ID:

results = execute(metricEngine,"modeldesign.StateflowMaintainability[]")

MATLAB Maintainability

Assess the maintainability of MATLAB design layers by examining complexity measures, code size, decision density, and detailed design measurements.

MetricMetric ID
MATLAB Design Summarymodeldesign.MATLABMaintainability[slcomp.DesignSummary]
MATLAB Design Detailsmodeldesign.MATLABMaintainability[slcomp.MATLABDesignDetails]
MATLAB Decision Distributionmodeldesign.MATLABMaintainability[slcomp.DecisionDistribution]
Executable Lines of Code Distributionmodeldesign.MATLABMaintainability[slcomp.ELOCDistribution]
Halstead Difficulty Distributionmodeldesign.MATLABMaintainability[slcomp.HalsteadDifficultyDistribution]

To collect all of these MATLAB maintainability metrics, you can use modeldesign.MATLABMaintainability[] as the metric ID:

results = execute(metricEngine,"modeldesign.MATLABMaintainability[]")

Migrate from Earlier Metric IDs

Since R2026b

Starting in R2026b, the model maintainability metrics use a different naming convention and can return results in improved table-based formats. If you have scripts that call earlier metric IDs, use the tables in this section to identify the replacement metrics.

Migrate Component Structure and Overall Maintainability Metrics

Earlier Metric IDReplacement Metric ID
slcomp.OverallCyclomaticComplexitymodeldesign.OverallMaintainability[slcomp.OverallDesignSummary]
slcomp.HalsteadDifficulty
slcomp.LayerDepthslcomp.ComponentStructure
slcomp.MaxLayerDepth
slcomp.LayerBreadth
slcomp.MaxLayerBreadth
slcomp.InterfacePortsmodeldesign.SimulinkMaintainability[slcomp.ComponentInterface]
Earlier Metric IDReplacement Metric ID
slcomp.SimulinkDecisionsmodeldesign.SimulinkMaintainability[slcomp.DesignSummary]
slcomp.SLCyclomaticComplexity
slcomp.SimulinkHalsteadComplexity
slcomp.SimulinkHalsteadDifficulty
slcomp.SimulinkDecisionDistributionmodeldesign.SimulinkMaintainability[slcomp.DecisionDistribution]
slcomp.SimulinkHalsteadDifficultyDistributionmodeldesign.SimulinkMaintainability[slcomp.HalsteadDifficultyDistribution]
slcomp.OverallBlocksmodeldesign.SimulinkMaintainability[slcomp.BlockDistribution]
slcomp.SimulinkBlocks
slcomp.BlocksDistribution
slcomp.OverallSignalLinesmodeldesign.SimulinkMaintainability[slcomp.SignalLineDistribution]
slcomp.SimulinkSignalLines
slcomp.SignalLinesDistribution
slcomp.OverallGotosmodeldesign.SimulinkMaintainability[slcomp.GotoDistribution]
slcomp.SimulinkGotos
slcomp.GotosDistribution
sldesignlayer.SimulinkDesignInfomodeldesign.SimulinkMaintainability[slcomp.SimulinkDesignDetails]

Migrate Stateflow Maintainability Metrics

Earlier Metric IDReplacement Metric ID
slcomp.StateflowDecisionsmodeldesign.StateflowMaintainability[slcomp.DesignSummary]
slcomp.SFCyclomaticComplexity
slcomp.StateflowHalsteadComplexity
slcomp.StateflowHalsteadDifficulty
slcomp.StateflowDecisionsDistributionmodeldesign.StateflowMaintainability[slcomp.DecisionDistribution]
slcomp.StateflowHalsteadDifficultyDistributionmodeldesign.StateflowMaintainability[slcomp.HalsteadDifficultyDistribution]
slcomp.OverallTransitionsmodeldesign.StateflowMaintainability[slcomp.TransitionDistribution]
slcomp.StateflowTransitions
slcomp.TransitionsDistribution
slcomp.OverallStatesmodeldesign.StateflowMaintainability[slcomp.StateDistribution]
slcomp.StateflowStates
slcomp.StatesDistribution
sfdesignlayer.StateflowDesignInfomodeldesign.StateflowMaintainability[slcomp.StateflowDesignDetails]

Migrate MATLAB Maintainability Metrics

Earlier Metric IDReplacement Metric ID
slcomp.MATLABDecisionsmodeldesign.MATLABMaintainability[slcomp.DesignSummary]
slcomp.MATLABCyclomaticComplexity
slcomp.MATLABHalsteadComplexity
slcomp.MATLABHalsteadDifficulty
slcomp.MATLABDecisionsDistributionmodeldesign.MATLABMaintainability[slcomp.DecisionDistribution]
slcomp.MATLABHalsteadDifficultyDistributionmodeldesign.MATLABMaintainability[slcomp.HalsteadDifficultyDistribution]
slcomp.OverallMATLABeLOCmodeldesign.MATLABMaintainability[slcomp.ELOCDistribution]
slcomp.MATLABeLOC
slcomp.MATLABeLOCDistribution
mldesignlayer.MATLABDesignInfomodeldesign.MATLABMaintainability[slcomp.MATLABDesignDetails]

See Also

| | |

Topics