En este post avanzaba una serie de posts sobre estimación de esfuerzo.

Aunque algo más tarde de lo esperado en este post trataremos sobre la estimación basada en Puntos de Función:

En la actualidad los Casos de Uso son la técnica más utilizada (y efectiva?) para requisitar y analizar un sistema: lo usa RUP y Métrica 3.

Pero los Casos de Uso no permiten por sí mismos efectuar una estimación del tamaño que tendrá el sistema o del esfuerzo para implementarlo. Para la estimación del tamaño de un sistema una de las técnicas más difundidas es el Análisis de Puntos de Función:

Ésta técnica permite cuantificar el tamaño de un sistema en unidades independientes del lenguaje de programación, las metodologías, plataformas y/o tecnologías utilizadas, denominadas Puntos de Función.

Existe una relación natural entre los Puntos de Función y los Casos de Uso, Los Puntos de Función permiten estimar el tamaño del software a partir de sus requisitos mientras que los Casos de Uso permiten documentar los requisitos.

Aplicando el Análisis de Puntos de Función a estos Casos de Uso, se podrá obtener una estimación “grosera” del tamaño y a partir de ella del esfuerzo.

Es importante destacar que Esta estimación será imprecisa debido principalmente a la escasa información que se tiene sobre el software al principio de un proyecto, pero permitirá obtener una idea del esfuerzo necesario para llevar adelante el mismo, y deberá ser refinada a medida que se obtenga más información.

Para definir los elementos con los que trabaja el Análisis Punto de Función trabajaremos sobre un ejemplo:

EJEMPLO

Caso de Uso de Mantenimiento de Usuarios (valdría el mantenimiento de cualquier entidad). Está formado por 3 escenarios: el del alta, el de modificación y el de baja de usuarios.

Caso de Uso Búsqueda de Usuarios

Caso de Uso Informe de Usuarios

Caso de Uso Consulta Teléfono de Usuario en LDAP corporativo (externo)

DEFINICIONES PUNTO FUNCIÓN:

· Archivos Lógicos Internos (ILF, del inglés Internal Logical Files): grupo de datos relacionados lógicamente e identificables por el usuario, que residen enteramente dentro de los límites del sistema y se mantienen a través de las Entradas Externas.

Ejemplo: En el ejemplo Retomando en el que existen3 escenarios, uno para alta, otro para baja y otro para modificación existe un Archivo Lógico Interno: Usuario.

· Archivos de Interfaz Externos (EIF, del inglés Ex- ternal Interface Files): grupo de datos relacionados lógicamente e identificables por el usuario, que se utilizan solamente para fines de referencia. Los datos residen enteramente fuera de los límites del sistema y se mantienen por las Entradas Externas de otras aplicaciones. Un caso de uso que como parte de alguna de sus secuencias de pasos indique que el sistema debe consultar información de alguna base de datos externa y mantenida por otro sistema.

Ejemplo: en el ejemplo el Teléfono es un EIF.

· Entradas Externas (EI del inglés External Inputs): un proceso elemental en lo que ciertos datos cruzan la frontera del sistema desde afuera hacia adentro.

Ejemplo. En el ejemplo cada escenario representaría una Entrada Externa. Si en lugar de un caso de uso con 3 escenarios tuviéramos 3 casos de uso seguiríamos teniendo 3 Entradas Externas.

· Salidas Externas (EO, del inglés External Outputs): un proceso elemental con componentes de entrada y de salida mediante el cual datos simples y datos derivados (que se calculan a partir de otros datos) cruzan la frontera del sistema desde adentro hacia afuera. Adicionalmente, las Salidas Externas pueden actualizar un Archivo Lógico Interno

Ejemplo: en el ejemplo el caso de uso de Informe. La información que sale del sistema consiste fundamentalmente de datos calculados.

· Consultas Externas (EQ, del inglés External Inqui- rys): un proceso elemental con componentes de entrada y de salida donde un Actor del sistema rescata datos de uno o más Archivos Lógicos Internos o Archivos de Interfaz Externos. Los datos de entrada no actualizan ni mantienen ningún archivo (lógico interno o de interfaz externo) y los datos de salida no contienen datos derivados (es decir, los datos de salida son básicamente los mismos que se obtienen de los archivos). Dentro de éste tipo de transacción entran los listados y las búsquedas de los sistemas.

