Universidad Técnica Federico Santa María Departamento de Informática
Ingeniería de Software
Ingeniería de Software
Dr. Marcello Visconti Z.Programa
Programa
Proceso de Software y Paradigmas de Desarrollo Gestión de Proyectos
Fases del Desarrollo de Software
íAseguramiento de Calidad de Software Evolución de Software
Ingeniería de Software Dr. Marcello Visconti Z.
Aseguramiento de
Aseguramiento de
Calidad de Software
Calidad de Software
• Calidad de Software • SQA, V&V • Revisiones e Inspecciones • Medición de Calidad • Cleanroom • TestingIngeniería de Software Dr. Marcello Visconti Z.
Aseguramiento de
Aseguramiento de
Calidad de Software
Calidad de Software
• 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
Ingeniería de Software Dr. Marcello Visconti Z.
Aseguramiento de
Aseguramiento de
Calidad de Software
Calidad de Software
Visiones de Calidad
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
Aseguramiento
de Calidad de Software
de Calidad de Software
Facilidad de Mantenimiento (¿Puedo corregirlo?) Flexibilidad (¿Puedo cambiarlo?)Facilidad de Prueba (¿Puedo probarlo?)
Revisión del Producto Transición del Producto Operación del Producto Portabilidad
(¿Podré usarlo en otra máquina?) Reusabilidad
(¿Podré reusar alguna parte del software?)
Interoperabilidad (¿Podré hacerlo interactuar con otro sistema?)
Ingeniería de Software Dr. Marcello Visconti Z.
Aseguramiento de
Aseguramiento de
Calidad de Software
Calidad de Software
• Software Quality Assurance (SQA)
– Acciones sistemáticas y planificadas requeridas para asegurar la calidad de software
Ingeniería de Software Dr. Marcello Visconti Z.
• 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
Aseguramiento de
Aseguramiento de
Calidad de Software
Calidad de Software
Grupo de SQA
Grupo de SQA
Ingeniería de Software Dr. Marcello Visconti Z.
Aseguramiento de
Aseguramiento de
Calidad de Software
Calidad de Software
Verificación y Validación
Verificación y Validación
• Verificación -- ¿estamos construyendo el producto correctamente?
• Validación -- ¿estamos construyendo el producto correcto?
Aseguramiento de
Aseguramiento de
Calidad de Software
Calidad de Software
Revisiones de Software
Revisiones de Software
• Actúa como un filtro
• Descubrimiento temprano de defectos -- gran impacto en los costos de testing y mantención
Ingeniería de Software Dr. Marcello Visconti Z.
Revisiones de Software
Revisiones de Software
Efecto de Amplificación de
Efecto de Amplificación de
Defectos
Defectos
Diseño preliminar Diseño detallado Codificación/prueba de unidad Prueba de integración Prueba de validaciónPrueba del sistema
Errores latentes 12 24 47 94 37 10 6 4 0 0 0% 4 x 1.5 x = 1.5 6 0% 25 27 x 3x = 3 10 20% 25 0 50% 0 50% 0 0 50% 0 0 10 Para la integración 94 Sin revisiones
Ingeniería de Software Dr. Marcello Visconti Z.
Revisiones de Software
Revisiones de Software
Efecto de Amplificación de
Efecto de Amplificación de
Defectos
Defectos
Diseño preliminar Diseño detallado Codificación/prueba de unidad Prueba de integración Prueba de validaciónPrueba del sistema
Errores latentes 3 6 12 24 15 3 2 1 5 10 0 0 70% 1 * 1.5 2 50% 25 10 * 3 5 60% 25 0 50% 0 50% 0 0 50% 0 0 10 Para la integración 24 Con revisiones
Ingeniería de Software Dr. Marcello Visconti Z.
Revisiones de Software
Revisiones de Software
Objetivos
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
Revisiones de Software
Guías de Acción
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
Ingeniería de Software Dr. Marcello Visconti Z.
Revisiones de Software
Revisiones de Software
Guías de Acción
Guías de Acción
• Limitar tamaño del grupo
• Exigir preparación previa
• Definir checklists
• Asignar recursos
• Entrenar a los revisores
• Revisar las revisiones
Ingeniería de Software Dr. Marcello Visconti Z.
Inspecciones
Inspecciones Fagan
Fagan
• Desarrolladas en 1972, por Michael Fagan
• Beneficios: prevención y reducción de defectos, y por ende de costos
Ingeniería de Software Dr. Marcello Visconti Z.
Inspecciones
Inspecciones Fagan
Fagan
Etapas
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
Aseguramiento de
Calidad de Software
Calidad de Software
Medición de Calidad
Medición de Calidad
• Visión del usuario
– confiabilidad (mtbf)
– usabilidad (instalación, aprendizaje, uso) • Visión del productor
– defectos – rework
Ingeniería de Software Dr. Marcello Visconti Z.
Aseguramiento de
Aseguramiento de
Calidad de Software
Calidad de Software
ISO 9126
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
Ingeniería de Software Dr. Marcello Visconti Z.
Aseguramiento de
Aseguramiento de
Calidad de Software
Calidad de Software
ISO 9126
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
Ingeniería de Software Dr. Marcello Visconti Z.
Aseguramiento de
Aseguramiento de
Calidad de Software
Calidad de Software
ISO 9126
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
• Fundamentos teóricos
– especificación y diseño formal – prueba de correctitud – testing estadístico
Aseguramiento de Calidad
Aseguramiento de Calidad
de Software
de Software
Cleanroom
Cleanroom
Ingeniería de Software Dr. Marcello Visconti Z.
Cleanroom
Cleanroom
Especificación
Función Uso Requerimientos del Cliente
Planificación de Desarrollo Incremental Especificación de Uso Especificación Funcional Estructura de Cajas Especificación & Diseño Verificación y Corrección Generación Estadística de casos de test Plan incremental de desarrollo Datos erroneos
Casos de Test Casos de Test
Testing Estadístico
Certificación de la Calidad del Modelo Feedback
Medidas de Rendimiento Operacional
Ingeniería de Software Dr. Marcello Visconti Z.
•
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
Aseguramiento de Calidad
Aseguramiento de Calidad
de Software
de Software
Aspectos Económicos
Aspectos Económicos
Ingeniería de Software Dr. Marcello Visconti Z.
Testing
Testing de Software
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
Testing de Software
de Software
Caso de Prueba
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
Ingeniería de Software Dr. Marcello Visconti Z.
Testing
Testing
de Software
de Software
Configuración del software Configuración de prueba Resultados de la prueba Resultados esperados Errores Correcciones Predicción de confiabilidad Datos de tasa de error Prueba Evaluación Modelo de confiabilidad Depuración
Flujo de información en la prueba
Ingeniería de Software Dr. Marcello Visconti Z.
Testing
Testing de Software
de Software
Terminología Básica
Terminología Básica
• Cobertura (test coverage)
– 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
Ingeniería de Software Dr. Marcello Visconti Z.
Testing
Testing de Software
de Software
Terminología Básica
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
• Caja blanca – caminos básicos – estructuras de control • Caja negra – clases de equivalencia – análisis de fronteras
Testing
Testing
de Software
de Software
Diseño de Casos
Ingeniería de Software Dr. Marcello Visconti Z.
Testing
Testing de Software
de Software
Estrategias
Estrategias
S R D C U I V ST Ingeniería del SistemaCodificación Requerimientos Diseño Prueba de Unidad Prueba de Integración Prueba de Validación Prueba del Sistema
Ingeniería de Software Dr. Marcello Visconti Z.
Testing
Testing de Software
de Software
Test Unitario
Test Unitario
Módulo --- --- ---InterfazEstructuras de datos locales Condiciones límite Caminos independientes Caminos de manejo de errores
Casos de prueba
Ingeniería de Software Dr. Marcello Visconti Z.
Testing
Testing
de Software
de Software
Test de Integración
-Test de Integración -
Bottom
Bottom
-
-
Up
Up
D3 D1 D2 Mb Grupo 3 Grupo 2 Grupo 1 Mc Ma Integración ascendente
Testing
Testing de Software
de Software
Test de Integración
-Test de Integración -
Top
Top
-
-
Down
Down
M1
Ingeniería de Software Dr. Marcello Visconti Z.
Testing
Testing de Software
de Software
Test de Validación
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
Ingeniería de Software Dr. Marcello Visconti Z.
Testing
Testing de Software
de Software
Test de Sistemas
Test de Sistemas
• Objetivo: determinar si el sistema en su globalidad opera satisfactoriamente (recuperación de fallas, seguridad y protección, stress, performance)
Ingeniería de Software Dr. Marcello Visconti Z.
Testing
Testing de Software
de Software
Criterios de
Criterios de
Completación
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