03

ANALISIS ESTATICO POR MEDIO
DE HERRAMIENTAS

por ejemplo el código fuente.03 ANALISIS ESTATICO POR MEDIO DE HERRAMIENTAS Terminología y definiciones • Análisis Estático • Es aquella actividad que consiste en el análisis de un objeto de prueba. Ing. Alejandro Bartra 23 . • Diseño de un programa (análisis del flujo de control) • Uso de datos (análisis del flujo de datos) • Complejidad de la estructura de un programa. requisito llevado a cabo sin ejecutar el producto software (si esto fuera posible) • Posibles aspectos a ser comprobados con análisis estáticos : • Reglas de estándares de programación.

programación y de guión (“scripting” ) cumplen con la regla. Ing. • El análisis estático de un programa mediante el uso de herramientas se desarrolla con un esfuerzo menor que el necesario en una inspección. • En la práctica. • Esto es especialmente importante cuando se utilizan herramientas de pruebas.03 ANALISIS ESTATICO POR MEDIO DE HERRAMIENTAS • Aspectos generales • Todos los objetos de prueba deben tener una estructura formal. • Con mucha frecuencia no se generan documentos formalmente. lenguajes de modelado. Alejandro Bartra 24 . de la misma forma que algunos diagramas.

• Métricas de complejidad. Ing. • Detecta errores sintácticos en el código fuente de un programa. tabla de símbolos) • Comprueba la consistencia entre los tipos de variables. • Crea datos de referencia del programa (por ejemplo lista de referencia cruzada.03 ANALISIS ESTATICO POR MEDIO DE HERRAMIENTAS • Aspectos generales • Herramientas a utilizar: Compiladores y herramientas de análisis (analizadores) • Compilador . • Detecta variables no declaradas y código inaccesible (código muerto) • Analizador: trata de aspectos adicionales tales como: • Convenciones y estándares. • Etc. Alejandro Bartra 25 . llamada jerárquica.

• Las anomalías pueden ser fácilmente detectadas.) • Método • • • • La estructura del código se representa como un diagrama de control de flujo. etc. Las aristas representan las transferencias del flujo de control como decisiones y bucles.03 ANALISIS ESTATICO POR MEDIO DE HERRAMIENTAS Análisis del flujo de control • Propósito • Detectar defectos causados por un desarrollo anómalo del código (ramas muertas. Los nodos representan sentencias o secuencias de sentencias. • Bucles abandonados por saltos. Es un grafo dirigido. • Retornos múltiples. código muerto. Alejandro Bartra 26 . • Resultados • Visión de conjunto del código del programa. Ing. los defectos se hacen evidentes. • Ramas muertas.

03 ANALISIS ESTATICO POR MEDIO DE HERRAMIENTAS Análisis del flujo de datos • Propósito • Detección de anomalías en el flujo de datos con la asistencia de los diagramas de flujo de control respecto a las secuencias del flujo de datos. el valor de X no cambia (Ej. Alejandro Bartra 27 . entonces ha tenido lugar una anomalía en el flujo de datos. Ing. x>0)) • X no ha sido utilizada (e): X no ha sido referenciada ni en lectura ni en escritura. • Desventajas • Limitado a un rango reducido de tipos de defectos. por ejemplo X=1 • X se encuentra indefinida (u): no ha sido asignado valor alguno a la variable X • X está referenciada (r): ha sido tomada una referencia. r y e • Si una de estas secuencias contiene una sub-secuencia que no tiene sentido. • Es un buen complemento para otros métodos de pruebas. • El flujo de datos de una variable puede ser expresado como una secuencia de estados : d. • Se puede detectar fácilmente la localización exacta de defectos. • X se encuentra definida (d): un valor ha sido asignado a la variable X. u. • Método • Una variable X puede tener los siguientes estados a lo largo de la ejecución de un programa. • Beneficios • Detección de anomalías en el flujo de datos.

y. x=y+z x se define.03 ANALISIS ESTATICO POR MEDIO DE HERRAMIENTAS Análisis del flujo de datos • Estudio de las variables del programa • variable definida* donde se almacena un valor en ella. • variable utilizada en donde el valor almacenado se accede. S se define * definido no debe confundirse con declarado Ing. Alejandro Bartra 28 . • variable no definida antes de que sea utilizada o cuando se encuentra fuera de alcance. z se utilizan IF a > b THEN read(S) a y b se utilizan.