Ejemplo: Búsqueda Usuarios

ESTIMACIÓN INICIAL SOBRE LOS CASOS DE USO IDENTIFICADOS

La especificación de requerimientos mediante Casos de Uso comienza con la identificación de los Actores del sistema (usuarios u otros sistemas) y continúa con la identificación de los Casos de Uso.

En la primera aproximación se tiene una descripción de cada Caso de Uso, relatando sintéticamente la funcionalidad que brinda el mismo en beneficio de los actores.

Con esta información, se puede efectuar una estimación inicial del tamaño en Puntos de Función, basándose en el nombre y la descripción de cada Caso de Uso.

Al no existir una información completa de los requerimientos esta estimación no es precisa pero puede dar una idea del tamaño del software a desarrollar.

Si retomamos el ejemplo y teniendo en cuenta estos casos de uso:

Caso de Uso de Mantenimiento de Usuarios (valdría el mantenimiento de cualquier entidad). Está formado por 3 escenarios: el del alta, el de modificación y el de baja de usuarios.

Caso de Uso Búsqueda de Usuarios

Caso de Uso Informe de Usuarios

Caso de Uso Consulta Teléfono de Usuario en LDAP corporativo (externo)

Tendríamos:

· 1 Archivo Lógico Interno (Usuario) de complejidad baja

· 3 Entradas Externas de complejidad baja: alta, modificación y baja

· 1 Consulta Externa: búsqueda de usuarios de complejidad baja

· 1 Salida Externa: informe de usuarios de complejidad baja

· 1 Archivo Lógico Externo (teléfono) de complejidad media

A continuación faltaría asignar unos pesos a cada uno de estos elementos para calcular el UFP (Puntos de Función sin ajustar)

CLASIFICACIÓN DE TRANSACCIONES Y ARCHIVOS

La complejidad de las Transacciones y los Archivos en el Análisis de Puntos de Función, se puede clasificar y cuantificar de acuerdo con unos criterios ya establecidos:

· Clasificación de las Entradas Externas: “Archivos referenciados” representa el número de Archivos Lógicos Internos mantenidos por la Entrada Externa, y “Elementos de datos” representa la cantidad de elementos que componen la Entrada Externa.

· Clasificación de las Salidas Externas y Consultas Externas: “Archivos referenciados” representa el número de Archivos Lógicos Internos o Archivos de Interfaz Externos vinculados con la Salida Externa o la Consulta Externa, y “Elementos de datos” representa la cantidad combinada de elementos de datos de entrada y de salida que componen la Salida Externa o Consulta Externa.

 

· Clasificación de los Archivos Lógicos Internos y Archivos de Interfaz Externos: donde “Tipos de registro” representa un subgrupo de elementos de datos reconocibles por el usuario, y “Elementos de datos” representa la cantidad de elementos de datos básicos (campos únicos) que componen el Archivo.

· Asignación de valores numéricos: Los valores numéricos que se asignan a cada complejidad (Baja, Media o Alta), se muestran en la siguiente tabla, para cada uno de los tipos de transacción.

 

 

En nuestro ejemplo saldría:

· 1 Archivo Lógico Interno (Usuario) de complejidad baja à 7

· 3 Entradas Externas de complejidad baja: alta, modificación y baja à 9

· 1 Consulta Externa: búsqueda de usuarios de complejidad baja à 3

· 1 Salida Externa: informe de usuarios de complejidad baja à 4

· 1 Archivo Lógico Externo (teléfono) de complejidad media à 7

UFP (Puntos de Función sin ajustar) = 7 + 9 + 3 + 4 + 7 = 30

DE LA ESTIMACIÓN DE TAMAÑO A ESTIMACIÓN DE ESFUERZO: PUNTOS DE FUNCIÓN AJUSTADOS

Una vez que se han obtenido los Puntos de Función sin ajustar del sistema a partir de los Casos de Uso calcularemos los Puntos de Función Ajustados, que consiste en el cálculo de un Factor de Ajuste en base a la cuantificación de ciertos coeficientes vinculados con las características deseadas del sistema (comunicación de datos, rendimiento, facilidades de instalación, de operación, frecuencia de transacciones, etc.).

