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 .
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 ).
.
| Random links: | Marsala | Cathy Freeman | Huntington, la Florida | Río del norte (New York-new Jersey) | Adlershof |