📜  软件工程 |控制流图 (CFG)

📅  最后修改于: 2022-05-13 01:56:59.682000             🧑  作者: Mango

软件工程 |控制流图 (CFG)

控制流图 (CFG)是程序或应用程序执行期间控制流或计算的图形表示。控制流图主要用于静态分析以及编译器应用程序,因为它们可以准确地表示程序单元内部的流程。控制流图最初是由Frances E. Allen开发的。

控制流图的特点:

  • 控制流图是面向过程的。
  • 控制流图显示了程序执行期间可以遍历的所有路径。
  • 控制流图是有向图。
  • CFG 中的边缘描绘控制流路径,CFG 中的节点描绘基本块。

控制流图中存在 2 个指定块:

  1. 入口块:
    入口块允许控件进入控制流图。
  2. 退出块:
    控制流通过出口块离开。

因此,控制流图由流程图中涉及的所有构建块组成,例如开始节点、结束节点和节点之间的流。

一般控制流程图:
控制流图对所有语句和循环都有不同的表示。下面的图片描述了它:

1.如果-否则:


2.同时:


3.do -while:


4.为:


例子:

if  A = 10 then
  if B > C
     A = B
  else A = C
  endif
  endif
print A, B, C 

上述示例的流程图将是:


上述示例的控制流图将是:


CFG的优势:
控制流图有很多优点。它可以轻松地封装每个基本块的信息。它可以很容易地定位程序中不可访问的代码,并且在控制流图中很容易找到诸如循环之类的句法结构。