Capability Maturity Model
# Capability Maturity Model

El Modelo de Madurez de Capacidades o CMM (Capability Maturity Model), es un modelo de evaluación de los procesos de una organización. Fue desarrollado inicialmente para los procesos relativos al desarrollo e implementación de software por la Universidad Carnegie-Mellon para el Software Engineering Institute (SEI).

El SEI es un centro de investigación y desarrollo patrocinado por el Departamento de Defensa de los Estados Unidos de América y gestionado por la Universidad Carnegie-Mellon. "CMM" es una marca registrada del SEI.

## El modelo CMM

A partir de noviembre de 1986 el SEI, a requerimiento del Gobierno Federal de los Estados Unidos de América (en particular del Departamento de Defensa, DoD), desarrolló una primera definición de un modelo de madurez de procesos en el desarrollo de software, que se publicó en septiembre de 1987. Este trabajo evolucionó al modelo CMM o SW-CMM (CMM for Software), cuya última versión (v1.1) se publicó en febrero de 1993.

Este modelo establece un conjunto de prácticas o procesos clave agrupados en Áreas Clave de Proceso (KPA - Key Process Area). Para cada área de proceso define un conjunto de buenas prácticas que habrán de ser:

   * Definidas en un procedimiento documentado

   * Provistas (la organización) de los medios y formación necesarios

   * Ejecutadas de un modo sistemático, universal y uniforme (institucionalizadas)

   * Medidas

   * Verificadas

A su vez estas Áreas de Proceso se agrupan en cinco "niveles de madurez", de modo que una organización que tenga institucionalizadas todas las prácticas incluidas en un nivel y sus inferiores, se considera que ha alcanzado ese nivel de madurez.

    1 - Inicial. Las organizaciones en este nivel no disponen de un ambiente estable para el desarrollo y mantenimiento de software. Aunque se utilicen técnicas correctas de ingeniería, los esfuerzos se ven minados por falta de planificación. El éxito de los proyectos se basa la mayoría de las veces en el esfuerzo personal, aunque a menudo se producen fracasos y casi siempre retrasos y sobrecostes. El resultado de los proyectos es impredecible.
    2 - Repetible. En este nivel las organizaciones disponen de unas prácticas institucionalizadas de gestión de proyectos, existen unas métricas básicas y un razonable seguimiento de la calidad. La relación con subcontratistas y clientes está gestionada sistemáticamente.
    3 - Definido. Además de una buena gestión de proyectos, a este nivel las organizaciones disponen de correctos procedimientos de coordinación entre grupos, formación del personal, técnicas de ingeniería más detalladas y un nivel más avanzado de métricas en los procesos. Se implementan técnicas de revisión por pares (peer reviews).
    4 - Gestionado. Se caracteriza porque las organizaciones disponen de un conjunto de métricas significativas de calidad y productividad, que se usan de modo sistemático para la toma de decisiones y la gestión de riesgos. El software resultante es de alta calidad.
    5 - Optimizado. La organización completa está volcada en la mejora continua de los procesos. Se hace uso intensivo de las métricas y se gestiona el proceso de innovación.

Así es como el modelo CMM establece una medida del progreso, conforme al avance en niveles de madurez. Cada nivel a su vez cuenta con un número de áreas de proceso que deben lograrse. El alcanzar estas áreas o estadios se detecta mediante la satisfacción o insatisfacción de varias metas claras y cuantificables. Con la excepción del primer nivel, cada uno de los restantes Niveles de Madurez está compuesto por un cierto número de Áreas Claves de Proceso, conocidas a través de la documentación del CMM por su sigla inglesa: KPA.

Cada KPA identifica un conjunto de actividades y prácticas interrelacionadas, las cuales cuando son realizadas en forma colectiva permiten alcanzar las metas fundamentales del proceso. Las KPAs pueden clasificarse en 3 tipos de proceso: Gestión, Organizacional e Ingeniería.

Las prácticas que deben ser realizadas por cada Área Clave de Proceso están organizadas en 5 Características Comunes, las cuales constituyen propiedades que indican si la implementación y la institucionalización de un proceso clave es efectivo, repetible y duradero.

Estas 5 características son: i)Compromiso de la realización, ii) La capacidad de realización, iii) Las actividades realizadas, iv) Las mediciones y el análisis, v) La verificación de la implementación.

Las organizaciones que utilizan CMM para mejorar sus procesos disponen de una guía útil para orientar sus esfuerzos. Además, el SEI proporciona formación a evaluadores certificados (Lead Assesors) capacitados para evaluar y certificar el nivel CMM en el que se encuentra una organización. Esta certificación es requerida por el Departamento de Defensa de los Estados Unidos, pero también es utilizada por multitud de organizaciones de todo el mundo para valorar a sus subcontratistas de software.

Se considera típico que una organización dedique unos 18 meses para progresar un nivel, aunque algunas consiguen mejorarlo. En cualquier caso requiere un amplio esfuerzo y un compromiso intenso de la dirección.

