Pruebas de Confiabilidad de Software Objetivo El curso de pruebas de confiabilidad de software permitirá al alumno comprender las técnicas necesarias para mejorar la calidad del software. Cualquier sistema de software con fallas en su funcionamiento o que se ejecute fuera de si especificación tendrá poca duración o será rechazado por el cliente. De acuerdo a estudios recientes en cientos de sistemas de software usados en los Estados Unidos, la gran mayoría de estos presentan numerosos defectos de software que perjudican la integridad de los sistemas que controlan o que perjudican a la economía o seguridad del personal que utiliza este software.
Es claro, que en la actualidad el software es utilizado para controlar una gran parte de la economía de los países altamente industrializados y se encuentran presentes en la mayoría de los aparatos electrónicos que utilizamos diariamente. Es por esto que los sistemas de software cuenten con una alta confiabilidad, que permita que el software este siempre disponible, libre de fallos catastróficos, seguro, íntegro y que se ejecute siempre de acuerdo a como fue especificado.
En este curso se presenta primero una introducción a la confiabilidad de software, la cual permitirá introducir técnicas para una programación confiable que ayude a la eliminación de defectos. Así mismo, en este curso se presentaran distintas técnicas para la implementación de pruebas de software, inspecciones y depuración. Finalmente se presentara el mecanismo de diseño por contrato como un mecanismo para reducir los fallos en el diseño del software.
Cada capítulo de este curso tendrá una introducción teórica, un ejemplo de implementación y distintos ejercicios prácticos que permitan al alumno implementar las técnicas aprendidas.
A pesar de ser un curso impartido dentro de la especialidad de Ingeniería de Software, no se requiere de haber llevado el curso de Introducción a la Ingeniería de Software
Contenido del curso
1. INTRODUCCION A LAS PUEBRAS Y CONFIABILIDAD DEL SOFTWARE 1.1. Introducción a las pruebas y confiabilidad del software. a. Pruebas de software como proceso de Ingeniería del Software. b. Confiabilidad c. Definiciones de error, fallo y fallo de sistema. d. Importancia de la detección de fallos en el software. 1.2. Programación Modular: Primer paso hacia la programación confiable. a. Introducción ala programación modular. b. Programación modular en la práctica c. Programación el lenguaje C estilo tradicional d. Mecanismos del lenguaje C para soporte del encapsulado. 1.3. Metodología para la programación modular modelo de módulos a. Estructura de archivos asociada al modelo de módulos b. Modelo de la interfaz y las dependencias de los módulos y sus archivos c.Mstructura de los archivos del encabezado d. Directivas para el diseño de módulos 1.4. Ejemplos y actividad práctica.
2. FUNDAMENTOS DE CORRECCION Y CONFIABILIDAD 2.1. Conceptos básicos sobre defectos del software 2.2. Programación disciplinada 2.3. Tipos de datos abstractos 2.4. Diseño por contrato 2.5. Invariantes 2.6. Ventajas del uso consciente de aseveraciones 2.7. Estilo de codificación del software 2.8. Inspecciones, pruebas y depuración del software 2.9.Disciplinas de desarrollo 2.10. Ejemplos y actividad práctica
3. FUNDAMENTOS DE PRUEBAS DE SOFTWARE 3.1. Conceptos básicos sobre pruebas del software 3.2. pruebas de Caja Negra 3.3. Pruebas estructurales o de Caja Blanca 3.4. Pruebas como mecanismo de evitación de defectos 3.5. Papel de las aseveraciones ejecutables durante las pruebas
4. AUTOMATIZACION DE LAS PRUEBAS 4.1. Proceso de Automatización de las pruebas de unidad 4.2. Requerimientos, Diseño e Implementación del Módulo de Pruebas 4.3. Ejemplos de Prueba del Módulo 4.4. Actividad Práctica
5. INSPECCIONES DE SOFTWARE 5.1. Inspecciones del software para la detección de defectos 5.2. Inspecciones formales 5.3. Técnicas de detección de defectos durante la inspección 5.4. Aspectos psicológicos de la inspección 5.5. Inspecciones formales como mecanismo de prevención de defectos 5.6. Otras prácticas de inspección menos formales 5.7. Conclusiones
6. FUNDAMENTOS DE DEPURACION DEL SOFTWARE 6.1. Conceptos básicos sobre depuración del software 6.2. Observación de los hechos 6.3. Bitácora de la ejecución para la depuración 6.4. Trazas o historia de la ejecución 6.5. Verificación automática del estado del programa 6.6. Ejemplos y Actividad Práctica
7. FUNDAMENTOS DE DISEÑO POR CONTRATO 7.1. Diseño por contrato 7.2. Invariables. 7.3. Ventajas del uso consistente de aseveraciones 7.4. Aseveraciones vs. Pruebas de Unidad 7.5. Diseño de módulo para el soporte del diseño por contrato en lenguaje C 7.6. Ejemplos y Actividad Práctica
|
|||