¿Cómo calcular el ROI de un framework de desarrollo?

Anuncio
¿Cómo calcular el ROI de un framework de
desarrollo?
Resumen
La construcción o incorporación de un framework de desarrollo de aplicaciones a nuestros proyectos requiere realizar
una inversión en esfuerzo y recursos, tanto para su desarrollo o adquisición, como para su incorporación al proceso.
Lo primero que debemos preguntarnos, como en cualquier otra situación donde se requiere realizar una inversión, es
cuál es el retorno de la inversión (ROI) que vamos a obtener.
Si bien, al menos intuitivamente, se advierte que la utilización de un framework debería redundar en una mayor
productividad y calidad en el desarrollo, es necesario analizar en forma precisa el ROI de un framework en nuestros
proyectos para tomar una decisión informada. Como cada proyecto es único e irrepetible, no sirve tener un valor que
se pretenda aplicar a todos los proyectos, precisamos contar con algún método para estimar cuál es el ROI de un
framework de desarrollo para nuestros proyectos concretos.
En este artículo analizaremos primero un enfoque teórico para entender el ROI potencial de un framework de
desarrollo en un proyecto, para luego describir otro enfoque más práctico y contrastable con datos reales. En ambos
casos con resultados donde se observan ahorros potenciales que van desde el 10% al 25% del costo de un
proyecto.
Finalmente presentaremos los resultados concretos al aplicar el análisis a Baufest Productivity Framework, nuestro
framework probado para el desarrollo de aplicaciones .NET de misión crítica.
Introducción
A diferencia de lo que sería comenzar un desarrollo iniciado de cero, la utilización de un framework de desarrollo nos
permite comenzar nuestro proyecto sobre una sólida arquitectura de aplicación definida, implementada y probada. Este
hecho impacta a priori sobre tres factores importantes que influyen en el resultado de un proyecto:
ƒ Resuelve los riesgos tecnológicos y la complejidad de la arquitectura.
ƒ Disminuye el nivel de conocimiento, experiencia y capacidad requerido para las personas del equipo de
proyecto.
ƒ Reduce el time to market acelerando la salida a producción.
¿Pero cómo impactan exactamente estos factores en los resultados y el costo total de un proyecto de desarrollo?
Los costos de un proyecto de desarrollo están dados fundamentalmente por el costo de la “mano de obra” o cantidad
de esfuerzo requerido para llevar adelante el proyecto. Si queremos analizar el ROI desde una perspectiva del costo,
necesitamos comprender cuál es el impacto que tiene un framework en el esfuerzo total del proyecto. Para esto,
debemos analizar cuál es el efecto que tienen los factores afectados por el framework en el resultado del proyecto.
Desde una perspectiva del valor generado, el menor tiempo para la salida a producción con una aplicación sólida y de
buena calidad, o bien permite llegar al mercado antes para generar nuevos ingresos a la organización, o permite que
se ahorre antes reduciendo costos al hacer más eficiente algún proceso operativo.
© Copyright 2009
Un enfoque teórico (el ROI potencial)
COCOMO II es uno de los proyectos que mejor trabajo hizo en identificar y estudiar estadísticamente los efectos de los
distintos factores (cost-drivers) que influyen en el resultado de un proyecto basándose en una completa base de datos
de proyectos. Como resultado, COCOMO II plantea un modelo de estimación cuya ecuación de esfuerzo se expresa
en función de esos factores:
Esfuerzo = A × (Tamaño)
FactoresDeEscala
×(
∏ FactorMultiplicador )
i
Esfuerzo = Cantidad de esfuerzo en horas hombre o meses hombre
Tamaño = Tamaño/Cantidad de funcionalidad del proyecto medido en puntos de función o KSLOCs
FactoresDeEscala = Factores del proyecto que influyen exponencialmente en el esfuerzo final
FactorMultiplicadori = Factor del proyecto que influye linealmente en el esfuerzo final
A = constante de productividad
Ecuación 1 - Ecuación de estimación de esfuerzo COCOMO II
En este modelo, alguno de los factores identificados tienen un efecto exponencial (factores de escala) y otros un efecto
lineal (factores multiplicativos) sobre el esfuerzo final del proyecto. Cada factor de la ecuación se califica según las
características del proyecto, en un rango cualitativo que va desde “Muy Bajo”, pasando en el medio por “Nominal”,
hasta “Muy Alto” o “Extra Alto”.
Cuando una característica del proyecto es la normal o la típica, el factor se califica como “Nominal”. Cuando una
característica varía de lo normal, el factor se califica hacia “Bajo” o hacia “Alto” en función de criterios definidos para
cada factor. Finalmente, cada calificación se traduce en un valor numérico que representa el impacto cuantitativo en el
proyecto y que es el que se utiliza en la ecuación. El modelo define 5 factores de escala y 17 factores multiplicativos.
Dentro de este conjunto de factores que identifica COCOMO, podemos encontrar aquellos que están relacionados
directamente con los beneficios de la utilización de un framework:
Código
Nombre
Arquitectura y
resolución de
riesgos
Tipo
Racional del impacto positivo
Factor de
Escala
Usar un framework incorpora al proyecto una arquitectura madura, ya
implementada y probada, eliminando los riesgos.
PLEX
Experiencia en la
plataforma
Factor
Multiplicador
Un framework incorpora en el proyecto el conocimiento con el que fue
construido y que trae consigo sobre la plataforma, elevando la
experiencia sobre la que nos apoyamos
LTEX
Experiencia en el
lenguaje y las
herramientas
Factor
Multiplicador
Un framework incorpora al proyecto el conocimiento con el que fue
construido y que trae consigo sobre el lenguaje y las herramientas,
elevando la experiencia sobre la que nos apoyamos
RESL
Caracterización del Factor
RESL – Rating del nivel de
resolución de riesgos de
arquitectura
Valor
PLEX – Rating del nivel de
experiencia en la plataforma y
tecnología de desarrollo
Muy Bajo
Little
(20%)
Bajo
Some
(40%)
Nominal
Often
(60%)
7,07
5,65
4,24
<= 2
meses
Valor
LTEX – Rating del nivel de
experiencia en el lenguaje y las
herramientas
1,19
<= 2
meses
Valor
1,20
6 meses
1,09
6 meses
1,09
1 año
Alto
Generally
(75%)
2,83
3 años
1,41
Extra Alto
Full
(100%)
0,00
6 años
1,00
0,91
0,85
1 año
3 años
6 años
1,00
0,91
0,84
Tabla 1 - Factores de COCOMO II afectados por un framework de desarrollo
© Copyright 2009
Muy Alto
Mostly
(90%)
n/a
n/a
Si mantenemos fijos todos los otros factores en sus valores nominales, es decir, en sus valores típicos o normales,
y analizamos cómo varía el resultado cuando se modifican los 3 factores afectados, podremos observar cuál sería
el impacto de un framework en el costo total del proyecto fundamentándonos en la sólida base estadística de
proyectos de COCOMO II.
Con esta idea en mente, tomamos 3 escenarios de proyecto para analizar, con la intención de representar un caso
base, un caso medio y un mejor caso de proyectos que utilizan framework. De un escenario a otro, se pondera en
forma creciente el impacto positivo en los factores de proyecto mencionados, partiendo desde un escenario de
proyecto sin framework (caso base), donde no hay ningún impacto positivo porque no se utiliza un framework, hasta
un escenario en donde los 3 factores mencionados son impactados en forma positiva y considerable por la
utilización de un framework (mejor caso):
Caracterización del Factor
Muy
Bajo
Bajo
Nominal
Alto
Muy Alto
Extra
Alto
Caracterización del Factor
Muy
Bajo
Bajo
Nominal
Alto
Muy Alto
Extra
Alto
Caracterización del Factor
Muy
Bajo
Bajo
Nominal
Alto
Muy Alto
Extra
Alto
RESL – Rating del nivel de resolución
Little
(20%)
Some
(40%)
Often
(60%)
Generally
(75%)
Mostly
(90%)
Full
(100%)
RESL – Rating del nivel de resolución
Little
(20%)
Some
(40%)
Often
(60%)
Generally
(75%)
Mostly
(90%)
Full
(100%)
RESL – Rating del nivel de resolución
Little
(20%)
Some
(40%)
Often
(60%)
Generally
(75%)
Mostly
(90%)
Full
(100%)
5,65
6 meses
4,24
1 año
2,83
3 años
1,41
6 años
0,00
4,24
1 año
2,83
3 años
1,41
6 años
0,00
7,07
<= 2
meses
5,65
6 meses
4,24
1 año
2,83
3 años
1,41
6 años
0,00
en la plataforma y tecnología de desarrollo
7,07
<= 2
meses
5,65
6 meses
en la plataforma y tecnología de desarrollo
7,07
<= 2
meses
Valor
LTEX – Rating del nivel de experiencia
en el lenguaje y las herramientas
1,19
<= 2
meses
1,09
6 meses
Valor
LTEX – Rating del nivel de experiencia
en el lenguaje y las herramientas
1,19
<= 2
meses
1,09
6 meses
1,19
<= 2
meses
1,09
6 meses
1,00
1 año
0,91
3 años
0,85
6 años
n/a
1,20
1,09
1,20
1,09
1,20
1,09
1,00
0,91
0,84
n/a
de riesgos de arquitectura
Valor
PLEX – Rating del nivel de experiencia
Valor
1,00
1 año
1,00
0,91
3 años
0,91
0,85
6 años
0,84
de riesgos de arquitectura
Valor
PLEX – Rating del nivel de experiencia
n/a
n/a
Valor
Proyecto nominal
+
de riesgos de arquitectura
Valor
PLEX – Rating del nivel de experiencia
en la plataforma y tecnología de desarrollo
1,00
1 año
0,91
3 años
0,85
6 años
n/a
Valor
LTEX – Rating del nivel de experiencia
en el lenguaje y las herramientas
1,00
0,91
0,84
n/a
Valor
+
+
+
Proyecto con framework
(+RESL +PLEX +LTEX)
Proyecto con framework
(+RESL)
Utilizando la ecuación de esfuerzo de COCOMO con estos factores para calcular el esfuerzo total de proyecto,
podemos representar el esfuerzo total asociado a cada uno de los 3 escenarios a medida que va creciendo el
tamaño del proyecto y comparar los resultados. También podemos visualizar en forma relativa el porcentaje (%) de
ahorro sobre el caso base asociado a cada escenario de proyecto, a medida que el tamaño del proyecto aumenta.
Como unidad de medida para el tamaño del proyecto, utilizaremos puntos de función, que en promedio tienen una
equivalencia de 55 líneas de código en lenguaje C# por cada punto de función implementado.
Esfuerzo según tamaño del proyecto
Esfuerzo (meses-hombre)
300
250
Proyecto Nominal
200
Con framework
(+RESL)
150
100
Con framework
(+RESL +PLEX +LTEX)
50
0
0
500
1000
1500
2000
2500
3000
3500
Puntos de Función
Ilustración 1 – Comparación del esfuerzo total según tamaño del proyecto (calculado con COCOMO II)
Ahorro según tamaño del proyecto
Ahorro en esfuerzo
30%
28%
28%
27%
26%
25%
22%
20%
Con framework
(+RESL)
15%
10%
9%
5%
11%
14%
13%
12%
Con framework
(+RESL +PLEX +LTEX)
4%
0%
0
500
1000
1500
2000
2500
3000
3500
Puntos de Función
Ilustración 2 – Comparación del ahorro en esfuerzo sobre el caso base según tamaño del proyecto (calculado con COCOMO II)
© Copyright 2009
El tamaño de los proyectos más comunes de hoy en día varía por lo general entre los 500 y 2000 puntos de
función (o entre 27 mil a 110 mil líneas de código .NET). Dentro de este rango podemos observar que la
reducción en el esfuerzo o costo de un proyecto típico que genera un framework de desarrollo puede variar en
promedio entre un 11% y un 26% de ahorro.
Para concluir, debemos observar que todo el análisis realizado hasta el momento está enfocado sólo en la
perspectiva del costo, es decir que únicamente analiza el ahorro logrado en el proyecto para construir una
aplicación. Sin embargo, estamos dejando de lado en este análisis la perspectiva del valor generado a la
organización, que se potencia con la reducción de costos y tiempos del proyecto, permitiendo que al acelerar la
salida a producción de una solución sólida, se generen nuevos ingresos más rápido y por más tiempo, o que
se ahorre antes reduciendo costos al hacer más eficiente algún proceso operativo.
Estos beneficios adicionales harán sin duda que el rango del 11% al 26% de ahorro en el proyecto sea solo un
piso para el retorno total de la inversión en la organización.
© Copyright 2009
Un enfoque más práctico
Supongamos que hacemos un experimento en donde implementamos una misma funcionalidad de aplicación de dos
maneras distintas, una vez con framework y otra vez sin framework. Luego medimos la cantidad de líneas de código
(SLOCs) requeridas en cada caso. Si la cantidad de líneas de código requeridas para implementar una misma
funcionalidad con framework es menor a la cantidad requerida para implementarla sin framework, el esfuerzo de
codificación también será menor en la misma proporción.
Sin embargo, la codificación no es la única actividad, a veces ni siquiera la más importante, que se lleva a cabo en un
proyecto y que se suma al esfuerzo total. Para calcular cuánto ahorro en todo el proyecto representa esta reducción en
codificación, es necesario saber entonces cuánto porcentaje (%) del esfuerzo total representan las actividades de
codificación en nuestros proyectos. Esta información podemos obtenerla de los proyectos ya realizados.
De esta manera, si tenemos el porcentaje de reducción de líneas de código que genera un framework, y el porcentaje
de esfuerzo de codificación sobre el esfuerzo total del proyecto, podemos calcular el ahorro en el esfuerzo total (o
costo) del proyecto de la siguiente manera:
⎛
⎝
%ReduccionFramework = ⎜1 −
%EsfuerzoCodificacion =
SLOScConFramework ⎞
⎟
SLOCsSinFramework ⎠
EsfuerzoCodificacion
EsfuerzoTotal
⇒ % AhorroEsfuerzo = %ReduccionFramework × %EsfuerzoCodificacion
Ecuación 2 - Ecuación del ahorro de esfuerzo del proyecto por reducción en la codificación
Como ejemplo, supondremos que tenemos un framework que reduce la cantidad de líneas de código a escribir a un
80% de lo que sería necesario escribir sin framework y utilizaremos información estadística de proyectos de la industria
tomada de la base de datos del ISBSG (International Software Benchmarking Standards Group) para obtener el
porcentaje de esfuerzo de codificación:
Esfuerzo por actividad
(proyectos in-house)
Other 17%
Project
Management
7%
Business
Analysis 3%
Architecture
9%
QA, Testing
16%
Programming
48%
Ilustración 3 – Distribución típica del esfuerzo por actividad en un proyecto (fuente ISBSG)
Reemplazando los valores en la cuenta:
%ReduccionFramework = (1 − 80% ) = 20%
×
%
8
4
≅
%
0
2
≅
%
0
1
⇒
o
z
r
e
u
f
s
E
o
r
r
o
h
A
%
%EsfuerzoCodificacion = 48%
Ecuación 3 - Ejemplo de cálculo de ahorro de esfuerzo por reducción en la codificación
© Copyright 2009
También podemos calcular y representar el esfuerzo total según el tamaño del proyecto, medido en cantidad de puntos
de función, y comparar la cantidad de ahorro generado. Para calcular el esfuerzo requerido según el tamaño de
proyecto, necesitamos conocer la productividad (esfuerzo requerido por unidad de tamaño de proyecto) de la
organización. Para este ejemplo tomaremos el promedio de la industria obtenido también de la base de datos del
ISBSG que define la métrica Project Delivery Rate o PDR como:
PDR =
HorasDeEsfuerzo
Horas
⇒ PDRPr omedioIndustria = 11
PuntoDeFuncion
PuntosDeFunción
Esfuerzo según tamaño de proyecto
Esfuerzo (meses-hombre)
300
250
200
Con framework
150
Sin framework
100
50
0
0
500
1000
1500
2000
Puntos de Función
2500
3000
3500
Ilustración 4 - Comparación del esfuerzo total según tamaño del proyecto (calculado con datos de industria - ISBSG)
Nuevamente como en el caso anterior, debemos tener en cuenta en el análisis el valor generado para la organización
por acelerar la salida a producción de una solución que permitirá obtener nuevos ingresos más rápido y por más
tiempo, o ahorrar antes reduciendo costos al hacer más eficiente algún proceso operativo.
Adicionalmente, también es importante destacar el ahorro generado en el proyecto por la reducción de las actividades
de arquitectura, testing y QA, que se da por el hecho de contar con un framework ya probado que incorpora una
arquitectura aplicativa lista para usar y reduce la cantidad de líneas de código a testear.
Si sumamos todo esto a los beneficios que ya analizamos, podemos afirmar sin dudas que el 10% de ahorro del
ejemplo será solo un piso en el ahorro total del proyecto y en el retorno de la inversión.
© Copyright 2009
El ROI de Baufest Productivity Framework en un proyecto tipo
Aplicando el experimento planteado sobre Baufest Productivity Framework, se implementó una misma funcionalidad
de aplicación una vez con el framework y otra vez sin el framework. Luego se midió la cantidad de líneas de código que
se requirieron escribir en cada caso para conocer el porcentaje (%) de reducción de líneas de código que genera
Baufest Productivity Framework.
La funcionalidad implementada, de un tamaño equivalente a 56 puntos de función, fue basada en algunos escenarios
funcionales de un banco ficticio:
ƒ Login
ƒ Logout
ƒ Consultar saldo de cuentas
ƒ Consultar movimientos de cuentas
ƒ Realizar transferencia entre cuentas
La medición de líneas de código arrojó que Baufest Productivity Framework redujo la cantidad de líneas de código a
escribir a un 73%. Si tomamos nuevamente como base la información de proyectos de la industria (ISBSG) para
obtener el porcentaje de esfuerzo de codificación, Baufest Productivity Framework supondría un ahorro en el
proyecto de un 13% solo por la reducción en el esfuerzo de codificación:
%ReduccionFramework = (1 − 73% ) = 27%
≅
%
3
1
⇒
o
z
r
e
u
f
s
E
o
r
r
o
h
A
%
%EsfuerzoCodificacion = 48%
Ecuación 4 - Ahorro de esfuerzo con Baufest Productivity Framework solo por reducción en la codificación
Sin embargo, Baufest Productivity Framework no es entregado como un producto suelto, sino que como parte
integral de nuestra propuesta de valor, incluimos el servicio de desarrollo de hasta 50 puntos de función de
funcionalidad real de aplicación que implementamos con el framework y junto con nuestro cliente, como parte de la
transferencia de conocimiento y acompañamiento en el proyecto.
De este modo, al ahorro ya calculado en el proyecto del 13%, se suma también que además el proyecto comenzará
con 50 puntos de función ya desarrollados y dejando una arquitectura lista.
Tomando en cuenta esto último, los 50 puntos de función iniciales del proyecto se obtienen con esfuerzo 0
(cero). Podemos volver a calcular y representar nuevamente el esfuerzo en relación al tamaño del proyecto para
comparar el ahorro en forma absoluta. También podemos visualizar en forma relativa el porcentaje (%) de ahorro de
esfuerzo en relación al tamaño del proyecto:
Esfuerzo según tamaño del proyecto
Esfuerzo (meses-hombre)
250
200
Con Baufest
Productivity
Framework
150
100
Sin framework
50
0
0
500
1000
1500
2000
2500
3000
3500
Puntos de Función
Ilustración 5 - Comparación del esfuerzo total con Baufest Productivity Framework según tamaño del proyecto
© Copyright 2009
Ahorro según tamaño del proyecto
30%
Ahorro en esfuerzo
25%
20%
20%
18% 17%
15%
15%
14%
10%
Con Baufest
Productivity
Framework
5%
0%
0
500
1000
1500
2000
2500
3000
3500
Puntos de función
Ilustración 6 - Ahorro en esfuerzo con Baufest Productivity Framework según tamaño del proyecto
Recordando que el tamaño de los proyectos más comunes de hoy en día varía por lo general entre los 500 y 2000
puntos de función (o entre 27 mil a 110 mil líneas de código .NET), el beneficio que genera Baufest Productivity
Framework desde el punto de vista del costo en un proyecto típico, va desde un 15% a un 21% de ahorro.
Como en los casos anteriores, en este análisis también es importante reconocer el valor ganado por la organización al
acelerar la salida a producción de una solución que permite generar nuevos ingresos más rápido y por más tiempo, o
que ahorra en los costos haciendo más eficiente algún proceso operativo. También el ahorro en el esfuerzo de las
actividades de arquitectura, testing y QA del proyecto por contar con un framework ya probado que incorpora una
arquitectura aplicativa lista para usar y reduce la cantidad de líneas de código a testear.
Nuevamente, si sumamos todo esto a los beneficios ya analizados, el 15% al 21% de ahorro será solo un piso para
el retorno de la inversión que brinda Baufest Productivity Framework.
Si el precio a pagar por incorporar un framework como Baufest Productivity Framework es menor al ahorro que
genera de entre el 15% al 21%, como piso en un proyecto típico, sin duda la inversión tendrá un retorno seguro.
Si querés que te ayudemos a calcular cuál sería el ROI de Baufest Productivity Framework en TU
proyecto de desarrollo, podés contactarnos a productivity@baufest.com
© Copyright 2009
Descargar