Seminario en Tecnologías y Software (SETyS) Calidad : Modelos, s, s Dr. Cuauhtémoc Lemus Olalde Edición 2007 Septiembre 2007 Centro de Investigación en Matemáticas (CIMAT)
Terminología (ISO 9000:2000) Calidad: Grado en el que un conjunto de características inherentes cumple con los requisitos Inherente es que existe como una característica permanente Pobre, buena, excelente calidad Característica: Rasgo diferenciador Puede ser inherente ó asignada; cualitativa o cuantitativa Clases: funcionales, físicas, de tiempo, etc. Característica de Calidad: característica inherente de un producto, proceso ó sistema relacionada con un requisito
Terminología (ISO 9000:2000) Gestión: actividades coordinadas para dirigir y controlar una organización Gestión de la Calidad: actividades coordinadas para dirigir y controlar una organización en lo relativo a la calidad Incluye: política de la calidad, objetivos de la calidad, planificación de la calidad, control de la calidad, aseguramiento de la calidad y mejora de la calidad Control de la calidad: orientada al cumplimiento de los requisitos de la calidad de la calidad: orientada a proporcionar confianza en que se cumplirán n los requisitos de la calidad Mejora de la calidad: orientada a aumentar la capacidad de cumplir con los requisitos de la calidad Mejora continua: actividad recurrente para aumentar la capacidad para cumplir los requisitos mediante el cual se establecen los objetivos y se identifican oportunidades para la mejora de un proceso continuo a través s del uso de los hallazgos de la auditoria, el análisis de los datos, la revisión n por la dirección n u otros medios, y generalmente conduce a la acción n correctiva y preventiva.
Qué es calidad? Conjunto de cualidades (etimología similar) de una persona ó cosa Lo que hace que una persona ó cosa sea lo que es Propiedad, carácter cter Atributo: características mensurables, que se pueden comparar con estándares conocidos (longitud, color, propiedades eléctricas, maleabilidad, etc.) Superioridad, excelencia de alguna cosa Calidad de software Como entidad intelectual (intangible), es más s difícil de caracterizar que los objetos tangibles
Qué es calidad? Pensamiento Sistémico de IS Administración Calidad SW Calidad de Software s de SW Modelos de Madurez Métricas Componentes Reutilizables
Factores que afectan la calidad de software Tecnología de desarrollo Calidad del Calidad del Producto Calidad del Personal Costo, tiempo y duración
Mapa Conceptual PS e IS
Calidad del y Calidad del Producto La mejora de procesos se basa en la suposición n de que el factor crítico que influye en la calidad del producto es la calidad del proceso de desarrollo del producto. Medir número n de defectos en los productos y relacionar estos defectos con el proceso El proceso se mejora con el propósito de reducir el número n de defectos en el producto El proceso se mejora hasta que sea repetible Resultados del proceso sean predecibles y el número de defectos se reduzca El proceso se estandariza e inicia un ciclo de mejoras adicionales
Adopción n de modelos y estándares CMMi SPICE ISO 9001 Moprosoft. Mejoramiento de procesos de software a través s de técnicas t y métodos estadísticos sticos PSP (Personal Software Process) TSP, TSPi (Team Software Process) Seis Sigma Software Diseño o de Seis Sigma Software Desarrollo con base en
Utilizar las mejores prácticas de ingeniería a de software Utilizar herramientas apropiadas Personal debidamente entrenado y con habilidades, con responsabilidades e instrucciones bien definidas Enfasis en la prevención n o detección n temprana de defectos, en lugar de detección n y corrección n de defectos
Modelo Genérico del Desarrollo s de Desarrollo Desarrolladores Clientes s de Administración de Organización Administradores
Integrar Estándar en el desarrollo de Proyectos de Organización Modelo de Referencia organización proceso Derivado del Modelo de Referencia de Administración de Desarrollo Derivado del Modelo de Referencia de Administración de Desarrollo Proyecto 1 Proyecto n
Enfoques de IS Enfoque Programación Descripción D. Funcional P. Estructurada OOP CBP Técnica Organización Administración H L L Modelos de Desarrollo Cascada Espiral Prototipos H M L Automatizar IS CASE UML H L L Métodos Formales CSP SDL Z Clean Room H L L s de IS CMM Trillium BOOTSTRAP ISO/IEC 15504 H H H
Resumen de Modelos y Nivel CMM Bootstrap SPICE ISO 9001 Categoría Niveles [5] Categorías as [9] Categorías as (PCs) [5] - Areas Prácticas (KPAs)) [18] s [32] s (PRs)) [35] Tópicos Principales de Areas (MTAs) [20] Práctica Prácticas (KPs)) [150] Atributos de Calidad (QSAs)) [201] Prácticas Base (BPs( BPs) [201] Aspectos de Admon.. (MIs) [177]
Métodos y s TickIT ISO 9001 (1) de IS Actuales CMM (2) BOOTSTRAP ISO/IEC 12207 ISO/IEC TR 15504 (SPICE) (3) BSI Trillium Moprosoft
Escala de Capacidad de s Nivel CMM Bootstrap SPICE ISO 9001 0 - - Incomplete Fail 1 Initial Initial Performed - 2 Repeated Repeated Managed - 3 Defined Defined Established - 4 Managed Managed Predictable - 5 Optimizing Optimizing Optimizing Pass
El de IS Nueva disciplina de de Ingeniería a Desarrollo de CMM ISO 9000 de IS Fundamentos Modelo Establecimiento Evaluación Mejoramiento Estandarización de procesos de software
Definición n de de IS Conjunto de prácticas secuenciales que son funcionalmente coherentes y reutilizables en la organización, n, implementación n y administración de la ingeniería a de software.
Historia de IS Ingeniería a & Ciencia de la Administración 60s: Ingeniería a de s y principios de administración n en Ciencia de la Administración n (Simon( 60, Schein 61, Ellis & Fred 62, Juran 62, Anthony 65, Richardson 66, Hall 67) 70s & 80s: Establecimiento de Ciencia de la Administración n de acuerdo a la tabla de de Fundamentos Administrativos.
Historia de IS Conformidad de la calidad a los requisitos y a las especificaciones (Crosby 79, Juran 80, Deming 82) Círculo de Deming (Plan-Do Do-Check-Act PDCA) propuesto en Ciencia de la Administración: n: Modelación n y Análisis de s. Proyecto ISO TC176 para desarrollar un estándar internacional de sistemas de calidad (ISO 9000 91,93,94) aplicable ingeniería a e implementado en IS (IS0 9001 89,94)
Historia de IS 70s: Crisis (Naur( & Randell 69, Baker 72, Brooks 75, Hoare 75) 80s: se reconoce como un herramienta de la Ingeniería a (Basili 80, Aron 83, Agresti 86, Evans 87, Boehm 81,86,87, Gilb 88, Humphrey 87, 88, 89) Desarrollo del Modelo CMM (Humphrey( 87, Paulk 93) 80s: Otros Modelos: IEEE Software Engineering Standard (IEEE 83) British Standard BS 5750 (BSI 87)
Desarrollo Tradicional Requerimientos Diseño Codificación e Integración Prueba y Aceptación Mantenimiento
Caracterización n actual Un sistema a la vez Proyectos Desarrollo de software para un cliente externo o interno Cumplir con fecha de entrega (time-to to-market) Enfoque del proyecto es entregar antes de la fecha límitel Todas las decisiones durante el desarrollo son basadas en la prioridad de entregar el proyecto a tiempo Evolución n de sistema no es considerado No se considera (o muy poca consideración) n) en aspectos de mantenimiento y evolución n a largo plazo
Problemas Tiempo y presupuesto Proyectos de software son sobreestimados/subestimados, fuera de tiempo Calidad del Producto El costo de un producto de calidad es substancial Costos de Mantenimiento 80% del costo del sistema es debido a mantenimiento Competitividad Personal de una empresa desarrolladora de software dedicada a mantener software, en lugar de crear nuevos sistemas
Caracterización n Deseada Costos de Desarrollo Reducir drásticamente los costos de Desarrollo de Software Calidad Además s de Confiable, Fácil F de Mantener, Uso adecuado de recursos Calidad vs. Costo
Caracterización Deseada Tiempo de mercado Costo de desarrollo de un producto no es importante Tiempo de mercado es una ventaja competitiva Definición n de requerimientos hasta la distribución n del producto es de mayor relevancia
Soluciones Tentativas McIlroy,, 1969: Reutilización n de software existente a través s de componentes Reducir costos de desarrollo Mejora de la calidad del producto Time-to to-market se reduce Reducción n en los costos de Mantenimiento
Reutilización de creación n de software a partir de software existente en lugar del desarrollo tradicional de software Reutilización n de software se enfoca a código c y estructuras de datos. A medida que la complejidad de un sistema se incrementa, la reutilización n en las diferentes etapas del Desarrollo es un prioridad. La de un Sistema provee un medio de explotar reutilización n no sólo s de estructuras y algoritmos. Ahora tenemos que diseñar componentes para ser reutilizados.
Lecciones Aprendidas Todo programa de reutilización dentro de una empresa debe ser planeado y tomar un enfoque de arriba hacia abajo Reutilización n oportuna Reutilización n Planeada Un enfoque de reutilización n de abajo hacia arriba no funciona en la práctica.
Reutilización n Oportuna Se asume que las piezas de software seleccionadas son combinadas para solucionar el problema del producto de software en el cual se está trabajando.
Reutilización n Planeada Requiere que la organización n dedique un esfuerzo en desarrollar artefactos reutilizables que provean abstracciones correctas en niveles correctos de variabilidad para los productos de software de la organización. n. Recursos reutilizables son desarrollados y presentados como partes de una estructura de alto nivel.
y LíneasL De Software IS Basada en Componentes Diseño de Líneas de Productos Calidad Costo de Desarrollo Time-to Market Costo Mantenimiento
Contexto del Diseño o de una Clientes Mercadotecnia Ingeniería Requerimientos Selección de AS Implementación Completo? Producto
AS en Desarrollo Requerimientos Diseño AS Codificación e Integración Prueba y Aceptación Mantenimiento
de AS Diseño Funcional Especificaciones de Requerimientos de Aplicación Transformar Estimar Atributos de Calidad Soluciones de Optimización QA Diseño Arquitectónico
de (Reverse Engineering) Nuevo Diseño Dominio Sistema Reutilización Generalización Extracción Librería de Componentes Reutilizables Sistema Actual
de (Forward Engineering) Diseño Funcional Especificaciones de Requerimientos de Aplicación Transformar Estimar Atributos de Calidad Soluciones de Optimización QA del Sistema
Metodología a DFSS Define Measure Analyze Design Validate Project Startup Gather Customer Requirements Perform Functional Analysis Elaborate Detailed Design Prototyping Results Project Scope Translate Reqs. into CTQs (QFD) Generate Functional Reqs. Specify Process Variables Production & testing Planning & Management Develop High-Level Concepts Prototyping & Testing Performance results Elaborate Design Reqs Translate Reqs. into CTQs (QFD) Evaluate High-level design capacity Evaluate Detailed design capacity
de AS/DFSS
de la calidad Un sistema de calidad es s un proceso que asegura y demuestra la calidad de los productos y servicios que produce. Incluye políticas, procedimientos, herramientas, recursos tecnológicos y humanos. Un sistema de calidad requiere que el proceso de calidad sea administrado para asegurar su efectividad y eficiencia cuando las circunstancias cambien. El sistema de calidad debe de: Asegurar a los clientes y desarrolladores que los productos de software producidos por el proceso de calidad serán n de calidad. Poderse auditar, a través s de la documentación, n, bitácoras de calidad, mediciones que demuestren el logro de calidad y la efectiva operación n del sistema de calidad. Seguir una filosofía a de mejoramiento continuo de cualquier aspecto del proceso de desarrollo de software.
Inicio del Programa de Calidad Preparar política de calidad Documento que expresa el compromiso de la empresa a la calidad así como las expectativas de la dirección n del programa de calidad. Establecer el apoyo de la organización n a la calidad Formar un equipo de mejoramiento de la calidad Evaluar las necesidades de la empresa Diseñar el sistema de calidad para satisfacer dichas necesidades Planear y monitorear la implementación n del sistema de calidad Comunicar el programa de calidad al staff Entrenamiento y actividades de soporte al programa Preparar y revisar procedimientos y estándares Seleccionar métodos m y herramientas Establecer un programa de métricas m para medir el proceso de software, producto y servicios
Planeación n del Programa de Calidad Evaluar a la empresa Identificar las debilidades y fortalezas de la empresa Comparar prácticas actuales contra buenas prácticas de referencia (la que mejor se aproxime a las necesidades) Considerar CMMi,, SPICE, Bootstrap, Moprosoft,, etc. Considerar un consultor de gestión n de calidad con antecedentes sólidos s en el desarrollo de software, en particular con experiencia práctica en el diseño o e implementación n programas de calidad.
Planeación Diseñar el sistema de calidad Los objetivos deben de poderse medir, en lo posible, para poder alinearse con las necesidades de la empresa: Reducir cantidad de defectos en prueba y operación, Mejorar productividad, Mejorar aproximaciones de entrega, Lograr alguna certificación. Elaborar Manual de Calidad con el diseño del sistema de calidad: Qué se necesita hacer Quien lo va ha hacer Cuando se va ha hacer Como se va hacer
Planeación El Manual de Calidad será Sujeto a un control estricto de versiones Aprobación n y distribución n apropiada Bitácora de usuarios autorizados Liberación n de nuevas versiones Retiro de versiones caducas El Manual de Calidad contiene: Política y objetivos de calidad de la empresa Organigrama mostrando responsabilidades y actividades del personal que gestiona, realiza y verifica cualquier tarea que afecta la calidad Descripción n del modelo de ciclo de vida Relación n del sistema de calidad con el estándar seleccionado Referencia detallada a procedimientos y estándares
Planeación Planear la implementación La introducción n de un sistema de calidad en una empresa tiene el mismo grado de complejidad que un proyecto de desarrollo de software a gran escala. Se debe elaborar un plan completo y detallando fechas, actividades, logros, entregables y recursos necesarios en la implementación n del sistema. Actividades a realizar: Implementar del programa cultural Adoptar de un modelo de ciclo de vida Diseñar un sistema de control de documentos Elaborar y documentar procedimientos y estándares para cada actividad y entregable de cada fase del ciclo de vida Elaborar y documentar procedimientos y estándares de las actividades de soporte Definir e implementar un programa de métricasm tricas. Revisar Manual Entrenamiento y apreciación n del sistema de calidad. Programa de auditoria de calidad Administración n de revisiones Evaluación n de acuerdo al estándar o modelo seleccionado
Las nuevas tendencias que impulsarán n la tecnología La Jornada 08/03/2006 Simposio IT Expo de Gartner,, que se llevó a cabo en San Francisco, California, los analistas examinaron cuatro tendencias que impulsan esta transformación: n: Homogeneización y consumismo; Virtualización y tera-arquitecturas arquitecturas; Modelos de entrega de software y estilos de desarrollo, Comunidades y colaboración. "En los siguientes 30 años a continuaremos presenciando una mayor penetración n de la tecnología en las empresas, pero la verdadera transformación será en la forma en que la tecnología a nos llega como individuos y modifica la manera en que trabajamos y vivimos", señal aló David Willis,, vicepresidente de investigación n de Gartner.. "Si" los pasados 30 años a han sido de entregar tecnología a a la empresa, los siguientes 30 serán n sobre cómo c la tecnología transformará la vida de los individuos."
Homogeneización y consumismo Muchos segmentos de tecnología a ya son un bien de consumo, lo que implica que ya están homogeneizados. Las PC, el almacenamiento y el ancho de banda son esencialmente homogéneos, y los compradores pueden obtener fundamentalmente el mismo "producto" sin importar qué marca elijan. Los analistas de Gartner observan que esta tendencia continuará,, y absorberá también n elementos de software y servicios. La creciente homogeneización n trae consigo una baja de precios que hace que los productos o servicios se coloquen al alcance de los bolsillos de las personas y empresas. La industria de TI, al seguir este camino, comienza a experimentar un proceso que Gartner denomina consumismo de las tecnologías de la información, el cual se refiere al impacto que las tecnologías, productos y enfoques adoptados por los consumidores o diseñados para su uso tienen sobre el resto del mundo de TI (desarrolladores, es, proveedores de tecnología a y empresas). "En general, la homogenización n y el consumismo se enfocan en hacer más m s accesible la tecnología, los cambios en el comportamiento de la sociedad que surgen debido a esto, así como disminuir el impacto que esos cambios tienen en una empresa en términos t de cómo c satisface las demandas y expectativas cambiantes de los consumidores y empleados", indicó Cebe Prentice,, vicepresidente y analista distinguido de Gartner. "En conjunto, estas tendencias marcan un gran cambio en el equilibrio de poder entre los proveedores de tecnología, las empresas, los individuos y hasta el Estado".
Virtualización y tera-arquitecturas arquitecturas Se está volviendo algo común n encontrar instancias donde la virtualización de los servidores crea máquinas m virtuales o particiones sobre un solo aparato físico. f Su uso más s común n es para unir varios servidores subutilizados en servidores virtuales dentro de una sola máquina. Esto puede mejorar la utilización n de los servidores en 80 por ciento. "Las aplicaciones ya no están n destinadas a una caja, pues los encargados de sistemas pueden destinar servidores virtuales a los recursos que satisfagan mejor sus demandas computacionales", afirmó Martin Reynolds,, vicepresidente y miembro de la junta de Gartner.. "Esto da a los líderes l de TI la flexibilidad para administrar sus siempre cambiantes prioridades de demanda de recursos computacionales y de usar mejor su infraestructura." La infraestructura de TI requiere construirse con componentes granulares que se descubren uno a otro y se ensamblan automáticamente ticamente en recursos computacionales. Se vuelve incrementable sin intervención humana más m s allá del prenderlos y organizarlos. "Esta aproximación incrementable y de cero administración n conduce a la tera-arquitectura, arquitectura, infraestructura de sistemas que es capaz de incrementar las capacidades computacionales en órdenes de magnitud sobre lo que podemos hacer hoy en día, d dentro del mismo presupuesto", afirmó Reynolds.
Modelos de entrega de software y estilos de desarrollo El concepto de creciente granularidad,, o sea nuevas formas de administrar y entregar servicios para satisfacer las necesidades del negocio, es también n importante en la evolución n de la industria del software. El tercer par de tendencias se refiere a la forma en que q el software se desarrolla, y a la forma cambiante en que los usuarios lo adquieren. Los analistas de Gartner afirman que los nuevos modelos para entrega y desarrollo de software se enfocan en las personas. "El control se está desplazando de los programadores hacia el público en general", agregó Daryl Plumier, vicepresidente de grupo y jefe de la junta de Gartner.. "Nos estamos desplazando de un mundo donde se esperaba que las personas se comportaran de la misma forma que las computadoras, hacia un mundo donde las máquinas trabajan de la forma en que las personas se comportan. Todo se trata de lo que hacemos con el software en lugar de lo que éste es, o cómo c se aplica." Hay tres principios que guían este nuevo modelo de entrega: no seas dueño, renta; no compres aplicaciones, adquiere soluciones, y no compres contenidos, sino capacidades. La industria del software continúa a desplazándose hacia un modelo de software como servicio, el cual provee flexibilidad que conduce a agilidad. Proporciona muchas opciones a los jefes de TI y luego permite que la empresa decida cómo c se usarán n esas opciones.
Comunidades y colaboración Los individuos, así como los empleados y clientes, han adoptado las comunidades virtuales, así que las compañí ñías no podrán n evitar hacer lo mismo. Los analistas de Gartner afirman que actualmente el trabajador promedio participa en 10 comunidades. En los siguientes 10 años, a 80 por ciento del trabajo realizado por empleados será colaborativo y no de personas trabajando por sís mismas. Las personas que están n entrando a la fuerza laboral tienden a trabajar en colaboración n y están n centradas en su comunidad. Los estudiantes de preparatoria y universidad están n aceptando las redes comunitarias sociales. Sin embargo, cuando los analistas de Gartner hablan con las compañí ñías, muchas no reconocen las tecnologías comunitarias y de colaboración n como inversiones prioritarias. "A la fecha, la comunidad y la colaboración n han estado en el margen del pensamiento de las personas, son secundarias a otras consideraciones", indicó Kathy Harris,, vicepresidente y analista de Gartner.. "De hoy en adelante, estas tecnologías tienen que estar en primer orden de consideración n a la hora de fijar las prioridades de inversión n en TI." La última generación n de tecnología a de Internet, incluyendo la web 2.0 y la arquitectura orientada a servicios, extenderá el alcance, escala y potencial de las comunidades y del trabajo en colaboración. Los analistas de Gartner afirman que el cambio irá más s allá de características innovadoras e interesantes. Esta generación n soportará nuevos enfoques de colaboración para el desarrollo de software e integrará tecnologías de consumo para lograr ambientes computacionales corporativos.
Preguntas? Dr. Cuauhtémoc Lemus Olalde clemola@cimat.mx Septiembre, 2007 www.cimat.mx/~clemola
ISO Standards http:// ://www.praxiom.com/ Tantara Hotlist http:// ://www.tantara.ab.ca/info.htm Best practices in CMM http:// ://www.gartnerconnects.com/reprints/wipro/cs-19-6994/1. 6994/1.htm Software - the arrowhead of India's IT weaponry http:// ://atimes.com/reports/bl07ai01.html Pressman S. Roger,, Ingeniería a : Un enfoque práctico. 5ta. Edición, MacGraw Hill, 2002. Lewis E. William, Software TEsting and Continuous Quality Improvement CRC Press,, 2000 Sommerville, Ian,, Ingeniería a, Addison-Wesley Wesley,, Sexta Edición, 2002. Sanders, Joc, and Curran Eugene,, Software Quality: : A framework for success in software development and support,, ACM Press, 1994. Drabick Roger, A Process Model of Software Quality Assurance/Software Quality Engineering, Software Quality Professional, Volumen 2, Issue 4, Septiembre 2000. Layman Beth, Rohde Sharon, Experiences implementing a software project measurement methodology, Software Quality Professional, Volumen 2, Issue 1, Diciembre 1999. Crosby,, P., Quality is Free, McGraw-Hill, 1979.
Garvin 1984 Albretch,, A. J., Measuring Application Development Productivity, Proceeedings IBM Application Development Symposium, Monterey, CA, October 1979, pp. 83-92 Jones,, C., Estimating Software Costs, McGraw-Hill,1998. Grady,, R. B., Practical results from measuring software quality, Communications of the ACM, Vol. 36, Number 11, pp. 62-68, 68, 1993. Barnard,, J., Price,, A., Managing code inspection information, IEEE Software, Volume 11, Number 2, pp. 59-69, 1994. Offen,, R. J., Jeffrey,, R., Establishing software measurement programs,, IEEE Software Volume 14, Number 2, pp. 45-54, 54, 1997. Hall, T., Fenton,, N., Implementing effective software metrics program,, IEEE Software, Volume 14, Number 2, pp. 55-64, 1997 Pulford,, K., Kuntzmann-Combelles Combelles,, A., et al., A Quantitative Approach to Software Management, Addison-Wesley Wesley,, 1996. Gilb,, T., Principles of Software Engineering Management, Addison- Wesley,, 1988. McCall,, J. A., Cavano,, J. P., A Framework for the measurement of Software Quality, Proceedings of ACM Software Quality Assurance Workshop, November 1978, pp. 133-139. 139. Basili 1996 Shewart 1920
Kautz,, K., Making sense of Maeasurement for Small Organizations,, IEEE Software, Macrh 1999, pp. 14-20 Grable,, R., et al., Metrics for Small Projects: Experiences at SED,, IEEE Software, March 1999, pp. 21-29 29 Park,, R. E., et al., Goal Driven Software Measurement- A Guidebook,, CMU- SEI-96 96-BH-002, Software Engineering INstitute,, CMU, Agugust,, 1996. Mills,, H. D., et al., Cleanroom Software Engineering,, IEEE Software Volume 4, Number 5, September,, pp. 19-24, 1987. Adams,, E. N., Optimizing preventative service of software products,, IBM Journal Research and Development, Volume 28, Number 1, pp. 2-14, 2 1984. Lyu,, M., Software Reliability Engineering, McGraw-Hill, 1996. Myers,, G., The Art of Software Testing, Wiley,, 1979. Davis,, A., 201 Principles of Software Development, McGraw-Hill, 1995 Bach 1994 Freedman,, D. P., Weinberg,, G. M., Handbook of Walkthroughs, Inspections and Technical Reviews, Dorset House,, 1990 Schulmeyer,, G. C., McManus,, J. I., Handbook of Software Quality Assurance, Prentice-Hall, 1998 Kaplan,, C., Clark, R., Tang,, V., Secrets of Software Quality: : 40 Innovations from IBM, McGraw-Hill, 1995 Kan,, S. H., Metrics and Models in Software Quality Engineering, Addison- Wesley,, 1995