lunes, 25 de junio de 2012


El CMM y la mejora continúa del proceso de software 

Resumen: 
Dentro de la competitividad actual, conseguir productos software excelentes a 
buen  precio  en  márgenes  de  tiempo  estrechos  es  el  sueño  de  miles  de 
empresas. Ello se puede conseguir concentrando esfuerzos en torno a dos 
pilares  fundamentales:  Las  personas  por  un  lado,  y  los  métodos  y 
procedimientos por otro. El Modelo de Madurez de Capacidad del Software 
(CMM) hace hincapié en  la mejora del proceso de software en base a los 
procedimientos internos  y sin descuidar a las personas. Intentaremos en estas 
líneas explicar este Modelo. 
   
INTRODUCCIÓN 

En una economía capitalista como la nuestra, basada en la obtención de beneficios 
económicos  derivados  del  comercio,  el  estudio  de  las  organizaciones  dedicadas  a  la 
consecución de dichos beneficios ha sido objeto de numeroso material bibliográfico. 

En un entorno donde lo que prevalece es la maximización de los beneficios se busca 
como consecuencia inmediata la máxima eficiencia y efectividad en las tareas que generan el 
beneficio.  

Al  mismo  tiempo,  la  globalización  a  todos  sus  efectos,  el  nuevo  orden  social,  las 
nuevas formas de hacer negocios, las nuevas necesidades, los nuevos descubrimientos en 
todos los ámbitos, las nuevas relaciones sociales y, en definitiva, la propia evolución de la 
sociedad, elevan día a día la complejidad no solo de los procesos económicos sino también de 
las relaciones personales. 

Todos sabemos, que una de las formas más importantes de enfrentarse a estos retos, 
es a través de las distintas herramientas informáticas eficaces  y eficientes que facilitan la 
ejecución y control del trabajo diario. 

Sin embargo, la historia de la ingeniería del software o de la producción de material 
informático esta repleta de grandes fracasos y decepciones. Proyectos de miles de millones de 
dólares  que  no  han  cumplido  sus  objetivos  y  a  menor  nivel  pero  de  forma  mucho  mas 
abundante, millones de usuarios decepcionados con el software que manejan como principal 
elemento de su trabajo. Los problemas mas frecuentes que nos encontramos en la producción 
de software son:  

1.  La entrega del material fuera del plazo estipulado.  
2.  El  material  no  cumple  los  requisitos  estipulados,  ya  sea  en  eficiencia  o 
funcionalidad. 

Todos los problemas reflejados en el párrafo anterior originan pérdidas económicas en 
el mejor de los casos, ya que si es un sistema crítico podemos llegar a hablar incluso de 
perdidas de vidas humanas. 

Por tanto, la pregunta que nos planteamos es: ¿Cómo se pueden evitar los fracasos en 
la producción de software? 

LA MEJORA DEL PROCESO DE GESTIÓN DEL SOFTWARE 

Para conseguir tener un proceso de producción de software sin fallos, adecuado a las 
necesidades estipuladas en un principio y entregado a tiempo, esta claro que la producción de 
software debe convertirse en un proceso disciplinado y aceptado por todos. 

Son varias las razones por las que puede fallar el proceso de software, mencionamos 
las tres principales: 



1.  El personal no se involucra lo suficiente en el control de calidad del trabajo. 
2.  La alta dirección no ha adquirido conciencia de la importancia de un buen proceso 
de software para su compañía, la principal consecuencia de esto es que el proceso 
de software no tiene los recursos adecuados ya sea en forma de tiempo, dinero, 
tecnología, personal y formación de este. 
3.  Las prácticas establecidas no son las adecuadas. 

Hasta ahora hemos empleado el termino "proceso de software", pero ¿qué queremos 
decir con este término?: "Un proceso es un conjunto de pasos definidos para lograr una tarea", 
mientras que "un proceso definido es aquel que esta escrito a tal detalle que permite que los 
ingenieros  lo  usen  constantemente".  Los  procesos  definidos  ayudan  a  la  planificación  y 
desarrollo de un trabajo. El proceso que establezcamos debe ser flexible y debe facilitar el 
cambio y la innovación. Al mismo tiempo el proceso debe poder ser aprendido. 

