软件工程 |控制流图 (CFG)
控制流图 (CFG)是程序或应用程序执行期间控制流或计算的图形表示。控制流图主要用于静态分析以及编译器应用程序,因为它们可以准确地表示程序单元内部的流程。控制流图最初是由Frances E. Allen开发的。
控制流图的特点:
- 控制流图是面向过程的。
- 控制流图显示了程序执行期间可以遍历的所有路径。
- 控制流图是有向图。
- CFG 中的边缘描绘控制流路径,CFG 中的节点描绘基本块。
控制流图中存在 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的优势:
控制流图有很多优点。它可以轻松地封装每个基本块的信息。它可以很容易地定位程序中不可访问的代码,并且在控制流图中很容易找到诸如循环之类的句法结构。