Model Maintainability Metrics
R2026bThe 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 API.metric.Engine
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)
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.
| Metric | Metric ID |
|---|---|
| Component Structure | slcomp.ComponentStructure |
| Simulink Component Interface | modeldesign.SimulinkMaintainability[slcomp.ComponentInterface] |
| Input and Output Component Interface Signals | modeldesign.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.
| Metric | Metric ID |
|---|---|
| Overall Design Summary | modeldesign.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.
| Metric | Metric ID |
|---|---|
| Simulink Design Summary | modeldesign.SimulinkMaintainability[slcomp.DesignSummary] |
| Simulink Design Details | modeldesign.SimulinkMaintainability[slcomp.SimulinkDesignDetails] |
| Simulink Decision Distribution | modeldesign.SimulinkMaintainability[slcomp.DecisionDistribution] |
| Simulink Halstead Difficulty Distribution | modeldesign.SimulinkMaintainability[slcomp.HalsteadDifficultyDistribution] |
| Simulink Block Distribution | modeldesign.SimulinkMaintainability[slcomp.BlockDistribution] |
| Signal Line Distribution | modeldesign.SimulinkMaintainability[slcomp.SignalLineDistribution] |
| Goto Distribution | modeldesign.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.
| Metric | Metric ID |
|---|---|
| Stateflow Design Summary | modeldesign.StateflowMaintainability[slcomp.DesignSummary] |
| Stateflow Design Details | modeldesign.StateflowMaintainability[slcomp.StateflowDesignDetails] |
| Stateflow Decision Distribution | modeldesign.StateflowMaintainability[slcomp.DecisionDistribution] |
| Stateflow Halstead Difficulty Distribution | modeldesign.StateflowMaintainability[slcomp.HalsteadDifficultyDistribution] |
| State Distribution | modeldesign.StateflowMaintainability[slcomp.StateDistribution] |
| Transition Distribution | modeldesign.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.
| Metric | Metric ID |
|---|---|
| MATLAB Design Summary | modeldesign.MATLABMaintainability[slcomp.DesignSummary] |
| MATLAB Design Details | modeldesign.MATLABMaintainability[slcomp.MATLABDesignDetails] |
| MATLAB Decision Distribution | modeldesign.MATLABMaintainability[slcomp.DecisionDistribution] |
| Executable Lines of Code Distribution | modeldesign.MATLABMaintainability[slcomp.ELOCDistribution] |
| Halstead Difficulty Distribution | modeldesign.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 ID | Replacement Metric ID |
|---|---|
slcomp.OverallCyclomaticComplexity | modeldesign.OverallMaintainability[slcomp.OverallDesignSummary] |
slcomp.HalsteadDifficulty | |
slcomp.LayerDepth | slcomp.ComponentStructure |
slcomp.MaxLayerDepth | |
slcomp.LayerBreadth | |
slcomp.MaxLayerBreadth | |
slcomp.InterfacePorts | modeldesign.SimulinkMaintainability[slcomp.ComponentInterface] |
Migrate Simulink Maintainability Metrics
| Earlier Metric ID | Replacement Metric ID |
|---|---|
slcomp.SimulinkDecisions | modeldesign.SimulinkMaintainability[slcomp.DesignSummary] |
slcomp.SLCyclomaticComplexity | |
slcomp.SimulinkHalsteadComplexity | |
slcomp.SimulinkHalsteadDifficulty | |
slcomp.SimulinkDecisionDistribution | modeldesign.SimulinkMaintainability[slcomp.DecisionDistribution] |
slcomp.SimulinkHalsteadDifficultyDistribution | modeldesign.SimulinkMaintainability[slcomp.HalsteadDifficultyDistribution] |
slcomp.OverallBlocks | modeldesign.SimulinkMaintainability[slcomp.BlockDistribution] |
slcomp.SimulinkBlocks | |
slcomp.BlocksDistribution | |
slcomp.OverallSignalLines | modeldesign.SimulinkMaintainability[slcomp.SignalLineDistribution] |
slcomp.SimulinkSignalLines | |
slcomp.SignalLinesDistribution | |
slcomp.OverallGotos | modeldesign.SimulinkMaintainability[slcomp.GotoDistribution] |
slcomp.SimulinkGotos | |
slcomp.GotosDistribution | |
sldesignlayer.SimulinkDesignInfo | modeldesign.SimulinkMaintainability[slcomp.SimulinkDesignDetails] |
Migrate Stateflow Maintainability Metrics
| Earlier Metric ID | Replacement Metric ID |
|---|---|
slcomp.StateflowDecisions | modeldesign.StateflowMaintainability[slcomp.DesignSummary] |
slcomp.SFCyclomaticComplexity | |
slcomp.StateflowHalsteadComplexity | |
slcomp.StateflowHalsteadDifficulty | |
slcomp.StateflowDecisionsDistribution | modeldesign.StateflowMaintainability[slcomp.DecisionDistribution] |
slcomp.StateflowHalsteadDifficultyDistribution | modeldesign.StateflowMaintainability[slcomp.HalsteadDifficultyDistribution] |
slcomp.OverallTransitions | modeldesign.StateflowMaintainability[slcomp.TransitionDistribution] |
slcomp.StateflowTransitions | |
slcomp.TransitionsDistribution | |
slcomp.OverallStates | modeldesign.StateflowMaintainability[slcomp.StateDistribution] |
slcomp.StateflowStates | |
slcomp.StatesDistribution | |
sfdesignlayer.StateflowDesignInfo | modeldesign.StateflowMaintainability[slcomp.StateflowDesignDetails] |
Migrate MATLAB Maintainability Metrics
| Earlier Metric ID | Replacement Metric ID |
|---|---|
slcomp.MATLABDecisions | modeldesign.MATLABMaintainability[slcomp.DesignSummary] |
slcomp.MATLABCyclomaticComplexity | |
slcomp.MATLABHalsteadComplexity | |
slcomp.MATLABHalsteadDifficulty | |
slcomp.MATLABDecisionsDistribution | modeldesign.MATLABMaintainability[slcomp.DecisionDistribution] |
slcomp.MATLABHalsteadDifficultyDistribution | modeldesign.MATLABMaintainability[slcomp.HalsteadDifficultyDistribution] |
slcomp.OverallMATLABeLOC | modeldesign.MATLABMaintainability[slcomp.ELOCDistribution] |
slcomp.MATLABeLOC | |
slcomp.MATLABeLOCDistribution | |
mldesignlayer.MATLABDesignInfo | modeldesign.MATLABMaintainability[slcomp.MATLABDesignDetails] |
See Also
getAvailableMetricIds | Project Model Testing Metrics | Model Testing Metrics | Code Testing Metrics