miércoles, 10 de abril de 2013

Análisis del flujo de control (K2 - entender, explicar , razonar)

Objetivos:
  1. Detectar defectos causados por un desarrollo anómalo del código (ramas nuertas, código muerto, etc.)
Términos usados en este artículo: CÓDIGO, CONTROL DE FLUJO, GRAFO DIRIGIDO, NODOS, BUCLES.

Alcance.



La estructura del código se representa como un diagrama de control de flujo.
Se denomina también "Grafo dirigido" y están compuestos por:
  1. Los nodos, que representan sentencias o secuencias de sentencias.
  2. Las aristas, que representan la transferencia del flujo de control como en decisiones y bucles.
  3. Las regiones, representan a las áreas delimitadas por aristas y nodos. Cuando se contabilizan las regiones de un programa debe incluirse el área externa como una región más. 
  4. Construcción mediante herramientas.
  5. Resultados.
  6. Visión del conjunto del código del programa comprensible.
  7. Las anomalías pueden ser detectadas fácilmente, los defectos se hacen evidentes. 
    1. Bucles abandonados pos saltos
    2. Ramas muertas
    3. Retornos múltiples
  8. Un grafo de un flujo de control es una versión simplificada de un diagrama de flujo.
Análisis del flujo de datos

Una variable x puede tener los siguientes estados a lo largo de la ejecución de un programa:

  • x se encuentra indefinida [U]; (no ha sido asignado valor alguno a la variable x).
  • x se encuentra definida [D]; (ha sido un valor asignado a la variable, por ejemplo: x = 1 ).
  • x está referenciada [R]; (ha sido tomada una referencia , el valor de x no cambia, por ejemplo: if (x>0 o a = b + x ).
  • El flujo de datos  de una variable puede ser expresada como una secuencia de estados : D, U y R , por ejemplo UDRDRRU.
  • Si una de estas secuencias contiene una subsecuencia que no tiene sentido, entonces se ha identificado una anomalía en el flujo de datos.
  • UR, anomalía: un valor indefinido ha sido utilizado.
  • DU, anomalía : un valor definido pasa a indefinido antes de ser leído.
  • DD, anomalía: un valor definido vuelve a ser definido antes de ser leído. 

No hay comentarios:

Publicar un comentario