Algunos comentarios y comparaciones

Los n�meros ofrecidos en las secciones anteriores no son m�s que estimaciones. Pueden darnos al menos �rdenes de magnitud, y permitir las comparaciones, pero no deben ser tomados como datos exactos, hay demasiadas fuentes de error, as� como margen para diversas interpretaciones. En esta secci�n discutiremos algunas de las presunciones m�s importantes que se han hecho, con el objetivo de aportar contexto al lector para interpretar los n�meros.

Qu� es una l�nea de c�digo fuente

Ya que dependemos de la herramienta sloccount de David Wheeler para medir el SLOC, tambi�n dependemos de su definici�n de "l�neas f�sicas de c�digo fuente". Por tanto, podemos decir que contabilizamos una SLOC cuando sloccount lo hace, si bien sloccount ha sido cuidadosamente dise�ado para responder a la definici�n habitual de SLOC f�sicas: " una l�nea f�sica de c�digo fuente es una linea que acaba en un marcador de nueva l�nea o de fin de fichero, y que contiene al menos un car�cter que no es un espacio en blanco ni un comentario.;" .

Hay otra medida similar que se prefiere en ocasiones, el SLOC "l�gico". Por ejemplo, una l�nea escrita en C con dos punto y coma ser�a considerado como dos SLOC l�gico, mientras que ser�a un solo SLOC f�sico. En todo caso, para los prop�sitos de este art�culo (como para casi cualquier otro), las diferencias entre ambos SLOC son despreciables, especialmente comparadas con otras fuentes de error e interpretaci�n.

Fuentes de imprecisi�n en la medici�n de SLOC

Las mediciones de l�neas de c�digo presentadas en este art�culo no son m�s que estimaciones. En ning�n caso pretendemos afirmar que sean exactas, especialmente cuando se refieren a agregaci�n de paquetes. Hay varios factores que causan imprecisiones, algunas debidas a las herramientas empleadas para contar, otras, debidas a la selecci�n de los paquetes.

Estimaci�n de esfuerzo y _oste

Los modelos de estimaci�n actual, y espec�ficamente COCOMO, s�lo consideran modelos cl�sicos de desarrollo de software propietario. Pero los modelos de desarrollo de software libre son bastante distintos. De esta forma s�lo podemos estimar el coste del sistema si hubiera sido desarrollado por m�todos convencionales, pero no los costes reales (en esfuerzo o dinero) del desarrollo del software incluido en Debian 2.2

Algunas de las diferencias que hacen imposibles el uso de estos modelos de estimaci�n son:

Algunos de estos factores incrementan el esfuerzo necesario para construir el software, mientras que otros lo decrementan. Sin analizar detalladamente el impacto de estos (y otros) factores, los modelos de estimaci�n en general, y COCOMO en particular no son directamente aplicables al desarrollo de software libre.

Comparaci�n con los tama�os estimados de otros sistemas

Para poner en contexto las cifras mostradas anteriormente, aportamos estimaciones del tama�o de algunos Sistemas Operativos, y una comparaci�n m�s detallada con las estimaciones de la distribuci�n Red Hat Linux.

Como se indica en [Lucovsky2000] (para Windows 2000) [Wheeler2001] (para Red Hat Linux) [Schneier2000] (para el resto de los sistemas) este es el tama�o estimado para varios Sistemas Operativos, en l�neas de c�digo. (Siempre en cifras aproximadas):

Casi todas las estimaciones (en realidad, todas, excepto las de Red Hat) no son detalladas, por lo que es dif�cil saber qu� consideran una l�nea de c�digo. De todas formas, las estimaciones deber�an ser lo suficientemente pr�ximas a las mediciones de SLOC como para que sean v�lidos para una comparaci�n.

N�tese que mientras que Red Hat y Debian incluyen muchas aplicaciones, con frecuencia varias aplicaciones del mismo tipo de programa, tanto los Sistemas Operativos de Microsoft como los de Sun son mucho m�s limitados en este sentido. Si las aplicaciones m�s usadas en estos entornos fueran contabilizadas juntas, el tama�o ser�a mucho mayor. En todo caso, tambi�n es cierto que todas esas aplicaciones ni son desarrolladas ni integradas por el mismo equipo de desarrollo, como en el caso de las distribuciones basadas en Linux.

