Stateflow 哈尔斯特德复杂度
度量 ID
slcomp.StateflowHalsteadComplexity
描述
Halstead 复杂度度量衡量代码的大小和复杂度,可以帮助您监控代码质量、识别设计中的复杂区域并解决软件可维护性问题。
使用此度量来计算 Stateflow® 图中的运算符和操作数,并使用 Halstead 复杂度度量计算设计量和难度。
支持的工件
您可以针对Units和组件收集此度量。要控制仪表板将哪些对象分类为单元或组件,请参阅将模型按层级结构分类为组件或单元。
计算详细信息
运算符和操作数
运算符指定影响变量内容的操作。操作数是运算符作用的基本逻辑单元。
度量:
使用以下定义:
忽略您注释掉的对象。
忽略未解析的符号。
忽略条件表和动作表中的空行和空列。
忽略存在语法错误的 Stateflow 状态和转换。
哈尔斯特德卷
该度量使用公式 计算 Halstead 体积 V。其中,N1 为运算符总数,N2 为操作数总数,n1 为唯一运算符数,n2 为唯一操作数数。
霍尔斯特德难度
该度量使用公式 计算 Halstead 难度 D。n1 是唯一运算符的数量,N2 是操作数的总数,n2 是唯一操作数的数量。
收集
要收集此度量的数据,请执行度量引擎并使用度量 ID slcomp.StateflowHalsteadComplexity 和 getMetrics。
metric_engine = metric.Engine; execute(metric_engine,"slcomp.StateflowHalsteadComplexity"); results = getMetrics(metric_engine,"slcomp.StateflowHalsteadComplexity")
结果
此度量返回工程中各单元和组件中每个 Stateflow 设计层的度量结果。Stateflow 设计层是一个工件,就像 Stateflow 图、状态或真值表一样,它在 Stateflow 中有自己的画布。
对于每个 Stateflow 设计层,该度量返回一个 metric.Result 对象,其属性包括:
Value- 包含以下字段的结构体:TotalOperators- Stateflow 运算符和 MATLAB 运算符的数量TotalOperatorsSF- Stateflow 运算符的数量TotalOperatorsML- MATLAB 运算符的数量UniqueOperators- 唯一 Stateflow 运算符和 MATLAB 运算符的数量UniqueOperatorsSF- 唯一 Stateflow 运算符的数量UniqueOperatorsML- 唯一 MATLAB 运算符的数量TotalOperands- Stateflow 操作数和 MATLAB 操作数的数量TotalOperandsSF- Stateflow 操作数的数量TotalOperandsML- MATLAB 操作数的数量UniqueOperands- 唯一操作数 Stateflow、UniqueOperandsSF和唯一操作数 MATLAB、UniqueOperandsML的总和UniqueOperandsSF- Stateflow 中的每个操作数都是唯一的,因此UniqueOperandsSF等于TotalOperandsSFUniqueOperandsML- 唯一 MATLAB 操作数的数量Volume- 设计层的大小Difficulty- 估算设计层读写的难易程度
Scope- 包含设计层信息的结构体
有关该度量如何计算度量结果的信息,请参阅 计算详细信息。
参考
[1] Halstead, Maurice H. Elements of Software Science. New York: North Holland, 1979.
[2] Stürmer, Ingo, Hartmut Pohlheim, and Thorsten Rogier. 2010. "Berechnung und Visualisierung der Modellkomplexität bei der modellbasierten Entwicklung sicherheitsrelevanter Software." In Automotive - Safety & Security, edited by B. Keller et al., 69-82. Aachen: Shaker Verlag.
[3] Yu, Sheng, and Shijie Zhou. “A Survey on Metric of Software Complexity.” In 2010 2nd IEEE International Conference on Information Management and Engineering, 352–56, 2010. https://doi.org/10.1109/ICIME.2010.5477581.