n end Ing. Alejandro Bartra 29 .03 ANALISIS ESTATICO POR MEDIO DE HERRAMIENTAS Fallas en el análisis de flujo de datos n := 0 read (x) n := 1 while x > y do begin Anomalías de flujo de datos: «n» es redefinido sin ser utilizado Fallo de flujo de datos: «y» se utiliza antes de que se haya definido (primera vez alrededor del bucle) read (y) write( n*y) x := x .

} End MinMax. • El valor definido (“defined”) para la variable Help se vuelve indefinido (undefined) al final del programa sin referencia Max = Min Min = Help. } La variable Max se define (“defined”) dos veces sin ninguna referencia entre ambas definiciones Int Help: if (Min > Max) { Help = Max Anomalía d-d.03 ANALISIS ESTATICO POR MEDIO DE HERRAMIENTAS Anomalías en el flujo de datos Ejemplo: Para este ejemplo los valores de dos variables son intercambiados a través de una variable auxiliar . Int Max) Anomalìa u-r { • { Int Help: if (Min > Max) { Max = Help Max = Min Help = Min. Int Max) El análisis de flujo de datos muestra: Este ejemplo puede ser • La variable Help se encuentra fácilmente corregido Indefinida (undefined) cuando es Referenciada (referenced) Void MinMax (Int Min. Anomalía d-u End MinMax. si no están ordenados por valor Void MinMax (Int Min. Alejandro Bartra 30 . Ing.

Alejandro Bartra 31 .03 ANALISIS ESTATICO POR MEDIO DE HERRAMIENTAS Anomalías en el flujo de datos EJEMPLO DE CÓDIGO NO ALCANZABLE • Definición de macros Buffsize: 1000 Mailboxmax: 1000 IF Buffsize < Mailboxmax THEN Error-Exit ENDIF Ing.

LOC”) • Estructuras de control de programa (por ejemplo “Número ciclomático) Ing.03 ANALISIS ESTATICO POR MEDIO DE HERRAMIENTAS Las métricas y su cálculo • Ciertos aspectos de la calidad de un programa pueden ser medidos utilizando métricas • La métrica sólo tiene relevancia para el aspecto medido (considerado) • La complejidad estática de un programa puede ser medida • Actualmente hay aproximadamente 100 métricas diferentes disponibles. • Métricas diferentes tratan aspectos diferentes de la complejidad del programa • Tamaño del programa (por ejemplo : líneas de código (“Lines of code . Alejandro Bartra 32 .

03 ANALISIS ESTATICO POR MEDIO DE HERRAMIENTAS Las métricas y su implicación • Número Ciclomático V(G) = e – n + 2p • Métrica que mide la complejidad estática de un programa basado en su grado de flujo de control. • El número ciclomático se define de la siguiente forma: • Número de aristas e • Número de nodos n • Número de partes de programas independientes inspeccionados: p (normalmente 1) • Valores hasta 10 son aceptables. • Mide los caminos linealmente independientes. como índice de la testeabilidad y mantenibilidad. • Provee una indicación de la cantidad de pruebas necesarias para evitar defectos. Ing. Alejandro Bartra 33 . Para valores superiores el código debe ser “revoked” / mejorado. Está basada en el número de decisiones en un programa.

03 ANALISIS ESTATICO POR MEDIO DE HERRAMIENTAS V(G) = e – n + 2p • • • • Aristas (e)= 8 Nodos (n) = 7 P=1 V(G) = 3 Ing. Alejandro Bartra 34 .

Ing. Alejandro Bartra 35 . • Las métricas pueden ser utilizadas par evaluar la complejidad estructural conduciendo a una estimación del esfuerzo en pruebas a esperar. • Las anomalías en los datos se detectan utilizando el análisis del flujo de datos.03 ANALISIS ESTATICO POR MEDIO DE HERRAMIENTAS • Las métricas y su implicación • Número ciclomático (por Mc Cabe) .Implicación • El número ciclomático puede ser utilizado como un valor objetivo para una revisión de código. • El número ciclomático puede ser calculado como el número de decisiones independientes más uno. Si las dos formas de cálculo aportan resultados diferentes se puede deber a: • Ramas superfluas • Ramas faltantes • El número ciclomático también aporta un índice del número de casos de prueba necesarios (para alcanzar cobertura de decisión) • Resultado del análisis: • El diagrama de flujo de control presenta el flujo del programa y permite la detección de “ramas muertas” y código inalcanzable.

Alejandro Bartra 36 .03 ANALISIS ESTATICO POR MEDIO DE HERRAMIENTAS • Pruebas estáticas de código… algunas herramientas • • • • • • • PMD CPD Checkstyle FindBugs RATS YASCA Sonar Ing.

• Las métricas pueden ser utilizadas para evaluar la complejidad estructural (Número Ciclomático) conduciendo a una estimación del esfuerzo en pruebas a esperar. • Las anomalías en el flujo de datos se detectan utilizando el análisis del flujo de datos.03 ANALISIS ESTATICO POR MEDIO DE HERRAMIENTAS • Resumen • Análisis estático • Con el uso de las herramientas para la realización de análisis estático (compiladores. analizadores) el código del programa puede ser objeto de inspección sin ser ejecutado. • Resultado del análisis: • El diagrama de flujo de control presenta el flujo del programa y permite la detección de “ramas muertas” y código inalcanzable. • Con el uso de las herramientas se puede realizar el análisis estático de un programa con un esfuerzo menor que el necesario para una inspección. Ing. Alejandro Bartra 37 .