Ingeniería de Software – Introducción a la Ingeniería de SoftwareCalidad del Software Ingeniería de Software – Introducción a la Ingeniería de Software Bienvenida Ingeniería de Software – Introducción a la Ingeniería de Software Acuerdo de reglas de operación Ingeniería de Software – Introducción a la Ingeniería de Software Calidad del Software ¿Expectativas ? Ingeniería de Software – Introducción a la Ingeniería de Software El alumno será capaz de controlar la calidad de productos y procesos de software aplicando técnicas y estándares que rigen la pertinencia y consistencia del desarrollo de software.. Objetivo general del curso Ingeniería de Software – Introducción a la Ingeniería de Software 1. El alumno ... 2. El alumno … Objetivos particulares Ingeniería de Software – Introducción a la Ingeniería de Software Temas I. Conceptos básicos de Calidad y Aseguramiento de la Calidad del Software. II. Métricas del proceso de Software. III. Modelos de Software. Ingeniería de Software – Introducción a la Ingeniería de Software Primer Corte Cuestionario. Conceptos básicos de Calidad del Software y Aseguramiento de la Calidad del Software (20%) Guía de Observación. Exposición sobre Estándares de Calidad aplicados en el desarrollo de software. (El estándar será asignado por el Instructor) (20%) Lista de cotejo. Informe que documente el Proceso de desarrollo de Software, de alguna organización de la Industria del software. (30%) Evaluación escrita. (30%) Ingeniería de Software – Introducción a la Ingeniería de Software Ajuste de expectativas Ingeniería de Software – Introducción a la Ingeniería de Software Forma de trabajo • Exposición • Participaciones • Ejercicios dirigidos • Debates. Ingeniería de Software – Introducción a la Ingeniería de Software Criterios de Evaluación Tipos: Escrito Momentos: Primer Corte, Segundo Corte y Tercer Corte. Criterios: …. Instrumentos: Evaluación escrita, Exposición, Cuestionarios, Presentación de Proyectos. Ingeniería de Software – Introducción a la Ingeniería de Software Beneficios del curso Relación con la experiencia laboral Relación con la experiencia personal Ingeniería de Software – Introducción a la Ingeniería de Software Contrato de aprendizaje Ingeniería de Software – Introducción a la Ingeniería de Software Objetivos particulares Primer corte El alumno … Ingeniería de Software – Introducción a la Ingeniería de Software Temas I. Conceptos básicos de Calidad y Aseguramiento de la Calidad del Software I. ... II. … Ingeniería de Software – Introducción a la Ingeniería de Software Conceptos básicos de Calidad Ingeniería de Software – Introducción a la Ingeniería de Software […] el código defectuoso sigue siendo el duende de la industria del software, es responsable hasta de 45% del tiempo que están fuera los sistemas basados en computadoras y costó a las empresas estadounidenses alrededor de $100 mil millones de dólares el último año en perdidas de productividad y reparaciones. Standish Group Ingeniería de Software – Introducción a la Ingeniería de Software El mal software es una plaga en casi todas las organizaciones que emplean computadoras, lo que ocasiona horas de trabajo perdidas por el tiempo que están fuera de uso las máquinas, por datos perdidos o corrompidos, oportunidades de ventas, costos elevados de apoyo y mantenimiento, y poca satisfacción del cliente. ComputerWorld Ingeniería de Software – Introducción a la Ingeniería de Software “Dejemos de desperdiciar $78 mil millones de dólares al año”. “Las empresas estadounidenses gastan miles de millones de dólares en software que no hace lo que se supone que debe de hacer” CIO Magazine Ingeniería de Software – Introducción a la Ingeniería de Software ¿de quién es la culpa? Lluvia de ideas. Equipos Ingeniería de Software – Introducción a la Ingeniería de Software ¿Qué es Calidad? Lluvia de ideas. Equipos Ingeniería de Software – Introducción a la Ingeniería de Software Calidad ¿Cuáles son las diferentes maneras en las que puede verse la calidad? Punto de vista trascendental Algo que se reconoce de inmediato Punto de vista del usuario Si el producto lo satisface Punto de vista del fabricante Si el producto, cumple las especificaciones originales Punto de vista del producto Funciones y características del producto Punto de vista basado en el valor Lo que el cliente está dispuesto a pagar por un producto David Garvin, Harvard Business School Ingeniería de Software – Introducción a la Ingeniería de Software ¿Qué es Calidad del Software ? Lluvia de ideas. Equipos Ingeniería de Software – Introducción a la Ingeniería de Software Sin intentamos detallar lo que entendemos por calidad de software tendríamos que hablar de: Funcionamiento. El software debe funcionar siempre, en todo momento; debe permitirnos utilizarlo cuando sea necesario. Usabilidad. No sólo un software debe hacer lo que dice que hace; también debe permitirnos hacerlo de forma adecuada, natural. Funcionalidad. El software deberá cubrir las funcionalidades que publica; en resumen, debe hacer lo que dice que hace. Roberto Rodríguez Galán Ingeniería de Software – Introducción a la Ingeniería de Software Calidad del Software Desempeño Características Confiabilidad Conformidad Durabilidad Servicio Estética Percepción G a r v i n Ingeniería de Software – Introducción a la Ingeniería de Software Factores de la Calidad de McCall Ingeniería de Software – Introducción a la Ingeniería de Software Factores de la Calidad ISO 9126 Ingeniería de Software – Introducción a la Ingeniería de Software Lograr la calidad del software Métodos de la Ingeniería de Software Técnicas de Administración de Proyectos Control de Calidad Aseguramiento de la Calidad Ingeniería de Software – Introducción a la Ingeniería de Software Ley de Meskimen. Nunca hay tiempo para hacerlo bien, pero siempre hay tiempo para hacerlo otra vez. Ian Sommerville Ingeniería de Software – Introducción a la Ingeniería de Software Ley de Meskimen. Nunca hay tiempo para hacerlo bien, pero siempre hay tiempo para hacerlo otra vez. Ian Sommerville Ingeniería de Software – Introducción a la Ingeniería de Software Riesgos En el mes de noviembre de 2000, en un hospital de Panamá, 28 pacientes recibieron dosis masivas de rayos gama durante su tratamiento contra diversos tipos de cáncer. En los meses que siguieron, 5 de estos pacientes murieron por envenenamiento radiactivo y 15 más sufrieron complicaciones serias. ¿qué fue lo que ocasionó ésta tragedia? Ingeniería de Software – Introducción a la Ingeniería de Software Un paquete de software, desarrollado por una compañía estadounidense, que fue modificado por técnicos del hospital para calcular las dosis de radiación para cada paciente. Ingeniería de Software – Introducción a la Ingeniería de Software Los tres médicos panameños que “pellizcaron” el software para que diera capacidad adicional fueron acusados de asesinato en segundo grado. La empresa de Estados Unidos enfrentó litigios serios en los dos países. Ingeniería de Software – Introducción a la Ingeniería de Software Moraleja: Ésta es la alerta para cualquier creador de programas de cómputo: la calidad del software importa, las aplicaciones deben ser a prueba de tontos y el código mal desplegado – ya sea incrustado en el motor de un automóvil, un brazo robótico o un dispositivo en un hospital – puede matar. La mala calidad conlleva riesgos, algunos muy serios. Ingeniería de Software – Introducción a la Ingeniería de Software ¿Qué es Aseguramiento de la Calidad? Ingeniería de Software – Introducción a la Ingeniería de Software Es la definición de procesos y estándares que deben conducir a la obtención de productos de alta calidad y, en el proceso de fabricación, a la introducción de procesos de calidad. Ian Sommerville Ingeniería de Software – Introducción a la Ingeniería de Software Establece la infraestructura de apoyo a los métodos sólidos de la ingeniería de software, la administración racional de los proyectos y las acciones de control de calidad. Además, consiste en un conjunto de funciones de auditoría y reportes para evaluar la eficacia y completitud de las acciones de control de calidad. Roger. Pressman Ingeniería de Software – Introducción a la Ingeniería de Software Un aspecto importante del aseguramiento de calidad es la definición o selección de estándares que deben aplicarse al proceso de desarrollo de software o al producto de software. Ian Sommerville Ingeniería de Software – Introducción a la Ingeniería de Software Estándares de producto. Incluyen: • estándares de documentos (p.e. la estructura de los documentos de requerimientos), • estándares de documentación (encabezado de un comentario estándar para una definición de clase de objeto), y • estándares de codificación, los cuales definen cómo debe usarse un lenguaje de de programación. Ian Sommerville Ingeniería de Software – Introducción a la Ingeniería de Software Estándares de proceso Los estándares de proceso pueden incluir definiciones de especificación, procesos de diseño y validación, herramientas de soporte de proceso y una descripción de los documentos que deben escribirse durante dichos procesos. Ian Sommerville Ingeniería de Software – Introducción a la Ingeniería de Software Control de calidad. Es la aplicación de dichos procesos de calidad para eliminar aquellos productos que no cuentan con el nivel requerido de calidad. Ian Sommerville Ingeniería de Software – Introducción a la Ingeniería de Software Evaluación y mejora del proceso CMMi ISO/IEC 15504 ISO 9001:2000 MoPROSOFT PSP/TSP Ingeniería de Software – Introducción a la Ingeniería de Software Conceptos básicos de Pruebas de caja blanca Casos de prueba Son especificaciones de las entradas a la prueba, y la salida esperada del sistema. Ingeniería de Software – Introducción a la Ingeniería de Software Aplicación de evaluación final Tipo Instrucciones Alcance Tiempo Ingeniería de Software – Introducción a la Ingeniería de Software Conclusión y cierre del curso Ingeniería de Software – Introducción a la Ingeniería de Software Resumen de la sesión Ingeniería de Software – Introducción a la Ingeniería de Software Revisión del cumplimiento de objetivos, temas y expectativas Ingeniería de Software – Introducción a la Ingeniería de Software El alumno usará diversas técnicas de pruebas de caja blanca, para demostrar la presencia de errores en un determinado código fuente de un programa de computadora. Objetivo general del curso Ingeniería de Software – Introducción a la Ingeniería de Software 1. El alumno demostrará la presencia de errores en un determinado código fuente de un programa de computadora, utilizando técnicas de cobertura de decisión y condición. 2. El alumno demostrará la presencia de errores en un determinado código fuente de un programa de computadora, utilizando técnicas de ruta básica. Objetivos particulares Ingeniería de Software – Introducción a la Ingeniería de Software Temas • Conceptos básicos de Pruebas de caja blanca • Cobertura de decisión y condición • Derivación de casos de prueba • Notación de gráfico o grafo de flujo • Rutas de programa independiente • Complejidad ciclomática • Conjunto básico • Derivación de casos de prueba Ingeniería de Software – Introducción a la Ingeniería de Software Revisión de expectativas Ver hoja de hoja de papel Ingeniería de Software – Introducción a la Ingeniería de Software Sugerencias para seguir aprendiendo del tema Ingeniería de Software – Introducción a la Ingeniería de Software Taller IEEE 829 Curso de Pruebas de caja negra Implementar JUnit en el entorno de Netbeans, para automatizar las pruebas Curso de Implementación de Selenium Capacitación Ingeniería de Software – Introducción a la Ingeniería de Software Logros y aplicación de lo aprendido Ingeniería de Software – Introducción a la Ingeniería de Software Aplicación de encuesta de satisfacción