Costes del desarrollo de software
Por el 17 de Diciembre de 2007
en: Sin categoría
La métrica del software es un factor realmente importante en el análisis de un proyecto. Hay distintos métodos de estimación de costes de desarrollo de software, también conocido como métrica del software.
La gran mayoría de estos métodos se basan en la medición del número de Líneas de Código (LDC) que contiene el desarrollo (se excluyen comentarios y líneas en blanco de los fuentes).
Entre estos métodos está el COCOMO (COnstructive COst MOdel) desarrollado por por Barry M. Boehm. Un método de estimación de coste de desarrollo no es otra cosa que establecer una relación matemática entre el esfuerzo y el tiempo requerido para desarrollar un producto / proyecto.
Lo primero que necesitamos saber es el tipo de proyecto del que estamos hablando, hay tres tipos diferentes:
- Orgánico: proyectos relativamente sencillos,En este modo, un pequeño grupo de programadores experimentados desarrollan software en un entorno familiar. El tamaño del software varía de unos pocos miles de líneas (pequeño) a unas decenas de miles de líneas (medio).
- Semi-acoplado: proyectos intermedios en complejidad y tamaño. En este tipo, el proyecto tiene unas fuertes restricciones, que pueden estar relacionadas con el procesador y el interface hardware. El problema a resolver es único y es difícil basarse en la experiencia, puesto que puede no haberla.
- Empotrado: proyectos bastante complejos, en los que apenas se tiene experiencia y se engloban en un entorno de gran innovación técnica. Además se trabaja con unos requisitos muy restrictivos y de gran volatilidad.
Ahora por otro lado tendríamos los diferentes modelos que define COCOMO: Modelo básico, Modelo Intermedio y Modelo Avanzado.
En este punto quiero recordar que este tipo de modelos están orientados a la magnitud del producto final, midiendo el tamaño del proyecto en líneas de código principalmente, por el hecho de realizarse en base al número de líneas de código se mide el producto y su tamaño pero en ningún momento podremos llegar a medir la productividad.
Dificultad de un proyecto en función su líneas de código
| Categoría |
Programadores |
Duración |
Líneas de código |
Ejemplo |
| Trivial |
1 |
0 – 4 semanas |
< 1k |
Utilidad de ordenación |
| Pequeño |
1 |
1 – 6 meses |
1k – 3k |
Biblioteca de funciones |
| Media |
2 – 5 |
0,5 – 2 años |
3k – 50k |
Compilador de C |
| Grande |
5 – 20 |
2 – 3 años |
50k – 100k |
SO pequeño |
| Muy grande |
100 – 1000 |
4 – 5 años |
100k – 1M |
Grandes SO |
| Gigante |
1000-5000 |
5 – 10 años |
> 1M |
Sistema de Distribución |
Tabla: “Dificultad de un proyecto en función de sus líneas de código
Ejemplo práctico
Supongamos que queremos estimar el “Coste de desarrollo” de un proyecto que posee menos de 50.000 líneas de código y que por lo tanto y según hemos podido ver se trata de un Proyecto Orgánico.
“Proyecto prueba” = 9.200 líneas de código
La ecuación del esfuerzo de COCOMO es:
E = Esfuerzo = a KLDC b (persona x mes)
KLCD es el número de líneas de código en miles
La ecuación del tiempo de desarrollo es:
T = Tiempo de duración del desarrollo = c Esfuerzo d (meses)
Ahora necesitamos una tabla para obtener los coeficientes (a, b, c, d) que aparecen en las fórmulas citadas, estos coefcientes se obtienen de manera empírica y por lo tanto se basa en la experiencia de datos anteriores.
| Proyecto de software |
a
|
b
|
c
|
d
|
| Orgánico |
2,4
|
1,05
|
2,5
|
0,38
|
| Semiacoplado |
3,0
|
1,12
|
2,5
|
0,35
|
| Empotrado |
3,6
|
1,20
|
2,5
|
0,32
|
Tabla “Coeficientes COCOMO”
Por lo tanto el tamaño de nuestro “Proyecto prueba” como hemos visto es de 9,2 miles de líneas de código, si aplicamos las fórmulas:
Esfuerzo realizado = 2,4 * 9.2 1,05 = 25,77 personas / mes
T = 2,5 * 25,77 0,38 = 4,86 mes
Nº de personas para desarrollar el proyecto = E/T= 21,9 / 8,1 » 5 personas
Por lo tanto y con estos resultados diríamos que el “Proyecto Prueba” debería terminarse en aproximadamente 5 meses por un equipo de 5 personas.
Información adicional
Por cierto buscando algo de información sobre este método he encontrado esta página que contiene un formulario con el que calcular rápidamente los diferentes datos de estimación de coste de desarrollo de un proyecto basándose en el método COCOMO.
He encontrado también una comparativa de las líneas de código algunos “Sistemas Operativos actuales y antiguos” (Pueden servirte como ejemplos para porbar las fórmulas anteriormente citadas).
| Sistema Operativo |
Líneas de Código
|
| Microsoft Windows 3.1 (Abril de 1992) |
3.000.000 |
| Sun Solaris (Octubre de 1998) |
7.500.000 |
| Microsoft Windows 95 (Agosto de 1995) |
15.000.000 |
| Red Hat Linux 6.2 (Marzo de 2000) |
17.000.000 |
| Microsoft Windows 2000 (Febrero de 2000) |
29.000.000 |
| Red Hat Linux 7.1 (Abril de 2001) |
30.000.000 |
| Microsoft Windows XP (2002) |
40.000.000 |
| Red Hat Linux 8.0 (Septiembre de 2002) |
50.000.000 |
| Fedora Core 4 (Mayo de 2005) |
76.000.000 |
| Debian 3.0 (Julio de 2002) |
105.000.000 |
| Debian 3.1 (Junio de 2005) |
229.500.000
|
Estudio en formato PDF
- Entradas relacionadas:
No hay coincidencias
17 Respuestas a Costes del desarrollo de software
Anónimo
18 de Diciembre de 2007 a las 1:29 pm
¿cómo saber de antemano cuántas líneas de código voy a tener que escribir?
Guti
18 de Diciembre de 2007 a las 7:38 am
Parece que al descargar el PDF (http://tufuncion.com/archivos/Measuring%20Libre%20Software%20Using%20Debian%203.1%20Sarge%20as%20a%20case%20study.pdf), aparece un error de no encontrado 404.
Diego
18 de Diciembre de 2007 a las 7:49 am
Si para calcular el coste de un proyecto necesitas saber previamente el número de lineas de código encuentro todo el asunto poco útil, ya que antes de empezar un proyecto que es cuando te interesa valorarlo nunca sabes el numero de lineas y cuando ya lo has terminado y sabes el número de LDC ya no tiene sentido la valoración
Fernando
18 de Diciembre de 2007 a las 10:06 am
Este analisis de costo es contradictorio, el mejor software es aquel que en menos lineas de codigo brinda la solución esperada. Ahora con este metodo ¿por qué vamos a tratar de optimizar lo mas posible nuestros codigos si vamos a ganar menos por ello? A mi entender este calculo pudo haber sido útil en su momento pero ya no lo es.
Micky
21 de Diciembre de 2007 a las 9:07 am
No puedes cobrar por lineas de codigo, porque nosotros como programadores, nuestro trabajo no es solamente programar, sino crear un codigo eficiente y lo mas corto posible. Realmente lo que cobras por programar (o desde mi punto de vista) es tu conocimiento como programador – porque puedes usar 100 cout’s o un solo for – , el esfuerzo que con el que programas y por ultimo la ignorancia de quien no sabe programar.
Como nota personal, una vez cobre 100 pesos mexicanos por un programa de 20 lineas, de lo mas sencillo que hay, pero realmente cobre la ignorancia de quien no sabie.
fabio
19 de Mayo de 2008 a las 7:12 pm
Saludos, me gustaría saber si ustedes tienen algún calculo o algún dato estandar respecto a la productividad de los desarrolladores de software, es decir, un desarrollador al mes puede ser productivo (Software de buena calidad) en un porcentaje especifico.
Joaquin Ferrero
18 de Diciembre de 2007 a las 11:44 am
Este cálculo se refería a cuando se programa en C, ¿verdad?
Porque hoy en día yo puedo escribir un programa en Perl de una sola línea, en 15 segundos, que equivale a más de 100 en C, escritas y verificadas en media hora.
¿Cómo se valora entonces mi trabajo? ¿Por 15 segundos? ¿Por una línea? ¿O por ahorrar media hora y 99 líneas de programa?
Walter
23 de Febrero de 2008 a las 8:34 am
NO se porque actualmente se toma en cuenta como referencia aplicando el modelo de cocomo el sistema operativo y no el lenguaje de programación donde se programará el sw.
Yo quisiera que alguien me ayude pero con la matriz basada en el lenguaje de programación pero que este actualizada donde se tome en cuenta lenguajes de última generación tales como Visual Basic.net, c# etc. He encontrado una matriz pero con lenguajes antiguos como
C++
Shell
LISP
Perl
Python
Java
FORTRAN
PHP
Pascal
Ada
En mi caso personal estoy pensando aplicar vb.net pero no encuentro la tabla actualizada donde me indique el LDC aproximado para ese lenguaje.
Cualquier novedad
alguin especial
19 de Diciembre de 2007 a las 4:23 pm
Me parece muy bien pero para las personas que no tienen esperiencia en vender proctudo de software es muy productivo. Lo mas complicado de este tema de software esta es la parte mas complicada
Anónimo
18 de Diciembre de 2007 a las 6:17 pm
el mejor soft no es el que menos lineas de codigo tiene, el mejor soft es el qeu mejor responde a los requerimientos, el qeu tiene un mantenimiento mas facil, el que mejor respeta los estandares, el que es mas facil de apliar, etc. El buen programador no busca reducir el numero de lineas de codigo…… es era en la epoca en qeu la cantidad de lineas afectaban el rendimiento.
Con respecto a saber previamente las lineas de codigo, no se refiere a algo exacto… es una estimacion, y esa estimacion se hace en base a experiencia. Este metodo es muy util y ampliamente usado. Si no te gusta el tema de las LDC podes hacer estimaciones por punto de funcion. Lee pressman.
saludos
Anónimo
18 de Diciembre de 2007 a las 4:00 pm
Se entiende que C tiene una sintaxis suficientemente estándar, flexible y global; para poder compararlo con otros lenguajes.
En cualquier caso, los grandes proyectos vienen a estar, en su gran mayoría, en C o C++ (que es para lo que yo entiendo la comparativa, no para programas triviales de menos de 1000 líneas).
De igual manera que programar en C++ es tan o más complicado que programar en C; a pesar de que para ordenar un conjunto de objetos con C++ ocupa una línea y con C habría que implementarlo a mano. Igual que en un lenguaje en el que si escribes “FileDialog” te genera una ventana de diálogo para elegir un fichero no significa que como programador tengas más rendimiento.
Tere Parra
18 de Diciembre de 2007 a las 5:22 pm
Estoy de acuerdo
Laura
21 de Mayo de 2008 a las 11:52 am
Hola serias tan amable de facilitarme la matriz con esos lenguajes, estoy interesada en saber el factor de conversion de php. Le agradeceria que me ayudara.
Anónimo
11 de Noviembre de 2008 a las 6:23 pm
k pedo putos ojetes
Veronica
26 de Noviembre de 2009 a las 12:12 am
Como calcular el numero de lineas de codigo fuente???
David
29 de Diciembre de 2009 a las 8:01 pm
Yo trabajo con sistemas administrativos, de encuestas, crm y otros similares! Yo calculo un sistema por el Nro de Tablas que use, una tabla en DB lleva una carga de 12horas promedio de programación en torno a ella, donde se estima 6 horas de desarrollo (Vista, Lógica, Datos) y 6 horas de depuración (2hr presente, 2hr a futuro y 2hr de modificación en otra parte del software donde pueda tener relación).
Un modulo de ventas lleva en promedio 30 tablas lo que podemos estimar que ese modulo tiene una carga de 30×12 = 360 horas de ahí Tu puedes calcular el Nro de Programadores a utilizar, Tus costos y Tiempos de Entrega.
carlos
17 de Marzo de 2010 a las 6:39 pm
perlo el cocomo que se esta mostrando en esta pagina es el del año 81 actualmente existe hasta donde yo se el cocomo 2000 pero no se como aplicarlo es mas facil el del año 83 pero como todo evoluciona si alguien sabe como usarlo