Originado en el modelo CMM (Capability Maturity Model), creado para medir la calidad de desarrollo de software, CMMI integra un conjunto de mejores prácticas basadas en varias disciplinas, que abarcan el diseño y análisis de sistemas, ingeniería de software, desarrollo integrado de productos y gestión de proveedores para proyectos. Con él, una organización puede implementar simultáneamente una serie de mejoras que, de otra manera, serían consideradas como iniciativas separadas.
A mediados de la década de los ochenta, el Departamento de Defensa de Estados Unidos, motivado por la creciente incorporación de computadores en la mayor parte de sus operaciones, mostraba su preocupación por el desarrollo de las aplicaciones de software. En ese momento, cuando los sistemas operativos y aplicaciones gráficas recién comenzaban a aparecer, el Departamento de Defensa encargaba el desarrollo del software a proveedores externos. Por lo tanto, el organismo requería de una metodología que le permitiera determinar con rigurosidad qué proveedores cumplirían sus demandas en los plazos, presupuestos y especificaciones definidas.
Fue el SEI (Software Engineering Institute) de la Universidad Carnegie Mellon quien desarrolló una visión que permitía medir y describir el nivel de calidad en las organizaciones dedicadas al desarrollo de software. Se trataba de CMM Capability Maturity Model), cuya primera versión se publicó a inicios de la década de los noventa, siendo adoptado por el Departamento de Defensa como un requisito para seleccionar a sus proveedores de software (a través de certificación). A partir de tal exigencia, CMM se convirtió rápidamente en el estándar de facto en la industria del software, extendiéndose también a otras áreas, a partir de la evolución de su versión original.
Mejora de Procesos
CMM es un modelo orientado a la mejora de procesos relacionados con el desarrollo de software, para lo cual considera un conjunto de mejores prácticas de ingeniería y gestión. Originalmente, el modelo considera cinco niveles para clasificar a las organizaciones en su nivel de “madurez”, atendiendo a sus prácticas, metodologías y gestión en los procesos de desarrollo y mantenimiento de software:
Nivel 1 o Inicial: En este estado, el proceso de desarrollo y mantenimiento de software es impredecible, en tanto no existe planificación y sistemas de control, lo cual provoca que, aun cuando exista la técnica de ingeniería correcta, el éxito de tales proyectos dependa del talento y las iniciativas individuales.
Nivel 2 o Repetible: En este nivel las organizaciones cuentan con algunas prácticas y métricas para gestionar sus proyectos, lo cual les permite alcanzar el éxito en casos similares.
Nivel 3 o Definido: En este caso, existe una buena gestión de los proyectos, con procesos de software documentados y estandarizados. Las organizaciones de este nivel disponen de procedimientos de coordinación y técnicas de ingeniería métricas más avanzadas.
Nivel 4 o Gestionado: En este nivel las organizaciones cuentan con métricas del proceso de desarrollo de software, orientadas a la calidad y productividad. Esto les permite contar con procesos sistematizados y desarrollar productos de calidad.
Nivel 5 u Optimizado: En este nivel, el conjunto de la organización se orienta a la mejora continua del proceso de software, con uso intensivo de métricas y la aplicación de prácticas y tecnologías basadas en la innovación.
El modelo CMM alcanzó gran notoriedad a fines de la década pasada, cuando en el contexto del “Problema del Año 2000” (Y2K), dio un fuerte empuje al outsourcing de software a nivel mundial, haciendo que proveedores de la India o Irlanda, entre otros, pudieran disputar mano a mano licitaciones de empresas ubicadas en Estados Unidos o Europa.
Debido al éxito de CMM, muchas compañías adoptaron el modelo, entre ellas, algunas de la industria tecnológica, como IBM; Hewlett Packard (HP), NCR, Motorota y Ericsson, además de otras destacadas organizaciones internacionales, como la NASA, Boeing y Siemens.
Posteriormente, el SEI comenzó a desarrollar modelos similares a CMM para otras áreas. Este esfuerzo, iniciado en los años noventa culminó el 2002 con el establecimiento de CMMI (Capability Maturity Model Integration) o Modelo de Madurez de Capacidades Integrado.
Mejores Prácticas
CMMI combina un conjunto de mejores prácticas basadas en experiencias en una variedad de disciplinas, que abarcan el diseño y análisis de sistemas, ingeniería de software, desarrollo integrado de productos y gestión de proveedores para proyectos. De esta forma, con CMMI, una organización puede abordar simultáneamente una amplia gama de mejoras que, de otra manera, serían consideradas como iniciativas separadas. Desde ese punto de vista, este modelo contribuye a efectuar múltiples mejoras en las organizaciones.
CMMI tiene dos representaciones esenciales: Staged (etapas) y Continuous (continuo). El primero de ellos es el más conocido y es el que contiene los cinco niveles de madurez. Permite establecer comparaciones objetivas entre distintas organizaciones y ofrece una secuencia probada para implementar mejoras en ellas. Por su parte, la representación continua de CMMI permite a las empresas seleccionar las mejoras específicas más acordes a sus objetivos de negocio y reducción del riesgo, mientras hace más fácil comparar procesos a través de proyectos y transitar a otros estándares de calidad. Ambas representaciones CMMI se diseñan para proporcionar resultados equivalentes.
Dentro de cada uno de los niveles de la madurez CMMI, los procesos dominantes se definen en cinco áreas: metas, cumplimiento, capacidad, medida y verificación. Los desarrolladores de CMMI han definido un método riguroso para determinar cómo una organización va resolviendo los objetivos en cada nivel. El estándar CMMI Appraisal Method for Process Improvement (SCAMPI) proporciona grados detallados de fortalezas y de debilidades relacionadas con los modelos CMMI. SCAMPI fue desarrollado para ayudar a organizaciones para mejorar sus procesos fijando prioridades y centrándose en las mejoras para alcanzar metas de negocio. Esto ha hecho que muchas organizaciones ofrezcan servicios para evaluar SCAMPI en terceros.
Beneficios de CMMI
Las mejores prácticas de los modelos CMMI permiten a las organizaciones obtener los siguientes beneficios:
* Se explicita de mejor manera el vínculo entre la gestión y sus actividades de ingeniería para sus objetivos de negocio.
* Se amplía el alcance y la visibilidad dentro del ciclo de vida de productos y actividades de ingeniería para permitir que el producto o el servicio responda a las expectativas del cliente.
* Se incorpora el aprendizaje de mejores prácticas a otras áreas como manejo del riesgo, por ejemplo.
* Se implementan prácticas más robustas y maduras en la organización.
* Se obtiene un mejor complemento con estándares ISO.
CMMI se asemeja al estándar internacional ISO 9001 –el cual especifica un sistema de calidad para el desarrollo y mantenimiento de software–, siendo la principal diferencia entre ambos que éste especifica un nivel mínimo aceptable de calidad para los procesos de software, mientras que CMMI establece un marco para medir procesos continuos de mejora y hace más explícitas las definiciones para tal efecto.
Por último, se puede destacar que CMMI no dice a las organizaciones cómo implementar las mejoras en el desarrollo de software, simplemente indica dónde se requieren. Los modelos CMMI tampoco son procesos o descripciones de procesos, ya que los procesos reales de cada organización dependen de una serie de factores propios.