Como consecuencia, muchas organizaciones que realizan funciones de factoría de software o, en general, outsourcing de procesos de software, adoptan el modelo CMM y se certifican en alguno de sus niveles. Esto explica que uno de los países en el que más organizaciones certificadas exista sea India, donde han florecido las factorías de software que trabajan para clientes estadounidenses y europeos.

## CMMI como evolución de CMM

A partir de 2001, en que se presentó el modelo CMMI, el SEI ha dejado de desarrollar el SW-CMM, cesando la formación de los evaluadores en diciembre de 2003, quienes dispondrán hasta fin de 2005 para reciclarse al CMMI. Las organizaciones que sigan el modelo SW-CMM podrán continuar haciéndolo, pero ya no podrán ser certificadas a partir de fin de 2005.

## Otros modelos

CMMI

Integración de modelos (CMM-SW, SE-CMM, IPD-CMM)

SE-CMM

El Modelo de Madurez de Capacidades en la Ingeniería de Sistemas fue publicado por el SEI en noviembre de 1995. Está dedicado a las actividades de ingeniería de sistemas.

Define 18 áreas de proceso divididas en tres grupos:

* Ingeniería (7)
* Proyectos (5)
* Organizativas (6)

No utiliza niveles de madurez generales sino que en cada área de proceso una organización puede alcanzar un determinado nivel de madurez.

Al igual que el SW-CMM, ha sido integrado en el CMMI.

IPD-CMM

El Modelo de Madurez de Capacidades para el Desarrollo Integrado de Productos fue propuesto como un borrador por el SEI en 1997, pero quedó integrado en el CMMI al publicarse este en el año 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 o Modelo de Madurez de Capacidades en la Ingeniería de Seguridad de Sistemas es un modelo derivado del CMM y que describe las características esenciales de los procesos que deben existir en una organización para asegurar una buena seguridad de sistemas.

Ha sido desarrollado por la "International Systems Security Engineering Association (ISSEA)", organización sin ánimo de lucro patrocinada por un buen número de compañías dedicadas a la seguridad de sistemas.

Nació a partir de 1993 bajo los auspicios de la Agencia Nacional de Seguridad (NSA) de los E.U.A., con la participación de numerosas compañías de los sectores de tecnologías de la información, seguridad y defensa. La primera versión data de 1997 y la actual (v3.0) fue publicada en junio de 2003.

Pretende servir como:

* Herramienta para que las organizaciones evalúen las prácticas de ingeniería de seguridad y definan mejoras a las mismas.
* Mecanismo estándar para que los clientes puedan evaluar la capacidad de los proveedores de ingeniería de seguridad.
* Base para la organización de un mecanismo de evaluación y certificación.

A diferencia del CMM original, las áreas de proceso no están agrupadas en función de los niveles de madurez, sino que define 22 áreas para cada una de las cuales se puede alcanzar un nivel en función del cumplimiento de unas "características comunes".

Existen 11 áreas de procesos de ingeniería y otras 11 dedicadas a la gestión de proyectos y organización.

El método de evaluación se denomina SSAM (SSE-CMM Appraisal Method).

### Incapability Immaturity Model

Con mucho sentido del humor, y bastante conocimiento de causa, Anthony Finkelstein describió que hay organizaciones que no han alcanzado siquiera el nivel 1 de CMM (en el que aunque sea de modo heroico se llega a producir software), proponiendo que existen niveles negativos o de inmadurez. Este «Modelo de Incapacidad e Inmadurez», que fue refinado posteriormente por Tom Schorsch, incluye tres niveles de idiotez:

* 0 -Organizaciones negligentes. Impiden cualquier desarrollo de software con éxito. Su gran preocupación es la reutilización del software.
* -1 -Organizaciones obstructivas. Imponen procesos contra-productivos para impedir cualquier avance. Se concentran en desarrollar entornos de desarrollo y repositorios.
* -2 -Organizaciones desdeñosas. Desprecian cualquier institucionalización de buenas prácticas. Su gran objetivo es la programación automática.

## Crítica

Frecuentemente se critica al modelo CMM por no ser más específico en la definición de los procesos. Para guiar a las organizaciones a definir y mejorar sus procesos indica qué actividades han de realizar, pero nada sobre cómo hacerlo. Esto es así tanto en lo referente a la ingeniería como a las herramientas o técnicas de gestión, aunque hace una curiosa excepción en las revisiones por pares (peer reviews).

Del mismo modo, aunque insiste continuamente en la necesidad de las métricas, no da ninguna guía concreta del tipo de métricas que son aceptables para una correcta práctica profesional.

Los técnicos se quejan a menudo de la enorme carga de "papeleo" que impone el modelo, viéndolo más como un mecanismo de control por la dirección que una herramienta que les ayude en su trabajo.

También resulta muy complejo, más todavía el CMMI, lo que hace que durante algún tiempo resulte para mucha gente algo esotérico.

