El análisis estático del código del es el análisis del software de la computadora que se realiza sin realmente la ejecución de los programas construidos de ese software (el análisis realizado en la ejecución de programas se conoce como análisis dinámico ). En la mayoría de los casos el análisis se realiza en una cierta versión del código fuente y en los otros casos una cierta forma del código de objeto . El término se aplica generalmente al análisis realizado por una herramienta automatizada, con el análisis humano siendo llamado del programa que entiende o la comprensión de programa.

La sofisticación del análisis realizado por las herramientas varía de las que consideren solamente el comportamiento de declaraciones y de declaraciones individuales, a las que incluyan el código fuente completo de un programa en su análisis. Las aplicaciones de la información obtenida del análisis varían de destacar los errores de codificación posibles (e., la herramienta de la pelusa ) a los métodos formales que prueban matemáticamente características sobre un programa dado (e., su comportamiento empareja el de su especificación).

Alguna gente considera las métricas del software y el la ingeniería reversa ser formas de análisis estático.

Un uso comercial growing del análisis estático está en la verificación de las características del software usadas en sistemas informáticos Seguridad-críticos y localización potencialmente de código vulnerable .

Métodos formales

Los métodos formales son el término aplicado al análisis del software (y del soporte físico ) cuyos resultados se obtienen puramente con el uso de métodos matemáticos rigurosos. Las técnicas matemáticas usadas incluyen la semántica indicativa, la semántica axiomática, la semántica operacional, y la interpretación abstracta .

Se ha probado que, salvo una cierta hipótesis que el espacio de estado de programas es finito y pequeño, que encuentra errores run-time posibles, o más generalmente cualquier clase de violación de una especificación en el resultado final de un programa, es el undecidable: no hay método mecánico que puede contestar siempre verazmente a si un programa los mayo o mayo dados no exhibe errores runtime. Este resultado fecha de los trabajos de la iglesia, Gödel y Turing en los años 30 (véase el problema que para y el teorema del arroz). Como con la mayoría de las preguntas undecidable, una puede todavía intentar dar soluciones aproximadas útiles.

Algunas de las técnicas de la puesta en práctica del análisis estático formal incluyen:
El modelo que comprueba considera los sistemas que tienen estado finito o se pueden reducir al estado finito por la abstracción ;
La interpretación abstracta modela el efecto que cada declaración tiene en el estado de una máquina abstracta (IE, “ejecuta” el software basado en las características matemáticas de cada declaración y declaración). Overapproximates de esta máquina abstracta los comportamientos del sistema: el sistema abstracto así se hace más simple analizar, a expensas del estado incompleto del (no cada característica verdad del sistema original es verdad del sistema abstracto). Si está hecha correctamente, aunque, la interpretación abstracta es el sonido del (cada característica verdad del sistema abstracto se puede trazar a una característica verdadera del sistema original).
Uso de las aserciones en código del programa según lo primero sugerido por la lógica de Hoare. Hay ayuda de la herramienta para algunos lenguajes de programación (e., el lenguaje de programación (un subconjunto de la CHISPA de Ada ) y el Java que modela la lengua - JML - usar el ESC/Java y el ESC/Java2 ).

Ver también

Análisis de la forma
Semántica formal de los lenguajes de programación
Verificación formal
Prueba del software
Lista de herramientas para el análisis estático del código
Generador de la documentación

.

  • Zenithic
  • Alexander Galich
    Random links:Marsala | Cathy Freeman | Huntington, la Florida | Río del norte (New York-new Jersey) | Adlershof

  • © 2007-2008 enciclopediaespana.com; article text available under the terms of GFDL, from en.wikipedia.org
    ="http://pagead2.googlesyndication.com/pagead/show_ads.js">