A cada una de estas características se le asigna un factor de peso (un valor entre 0 y 5) que indica la importancia de la característica para el sistema bajo análisis.

El significado del valor asignado a cada característica es el siguiente:

0 à No presente o sin influencia

1 à Influencia incidental

2 à Influencia moderada

3 à Influencia media

4 à Influencia significativa

5 à Fuerte influencia

Las características a tener en cuenta son:

CARACTERÍSTICA DESCRIPCIÓN
Comunicación de datos Cuántas facilidades de comunicación hay disponibles para ayudar en el intercambio de información con la aplicación o el sistema?
Procesamiento distribuido de datos Cómo se manejan los datos y las funciones de procesamiento distribuido
Rendimiento Existen requerimientos de velocidad o tiempo de respuesta?
Configuraciones fuertemente utilizadas Cómo de intensivas se utilizan las plataformas hardware donde se ejecuta el sistema
Frecuencia de transacciones Con qué frecuencia se ejecutan las transacciones? Diariamente, semanalmente,…
Entrada de datos on- line Qué porcentaje de la información se ingresa on-line’
Eficiencia del usuario final Aplicación diseñada para maximizar la eficiencia del usuario final
Actualizaciones Online Cuántos Archivos Lógicos Internos se actualizan por una transacción on-line?
Procesamiento complejo Hay procesamientos lógicos o matemáticos intensivos en la aplicación’
Reusabilidad La aplicación se desarrolla para suplir una o muchas de las necesidades de los usuarios?
Facilidad de instalación Qué tan difícil es la instalación y la conversión al nuevo sistema?
Facilidad de operación Cómo de efectivos y/o automatizados deben ser los procedimientos de arranque, parada, backup y restore
Instalación en distintos lugares La aplicación fue concebida para su instalación en múltiples sitios y organizaciones?
Facilidad de cambio La aplicación fue concebida para facilitar los cambios sobre la misma?

Cada una de éstas características aporta un valor entre 0 y 5, de acuerdo a la importancia que tenga en el sistema.

Luego se suman los aportes de cada una de las características, obteniendo el grado total de influencia (TDI, del inglés Total Degree of Influence), y se calcula el Factor de Ajuste como:

AF = (TDI x 0.01) + 0.65

Finalmente, los Puntos de Función Ajustados se obtienen como el producto de los Puntos de Función sin ajustar por el Factor de Ajuste:

FP = UFP x AF

En nuestro ejemplo

CARACTERÍSTICA DESCRIPCIÓN PESO
Comunicación de datos Aplicación Web 3
Procesamiento distribuido de datos No hay 0
Rendimiento Requisitos de rendimiento firmados por contrato 5
Configuraciones fuertemente utilizadas Hardware impuesto. Equipos marca XXX modelo YYY 5
Frecuencia de transacciones Pico diario 3
Entrada de datos on- line Todos 5
Eficiencia del usuario final Alta 4
Actualizaciones Online La mayoría 3
Procesamiento complejo No hay 0
Reusabilidad Se pretende reutilizar parte para crear producto 2
Facilidad de instalación No hay 0
Facilidad de operación Operación desatendida 5
Instalación en distintos lugares 5
Facilidad de cambio Media 3
GRADO TOTAL DE INFLUENCIA (TDI) 43

y el Factor de Ajuste como:

AF = TDI x 0.01 + 0.65 = 43 x 0.01 + 0.65 = 1.08

Finalmente, los Puntos de Función Ajustados dan:

FP = UFP x AF = 30 x 1.08 = 32.4

Una vez obtenidos los Puntos de Función Ajustados se deben aplicar coeficientes que conviertan este valor a otros como el esfuerzo, el costo o el tiempo.

Estos coeficientes se obtienen fundamentalmente de la información histórica de proyectos de la organización, aunque existen algunos valores medios disponibles, recopilados estadísticamente de la industria del software.

Este post ya me ha quedado lo suficientemente espeso…en el próximo nos referiremos a algunos valores medios de estos.