Los procesos de software Un proceso de software se define como un: l "conjunto de actividades, métodos, prácticas y transformaciones que las personas usan para desarrollar y mantener software y sus productos asociados [p.ej., planes, especificaciones, diseños y pruebas]" (Piattini y Daryanani, 1995) Una premisa fundamental: l "La calidad de un producto de software está determinada, en muy buena medida, por la calidad del proceso usado para desarrollarlo y mantenerlo" Mejoramiento de los procesos de software 1 Evaluación y Mejoramiento de los Procesos de Software Modelo para evaluar y mejorar los procesos de software l El Modelo de Madurez de la Capacidad (CMM) l l l CMM: Capability Maturity Model Desarrollado por el Instituto de Ingeniería de Software (SEI) de la Universidad Carnegie-Mellon en USA Incorpora aspectos definidos por el ISO 9001 Mejoramiento de los procesos de software 2 CMM: El Modelo de Madurez de la Capacidad El CMM (Capability Maturity Model) fue desarrollado por el Software Engineering Institute (SEI) de la Univ. Carnegie-Mellon en USA con la finalidad de: l evaluar la madurez de los procesos de desarrollo de software dentro de una organización. l proponer un plan de mejoramiento de los procesos de desarrollo de software en base a una serie de niveles que van desde un proceso caótico (inmaduro) hasta un proceso disciplinado y de mejoramiento continuo (maduro). Mejoramiento de los procesos de software 3 CMM: El Modelo de Madurez de la Capacidad Capacidad de un proceso de software: l Rango de resultados esperados que pueden ser logrados siguiendo un proceso de software dado Madurez de un proceso de software: l Determina en que grado un proceso de software es explícitamente definido, administrado, medido, controlado y hecho efectivo l La madurez es un indicador de la capacidad del proceso de software para lograr sus objetivos y resultados esperados. l Una organización logra mayor madurez mediante la institucionalización del proceso de desarrollo de software, estableciendo las políticas, estándares y estructuras organizativas Mejoramiento de los procesos de software 4 CMM: El Modelo de Madurez de la Capacidad Organización inmadura Organización madura Improvisa o no sigue rigurosamente los procesos de software Tiene definido e implantado el método de desarrollo y mantenimiento de software Improvisa o no emplea la gerencia de proyectos Los procesos técnicos y gerenciales están establecidos, son comunicados a toda la organización y se exige su aplicación Actúa en respuesta a las crisis que surjan Los roles y responsabilidades de los grupos y sus miembros están claramente definidos. No se hacen estimaciones de costos y tiempo reales Las estimaciones de costos y tiempos se basan en experiencias anteriores, reales y cuantificadas La calidad del producto no es definida sobre una base objetiva Existen objetivos cuantificables para medir la calidad del producto No se puede predecir la calidad del producto Se controla la calidad del producto y se garantiza la satisfacción del cliente Mejoramiento de los procesos de software 5 CMM: El Modelo de Madurez de la Capacidad El CMM emplea 5 niveles de madurez para evaluar y mejorar los procesos de software de una organización Proceso mejorado contínuamente Proceso predecible Proceso estandarizado Proceso disciplinado N. Optimizado N. Gerenciado N. Definido N. Repetible N. Inicial Mejoramiento de los procesos de software 6 CMM: El Modelo de Madurez de la Capacidad Nivel Inicial l La organización no posee un ambiente estable de desarrollo de software l Ausencia de gerencia de proyectos l El proceso de software es cambiante e irregular: l Durante las crisis, los grupos abandonan el método y se concentran en la codificación y pruebas l Los planes, estimaciones y calidad son impredecibles l El rendimiento y el éxito dependen de la capacidad individual de los miembros del grupo l La capacidad es una característica de los individuos y no de la organización N. Inicial Mejoramiento de los procesos de software 7 CMM: El Modelo de Madurez de la Capacidad Nivel Repetible l La organización establece políticas para gerenciar los proyectos de software y procedimientos para implantar estas políticas l Los procesos están bajo un control efectivo de un sistema de gerencia de proyectos basado en experiencias anteriores l Los procesos son definidos, documentados, practicados, medidos, obligados y mejorables l Los procesos de software son estables y repetibles l Existen estándares de desarrollo definidos y exigidos l La calidad es controlada Mejoramiento de los procesos de software N. Repetible 8 CMM: El Modelo de Madurez de la Capacidad Nivel Definido l Los procesos de software son definidos: l l estandarizados, documentados e institucionalizados Se institucionaliza un proceso estándar de desarrollo de software que integra en uno solo: l l los procesos de ingeniería de software y gerencia de proyectos de software l Existe un entendimiento común de los procesos, funciones y responsabilidades l La organización mantiene un grupo dedicado a la definición, mejoramiento y difusión del proceso estándar l El proceso estándar es adaptado a cada proyecto N. Definido Mejoramiento de los procesos de software 9 CMM: El Modelo de Madurez de la Capacidad Nivel Gerenciado: l La organización define metas de calidad cuantitativas para: l l l los productos de software y los procesos de software El proceso estándar es medible o cuantificable: l La productividad y la calidad se miden y se registran para cada proyecto l La calidad del software es predecible l Mediante el uso de métricas de software, se crea una base de datos cuantitativa para la evaluación y estimación en proyectos futuros l La capacidad del proceso de software es cuantificable y predecible N. Gerenciado Mejoramiento de los procesos de software 10 CMM: El Modelo de Madurez de la Capacidad Nivel Optimizado: l La organización se orienta hacia el mejoramiento contínuo de sus procesos de software l La organización identifica las debilidades y fortalezas de su proceso y determina maneras de mejorar su capacidad l La organización busca aumentar la capacidad y el rendimiento de sus procesos l Se incorporan nuevas tecnologías y métodos para mejorar los procesos l El mejoramiento ocurre a través de: l l El avance incremental del proceso Uso de nuevas tecnologías y métodos Mejoramiento de los procesos de software N. Optimizado 11 CMM: El Modelo de Madurez de la Capacidad Nivel Area clave del proceso 1) Inicial 2) Repetible Ingeniería de requerimientos Planificación de proyectos Control y seguimiento de proyectos Gerencia de subcontratación Aseguramiento de la calidad del software (S/W) Gerencia de la configuración del S/W 3) Definido Coordinación de la definición y mejora del proceso Programa de adiestramiento Integración Gerencia e Ingeniería de S/W Ingeniería de productos de S/W Coordinación inter-grupos Revisiones 4) Gerenciado Gerencia cuantitativa de procesos Gerencia de la calidad del software 5) Optimizado Prevención de defectos Gerencia del cambio tecnológico y del proceso Mejoramiento de los procesos de software 12 CMM: El Modelo de Madurez de la Capacidad Aspectos de uso del modelo: l El escalamiento de los niveles es progresivo l l Saltarse un nivel es contraproducente Normalmente se requiere 1 – 3 años para escalar al siguiente nivel l Alcanzar, desde el nivel 1, la categoría de “Organización Madura” puede tomar más de 10 años l Es posible retroceder desde un nivel superior l El CMM no es una “bala de plata” (silver bullet) l l no resuelve todos los problemas decalidad en el complejo proceso de desarrollo y mantenimiento de software La evaluación es hecha por especialistas adiestrados y acreditados por el SEI Mejoramiento de los procesos de software 13 Conclusiones El desarrollo de software es un proceso complejo que requiere: l Un recurso humano altamente especializado y actualizado l Un mejoramiento continuo y estandarización de los procesos de desarrollo l Aplicación de procesos gerenciales l Un aseguramiento de la alta calidad del software producido l Tecnología y herramientas apropiadas y actualizadas El CMM proporciona una estructura conceptual y metodológica para mejorar la gerencia y el desarrollo de S/W y, por ende, la calidad de los productos Mejoramiento de los procesos de software 14 Fin de la Presentación Mejoramiento de los procesos de software 15