Análisis de control del flujo

Resumen de declaraciones condicionales en el lenguaje de programación Swift 2.1

El análisis de control de flujo es una técnica de análisis estático de software para determinar las estructuras de control de un programa.

El control del flujo se representa a través del grafo de control de flujo (CFG).

En la mayoría de los lenguaje de programación, el control del flujo se encuentra explícito en el código fuente del programa. Como resultado el análisis de control de flujo implica usualmente referirse a un análisis estático de software.

El término análisis de control de flujo fue introducido independientemente por Neil D. Jones[1]​ y Olin Shivers.[2]

En un lenguaje de programación con funciones de orden superior como Scheme, el objetivo de un llamado a función puede ser implícito. Por ejemplo, en la siguiente expresión:


No está claro a qué procedimiento f se refiere. Para determinar los posibles objetivos, se debería considerar un análisis de control del flujo cuando esta expresión sea invocada y que argumentos deba recibir.

La interpretación abstracta, la resolución de restricciones y el sistema de tipos suelen ser usados para llevar a cabo estos análisis.

Referencias

  1. Neil D. Jones (1981), «Flow analysis of lambda expressions», Automata, Languages and Programming: 114-128, doi:10.1007/3-540-10843-2_10 .
  2. Shivers, Olin (1988), «Control-flow analysis in Scheme», Reprinted in \emph{20 Years of the ACM SIGPLAN Conference on Programming Language Design and Implementation (1979--1999): A Selection, Proceedings of the ACM SIGPLAN'88 Conference on Programming Language Design and Implementation (PLDI), SIGPLAN Notices, Vol.23, No.7: 164-174, doi:10.1145/53990.54007 .