Programacion Defensiva

Páginas: 9 (2236 palabras) Publicado: 24 de marzo de 2014
ProgramacionDefensiva

Un ejemplo para empezar

Supongamos que necesitamos una función que aloja 3 bloques de memoria, hace alguna operación con ellos, y una vez que tiene el resultado, los libera. En esencia, lo que queremos es:

void allocate_3(void) {
int *p1, *p2, *p3;
p1 = malloc (100*sizeof(int));
p2 = malloc (100*sizeof(int));
p3 = malloc(100*sizeof(int));
/*
* Hacer algo útil con p1, p2, p3
*/
free(p3);
free(p2);
free(p1);
}

Porque este documento empieza así? En este ejemplo van a aparecer muchos de los problemas que vamos a tener que resolver.

Nuestros objetivos

Los programadores tenemos (o deberíamos tener) como objetiva la construcción de programas de calidad. Haymuchísimos aspectos que influyen en la calidad de los programas: que funcione correctamente, que tenga buena documentación, que sea eficiente, que sea compatible con otros programas, que tenga una buena interfaz de usuario, etc...

Este documento discute un conjunto de problemas y metodologías/técnicas para resolverlos. Las técnicas se conocen como "Programación Defensiva", y apuntan a resolverproblemas asociados con dos aspectos importantes de la calidad del software:

Correccion: Un programa es correcto cuando cumple su funcion correctamente, es decir, cuando hace todo lo que se supone que debe hacer.
Robustez: Un programa es robusto cuando es capaz de manejar razonablemente situaciones inesperadas (que falten archivos, que se acabe la memoria, que haya un error interno en elmismo programa), y minimiza el daño producido por estas situaciones.

Estas dos van a ser las metas de todo lo que hablemos en este documento

Conociendo al enemigo

A los problemas que usualmente afectan a la corrección o robustez de un programa se les denomina coloquialmente "bugs". El término "bug" se usa con muchas acepciones (Ver la definición en el Jargon File), por lo que vamos asepararlo en tres conceptos separados:

Errores, defectos y fallos

Un error es una decisión incorrecta tomada durante el desarrollo de un sistema de software (usualmente una suposición incorrecta).
Un defecto es una propiedad del software que puede hacer que se comporte de una manera no deseada.
Un fallo es la situación en la cual un software en ejecución efectivamente se comporta deuna manera no deseada.

La palabra "bug" usualmente se usa para hablar de defectos (ej: "encontré que la rutina frobnicate_marbles() tenía un bug"), aunque a veces se usa para hablar de fallos (ej: "Este programa viene corriendo sin bugs hace 3 días").

Claramente, la relación de causa efecto es: los fallos son producidos por defectos, que son el resultado de errores. Los fallos existen en laejecución del programa, los defectos en el software, y los errores en las personas. Lo que intentamos es no tener errores ni defectos. Aunque en general la forma que tenemos para hacer esto, es testear, y obtener fallos. A partir del fallo viene un trabajo detectivesco en el que (con suerte) aparece el defecto culpable, y el error que produjo el defecto.

Mi defecto favorito

Hay un zoológicode defectos posibles, que varían en tamaño, visibilidad, frecuencia con la que producen fallos, cuan serios son, dificultad de reparar, etc. ¿Cuales son los bugs más "benignos"? La respuesta a esa pregunta depende de donde sea el enfoque.

Para el usuario el mejor bug posible tiene efectos mínimos, casi invisibles; y probablemente nunca se manifiestó durante su uso normal del programaPara el desarrollador el mejor bug posible se manifiesta cada vez que se ejecuta el programa, tiene consecuencias evidentes y deja un rastro sangriento desde la escena del crimen hasta su ubicación. Porque? porque esos son los más fáciles de corregir.

Por ejemplo: en SO2003, al hacer ksamp algún grupo escribió

int *x;
*x = ...

Ese pedazo de código tiene un defecto (asigna datos a...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Defensa de programación
  • defensa programacion
  • Informe De Programación Defensiva
  • Defensa oral de la programación
  • Defensa
  • DEFENSA
  • la defensa
  • defensa

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS