제어 흐름 분석

제어 흐름 분석 (control flow analysis) (CFA)은 프로그램의 제어 흐름을 결정하기 위한 정적 프로그램 분석 기법이다. 제어 흐름은 제어 흐름 그래프 (CFG)로 표현된다. CFA라는 용어는 함수형 프로그래밍와 객체 지향 프로그래밍 둘 다 제어 흐름을 계산하는 구체적인 알고리즘이다.

많은 명령형 프로그래밍에서, 프로그램의 제어 흐름은 프로그램의 소스 코드에 분명히 나와 있다. 결과적으로 프로시저 사이의 제어 흐름 분석은 종종 명백하게 함수나 메소드 호출의 수신자를 결정하는 정적 분석 기법과 관련있다. 예를 들면 스킴같은 고계 함수를 사용하는 프로그래밍 언어에서, 함수 호출의 대상은 명백하지 않을 수 있다.(lambda (f) (f x))어떤 프로시저 f 가 참조되는지는 명확하지 않다. 가능한 대상을 결정하기 위해, 제어 흐름 분석은 반드시 어디서 이 표현이 발생했는지와 어떤 인자를 받았는지를 고려해야 한다.

요약 해석, 제약 충족 문제, 그리고 자료형 체계 같은 기법들은 제어 흐름 분석을 위해 사용된다.

같이 보기 
 데이터 흐름 분석
 곱집합
 포인터 분석

각주

외부 링크 
 http://pages.cs.wisc.edu/~cs701-1/NOTES/3.CONTROL-FLOW-ANALYSIS.html for textbook intraprocedural CFA in imperative languages
 https://web.archive.org/web/20140812102633/http://cs.au.dk/~jmi/Midtgaard-CSur-final.pdf CFA in functional programs (survey)
 http://cgi.di.uoa.gr/~smaragd/kcfa-pldi10.pdf for the relationship between CFA analysis in functional languages and points-to analysis in imperative/OOP languages

프로그램 분석
제어 흐름 분석