archivo

Archivos diarios: septiembre 7, 2011

El nivel 1 de CMMI se considera nivel inicial porque hace referencia a la ausencia de procesos o en el caso de que existan a la ausencia de control, seguimiento y/o cumplimiento de los mismos.

Una organización dedicada al desarrollo de software que se encuentre en este nivel se entiende que no tiene un control real sobre los proyectos en los que está trabajando: no se conoce realmente el grado de ejecución de los mismos, no hay control de plazos, no hay control de los costes económicos, no existe una motivación para la toma de determinadas decisiones, etc…

Estamos ante una situación en la que cada proyecto es quien maneja las riendas y no la organización quien las lleva, por tanto, si ya es complicado intentar conseguir un comportamiento predecible en un proyecto de desarrollo de software, todavía lo es más cuando no existe un control sobre el mismo y predomina la reacción ante las circunstancias que van aconteciendo a la acción.

Este nivel se caracteriza, por tanto, por el comportamiento impredecible de los proyectos por la ausencia de procesos definidos o por el no cumplimiento de los mismos (que viene a ser lo mismo) de manera que cada equipo de proyecto o incluso cada desarrollador sigue su propia estrategia o metodología, como una decisión personal o de grupo, pero no siguiendo unas directrices a nivel organizativo.

La mejora de la eficiencia en el proceso de desarrollo de software busca la obtención de una base para la consecución de productos software de calidad (es importante que se tenga en cuenta que ninguna metodología o modelo o garantiza nada, lo único que hace es proporcionar un camino del que si no te sales y ejecutas las tareas de manera adecuada te permite alcanzar como mínimo unos umbrales objetivo para la misma), que se realizan en un entorno controlado (entendiéndose el control como el hecho de que tu influencia sobre el proyecto y sobre todo el entorno sea mayor que la que el proyecto ejerce sobre ti) y que trata de cumplir presupuestos y plazos (siempre y cuando estos sean acordes con la naturaleza del proyecto).

Visto de esta forma a nadie se le escapa que una organización que proporciona servicios de desarrollo de software tenga como objetivo una mejora continua de sus procesos, es decir, de cómo hace las cosas. Esto resulta lógico y razonable ya que un mercado con tanta competencia y en donde actualmente existe crisis económica, si no evolucionas, si no mejoras, si no te adaptas, estás condenado a sufrir mucho, salvo que tengas una posición dominante en algún segmento de mercado que permita tomarte cierto tipo de licencias.

CMMI no es más que la conjunción de una serie de modelos (integración de buenas prácticas, estándares, etc..) orientados a la mejora de determinados servicios (a través de la mejora los procesos a través de los cuales se gestionan/controlan/implementan los mismos): desarrollo de productos y servicios, adquisición de productos y servicios y la gestión y entrega de servicios (cada uno de estos servicios tiene su propia constelación de procesos, en este artículo y los que voy a ir escribiendo sobre esta temática me voy a centrar en los relacionados con el desarrollo de software).

Surgió en los Estados Unidos como medio para combatir la crisis del software que se producía de manera crónica en los proyectos software relacionados con el Departamento de Defensa de los Estados Unidos para lo que se convocó un concurso que ganó la Carnegie Mellon University.

CMMI plantea un modelo en base a qué es lo que hay que hacer y no entra en cómo hay que hacerlo, esto puede suponer una ventaja en cuanto a que proporciona flexibilidad y un inconveniente en el sentido de que no proporciona fórmulas exactas (es como si tienes un mapa, pero tú te las tienes que averiguar para llegar de manera adecuada al destino).

Un aspecto importante de CMMI es que contempla diferentes niveles de madurez en cuanto a la implantación de los procesos, lo que permite que cada organización pueda plantear una estrategia de mejora continua (implanto un proceso, lo consolido, observo ventajas e inconvenientes y tomo la decisión de si me quedo como estoy o intento acceder al siguiente escalón) hasta llegar al nivel de madurez adecuado a las expectativas de la organización y a lo que ésta puede dar de sí.

No se certifica a las organizaciones en CMMI aunque esto es un tema sobre todo más formal que real, ya que lo que se hace es evaluar el nivel de madurez de una organización y otorgándole su pertenencia a uno de los niveles de madurez definidos en el modelo (se empezaría por el nivel 2 de los 5 niveles existentes). No obstante, también es posible realizar una evaluación por áreas de proceso (cada nivel del modelo tiene como objetivo satisfacer los objetivos de todas las áreas de proceso que lo conforman) y determinar el nivel de capacidad de las mismas (permitiendo de esta que se puedan tener procesos más evolucionados que otros, ya sea porque sean más importantes para la organización y/o les resulta más sencillos de conseguir por las características de los procesos ya implantados, su madurez, las características del personal, la cultura de empresa, etc…).

En los próximos artículos sobre la materia pasaré a tratar brevemente los cinco niveles de madurez definidos.

El objetivo fundamental de la fase de análisis en un proyecto de desarrollo de software consiste en obtener una especificación de lo que realmente quiere el usuario. Esto teóricamente está muy bien si no fuera porque la mayor parte de los usuarios lo que hacen en el análisis es esbozar una solución, la cual no terminan de perfilar hasta que ven al producto en funcionamiento.

Con esto no quiero restarle importancia a esta fase tan importante en el proceso de desarrollo ya que cuanto mayor sea la desviación entre lo que quiere el usuario y lo que finalmente se implementa mayor será el esfuerzo necesario posteriormente para alinear producto y expectativas. Esto resulta sobre todo muy significativo en los ciclos de vida clásico o en cascada o incluso en ciclos iterativos e incrementales con fases de desarrollo de mucha duración.

Ante lo anterior, que es una realidad patente en los proyectos en los que trabajamos se encuentra la solución de intentar acortar los períodos de entrega de manera que se tenga el feedback del usuario cuanto antes y favorecer de esta forma su enfoque en el proyecto (el cual por otra parte debería ser garantizado en lo posible por los responsables funcionales del sistema).

Trabajar de esta manera es lo ideal en muchos tipos de proyectos, pero es importante que se entienda por parte de los directores usuarios que el producto se va a construir por piezas, que lo mismo se tarda algo en tener un conjunto de piezas mínimo para que el producto no sea un esqueleto andante y realmente sea utilizable en un entorno de producción. También deben entender que lo mismo la inversión inicial es superior a la de otros proyectos desarrollados con metodologías no ágiles pero que al final no será superior a estos (una vez que se tiene en cuenta los gastos de mantenimiento de estos) y los resultados serán, por regla general, mejores.