【问题标题】:Cyclomatic complexity of Scratch programsScratch 程序的圈复杂度
【发布时间】:2020-06-01 23:16:00
【问题描述】:

我正在写一篇关于面向年轻学习者的介绍性编程的论文。为了确定程序的难度级别,我想借鉴我在研究过程中遇到的圈复杂度的概念。如果您能检查我的数字,我将不胜感激,因为我完全不确定我的数学运算是否正确。

这是my Scratch program,以及我从中派生的control flow graphs

程序由小的并发代码和事件单元组成。根据cyclomatic complexity公式M = E − N + 2P,我得出了22的复杂度。

  • 边的总数:50
  • 节点总数:56
  • 连接组件数:14

你同意我的解决方案吗?

【问题讨论】:

标签: cyclomatic-complexity mit-scratch


【解决方案1】:

我对圈复杂度问题进行了更深入的研究,并且觉得我现在可以自己回答这个问题了。

首先,最初帖子中提供的公式意味着可以省略简单的语句,因为它们每个都由一条边和一个节点组成,最终相互抵消。 其次,我的研究表明,事件侦听器不计入 CC 的计算,尽管它们肯定包含某种逻辑。 最后,考虑到这一切,我想出了以下流程图:

在流程图中,可以看出有11个节点,17条边,1个组件。 因此,根据公式(17-11+2),这个特定程序的CC为8。

我不是 100% 确定在计算 CC 时如何处理并发线程,但由于它们在 Scratch-coder 看来是一个整体,我认为它们是一个连接函数。不过,如果您能证实我的推理,我将不胜感激。

【讨论】:

    猜你喜欢
    • 2014-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-29
    • 2013-09-03
    • 1970-01-01
    相关资源
    最近更新 更多