COSMIC es un método de medición del tamaño funcional del software; COSMIC no es un método de estimación.

¿Para qué puedo utilizar el tamaño funcional del software utilizando el estándar COSMIC?  

¿Porqué se confunde medición del software con estimación del software?

Normalmente cuando las fábricas de software (FSW) o los clientes que solicitan desarrollos de software y contratan los servicios de FSW (incluidas sus áreas internas de desarrollo), escuchan el estándar de medición de tamaño funcional (TF) del software COSMIC ISO/IEC 19761; inmediatamente piensan en COSMIC como un método de estimación del software para costear directamente el esfuerzo y/o costo del desarrollo de un proyecto de software.

La percepción anterior es completamente equivocada, porque COSMIC es un método de medición del tamaño funcional del software; es decir, es un método estándar para dimensionar el tamaño del software y poder cuantificar numéricamente la magnitud de la funcionalidad (tamaño del software), independientemente de cualquier dependencia tecnológica o metodológica empleada para el desarrollo de este.

Usando una analogía sencilla pensemos en la unidad de medida “m2”; la cual es una unidad para dimensionar el área de cualquier superficie, en el sistema internacional de unidades; no importando que la superficie esté en China, México, en la “luna”; sea de color “verde”, “transparente” o “negro”; sea “triangular”, “poligonal”, “circular” o “irregular”; las unidades de superficie en el sistema internacional de unidades siempre serán un número cuantificable en unidades “m2”, este dimensionamiento de la superficie permitirá cuantificar y comparar el tamaño de superficies diversas; de ninguna manera este dimensionamiento me dice lo que deberá costar en esfuerzo o dinero, por ejemplo pintar esa superficie; para poder hacerlo necesito construir un modelo de estimación, que usando el dimensionamiento en “m2” de la superficie a pintar y el costo unitario promedio en el mercado por pintar “1 m2”; me permita efectivamente estimar el costo de pintar el tamaño “X” de la superficie.

En el software sucede exactamente lo mismo, solo sustituyamos “superficie a medir”, por “software a medir” y “unidad de medición de superficie m2 en el sistema internacional de unidades” por “unidad de medición de tamaño funcional Cosmic Function Point (CFP) en el estándar de medición COSMIC ISO/IEC 19761”; de modo que el tamaño funcional del software será “X”, no importando si este software se desarrolla en Java, C++, arquitectura Cliente-Servidor, WEB, con metodología Agile, Cascada, etc.; es decir sin importar el color de la superficie y el material con que se pinte, esta mide lo mismo; no camba su tamaño por el color y el material empleado; lo que si puede cambiar es el costo de pintarla de azul, de tapizarla con cierto material o incluso de pintarla con un mural artístico; así de sencillo es en el software y por tanto requiero de un modelo de estimación que usando costos unitarios en el mercado, ya sea en esfuerzo (horas hombre) o en costo (dinero) por CFP, me permita estimar lo que me costará construir la pieza de software de tamaño “X”   

En consecuencia nos debe quedar claro que COSMIC es un método estándar de medición del tamaño funcional del software, no es un método de estimación; sin embargo lo que si es cierto es que el tamaño funcional del software en CFP es el insumo, cuantitativo, absolutamente necesario para que un modelo de estimación formal pueda hacer una estimación fundamentada primeramente en el tamaño del software que se va a construir y en segundo lugar considerando las características de las herramientas que se utilizarán (lenguajes, arquitecturas, metodologías de diseño etc.)

Todo lo anterior es solamente un uso posible (propósito) de la medición del tamaño funcional, es decir el tamaño funcional es insumo para la estimación formal de esfuerzo o costo de un proyecto de software; pero es un insumo esencial ya que como lo dijo William Thomson Kelvin (Lord Kelvin), físico y matemático británico (1824 – 1907): “Lo que no se define no se puede medir. Lo que no se mide, no se puede mejorar. Lo que no se mejora, se degrada siempre”.

Hay muchos otros usos del tamaño funcional; por ejemplo si yo encargo el trabajo de pintar una superficie a un pintor, digamos pintar una pared de 100 m2 en 5 días, es claro que tiene que avanzar a una velocidad de 20m2 por día para terminar en tiempo; pero esas métricas me habilitan para poder gestionar el avance por día de forma totalmente cuantitativa; de manera que si el día 1 asisto a la obra y cuantifico lo que lleva pintado por ejemplo si el día 1 lleva 20 m2, puedo concluir que va bien de acuerdo al plan; si el día 2 lleva 38 m2 lleva un atraso de 2m2 con lo que tomo las medidas pertinentes para corregir; si el día 3 lleva 65 m2 lleva un adelanto de 5m2, de modo que si sigue así va a terminar medio día antes de lo planeado.

Ese seguimiento es idéntico en el software y se puede hacer porque se conoce el tamaño funcional del software y se puede revisar el avance en alcance respecto al plan de manera cuantificable y poder tomar las decisiones adecuadas en el tiempo correcto y llevar así los proyectos de desarrollo de software a buen término.

En conclusión, las métricas de tamaño funcional del software son la base cuantificable esencial para poder hacer realmente ingeniería de software y entre muchas aplicaciones del tamaño funcional, hoy platicamos de dos usos fundamentales como son: i) estimar el esfuerzo o costeo y ii) hacer seguimiento al avance del proyecto de manera cuantificable. Existen muchos más usos del tamaño funcional a diferentes niveles jerárquicos de las organizaciones y esos serán temas posteriores en este blog.

Finalmente debe ser claro qué en el área de ingeniería de software, existen todos los elementos cuantificables necesarios para que hagamos realmente “ingeniería” y no pensemos que es “arte” para poder justificar las equivocaciones inherentes al “juicio de experto” al no usar métricas.

Leave A Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *