Abstract
Control flow graph is used for Performing many Program-analysis techniques, such as data-flow and control-dependence analysis, and software-engineering techniques, such as program slicing and testings. For these analyses to be safe and useful, the CFG should incorporate the exception flows that are induced by exceptions. In previous research to construct control flow graph, normal flows and exception flows are computed at the same time, since these two flows are known to be mutually dependent. By investigating realistic Java programs, we found that the cases when these two flows are mutually dependent rarely happen. So, we can decouple exception flow analysis from normal flow analysis. In this paper we propose an analysis that estimates exception flows. We also propose exception flow graph to represent exception flows. And we show that the control flow graph that accounts for exception flows can be constructed by merging exception flow graph onto normal control flow graph.
제어 흐름 그래프는 자료 흐름 분석과 제어 종속 분석과 같은 프로그램 분석 분야와 프로그램 슬라이싱과 테스팅과 같은 소프트웨어공학 분야에서 필요로 하는 정보이다. 이러한 분석들이 안전하고 유용하기 위해서는 제어 흐름 그래프는 예외 흐름을 포함해야 한다. 기존의 방법은 예외 흐름과 정상 흐름의 상호 의존적인 관계로 인해 두 흐름을 동시에 계산하면서 제어 흐름 그래프를 생성한다. 그러나 실제 Java 프로그램을 조사해 본 결과 두 흐름이 상호 의존적으로 필요한 경우는 거의 발생하지 않음을 알 수 있었다. 그러므로 정상 흐름과 예외 흐름을 분리해서 계산할 수 있음을 알았고, 예외 흐름을 계산하는 예외 흐름 분석을 제안한다. 그리고 예외 흐름을 표현하는 예외 흐름 그래프를 제안한다. 그리고 제어 흐름 그래프는 예외 흐름 그래프와 정상 흐름 그래프를 합병함으로써 생성될 수 있음을 보인다.