Estimación por Puntos de Caso de Uso (el famoso Karner)

Si en este post nos referíamos a la estimación de esfuerzo por Puntos de Función en este nos referiremos a la estimación por Puntos de Caso de Uso.

La estimación mediante el análisis de Puntos de Casos de Uso es un método propuesto originalmente por Gustav Karner de Objectory AB, y posteriormente refinado por muchos otros autores.

Se trata de un método de estimación del tiempo de desarrollo de un proyecto mediante la asignación de “pesos” a un cierto número de factores que lo afectan, para finalmente, contabilizar el tiempo total estimado para el proyecto a partir de esos factores

Cálculo de Puntos de Casos de Uso sin ajustar

El primer paso para la estimación consiste en el cálculo de los Puntos de Casos de Uso sin ajustar. Este valor, se calcula a partir de la siguiente ecuación

UUCP = UAW + UUCW

donde,

· UUCP: Puntos de Casos de Uso sin ajustar

· UAW: Factor de Peso de los Actores sin ajustar

· UUCW: Factor de Peso de los Casos de Uso sin ajustar

Factor de Peso de los Actores sin ajustar(UAW)

Este valor se calcula mediante un análisis de la cantidad de Actores presentes en el sistema y la complejidad de cada uno de ellos.

La complejidad de los Actores se establece teniendo en cuenta en primer lugar si se trata de una persona o de otro sistema, y en segundo lugar, la forma en la que el actor interactúa con el sistema.

Los criterios son:

Factor de Peso de los Casos de Uso sin ajustar (UUCW)

Este valor se calcula mediante un análisis de la cantidad de Casos de Uso presentes en el sistema y la complejidad de cada uno de ellos. La complejidad de los Casos de Uso se establece teniendo en cuenta la cantidad

de transacciones efectuadas en el mismo, donde una transacción se entiende como una secuencia de actividades atómica, es decir, se efectúa la secuencia de actividades completa, o no se efectúa ninguna de las

actividades de la secuencia. Los criterios se muestran en la siguiente tabla:

Ejemplo

Aplicando el análisis de Puntos de Casos de Uso sin ajustar, se tiene:

Factor de Peso de los Actores sin ajustar (UAW)

El Usuario constituye un actor de tipo complejo, ya que se trata de una persona utilizando el sistema mediante una interfaz gráfica, al cual se le asigna un peso 3. Luego, el factor de peso de los actores sin ajustar resulta:

UAW = 1 x 3 = 3

Factor de Peso de los Casos de Uso sin ajustar (UUCW)

Cada uno de los casos de uso “Agregar orden”, “Modificar orden” y “Eliminar orden” consisten de una única transacción, y el caso de uso “Encontrar orden” consiste de dos transacciones. Se tienen entonces 4 casos de uso tipo simple (peso 5), con lo cual el factor de peso de los casos de uso sin ajustar resulta:

UUCW = 4 x 5 = 20

Finalmente, los Puntos de Casos de Uso sin ajustar resultan

UUCP = UAW + UUCW = 3 + 20 = 23

Cálculo de Puntos de Casos de Uso ajustados

Una vez que se tienen los Puntos de Casos de Uso sin ajustar se debe ajustar éste valor mediante la siguiente ecuación:

UCP = UUCP x TCF x EF

donde,

· UCP: Puntos de Casos de Uso ajustados

· UUCP: Puntos de Casos de Uso sin ajustar

· TCF: Factor de complejidad técnica

· EF: Factor de ambiente

Factor de complejidad técnica (TCF)

Este coeficiente se calcula mediante la cuantificación de un conjunto de factores que determinan la complejidad técnica del sistema. Cada uno de los factores se cuantifica con un valor de 0 a 5, donde 0 significa un aporte irrelevante y 5 un aporte muy importante. En la siguiente tabla se muestra el significado y el peso de cada uno de éstos factores:

Factor Descripción Peso

T1 Sistema distribuido 2

T2 Objetivos de performance o tiempo de respuesta 1

T3 Eficiencia del usuario final 1

T4 Procesamiento interno complejo 1

T5 El código debe ser reutilizable 1

T6 Facilidad de instalación 0.5

T7 Facilidad de uso 0.5

T8 Portabilidad 2

T9 Facilidad de cambio 1

T10 Concurrencia 1

T11 Incluye objetivos especiales de seguridad 1

T12 Provee acceso directo a terceras partes 1

T13 Se requieren facilidades especiales de entrenamiento 1

a usuarios

El Factor de complejidad técnica se calcula mediante la siguiente ecuación:

TCF = 0.6 + 0.01 x Σ (Peso(i) x Valor asignado(i))

Factor de ambiente (EF)

