Análisis de programa estático


El análisis estático de programas es el análisis de los programas informáticos que se realiza sin ejecutar ningún programa, en contraste con el análisis dinámico , que se realiza en los programas durante su ejecución. [1] [2]

El término generalmente se aplica al análisis realizado por una herramienta automatizada , y el análisis humano generalmente se denomina "comprensión del programa", comprensión del programa o revisión del código . En el último de estos, también se utilizan la inspección de software y los recorridos de software . En la mayoría de los casos, el análisis se realiza en alguna versión del código fuente de un programa y, en otros casos, en alguna forma de su código objeto .

La sofisticación del análisis realizado por herramientas varía desde aquellas que solo consideran el comportamiento de enunciados y declaraciones individuales, [3] hasta aquellas que incluyen el código fuente completo de un programa en su análisis. Los usos de la información obtenida del análisis varían desde resaltar posibles errores de codificación (p. Ej., La herramienta lint ) hasta métodos formales que prueban matemáticamente las propiedades de un programa dado (p. Ej., Su comportamiento coincide con el de su especificación).

Las métricas de software y la ingeniería inversa se pueden describir como formas de análisis estático. Las métricas de software derivadas y el análisis estático se implementan cada vez más juntos, especialmente en la creación de sistemas integrados, mediante la definición de los denominados objetivos de calidad del software . [4]

Un uso comercial cada vez mayor del análisis estático es la verificación de las propiedades del software utilizado en los sistemas informáticos críticos para la seguridad y la localización de códigos potencialmente vulnerables . [5] Por ejemplo, las siguientes industrias han identificado el uso del análisis de código estático como un medio para mejorar la calidad de software cada vez más sofisticado y complejo:

Un estudio realizado en 2012 por VDC Research informó que el 28,7% de los ingenieros de software integrado encuestados utilizan actualmente herramientas de análisis estático y el 39,7% espera utilizarlas en un plazo de 2 años. [9] Un estudio de 2010 encontró que el 60% de los desarrolladores entrevistados en proyectos de investigación europeos hicieron al menos uso de sus analizadores estáticos integrados IDE básicos. Sin embargo, solo alrededor del 10% empleó otra herramienta de análisis adicional (y quizás más avanzada). [10]