Aquí es donde entra el CMM o "Modelo de Madurez de Capacidad del Software". El 
CMM esta destinado a la evaluación y mejora de procesos. Se debe evaluar a la organización 
para conocerla ya que sin conocerla no se puede mejorar. El propósito de CMM es guiar a 
las organizaciones en la selección de estrategias de mejora determinando la madurez del 
proceso actual e identificando los puntos importantes que se deben estudiar y trabajar 
para mejorar tanto el proceso como la calidad del software. Dicho en palabras de Dymon 
[Dymon 1997] ayudar a las personas a identificar aquellas actividades críticas que indican la 
capacidad para realizar de la  organización. Hay  dos razones  fundamentales  para  creer  la 
efectividad de este modelo: 

1. El modelo CMM esta construido en base a prácticas reales.  
2. Cada nueva (y correcta) implementación del CMM es un nuevo éxito. 




EL MODELO DE MADUREZ DE CAPACIDAD DEL SOFTWARE (CMM) 

Acabamos  de  ver  una  pequeña  introducción  al  significado  del  CMM.  También 
consideramos brevemente las ventajas de su empleo en una organización. Ahora bien, ¿tan 
bueno  es  el  CMM  que  no  tiene  ningún  inconveniente?  Por  supuesto  que  el  CMM  tiene 
inconvenientes,  aunque  mejor  deberíamos  llamarlo  riesgos.  El  CMM  puede  ser  mal 
interpretado,  para evitarlo es  conveniente que las  personas  que  lo utilicen comprendan  el 
modelo y sus implicaciones a la hora de aplicarlo a la organización. 

Este modelo es fruto del trabajo de SEI (Software Engineering Institute), desde 1986 
centra sus esfuerzos en mejorar la practica del proceso del Software. En 1991 consiguieron 
estabilizar  la  primera  versión  del CMM. Desde entonces este  modelo se  ha  empleado en 
organizaciones tales como el Departamento de Defensa de los EEUU, sedes que necesitaban 
controlar de manera exhaustiva el proceso de producción de software.  

El CMM es una forma de comprender la propia gestión  de procesos  dentro de  la 
organización. Es cierto que el CMM evalúa a la organización ya que para mejorar es preciso, 
antes, evaluar. Pero no podemos cometer el error de reducir el CMM a una mera lista de 
comprobación, el CMM es mucho más que eso, es una "institucionalización" del proceso para 
construir software con el objetivo de conseguir una mejora continua. 

A la hora de aplicar el CMM debemos tener claro una serie de aspectos sobre la 
organización, dichos aspectos son:  

1.  El tamaño de la organización.  
2.  Su nivel cultural.  
3.  Las tecnologías que emplea.  

Conociendo estos tres puntos podemos acometer el conocimiento de los objetivos de 
la organización. Posteriormente deberemos decidir como vamos a medir. 

El CMM establece 5 posibles niveles de madurez en los que puede encontrarse una 
organización: 



a)  Nivel 1: El más básico.  
b)  Nivel 2 (el proceso repetible).  
c)  Nivel 3 (el proceso definido).  
d)  Nivel 4 (el proceso gestionado).  
e)  Nivel 5 (el proceso de optimización). 






Nadie puede obtener el significado exclusive del CMM. El CMM no aporta una medida 
absoluta, no existe un nivel de 2'5, todos los resultados deben ser interpretados, mejor así ya 
que  el  CMM  es  flexible  para  adaptarse  en  su  utilización  a  las  peculiaridades  de  cada 
organización. Debido a este punto, el conocimiento del Modelo por parte de quien lo aplica se 
hace aún más importante. 

Nos queda ahora abordar en profundidad el proceso del CMM, para ello debemos tener 
en cuenta las siguientes definiciones [Paulk 1994]: 

a)  Institucionalizar: Edificar una infraestructura y una cultura que soporte los métodos, 
las prácticas y los procesos para que éstos sean la forma real de hacer negocios. 
Será  fundamental  conocer  cual  es  el  grado  de  conocimientos  de  todos  sus 
trabajadores, así como el esquema cultural y social en que se ubica la empresa. 

b)  Proceso  de  Software:  Conjunto  de  actividades,  métodos,  prácticas  y 
transformaciones para desarrollar y mantener software y productos asociados. 

c)  Capacidad de un proceso: Rango de resultados esperados que se pueden obtener 
tras seguir un proceso. 

d)  Madurez de un proceso de software: Es el punto hasta el que un determinado      
proceso está explícitamente definido, administrado, medido, controlado y ejecutado 
de manera efectiva. 

e)  Nivel de madurez: Plataforma bien definida desde la que podemos obtener un 
proceso maduro de software. 

f)  Procedimiento documentado: La actividad o procedimiento es un proceso rutinario 
y que ha sido codificado. 





No hay comentarios:

Publicar un comentario