Las habilidades y el entrenamiento del grupo involu-crado en el desarrollo tienen un gran impacto en las estimaciones de tiempo.

Estos factores son los que se contemplan en el cálculo del Factor de ambiente. El cálculo del mismo es similar al cálculo del Factor de complejidad técnica, es decir, se trata de un conjunto de factores que se cuantifican con valores de 0 a 5:

En la siguiente tabla se muestra el significado y el peso

Factor Descripción Peso

E1 Familiaridad con el modelo de proyecto utilizado 1.5

E2 Experiencia en la aplicación 0.5

E3 Experiencia en orientación a objetos 1

E4 Capacidad del analista líder 0.5

E5 Motivación 1

E6 Estabilidad de los requerimientos 2

E7 Personal part-time -1

E8 Dificultad del lenguaje de programación -1

· Para los factores E1 al E4, un valor asignado de 0 significa sin experiencia, 3 experiencia media y 5 amplia experiencia (experto).

· Para el factor E5, 0 significa sin motivación para el proyecto, 3 motivación media y 5 alta motivación.

· Para el factor E6, 0 significa requerimientos extremadamente inestables, 3 estabilidad media y 5 requerimientos estables sin posibilidad de cambios.

· Para el factor E7, 0 significa que no hay personal part-time (es decir todos son full-time), 3 significa mitad y mitad, y 5 significa que todo el personal es part-time (nadie es full-time).

· Para el factor E8, 0 significa que el lenguaje de programación es fácil de usar, 3 medio y 5 que el lenguaje es extremadamente difícil.

El Factor de ambiente se calcula mediante la siguiente ecuación:

EF =1.4 – 0.03 x Σ (Peso(i) x Valor asignado(i))

Ejemplo

Continuando con el ejemplo del apartado 3.1, se calcu-lan los Puntos de Casos de Uso ajustados.

Factor de complejidad técnica (TCF)

El Factor de complejidad técnica resulta:

TCF = 0.6 + 0.01 x 17 = 0.77

Factor de ambiente (EF)

 

El Factor de ambiente resulta:

EF = 1.4 – 0.03 x 19.5 = 0.82

Finalmente, los Puntos de Casos de Uso ajustados resultan:

UCP = 23 * 0.77 * 0.82 = 14.52

De los Puntos de Casos de Uso a la estimación del esfuerzo

Karner originalmente sugirió que cada Punto de Casos de Uso requiere 20 horas-hombre.

Más interesante son los refinamientos posteriores que proponen una granularidad algo más fina, según el siguiente criterio:

· Se contabilizan cuántos factores de los que afectan al Factor de ambiente están por debajo del valor medio (3), para los factores E1 a E6.

· Se contabilizan cuántos factores de los que afectan al Factor de ambiente están por encima del valor medio (3), para los factores E7 y E8:

o Si el total es 2 o menos, se utiliza el factor de conversión 20 horas-hombre/Punto de Casos de Uso, es decir, un Punto de Caso de Uso toma 20 horas-hombre.

o Si el total es 3 o 4, se utiliza el factor de conversión 28 horas-hombre/Punto de Casos de Uso, es decir, un Punto de Caso de Uso toma 28 horas-hombre.

o Si el total es mayor o igual que 5, se recomienda efectuar cambios en el proyecto, ya que se considera que el riesgo de fracaso del mismo es demasiado alto. (Me parto :D)

El esfuerzo en horas-hombre viene dado por:

E = UCP x CF

donde,

· E: esfuerzo estimado en horas-hombre

· UCP: Puntos de Casos de Uso ajustados

· CF: factor de conversión

Esta estimación del esfuerzo en horas-hombre contemplando sólo el desarrollo de la funcionalidad especificada en los casos de uso.

Finalmente, para una estimación más completa de la duración total del proyecto, hay que agregar a la estimación del esfuerzo obtenida por los Puntos de Casos de Uso, las estimaciones de esfuerzo de las demás actividades relacionadas con el desarrollo de software.

Obviamente, éstos valores no son absolutos sino que pueden variar de acuerdo a las características de la organización y del proyecto.

Con éste criterio, y tomando como entrada la estimación de tiempo calculada a partir de los Puntos de Casos de Uso, se pueden calcular las demás estimaciones para obtener la duración total del proyecto.

Ejemplo:

Aplicando éstos criterios al ejemplo que se venía desarrollando en éste apartado, se obtiene el esfuerzo necesario para el desarrollo de los casos de uso como:

E = 14.52 * 20 = 290.4 Horas-Hombre

Si además se considera que este esfuerzo representa un porcentaje del esfuerzo total del proyecto, de acuerdo a los valores porcentuales de la tabla anterior, se obtiene: