Puntos de Funcion

Métricas de Puntos de Función

¿Que son  los puntos de función?




Es una métrica que permite traducir en un número el tamaño de la funcionalidad que brinda un producto de software desde el punto de vista del usuario, a través de una suma ponderada de las características del producto.

Componentes:
  • EI : Procesos en los que se introducen datos y que suponen la actualización de cualquier archivo interno.
  • EO: Procesos en los que se envía datos al exterior de la aplicación.
  • EQ: Procesos consistentes en la combinación de una entrada y una salida, en el que la entrada no produce ningún cambio en ningún archivo y la salida no contiene información derivada.
  • ILF: Grupos de datos relacionados entre sí internos al sistema.
  • EIF: Grupos de datos que se mantienen externamente

Objetivos:
  • Medir lo que el usuario pide y lo que el usuario recibe.
  • Medir independientemente de la tecnología utilizada en la implantación del sistema.
  • Proporcionar una métrica del tamaño.
  • Proporcionar un medio para la estimación del software.
  • Proporcionar un factor de normalización para la comparación de distintos software.
Una vez presentado el método, su autor realizó mejoras sobre el modelo inicial y ha publicado diferentes versiones del mismo. En 1986, Allan Albrecht funda el Grupo Internacional de Usuarios de Puntos de Función (en inglés International Function Point User Group – IFPUG). Esta organización se encarga de la difusión del método y de la publicación de manuales de uso y documentos de cómo sacar provecho del mismo.

Los Puntos de Función fueron diseñados originariamente para ser aplicados a sistemas de información de gestión, es por ello que se puso énfasis en la dimensión de datos, excluyendo las dimensiones funcionales y de control. Su aplicación no era del todo adecuada para sistemas de ingeniería y embebidos, pero con el correr del tiempo, se fueron subsanando estos inconvenientes. 


COSMIC FFP: a finales de 1998, un grupo de expertos en métricas de software, establecieron el Common Software Measurement International Consortium (COSMIC FFP). La iniciativa de COSMIC, ha sido básicamente la de dar respuesta a proveedores y a clientes de servicios de desarrollo de software, principalmente en aquellos contratos de terceros donde no había reglas claras acerca del valor de este tipo de servicio. En tal sentido COSMIC apunta a satisfacer tanto a proveedores de software que deben traducir los requerimientos del cliente en un tamaño del software como un paso clave en la estimación de los costos del proyecto, como a los clientes que quieren conocer ese tamaño recibido como un componente importante para la medición del rendimiento del proveedor. El método se puede aplicar a dominios de software de gestión, tiempo real e híbridos. (Ver figura 1.)


Figura 1: Evolución de los métodos de estimación basados en FP.



Existen herramientas automáticas de estimación que implementan técnicas de descomposición o modelos empíricos y están provistas de entornos gráficos, interfaz interactiva y uso estandarizado que hacen de ellas una buena opción. Además permiten describir características de la organización (experiencia, entorno, etc.) y el software a desarrollar para que a partir de estos datos, sea posible obtener estimaciones de costo, tiempo y esfuerzo.  (Ver tabla 1.)

Tabla 1: Ejemplo de herramientas automáticas de estimación


Calculo de los puntos de función:
La técnica de medición del tamaño en punto-función consiste en asignar una cantidad de "puntos" a una aplicación informática según la complejidad de los datos que maneja y de los procesos que realiza sobre ellos, siempre tratando de considerarlo desde el punto de vista del usuario. (Ver figura 2.)
Figura 2: Calculo de puntos de función.



Para calcular puntos de función, se utiliza la relación siguiente:
FP = cuenta-total x [ 0,65 + 0,01 x Σ (Fi ) ]

Donde cuenta-total es la suma de todas las entradas obtenidas de la figura 2. Fi donde i puede ser de uno hasta 14 los valores de ajuste de complejidad basados en las respuestas a las siguientes preguntas:

  1. ¿Requiere el sistema copias de seguridad y de recuperación fiables?
  2. ¿Se requiere comunicación de datos?
  3. ¿Existen funciones de procesamiento distribuido?
  4. ¿Es crítico el rendimiento?
  5. ¿Se ejecutaría el sistema en un entorno operativo existente y fuertemente utilizado?
  6. ¿Requiere el sistema entrada de datos interactiva?
  7. ¿Requiere la entrada de datos interactiva que las transacciones de entrada se lleven a cabo sobre múltiples pantallas u operaciones?
  8. ¿Se actualizan los archivos maestros de forma interactiva?
  9. ¿Son complejas las entradas, las salidas, los archivos o las peticiones?
  10. ¿Es complejo el procesamiento interno?
  11. ¿Se ha diseñado el código para ser re utilizable?
  12. ¿Están incluidas en el diseño la conversión y la instalación?
  13. ¿Se ha diseñado el sistema para soportar múltiples instalaciones en diferentes organizaciones?
  14. ¿Se ha diseñado la aplicación para facilitar los cambios y para ser fácilmente utilizada por el usuario?
