El algoritmo Weighted Micro Function Points ( WMFP ) es un método moderno para dimensionar software, sucesor de métodos científicos fundamentales como COCOMO , COSYSMO , el índice de mantenibilidad, la complejidad ciclomática , los puntos de función y la complejidad de Halstead . Produce resultados más precisos que las metodologías tradicionales de dimensionamiento de software [ 1 ] , a la vez que requiere menos configuración y conocimientos por parte del usuario final, ya que la mayor parte de la estimación se basa en mediciones automáticas de un código fuente existente.
Dado que muchos métodos de medición de ancestros utilizan líneas de código fuente (SLOC) para medir el tamaño del software, WMFP utiliza un analizador sintáctico para comprender el código fuente, descomponiéndolo en microfunciones y derivando varias métricas de complejidad y volumen de código, que luego se interpolan dinámicamente en una puntuación de esfuerzo final. Además de ser compatible con la metodología del ciclo de vida de desarrollo de software en cascada , WMFP también es compatible con metodologías más recientes, como Six Sigma, la espiral de Boehm y las metodologías ágiles (AUP/Lean/XP/DSDM), debido a su capacidad de análisis diferencial, posible gracias a sus elementos de medición de mayor precisión. [ 2 ]
Elementos medidos
Los elementos medidos por WMFP son diversas métricas de software deducidas del código fuente mediante el análisis del algoritmo WMFP. Se representan como un porcentaje del esfuerzo total de la unidad (proyecto o archivo) y se traducen en tiempo.
- Complejidad de flujo (FC) : mide la complejidad de la ruta de control de flujo de un programa de forma similar a la complejidad ciclomática tradicional , con mayor precisión mediante el uso de pesos y el cálculo de relaciones.
- Vocabulario de objetos (VO) : mide la cantidad de información única contenida en el código fuente de los programas, de forma similar al vocabulario Halstead tradicional con compensación dinámica del lenguaje.
- Conjuración de objetos (OC) : mide la cantidad de uso que hace la información contenida en el código fuente de los programas.
- Complejidad aritmética (IA) : mide la complejidad de los cálculos aritméticos en todo el programa.
- Transferencia de datos (TD) : mide la manipulación de estructuras de datos dentro del programa.
- Estructura del código (EC) : mide la cantidad de esfuerzo invertido en la estructura del programa, como la separación del código en clases y funciones.
- Datos en línea (ID) : mide la cantidad de esfuerzo dedicado a la incrustación de datos codificados.
- Comentarios (CM) : mide la cantidad de esfuerzo dedicado a escribir comentarios del programa.
Cálculo
El algoritmo WMFP utiliza un proceso de tres etapas: análisis de función, transformación APPW y traducción de resultados. Un algoritmo dinámico equilibra y suma los elementos medidos y produce una puntuación de esfuerzo total. La fórmula básica es:
- Σ(WiMi) ΠDq
- M = el valor de las métricas de origen medido por la etapa de análisis WMFP
- W = el peso ajustado asignado a la métrica M por el modelo APPW
- N = el número de tipos de métrica
- i = el índice del tipo de métrica actual (iteración)
- D = el factor de inductores de costos proporcionado por el usuario.
- q = índice del factor de costo actual (iteración)
- K = el número de inductores de costos
Esta puntuación se transforma en tiempo mediante un modelo estadístico denominado ponderación media del perfil del programador (APPW, por sus siglas en inglés), sucesor de COCOMO II 2000 y COSYSMO . El tiempo resultante en horas de trabajo del programador se multiplica por un coste por hora definido por el usuario para un programador promedio, lo que da como resultado un coste medio del proyecto, expresado en la moneda del usuario.
Desventajas
Los elementos básicos de WMFP, en comparación con los modelos de dimensionamiento tradicionales como COCOMO, son más complejos, hasta el punto de que no se pueden evaluar manualmente, ni siquiera en proyectos pequeños, y requieren un software para analizar el código fuente. Por lo tanto, solo se puede utilizar para predicciones de costos basadas en analogías, y no para estimaciones teóricas fundamentadas.
Véase también
Referencias
- Métricas de software