# Capability Maturity Model

El Modelo de Madurez de Capacidades o CMM (Capability Maturity Model) es un modelo para la evaluación y mejora de los procesos de una organización, especialmente aquellos relacionados con el desarrollo e implementación de software. Fue desarrollado por la Universidad Carnegie Mellon para el Software Engineering Institute (SEI), un centro de investigación patrocinado por el Departamento de Defensa de los Estados Unidos y gestionado por la propia universidad. "CMM" es una marca registrada del SEI.

## Historia y evolución del modelo CMM

A partir de 1986, el SEI, a petición del Gobierno Federal de los Estados Unidos (especialmente del Departamento de Defensa), desarrolló una primera versión de un modelo de madurez de procesos para el desarrollo de software, publicado en 1987. Este trabajo evolucionó hacia el modelo CMM o SW-CMM (CMM for Software), cuya versión final (v1.1) se publicó en 1993.

## El modelo SW-CMM

Este modelo define un conjunto de prácticas o procesos clave agrupados en Áreas Clave de Proceso (KPA - Key Process Area). Para cada KPA, se establecen buenas prácticas que deben ser:
    Definidas: Documentadas en procedimientos.
    Provistas: La organización debe proporcionar los recursos y la formación necesarios.
    Ejecutadas: Implementadas de forma sistemática, universal y uniforme (institucionalizadas).
    Medidas: Evaluadas mediante métricas.
    Verificadas: Auditadas para asegurar su cumplimiento.
Estas KPAs se agrupan en cinco niveles de madurez, indicando el grado de madurez de la organización en sus procesos de desarrollo de software:
    1 - Inicial: No hay un ambiente estable para el desarrollo y mantenimiento de software. El éxito depende del esfuerzo individual, y los resultados son impredecibles, con frecuentes retrasos y sobrecostos.
    2 - Repetible: Existen prácticas institucionalizadas de gestión de proyectos, métricas básicas y seguimiento de la calidad. La relación con subcontratistas y clientes se gestiona sistemáticamente.
    3 - Definido: Además de la gestión de proyectos, hay procedimientos de coordinación entre grupos, formación, técnicas de ingeniería detalladas y métricas avanzadas. Se utilizan revisiones por pares.
    4 - Gestionado: Se utilizan métricas de calidad y productividad para la toma de decisiones y la gestión de riesgos. El software resultante es de alta calidad.
    5 - Optimizado: La organización se enfoca en la mejora continua de los procesos, con un uso intensivo de métricas y gestión de la innovación.
Cada nivel de madurez (excepto el nivel 1) se compone de varias KPAs. Cada KPA identifica actividades y prácticas interrelacionadas que, en conjunto, permiten alcanzar las metas del proceso. Las KPAs se clasifican en tres tipos: Gestión, Organizacional e Ingeniería.
Las prácticas de cada KPA se organizan en cinco Características Comunes, que indican si la implementación y la institucionalización de un proceso clave son efectivas, repetibles y duraderas:
    i) Compromiso de la realización.
    ii) Capacidad de realización.
    iii) Actividades realizadas.
    iv) Mediciones y análisis.
    v) Verificación de la implementación.
Las organizaciones utilizan CMM para mejorar sus procesos y pueden obtener una certificación del SEI que evalúa su nivel de madurez. Esta certificación es requerida por el Departamento de Defensa de los Estados Unidos y utilizada por muchas organizaciones a nivel mundial para evaluar a sus subcontratistas de software.
Se estima que una organización tarda unos 18 meses en promedio para avanzar un nivel de madurez, aunque algunas lo logran más rápidamente. El proceso requiere un esfuerzo considerable y el compromiso de la dirección.
Muchas organizaciones que actúan como factorías de software o que realizan outsourcing de procesos de software adoptan el modelo CMM y buscan la certificación. India es uno de los países con más organizaciones certificadas, debido al auge de las factorías de software que trabajan para clientes estadounidenses y europeos.

## Evolución hacia CMMI

A partir de 2001, el SEI presentó el modelo CMMI, que integra y reemplaza a SW-CMM y otros modelos. El SEI dejó de desarrollar SW-CMM y la formación de evaluadores en este modelo cesó en 2003. Las organizaciones que utilizaban SW-CMM podían seguir haciéndolo, pero ya no podían obtener nuevas certificaciones a partir de finales de 2005.

## Otros modelos relacionados

* CMMI: Integración de modelos (SW-CMM, SE-CMM, IPD-CMM).
* SE-CMM: El Modelo de Madurez de Capacidades en la Ingeniería de Sistemas, publicado por el SEI en 1995, se enfoca en las actividades de ingeniería de sistemas. Define 18 áreas de proceso divididas en tres grupos: Ingeniería (7), Proyectos (5) y Organizativas (6). No utiliza niveles de madurez generales, sino que cada área de proceso puede tener un nivel de madurez diferente.
* SW-CMM: Modelo de Madurez de Capacidades para la Adquisición de Software (integrado en CMMI).
* IPD-CMM: Modelo de Madurez de Capacidades para el Desarrollo Integrado de Productos (propuesto como borrador por el SEI en 1997 e integrado en CMMI en 2000).
* P-CMM: Modelo de Madurez de Capacidades para Recursos Humanos.
* SA-CMM: Modelo de Madurez de Capacidades para la Adquisición de Software.
* S3M: Modelo de Madurez de Capacidades para el mantenimiento del software.

## Otros modelos CMM

* SSE-CMM: El System Security Engineering Capability Maturity Model (Modelo de Madurez de Capacidades en la Ingeniería de Seguridad de Sistemas) es un modelo derivado del CMM que describe las características esenciales de los procesos para asegurar una buena seguridad de sistemas. Fue desarrollado por la "International Systems Security Engineering Association (ISSEA)". Define 22 áreas de proceso (11 de ingeniería y 11 de gestión de proyectos y organización). El método de evaluación se denomina SSAM (SSE-CMM Appraisal Method).
* Incapability Immaturity Model: Con un enfoque humorístico, Anthony Finkelstein y Tom Schorsch describieron niveles negativos de madurez, representando a organizaciones que impiden activamente el desarrollo de software con éxito:
       Nivel 0: Organizaciones negligentes.
       Nivel -1: Organizaciones obstructivas.
       Nivel -2: Organizaciones desdeñosas.

## Críticas a CMM

Algunas críticas comunes a CMM incluyen:
* Falta de especificidad: El modelo indica qué actividades realizar, pero no cómo hacerlas, tanto en términos de ingeniería como de herramientas o técnicas de gestión (con la excepción de las revisiones por pares).
* Métricas: Aunque se enfatiza la necesidad de métricas, no se proporcionan guías concretas sobre qué métricas son aceptables.
* Carga burocrática: Los técnicos a menudo perciben el modelo como una carga de "papeleo", viéndolo más como un mecanismo de control que como una herramienta de ayuda.
* Complejidad: CMM, y especialmente CMMI, pueden resultar complejos y difíciles de entender.
* **Enfoque en procesos, no en resultados:** No garantiza que los proyectos tengan éxito ni que los productos sean de alta calidad.
* **Costo y tiempo:** La implementación de CMM puede ser costosa y llevar mucho tiempo.