Costes del desarrollo de softwarePor 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
deLí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 complejo, 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 sus 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
enaproximadamente 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
Antes de saber Cuanto gana un programador tenemos que saber que hace un
programador. El programador es aquel especialista en el manejo de softwares que
permiten realizar distintas funciones desde las instrucciones para un robot, un simple
algoritmo para computadora que permita hacer matematicas de forma más simple
hasta programar redes en la internet en distintos lenguajes de programacion que
maneja como C++, HTML, Joomla, Javascript, PHP entre otros cientos de lenguajes
útiles.
En general existen dos formas de trabajo por parte de un programador las que son de
planta en un negocio que requiere de sus servicios constantes hasta
los freelancers que crean pequeños trabajos para quien lo necesite y permite un
mayor desarrollo por parte del programador para adaptarse a trabajos pequeños que
te remuneran por el trabajo.
En la actualidad los programadores son tan indispensables en las industrias para
manejar máquinas, y redes para desarrollarse en la web mediante impacto social, es
muy cierto que el programador hoy día es mas aclamado para trabajos en la Internet
que trabajos fuera de ella. Pongamos ejemplos de trabajos de un programador fuera
de la red, estos son desde programar funciones de un robot, máquinas y el desarrollo
o actualización de paquetes de software instalables a las computadores mediante el
uso de lenguajes de programación para ejecutar funciones básicas de la empresa
como operaciones matemáticas, registros automáticos de dinero, entre otros.
El medio de la red es quizá el lugar perfecto donde se desarrolla el programador
trabajando para una empresa o como freelancer para pequeños proyectos ya que son
los encargados de desarrollar y configurar diseño de páginas web, funciones de webs
y scripts especiales y hoy en día para móviles y sus aplicaciones. Debido a la gran
demanda de distintos proyectos los programadores tienden a especializarse en dos o
tres lenguajes de programación.
Debido a la gran demanda de programadores por parte de empresas grandes en la
internet como Google, Facebook, Yahoo y Microsoft es que los programadores son
tan indispensables pero realmente cuanto gana un programador de este tipo. En
Estados Unidos el salario promedio de un programador es de $5000 – $9000 usd al
mes esto varia desde el puesto que desarrolle, así como el sector y empresa para la
que trabaje.
Por otro lado en latinoamérica los programadores reciben la cantidad promedio
de $600 – $1500 usd al mes es una realidad la diferencia de sueldos entre estados
unidos y latinoamérica. Por otra parte el Freelancer suele tener un sueldo
dependiendo de la cantidad de trabajos que realice al mes así como la complejidad de
los mismo en general un programador freelancer cobra de $100 – $3000 usd por un
trabajo de programación que puede llevar de un día hasta dos semanas o el mes
completo donde se requiere de diseño, programación de scrpts en webs entre otros.

Costes del desarrollo de software

  • 1.
    Costes del desarrollode softwarePor 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 deLí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 complejo, 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 sus 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
  • 2.
    Supongamos que queremosestimar 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 enaproximadamente 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
  • 3.
    Debian 3.1 (Juniode 2005) 229.500.000 Antes de saber Cuanto gana un programador tenemos que saber que hace un programador. El programador es aquel especialista en el manejo de softwares que permiten realizar distintas funciones desde las instrucciones para un robot, un simple algoritmo para computadora que permita hacer matematicas de forma más simple hasta programar redes en la internet en distintos lenguajes de programacion que maneja como C++, HTML, Joomla, Javascript, PHP entre otros cientos de lenguajes útiles. En general existen dos formas de trabajo por parte de un programador las que son de planta en un negocio que requiere de sus servicios constantes hasta los freelancers que crean pequeños trabajos para quien lo necesite y permite un mayor desarrollo por parte del programador para adaptarse a trabajos pequeños que te remuneran por el trabajo. En la actualidad los programadores son tan indispensables en las industrias para manejar máquinas, y redes para desarrollarse en la web mediante impacto social, es muy cierto que el programador hoy día es mas aclamado para trabajos en la Internet que trabajos fuera de ella. Pongamos ejemplos de trabajos de un programador fuera de la red, estos son desde programar funciones de un robot, máquinas y el desarrollo o actualización de paquetes de software instalables a las computadores mediante el uso de lenguajes de programación para ejecutar funciones básicas de la empresa como operaciones matemáticas, registros automáticos de dinero, entre otros.
  • 4.
    El medio dela red es quizá el lugar perfecto donde se desarrolla el programador trabajando para una empresa o como freelancer para pequeños proyectos ya que son los encargados de desarrollar y configurar diseño de páginas web, funciones de webs y scripts especiales y hoy en día para móviles y sus aplicaciones. Debido a la gran demanda de distintos proyectos los programadores tienden a especializarse en dos o tres lenguajes de programación. Debido a la gran demanda de programadores por parte de empresas grandes en la internet como Google, Facebook, Yahoo y Microsoft es que los programadores son tan indispensables pero realmente cuanto gana un programador de este tipo. En Estados Unidos el salario promedio de un programador es de $5000 – $9000 usd al mes esto varia desde el puesto que desarrolle, así como el sector y empresa para la que trabaje. Por otro lado en latinoamérica los programadores reciben la cantidad promedio de $600 – $1500 usd al mes es una realidad la diferencia de sueldos entre estados unidos y latinoamérica. Por otra parte el Freelancer suele tener un sueldo dependiendo de la cantidad de trabajos que realice al mes así como la complejidad de los mismo en general un programador freelancer cobra de $100 – $3000 usd por un trabajo de programación que puede llevar de un día hasta dos semanas o el mes completo donde se requiere de diseño, programación de scrpts en webs entre otros.