Universidad Técnica Federico Santa María Departamento de Informática Ingeniería de Software Dr. Marcello Visconti Z. Programa Proceso de Software y Paradigmas de Desarrollo Gestión de Proyectos Fases del Desarrollo de Software Aseguramiento de Evolución de Software Tecnología CASE, Estándares, Documentación Mejoramiento de Procesos de Software Page 1
Aseguramiento de SQA, V&V Revisiones e Inspecciones Medición de Calidad Cleanroom Testing Aseguramiento de Objetivo último de Ingeniería de Software: producir software de calidad Calidad engloba todo el proceso, y está determinada por factores directos e indirectos Calidad es un concepto complejo y multifacético, que puede describirse desde diversas perspectivas Page 2
Aseguramiento de Visiones de Calidad Visión trascendental puede ser reconocida pero no definida Visión del usuario grado de adecuación al propósito Visión del productor conformidad con la especificación Visión del producto ligada a características inherentes del mismo Visión basada en valor cuánto el cliente está dispuesto a pagar? Aseguramiento de Facilidad de Mantenimiento ( Puedo corregirlo?) Flexibilidad ( Puedo cambiarlo?) Facilidad de Prueba ( Puedo probarlo?) Revisión del Producto Portabilidad ( Podré usarlo en otra máquina?) Transición del Producto Reusabilidad ( Podré reusar alguna parte del software?) Interoperabilidad ( Podré hacerlo interactuar con otro sistema?) Operación del Producto Corrección ( Hace lo que quiero?) Confiabilidad ( Lo hace de forma confiable todo el tiempo?) Eficiencia ( Se ejecutará en mi hardware lo mejor que pueda?) Integridad ( Es seguro?) Facilidad de uso ( Está diseñado para ser usado?) Factores de calidad de software de McCall Page 3
Aseguramiento de Software Quality Assurance (SQA) Acciones sistemáticas y planificadas requeridas para asegurar la calidad de software Aseguramiento de Grupo de SQA Objetivos: planificar, desarrollar y controlar el proceso de verificación y validación Actividades: aplicación de métodos, revisiones e inspecciones, testing, estándares, control de cambios, mediciones, registro Page 4
Aseguramiento de Verificación y Validación Verificación -- estamos construyendo el producto correctamente? Validación -- estamos construyendo el producto correcto? Aseguramiento de Revisiones de Software Actúa como un filtro Descubrimiento temprano de defectos -- gran impacto en los costos de testing y mantención Defectos de software presentan un efecto de amplificación Page 5
Revisiones de Software Efecto de Amplificación de Defectos Diseño preliminar 1 % 6 1 4 Diseño detallado 6 4 x 1.5 x = 1.5 25 37 % Codificación/prueba de unidad 1 27 x 3 94 x = 3 2% 25 94 Prueba de integración 47 5% Para la integración Prueba de validación Prueba del sistema 24 5% 12 5% Errores latentes Sin revisiones Revisiones de Software Efecto de Amplificación de Defectos Diseño preliminar Diseño detallado 3 2 7% 2 Codificación/prueba de unidad 1 1 1 * 1.5 15 5% 5 5 25 1 1 * 3 24 6% 25 24 Prueba de integración 12 5% Para la integración Prueba de validación Prueba del sistema 6 5% 3 5% Errores latentes Con revisiones Page 6
Revisiones de Software Objetivos Detectar errores en la lógica, función o implementación Verificar satisfacción de requerimientos Asegurar cumplimiento de estándares Fomentar uniformidad Hacer proyectos más manejables Revisiones de Software Guías de Acción Definir tamaño, conformación y duración Revisar producto, no productor Establecer agenda Limitar debates y rebates Enunciar problemas, no resolverlos Llevar registro Page 7
Revisiones de Software Limitar tamaño del grupo Exigir preparación previa Definir checklists Asignar recursos Entrenar a los revisores Revisar las revisiones Guías de Acción Inspecciones Fagan Desarrolladas en 1972, por Michael Fagan Beneficios: prevención y reducción de defectos, y por ende de costos Proceso de inspección en 6 etapas Page 8
Inspecciones Fagan Etapas Planeación -- preparación logística (materiales, disponibilidades, fechas) Overview -- conocimiento general, asignación de roles (autor, lector, tester, moderador) Preparación -- estudio del material a ser inspeccionado Inspección -- búsqueda de defectos Rework -- hacer las correcciones Iteración -- verificación de lo realizado, y de la no introducción de efectos secundarios Aseguramiento de Visión del usuario Medición de Calidad confiabilidad (mtbf) usabilidad (instalación, aprendizaje, uso) Visión del productor defectos rework Page 9
Aseguramiento de ISO 9126 Estándar reciente para medir calidad 6 características básicas, descompuestas en subcaracterísticas Refleja una visión de usuario, mientras McCall refleja una visión de producto Aseguramiento de ISO 9126 Funcionalidad -- adecuación, precisión, interoperabilidad, seguridad Confiabilidad - madurez, tolerancia a fallas, recuperación de fallas Usabilidad -- facilidad de comprensión, facilidad de aprendizaje, facilidad de operación Page 1
Aseguramiento de ISO 9126 Eficiencia -- comportamiento temporal, comportamiento de recursos Facilidad de mantención -- facilidad de análisis, facilidad de cambio, estabilidad, facilidad de prueba Portabilidad -- facilidad de instalación, conformidad, facilidad de reemplazo Aseguramiento de Calidad de Software Fundamentos teóricos Cleanroom especificación y diseño formal prueba de correctitud testing estadístico Page 11
Requerimientos del Cliente Especificación Función Uso Cleanroom Especificación Funcional Especificación de Uso Planificación de Desarrollo Incremental Estructura de Cajas Especificación & Diseño Verificación y Corrección Plan incremental de desarrollo Generación Estadística de casos de test Casos de Test Casos de Test Testing Estadístico Datos erroneos Feedback Certificación de la Calidad del Modelo Medidas de Rendimiento Operacional Aseguramiento de Calidad de Software Aspectos Económicos Costos de SQA -- prevención y evaluación Beneficios de SQA -- asociados a disminución de rework (menos defectos y mayor confiabilidad) Importante que beneficios superen a los costos Implicancia: para ganar hay que invertir Page 12
Testing de Software Objetivo: demoler el producto de software con el propósito de detectar defectos Es una actividad esencialmente destructiva, pero que requiere mucha creatividad Consiste en ejecutar un programa con la intención de encontrar un defecto Testing de Software Caso de Prueba Un buen test case es aquel que tiene una alta probabilidad de encontrar un defecto no descubierto, no aquel en que el programa funciona correctamente El diseño de test cases es muy difícil Page 13
Testing de Software Configuración del software Evaluación Errores Prueba Resultados de la prueba Datos de tasa de error Depuración Correcciones Configuración de prueba Resultados esperados Modelo de confiabilidad Predicción de confiabilidad Flujo de información en la prueba Testing de Software Cobertura (test coverage) Terminología Básica grado en que un conjunto de pruebas abarca todos los requerimientos especificados Ramificación (branch coverage) cada decisión, cada rama se ejecuta al menos una vez Path coverage cada camino lógico se prueba Page 14
Testing de Software Terminología Básica Regresión (regression testing) prueba selectiva para comprobar que modificaciones no han causado efectos indeseados Plan de prueba (test plan) plan para asegurar el control de la prueba del producto Testing de Software Diseño de Casos Caja blanca caminos básicos estructuras de control Caja negra clases de equivalencia análisis de fronteras Bucle < = 2 veces Problemas de la prueba exhaustiva Page 15
Testing de Software Estrategias Ingeniería del Sistema Requerimientos Diseño Codificación S R D C U I V ST Prueba de Unidad Prueba de Integración Prueba de Validación Prueba del Sistema Testing de Software Test Unitario Módulo ------------- ------------- ------------- ------------- ------------- ------------- ------------- Interfaz Estructuras de datos locales Condiciones límite Caminos independientes Caminos de manejo de errores Casos de prueba Pasos de unidad Page 16
Testing de Software Test de Integración - Bottom-Up Mc Ma Mb D1 D2 D3 Grupo 3 Grupo 1 Grupo 2 Integración ascendente Testing de Software Test de Integración - Top-Down M1 M2 M3 M4 M5 M6 M7 M8 Integración descendente Page 17
Testing de Software Test de Validación Objetivo: determinar si el funcionamiento satisface al cliente/usuario Pruebas alfa: conducidas en laboratorios del desarrollador por el usuario final Pruebas beta: conducidas en ambientes de trabajo reales por usuarios finales, generalmente amistosos ; la prueba se desarrolla antes de la distribución general Testing de Software Test de Sistemas Objetivo: determinar si el sistema en su globalidad opera satisfactoriamente (recuperación de fallas, seguridad y protección, stress, performance) Page 18
Testing de Software Criterios de Completación Cómo saber cuándo dejar de hacer testing? Normalmente, se abandona al agotarse los recursos En la práctica el testing nunca acaba, solo cambia de tester... del profesional al usuario Page 19