A partir de estas cifras, queda claro que las distribuciones basadas en Linux, en general, y Debian 2.2 en particular, son unas de las mayores colecciones de software nunca integradas por un equipo de desarrollo.

Comparaci�n con Red Hat Linux

El �nico Sistema Operativo para el que hemos encontrado medidas detalladas de l�neas de c�digo fuente es Red Hat Linux (consultar" Estimating Linux's Size" y "More Than a Gigabuck: Estimating GNU/Linux's Size;"). Siendo tambi�n una distribuci�n basada en Linux, donde los paquetes software incluidos en Debian y en Red Hat son bastante similares, la comparaci�n puede ser ilustrativa. Adem�s, siendo Red Hat Linux una distribuci�n muy com�n, probablemente la m�s conocida, la comparaci�n con ellas puede aportar un contexto apropiado para el lector familiarizado con ella.

Lo primero que nos sorprendi� cuando medimos Debian 2.2 fue su tama�o, comparado con Red Hat 6.2 (Distribuido en Marzo de 2000) y con Red Hat 7.1 (distribuido en Abril de 2001). Debian 2.2 aparece en agosto de 2000 , y su tama�o es casi el doble que el de Red Hat (Distribuido unos seis meses despu�s) y m�s de tres veces el tama�o de Red Hay 6.2 (distribuido cinco meses antes)_ Algunas de estas diferencia pueden ser debidas a diferentes consideraciones sobre qu� paquetes incluir al medir, pero con todo aportan una buena idea de los tama�os relativos.

El principal factor causante de las diferencias es el n�mero de paquetes incluidos en cada distribuci�n, en el caso de Debian hemos considerado 2630 paquetes fuente (con una media de unos 21.300 SLOC por paquete), mientras que Red Hat 7.1 incluye s�lo 612 paquetes (de unos 49.000 SLOC por paquete)

Cuando se comparan los paquetes mayores en ambas distribuciones, encontramos en Debian todos los incluidos en Red Hat, lo que no es cierto a la inversa: Varios paquetes que suman una buena cantidad de SLOC en Debian no est�n presentes en Red Hat. Por ejemplo, entre los 11 mayores paquetes en Debian 2.2, los siguientes no est�n en Red Hat 7.1: PM3 (unos 1.115.000 SLOC), OSKit (unos 859.000 SLOC), GNAT (688.000), NCBI (591.000). Por el contrario, entre los 11 paquetes mayores en Red Hat 7.1, no echamos ninguno en falta en Debian 2.2.

De todas formas hay una gran colecci�n de paquetes software presentes en Red Hat 7.1 y no en Debian 2.2: El escritorio KDE y sus utilidades. Debido a problemas de licencia, Debian decidi� no incluir software KDE hasta despu�s de Debian 2.2, cuando la licencia para Qt cambi� a GPL. Por tanto, podemos decir que Debian 2.2 es mayor, incluso sin todo el c�digo de KDE. S�lo para dar una idea, los mayores paquetes KDE en Red Hat 7.1 son kdebase, kdelibs, koffice, y kdemultimedia, que suman sobre 1.000.000 SLOC. Todos ellos est�n ausentes en Debian. Esto sugiere que si las medidas hubieran sido hechas en la distribuci�n actual Debian (A�n no distribuida oficialmente), las diferencias hubieran sido mayores.

Las diferencias entre el mismo paquete en cada distribuci�n son atribuibles a las diferentes distribuciones incluidas en ellos. Por ejemplo, el kernel Linux suma 1.780.000 SLOC (Versi�n 2.2.19) en Debian 2.2, mientras que el mismo paquete suma 2.437.000 SLOC (Versi�n 2.4.2) en Red Hat 7.1. XFree incluye 1.270.000 SLOC (Versi�n 3.3.6) en Debian 2.2, mientras que la versi�n incluida en Red Hat 7.1 (XFree 4.0.3) suma 1.838.000 SLOC. Estas diferencias hacen dif�cil el comparar directamente Red Hat y Debian.

El lector debe percatarse de que hay una diferencia metodol�gica entre el estudio de Red Hat y el nuestro sobre Debian. El primero extrae todos los paquetes fuente y usa "checksum" MD5 para evitar duplicados entre todo el c�digo de la distribuci�n. En el caso de Debian, hemos extra�do los paquetes uno a uno, evitando paquetes duplicados pero no ficheros individuales repetidos. De todas formas, la suma total no deber�a verse muy afectada por esta diferencia.