Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
1.Introduccin a los computadores y su programacin 2. Introduccin al anlisis y diseo de algoritmos 3. Introduccin al anlisis y diseo de programas 4. Verificacin de programas
UNIVERSIDAD DE CANTABRIA
Notas:
1. Introduccin a los computadores y su programacin
UNIVERSIDAD DE CANTABRIA
Arquitectura bsica de un computador.El software del sistema. Lenguajes de Alto Nivel. El proceso de compilacin. El ciclo de vida del software. 2. Introduccin al anlisis y diseo de algoritmos. Diseo de un programa. Concepto de algoritmo. Descripcin de algoritmos: el pseudolenguaje. Tiempo de ejecucin de algoritmos. La notacin O(n). Ejemplos de anlisis. 3. Introduccin al anlisis y diseo de programas Actividades del ciclo de vida del software. Paradigmas de desarrollo de programas. Anlisis y especificacin. Diseo arquitectnico. Tcnicas de diseo detallado. 4. Verificacin de programas Importancia de la verificacin. Estrategias de prueba. Depuracin. Eleccin de datos para la prueba.
1. Importancia de la verificacin
UNIVERSIDAD DE CANTABRIA
Aproximadamente la mitad del esfuerzo total del desarrollo se emplea en las pruebas del programa. La prueba de un programa depende mucho de su dimensin cuanto ms grande es el programa ms etapas son necesarias en el proceso de prueba. Para las pruebas de un programa debe hacerse una planificacin rigurosa. Para probar un programa incompleto o mdulos de programa es necesario escribir software de prueba en ocasiones, el software de prueba es ms grande que el propio programa.
DEPARTAMENTO DE MATEMTICAS, ESTADSTICA Y COMPUTACIN
Notas:
UNIVERSIDAD DE CANTABRIA
Cuando tratamos el esfuerzo necesario para el desarrollo de un sistema software, vimos que aproximadamente la mitad del esfuerzo total se empleaba en las pruebas del programa, lo cual pone de manifiesto la gran importancia de esta etapa del desarrollo. Segn sea la dimensin del programa la problemtica asociada a las pruebas de un programa pueden ser completamente diferentes. En programas grandes normalmente la prueba necesita mayor nmero de etapas que en programas pequeos. Al igual que para el diseo de un programa, para su prueba es necesario hacer una planificacin cuidadosa de todos los elementos que se van a probar. Para ello, se suele elaborar un documento de pruebas, incluso antes de escribir el programa. El rango de las tcnicas empleadas para la prueba de programas es muy amplio, y abarca desde el estudio de viabilidad de las especificaciones hasta los programas generadores de las secuencias de pruebas. Cuando se prueba un programa incompleto o un mdulo de programa, es necesario crear software de prueba, que permite introducir o recoger los datos y eventos necesarios. En programas grandes es habitual que el software de pruebas sea ms voluminoso que el propio programa. El software de pruebas de un programa debe conservarse, para poder probar de nuevo el programa cuando se hagan modificaciones.
UNIVERSIDAD DE CANTABRIA
Caractersticas
- < 1000 instrucciones - 1 persona, < 6 meses - Sin interacciones con otros programas < 10.000 instrucciones 1-5 personas, < 2 aos Pocas interacciones con otros sistemas 10 a 100 mdulos
Dependencia
Del programador Del programador y de la direccin Tcnicas modernas de diseo y direccin
- < 100.000 instrucciones - 5-20 personas, < 3 aos - Frecuentemente interacciona con otros sistemas. - 100 a 1000 mdulos.
Notas:
UNIVERSIDAD DE CANTABRIA
Categora
Muy complejo
Caractersticas
- < 106 instrucciones - 20-100 programadores - Requiere mantenimiento continuo y por gente distinta. - Fuertes interacciones con otros sistemas. - 1000 a 10.000 mdulos - > 106 instrucciones - > 100 programadores - Requiere mantenimiento continuo y por gente distinta. - Casi siempre incluye procesado en tiempo real, telecomunicaciones, etc. - Corresponde, generalmente, a procesos crticos (trfico areo, defensa, etc.)
Dependencia
Tcnicas modernas de diseo y direccin
Super complejo
Idem
Definiciones bsicas
Prueba o Test: ejecucin para encontrar errores
UNIVERSIDAD DE CANTABRIA
Demostracin: prueba matemtica por inspeccin del cdigo Verificacin: bsqueda de fallos en ambiente simulado Validacin: comprobacin en el ambiente real Certificacin: se certifica la correccin cuando se han probado exhaustivamente todas las posibilidades Depuracin o Debugging: localizar y corregir errores
Notas:
UNIVERSIDAD DE CANTABRIA
Testing o Prueba: Es el proceso de ejecucin de un programa (o parte de l) con la intencin o meta de encontrar errores. Demostracin: Es un intento de encontrar errores si tener en cuenta el ambiente del programa. Es decir, se trata de obtener o probar teoremas matemticos acerca de la correccin de un programa. Verificacin: Es un intento de encontrar errores en un ambiente de test o simulado. Validacin: Es un intento de encontrar errores ejecutando un programa en un ambiente real dado. Certificacin: Es un certificado de correccin. La prueba para certificacin debe realizarse sobre algn tipo de estndar predefinido. Depuracin: No es una forma de prueba y, aunque a veces las palabras depuracin y prueba se usan de forma intercambiable, son actividades distintas. La prueba es una actividad de encontrar errores, y la depuracin es la actividad de diagnosticar la naturaleza precisa de un error, conocerlo y corregirlo. Las dos estn relacionadas porque la salida de una actividad de prueba es la entrada de una actividad de depuracin.
Relacin: prueba-diseo
Diseo
Requerimientos Prueba de instalacin
UNIVERSIDAD DE CANTABRIA
Prueba
Prueba de aceptacin Especificacin Prueba de sistema Diseo arquitectura Pruebas Funcionales Diseo detallado Prueba de Integracin
Codificacin
Prueba de mdulos
Notas:
UNIVERSIDAD DE CANTABRIA
Prueba de mdulo: Consiste en probar cada mdulo de programa individualmente. Cuando tratamos un programa pequeo, generalmente es desarrollado y probado como una utilidad nica y por una sola persona. Prueba de integracin: En la prueba de mdulos normalmente no se encuentran los errores relacionados con la interaccin entre los diferentes mdulos. El proceso de juntar los diferentes mdulos individuales para realizar subsecciones o funciones de un programa se denomina integracin de sistemas. Cuando se utilizan pruebas para averiguar la correccin de las interfaces entre los mdulos se denomina a este proceso de prueba, prueba de integracin. Pruebas de funcin y de sistema: En estas pruebas se analiza el funcionamiento de los mdulos ya unidos para comprobar su correcto funcionamiento conjunto en una funcin o subsistema del programa (prueba de funcin), o del programa completo (prueba de sistema). Prueba de aceptacin: Es el proceso de prueba realizado sobre el programa completo, en ambiente simulado o de prueba, para darlo por vlido. Requiere la prueba bajo las condiciones ms variadas. Normalmente participa el usuario, que da su visto bueno. Prueba de instalacin: Es el proceso de prueba realizado con el programa funcionando en su sistema y ambiente real, una vez instalado.
10
UNIVERSIDAD DE CANTABRIA
Ventajas
Desventajas
- No necesita programas - Necesita mdulos driver de prueba simulados (stubs) - El programa de control y - Los errores en los mdulos unos pocos mdulos crticos se encuentran en forman un prototipo bsico ltimo lugar - Los errores de interfaces se detectan pronto - La caracterstica modular ayuda a la depuracin
11
Notas:
UNIVERSIDAD DE CANTABRIA
Cuando se realiza un diseo top-down o bottom-up puro, lo ms lgico es realizar tambin la prueba con la misma tcnica. En el caso de una prueba top-down, sta comienza analizando el funcionamiento del flujo de control del programa principal examinando cmo pasa el control y los datos a los distintos mdulos, cmo stos los devuelven y cmo el programa de control pasa los datos a los dispositivos de salida. Para ello, se necesita incluir en esta fase del desarrollo un cierto conjunto de instrucciones en cada mdulo, an cuando stos an no han sido diseados. A estos mdulos simplificados que permiten la prueba se les denomina stubs. Los stubs incluyen la implementacin de las interfaces del mdulo y un conjunto, normalmente sencillo, de cdigo para su utilizacin en el test. La complejidad de estos mdulos simulados vendr en funcin del inters por profundizar en el funcionamiento del sistema.
12
UNIVERSIDAD DE CANTABRIA
Ventajas
Desventajas
- No necesita mdulos - Necesitan programas simulados principales simulados - Se encuentran primero los (test drivers) errores de los mdulos - Los errores de interfaz se crticos descubren despus - Se ajustan las necesidades - Es necesario desarrollar humanas a lo existente muchos mdulos antes de ms fcilmente tener un programa parcialmente operativo
13
Notas:
UNIVERSIDAD DE CANTABRIA
Cuando el diseo es bottom-up puro y la prueba tambin, no necesitaremos los mdulos del test anteriores, pero sin embargo necesitaremos drivers, esto es, programas principales que pasan datos al mdulo bajo test y reciben datos de ste, una vez procesados. Lgicamente, casi nunca, la metodologa es una u otra nicamente, sino que ambas tcnicas, top-down y bottom-up, se utilizan mezcladas de igual forma que se realiza en el diseo de forma prctica.
14
3. Depuracin
UNIVERSIDAD DE CANTABRIA
Es el proceso de localizacin y eliminacin de un error una vez detectado. Tcnicas antiguas: Volcado de memoria Trazas Escritura en pantalla Programas de depuracin de bajo nivel Tcnicas modernas: Programas de depuracin de alto nivel
15
Notas:
UNIVERSIDAD DE CANTABRIA
Cuando se detecta un error, es necesario precisar su localizacin en el programa (cual es el mdulo causante) y una vez localizado se pasa a su eliminacin. A este proceso se le denomina depuracin o debugging. Volcado de memoria. Se realiza un registro de todas las posiciones de memoria o variables relevantes de forma peridica. Ventajas: Se obtiene el contenido de la memoria en instantes de tiempo cruciales. Desventajas: Requiere tiempo de CPU. Requiere mucho tiempo de anlisis. Trazas. Esencialmente es igual que la anterior, excepto que contiene solamente ciertas porciones de memoria y registros y sus salidas estn condicionadas por la ocurrencia de un evento. Instrucciones write o put. Se utiliza la instruccin Put en pantalla o la equivalente del lenguaje de programacin utilizado, para obtener el valor de las variables deseadas. Ventajas: Es muy simple. Se puede ver la variacin del valor de la variable deseada. Desventajas: Son muy molestas de usar en grandes programas. Usadas indiscriminadamente no dan ninguna informacin. Requieren recompilacin. Programa de Depuracin. Es un programa que corre concurrentemente con el programa bajo test y suministra comandos para examinar la memoria, parar la ejecucin en algn punto, buscar por referencia constantes o variables particulares, etc. Antiguamente los depuradores slo valan para lenguaje ensamblador, pero hoy en da existen muchos depuradores de lenguajes de alto nivel.
16
UNIVERSIDAD DE CANTABRIA
17
Notas:
UNIVERSIDAD DE CANTABRIA
La mejor prueba es aquella que realiza la comprobacin para todos los valores de los datos de entrada y todas las condiciones iniciales. Este test, salvo en casos triviales, es prcticamente imposible. Por ello, es importante tener una gua para escoger el subconjunto de datos de entrada ms adecuado, aunque no existe una formalizacin clara acerca de esta eleccin: 1. Generar un conjunto de datos de prueba para ejercitar cada una de las grandes caractersticas del programa 2. Generar pruebas para comprobar los casos lmite entre dos conjuntos de soluciones, extremos de los rangos de solucin, etc. 3. Generar pruebas con datos de entrada inusuales o incorrectos. 4. Comprobar si ya se ha realizado una cobertura de todos los caminos del programa y, si no es as, aadir las pruebas necesarias para ello. 5. Escoger casos adicionales mediante tcnicas aleatorias y/o por un anlisis en profundidad del algoritmo.
18