Análisis Estático con Herramientas Flashcards
¿Qué es el análisis estático?
Aquella tarea que consiste en analizar un objeto de prueba sin ejecutarlo. Por ejemplo:
- Código fuente
- Script
- Requisito
¿Qué 5 aspectos se pueden comprobar con el análisis estático?
- Reglas y estándares de programación
- Diseño de un programa (análisis del flujo de control)
- Uso de datos (análisis de flujo de datos)
- **Complejidad **de la estructura de un programa
- Metricas (por ejemplo número ciclomático)
¿Qué característica deben cumplir los objetos analizados estaticamente?
Deben de tener una estructura formal; especialmente cuando se utilizan herramientas de pruebas.
Con mucha frecuencia no se generan docuentos formalmente.
En la práctica, lenguajes de modelado, programación y de creación de scripts cumplen con la regla, de la misma forma que algunos diagramas.
¿Cuándo es común que se lleve acabo el análisis estático de un programa?
- Antes de una revisión (menos esfuerzo que en una revisión).
- Para detectar lógica ausente o errónea
- Para detectar construcciones excesivamente complicadas, vulnerabilidades en el ámbito de la seguridad, interfaces inconsistentes, etc.
¿Cuál es el valor del análisis estático?
La previsión de defectos:
- Para encontrar defectos tan pronto como sea posible antes de la ejecución de pruebas.
- Para advertir sobre aspectos sospechosos del código.
- Para detectar discrepancias en el diseño a través del cálculo de métricas como la medida de alta complejidad.
- Estos defectos pueden no ser encontrados fácilmente con pruebas dinámicas.
- Detectando inconsistencias y dependencias.
- Para comprobar la mantenibilidad del código o diseño.
¿Qué herramientas pueden ser utilizadas en las pruebas estáticas?
- Compiladores
- Analizadores
¿Cómo ayuda un compilador en una prueba estática? (4)
- Detecta errores sintácticos en el código fuente del programa.
- Crea datos de referencia del programa.
- Comprueba la consistencia entre los tipos de variables.
- Detecta variables con declaradas y código inaccesible (código muerto).
¿Cómo ayudan los analizadores en las pruebas estáticas? (4)
- Convenciones y estándares
- Métricas de complejidad
- Acoplamiento de objetos
¿Cuál es el propósito del análisis del flujo de control?
Detectar defectos causados por el desarrollo anómalo del código (ramas de código muerto, etc).
Método usado en el análisis de control de flujo.
- La estructura del código se representa como un diagrama de control de flujo.
- Grafo dirijido:
- Los nodos representan sentencias o secuencias de sentencias
- Las aristas representan la transferencia del flujo de control, como en decisiones y bucles.
- Construcción mediante herramientas.
Resultados del análisis del flujo de control
(* 7)
- Visión del conjunto del código del programa comprensibe.
- Las anomalías se detectan fácilmente, los defectos se hacen evidentes.
3 ejemplos de defectos o anomalías que se pueden detectar con el análisis de control de flujo
- Bucles abandonados por saltos.
- Ramas muertas
- Retornos múltiples
¿Qué es un grafo de un flujo de control?
Una versión simplificada de un diagrama de flujo
Propósito del análisis del flujo de datos.
Detección de anomalías en el flujo de datos con la asistencia de diagramas de control de flujo y conjeturas racionales respecto a las secuencias del flujo de datos.
Beneficios del análisis del flujo de datos (3)
- Detección fiable de anomalías en el flujo de datos.
- Se puede detectar fácilmente la localización exacta de defectos
- Es un buen complemento para otros métodos de pruebas.
Desventaja del análisis de flujo de datos
Está limitado a un rango reducido de tipo de defectos.
Análisis de flujo de datos:
¿Qué estados puede tener una variable x a lo largo de la ejecución de un programa?
- Indefinida (i)
- Definida (d)
- Referenciada (r)
¿Cómo se puede representar el flujo de datos de una variable?
Mediante una secuencia de estados **u, d **o r. Por ejemplo: udrdrru
Subsecuencias que prueban una anomalía en el flujo de datos
- ur
- dd
- du
¿Con qué se pueden medir ciertos aspectos de la calidad de un programa?
Con **metricas **que sólo tienen relevancia para el aspecto medido.
¿Puede medirse la complejidad estática de un programa?
Si, actualmente hay aproximadamente 100 métricas disponibles.
Métrica que mide el tamaño de un programa
Líneas de código (“lines of code - LOC”)
Métrica que mide las estructuras de control del programa
Número ciclomático
Métrica que mide estrucuras de control de datos
Métrica de Halstead (“Halstead Metric”)
¿Qué tan fácil es comparar métricas?
Es difífil, incluso cuando estas abordan el mismo atributo del programa.
¿Qué es el número ciclomático?
Métrica que mide la complejidad estática de un programa basada en su grafo de control.
Mide los caminos linealmente independientes como indice de testabilidad y mantenibilidad.
- Número de aristas (e)
- Número de nodos (n)
- Número de partes del programa independientes inspeccionadas (p).
¿Cuál es el valor máximo aceptable del número ciclomático?
v(G) = 10. Si es mayor el código debe de ser reconstruido.