Cada una de las preguntas anteriores es respondida usando una escala con rangos desde 0 (no importante o aplicable) hasta 5 (absolutamente esencial).



Los valores constantes de la ecuación (1) y los factores de peso que se aplican a las cuentas de los dominios de información se determinan empíricamente. Una vez que se han calculado los puntos de función, se utilizan de forma análoga a las líneas de código como forma de normalizar las medidas de productividad, calidad y otros atributos del software.

Una vez calculado los puntos de función se usan de forma analógica a las líneas de código como medida de la productividad, calidad y otros productos del software.

Productividad = PF / persona-mes

Calidad = Errores / PF

Costo = Dólares / PF

Documentación = Pags. Doc / PF



El proceso de cálculo y obtención de puntos de función y su posible transformación a líneas de código se esquematiza en la figura: (Ver figura 3.) [Elsydania Lopez Guerra]


Figura 3: Proceso de calculo de punto de función y transformación a lineas de código.







El uso de puntos función para ayudar a estimar el costo de proyectos, la programación y el esfuerzo

La estimación exitosa usando puntos función se basa en varias técnicas de estimación: Top-Down, Analogía y Consejo de Expertos. La estimación Top-Down es una técnica de estimación que calcula el programa entero, costo y esfuerzo usando parámetros amplios. Los parámetros amplios y las comparaciones están basados en datos históricos usando técnicas estimativas de Analogía. El Consejo de Expertos se obtiene de expertos con experiencia en proyectos similares o experiencia en el uso de puntos función.

La comparación de proyectos con otros similares es una actividad crítica para lograr una estimación exitosa. Cuando se evalúan proyectos similares, se debe considerar lo siguiente:
Tipo de plataforma de hardware - Mainframe, Cliente-Servidor, PC
Tipo de lenguaje - COBOL, C, C++, JAVA.
Tipo de proyecto - Software del Sistema, Software intermedio, Software de aplicación
Tipo de sistema operativo: MVS, Windows, Unix

Una vez que los proyectos han sido determinados, obtener los siguientes datos:
Medida histórica de entrega (horas por punto función) de proyectos similares
Programas históricos (duración de programas por punto función) de proyectos similares
Costos históricos (dólares por punto función)

Una vez que el tamaño del proyecto se ha determinado en puntos función, el estimado de horas, costo y programa se puede calcular. Los cálculos se deben hacer con datos de proyectos similares como se describió anteriormente.

PF = cuenta-total x [ 0,65 + 0,01 x Σ (Fi ) ]


Ejemplo:



Supongamos que se quiere desarrollar un proyecto transaccional que operará en plataforma web y su tamaño es medio.



¿ El esfuerzo requerido, tiempo de desarrollo, personal utilizado en el proyecto ?








Utilizando un prototipo se llena la tabla asociada a los factores de Peso.
PF = [Σfactores funcionales de peso] * [0.65 + (0.01 * Σfactores de costo)]
Aplicando la formula se tiene:
PF = [513] * [0,65 + (0,01 * 14,91)]
PF= 409,9383

Luego se procede a aplicar la formula de Conversión a LOC: 
Como ya se dijo anteriormente, el lenguaje a utilizar es JAVA.



Entonces se tiene que
LOC = PF * Correlación
LOC = 409,9383 * 46
LOC =18857,1618 (Líneas de Código)
KLOC = 18857,1618 / 1000
KLOC = 19 (Kilo o miles de línea de código)


E = a(KLOC)b 

D = c(E)d 
P = E/D 
C = P *Salario 



Como ya se había dicho, el proyecto es de mediano tamaño. 
Entonces se tiene:

Esfuerzo (E) = 3,0*( 19)1,12 = 81,15 meses/hombre 

Duración (D)= 2,5*(81,15)0,35 = 11,64 meses 

Personal (P)= 81,15 / 11,64 = 6,97 personas 



0 comentarios:

Publicar un comentario