Monografias.com > Computación > Programación
Descargar Imprimir Comentar Ver trabajos relacionados

Debian 3.1 (Sarge) como caso de estudio de medición de Software Libre: resultados preliminares



    Resumen: el sistema operativo
    Debian es una de las distribuciones GNU/Linux más
    populares y no sólo por la cantidad de usuarios finales
    que tiene sino también porque se utiliza mucho como base
    para crear otros sistemas. Al
    margen de su popularidad, es también una de las mayores
    compilaciones de Software Libre
    realizadas, por lo que es un buen punto de partida para analizar
    el estado
    actual del Software Libre (a veces
    conocido como
    Open Source). Este trabajo es un
    estudio preliminar acerca de la nueva versión de Debian
    (la 3.1, conocida también como Sarge), que ha sido
    publicada oficialmente hace pocas semanas. Mostraremos el
    tamaño de Debian en número de líneas de
    código
    fuente (cercano a los 230 millones), qué lenguajes de
    programación se utilizan, cuál es el
    tamaño de los paquetes que integran la distribución y qué coste estimado
    tiene, mediante la aplicación de técnicas
    clásicas de estimación de costes. Esto
    último nos puede dar una idea del coste que tendría
    crear Debian 3.1 desde cero (alrededor de ocho mil millones de
    dólares).

    Palabras clave: COCOMO, Debian, Ingeniería del Software Libre,
    líneas de código, Linux, Software
    Libre.

    1.
    Introducción

    El 6 de junio de 2005, el proyecto Debian
    anunció el lanzamiento oficial de la versión3.1 de
    Debian
    GNU/Linux, conocida como "Sarge", después de casi tres
    años de desarrollo[6].
    La distribución Debian la prepara el proyecto Debian, un
    grupo de casi
    1.400voluntarios (también conocidos como desarrolladores)
    cuyas tareas principales son la adaptación y empaquetado
    de los programas
    incluidos en la distribución [11]. Los desarrolladores de
    Debian empaquetan los programas que obtienen de sus autores
    originales(lo que en la jerga se conoce como upstream),
    asegurándose de que se integra bien con el resto del
    sistema Debian.
    Por esta razón, hay una serie de reglas que debe cumplir
    todo paquete y que están detalladas en el manual de
    Políticas de Debian [5]. Debian 3.1 incluye
    la mayoría de los paquetes de software libre disponibles
    en el momento de su publicación. Sólo en la
    distribución principal, compuesta únicamente de
    Software Libre, SL, (de acuerdo con las reglas del SL en Debian),
    aparecen más de8.600 paquetes fuente. La
    distribución completa incluye casi 15.300 paquetes
    binarios, que los usuarios pueden instalar fácilmente a
    partir de varias fuentes de
    distribución, incluyendo Internet.

    En este artículo hemos analizado este sistema,
    mostrando su tamaño, y comparándolo con otros
    sistemas GNU/Linux contemporáneos1 . Decidimos escribir
    este artículo como una actualización de
    aquél otro titulado Contando Patatas [8], y Measuring
    Woody [1], que se hicieron para las versiones anteriores del
    sistema Debian.

    La estructura de
    este artículo es ésta: en la siguiente
    sección presentaremos brevemente los métodos
    usados para recolectar los datos mostrados
    aquí; después veremos los resultados de medir
    Debian 3.1 (incluyendo cuentas totales,
    por lenguajes de programación, los mayores paquetes, etc);
    en la sección 3 se comentan brevemente los resultados y su
    interpretación, y se presentan
    comparaciones con Red Hat Linux y otros
    sistemas
    operativos, sean libres o privativos; finalmente, mostraremos
    nuestras conclusiones y las referencias citadas.

    2. Recolección de los
    datos

    En este trabajo sólo hemos considerado la
    sección principal (main main), que es la más im-
    portante y, sobre todo, la más grande en cualquier
    versión de Debian. Está compuesta únicamente
    de SL (de acuerdo con las reglas del software libre de Debian
    [7]). En Debian hay otras secciones, como non-free y contrib
    contrib, que no vamos a tratar aquí.

    La técnica usada para recolectar los datos es la
    siguiente: en primer lugar, se obtienen los paquetes fuente del
    sistema a partir de los archivos
    públicos disponibles en Internet, como archive.debian.org
    <ftp://archive.
    debian.org>. En Debian podemos conseguir los paquetes fuente o
    los binarios. En este estudio hemos considerado los paquetes
    fuente, mientras que los usuarios suelen obtener los binarios
    para instalarlos directamente en un ordenador. Cada paquete
    fuente en Debian puede servir para generar uno o más
    paquetes binarios.

    Como segundo paso, hemos analizado los paquetes, con la
    ayuda de la herramienta SLOCCount SLOCCount2 [12]. La cuenta de
    líneas de código es tan sólo una
    estimación, debido a ciertas características de la
    herramienta (fundamentada en heurísticas para la
    identificación del código fuente y su lenguaje de
    programación) y el criterio que se ha seguido para la
    selección de los paquetes a contar
    [8].

    El último paso comprende la identificación
    y eliminación de los paquetes que aparecen varias veces
    aunque en diferentes versiones (por ejemplo, esto es lo que
    ocurre con el

    Tabla 1. Cuentas de líneas de
    código fuente de Debian 3.1 por lenguaje de
    programación. compilador GCC), con el fin de no contar
    varias veces el mismo código fuente.

    Esto puede hacer que nuestra estimación quede por
    debajo del valor real
    (pues las versiones más antiguas no estarán
    necesariamente completamente contenidas en las más
    modernas).

    En ocasiones, sin embargo, hemos estimado tantas
    diferencias entre las diferentes versiones, que hemos dejado
    ambas. Por ejemplo, hemos contabilizado emacs y xemacs, o gcc y
    gnat (compilador de Ada de GNU). El resultado final de este paso
    es un conjunto de informes y
    análisis estadísticos, tomando los
    datos generados en pasos anteriores y analizándolos desde
    diferentes puntos de vista. Estos resultados son los que
    presentamos a continuación.

    3. Resultados de las medidas
    sobre Debian 3.1

    En total, siguiendo la metodología descrita, hemos contado
    229.496.000 líneas de código fuente en Debian 3.1.
    En las siguientes secciones se presentan resultados clasificados
    (con todos los números de manera aproximada; véase
    [4] para mayor precisión).

    3.1. Lenguajes de programación

    Las cuentas de líneas de código fuente
    (SLOC, Source Lines Of Code), en número y porcentaje,
    clasificadas por lenguaje de programación, son, de manera
    muy aproximada, las que aparecen en la tabla 1 1.

    Por debajo del 0,5% hay otros lenguajes como Objective C
    (0,37%), ML (0,31%), Yacc (0,29%), Ruby (0,26%), C# (0,23%) o Lex
    (0,10%). Por debajo del 0,1% encontramos algunos lenguajes
    más.

    El gráfico de tarta de figura 1 muestra la
    importancia de unos lenguajes de programación sobre otros.
    Casi todos los pa-quetes están escritos en lengua-je C,
    pero destaca también la abundancia del C++, siendo
    el lenguaje
    más usado en algunos de los paquetes (como OpenOffice.org
    o Mozilla).

    El siguiente lenguaje en importancia es el de Shell,
    principalmente por su uso en guiones de configuración y
    otras tareas auxiliares de muchos paquetes. Sorprendentemente,
    destaca la importancia del lenguaje LISP, aunque se explica por
    ser el lenguaje principal de algunos paquetes grandes, como
    emacs, y su uso en menor medida en muchos otros.

    Aunque no se muestra en estos resultados, hay una
    tendencia a la pérdida de importancia de C frente a otros
    lenguajes; mientras que se observa un crecimiento muy importante
    de otros lenguajes como Java, PHP y
    Python.

    3.2. Los paquetes más grandes

    A continuación daremos una lista de los paquetes
    más grandes (todos ellos tienen más de 2 millones
    de líneas de código), ordenada por tamaño,
    del sistema Debian 3.1. Para cada paquete daremos su nombre, su
    versión, el número de líneas de
    código fuente totales (SLOCs), la proporción de
    lenguajes usados y una pequeña descripción del propósito del
    paquete.

    􀂄
    OpenOffice.org (1.1.3): 5.181.000 SLOC.

    C++ supone 3.547.000 SLOC. C supone 1.040.000 SLOC.
    Además, se encuentra código escrito en 15 lenguajes
    distintos, tanto lenguajes usados para guiones (scripts), como
    Shell, TCL, Python y AWK; como otros lenguajes (Pascal, Java,
    Objective-C, List, etc). Openoffice.Org es un completo paquete
    ofimático.

    􀂄 Linux
    kernel (2.6.8): 4.043.000 SLOC. C supone 3.794.000 SLOC, mientras
    que el resto lo componen makefiles, ensamblador y
    scripts en varios lenguajes. Linux es el núcleo del
    sistema operativo Debian 3.1.

    􀂄 NVU
    (N-View) (0.80): 2.480.000 SLOC. Casi todo está escrito en
    C++, con 798.000 SLOC. Hay otros lenguajes, sobre todo para
    guiones. N-View es un sistema de autoría web, que rivaliza
    con sistemas privativos como Microsoft
    FrontPage.

    􀂄
    Mozilla (1.7.7): 2.437.000 SLOC. Casi todo está
    escrito en C++, con más de 1.567.000 SLOC, aunque tiene
    una parte importante de C, con 789.000 SLOC. Mozilla es un
    conjunto de programas para el usuario de Internet (navegador web,
    cliente de
    correo, etc).

    􀂄
    GCC-3.4 (3.4.3): 2.422.000 SLOC. C supone 1.031.000 SLOC,
    mientras que Ada comprende 485.000 SLOC y C++, 244.000 SLOC. El
    resto de los lenguajes tienen una presencia anecdótica.
    GCC es la popular colección de compiladores de
    GNU.

    􀂄
    XFS-XTT (1.4.1): 2.347.000 SLOC. Casi todo está
    escrito en lenguaje C,
    con 2.193.000 SLOC. Es un servidor de tipos
    de letra XTrueType.

    􀂄
    XFree86 (4.3.0): 2.316.000 SLOC. Principalmente está
    escrito en C, con 2.177.000 SLOC. Es una realización del
    sistema X Window, que incluye servidor y programas
    básicos.

    􀂄 VNC4
    (4.0): 2.055.000 SLOC. VNC4 es un sistema de acceso remoto a la
    consola, hecho fundamentalmente en lenguaje C, con
    1.920.000 SLOC.

    􀂄
    Insight (6.1): 1.690.000 SLOC, principalmente escrito en C
    (1.445.000 SLOC). Insight es un depurador gráfico basado
    en GDB.

    􀂄
    kFreeBSD5-source (5.3): 1.630.000 SLOC. Se trata del
    código fuente del núcleo del sistema operativo
    FreeBSD 5.3, que es la base del futuro sistema Debian
    GNU/kFreeBSD.

    􀂄
    Obsérvese que esta clasificación es
    dependiente de las decisiones tomadas por los desarrolladores a
    la hora de dividir el soft-

    Figura 1. Distribución en
    líneas de código para los lenguajes más
    usados en Debian 3.1.

    Figura 2. Tamaños de paquete
    en Debian 3.1 (el número de líneas, SLOC, se
    representa en escala
    logarítmica).

    Ware en paquetes. Por ejemplo, si todas las extensiones
    de emacs hubiesen sido empaquetadas juntas, posiblemente
    estaría en la lista de los diez paquetes más
    grandes. De todas formas, el paquete fuente Debian normalmente
    coincide con lo que el autor original considera como paquete, que
    se basa normalmente en principios de
    modularización del software.

    La figura 2 muestra los tamaños de todos los
    paquete de Debian 3.1. Hemos observado en el estudio de las
    diferentes versiones de Debian publicadas, desde la
    versión 2.0 (publicada en 1998) hasta la 3.0 (de 2002),
    que el tamaño medio de los paquetes se mantiene alrededor
    de las 23.000 líneas de código (véase [10]).
    En el caso de Debian 3.1 este tamaño medio se ha
    incrementado a las 26,600 líneas. El motivo de este
    incremento no está claro, pero puede deberse a que el
    número de paquetes crece a un ritmo mayor que el de
    desarrolladores, lo que hace difícil ese equilibrio.

    3.3. Estimaciones de coste y esfuerzo

    El modelo COCOMO
    ( COnstructive COst MOdel) [2] nos sirve para dar una
    estimación aproximada del esfuerzo económico y
    humano requerido para generar un programa de
    cierto tamaño. Como entrada, toma el tamaño en
    líneas de código fuente (SLOC).

    Dado que estas estimaciones están pensadas para
    los procesos
    ‘clásicos’ de generación de software y
    para proyectos
    grandes, los resultados obtenidos deben interpretarse siempre con
    mucha precaución. En cualquier caso, utilizaremos el
    modelo básico de COCOMO para dar una estimación del
    coste basada en el tamaño.

    Utilizando el número de líneas de
    código medidas en Debian, los resultados que ofrece el
    modelo COCOMO básico son los siguientes:

    􀂄
    Número de líneas de código (SLOC):
    229.495.824

    􀂄
    Esfuerzo estimado: 714,440.52 meseshombre (59,536.71
    años-hombre).
    Según la fórmula: 2.4 * (KSLOC^1.05)

    􀂄
    Tiempo
    estimado de desarrollo: 105.84 meses (8.82 años).
    Según la fórmula: 2.5 * (Effort^0.38)

    􀂄 Coste
    económico estimado: 8,043,000,000 dólares
    americanos. Para llegar a estos resultados, cada proyecto ha sido
    estimado como si se desarrollase independientemente de los
    demás (lo cual será cierto en casi todos los
    casos). Para calcular el coste estimado, se han utilizado los
    salarios medios de los
    programadores a tiempo completo en el año 2000, de acuerdo
    con [3], que era de 56.286 dólares al año, y un
    factor de sobrecarga de 2.4 (para más detalle sobre este
    factor y otros detalles del modelo de estimación,
    véase [13]).

    Tabla 2. Comparación de
    tamaño de diversos sistemas
    operativos.

    4. Comparación con otros
    sistemas

    Para darle más contexto a todos estos
    números, en la tabla 2 se muestran los tamaños
    estimados de otros sistemas operativos. Estos tamaños han
    sido obtenidos de diversas fuentes, mostradas en [10], y se
    proporcionan en líneas de código (siempre como
    aproximaciones).

    Casi todos estos números son estimaciones (de
    hecho, lo son para todos los casos, excepto para Red Hat Linux,
    Fedora Core y Debian) y no están detallados, de manera que
    es difícil saber qué se consideró como
    línea de código fuente en todos esos casos (por
    ejemplo, si se contaron los comentarios o no). Sin embargo, para
    el objetivo del
    artículo proporciona una visión suficientemente
    amplia.

    Nótese también que, mientras que Red Hat y
    Debian incluyen muchas aplicaciones, tanto Microsoft como Sun
    suelen incluir muchas menos (y en cualquier caso, son
    aplicaciones más sencillas). Si se contabilizasen las
    herramientas
    que usualmente acompañan a un sistema de Microsoft o Sun
    completamente instalado, los tamaños serían
    bastante mayores. Sin embargo, también es cierto que esas
    aplicaciones son desarrolladas por terceros, y no sería
    comparable con el caso de Debian, en el que su equipo de
    desarrol-ladores es responsable de todo el conjunto.

    Podemos ver que las distribuciones de Linux en general y
    Debian 3.1 en particular, forman algunos de los mayores paquetes
    de software mantenidos por un equipo de
    desarrolladores.

    5. Conclusiones y trabajo
    futuro

    Debian es uno de los mayores sistemas software del
    mundo, probablemente el mayor. Su tamaño ha crecido
    versión tras versión, siendo la versión 3.1
    el doble de grande que la 3.0. Los lenguajes principales
    utilizados para desarrollar los paquetes incluidos en Debian son,
    desde varias versiones, C y C++. El conjunto de C, C++ y Shell
    representa más del 75% de todo el código disponible
    en Debian. El número de paquetes continúa creciendo
    y se duplica aproximadamente cada dos años.

    El sistema Debian GNU/Linux, mantenido por un grupo de
    voluntarios distribuidos por todo el mundo, muestra en primer
    lugar una buena salud y una tendencia de
    continuo crecimiento. Independientemente de su enorme
    tamaño, continúa entregando versiones
    estables.

    Sin embargo, hay algunos aspectos que cuestionan la
    sostenibilidad del proyecto en el futuro. Por ejemplo, el
    tamaño medio nos da una evidencia de comportamiento
    inestable, probablemente debido a un crecimiento de los paquetes
    más rápido que el número de mantenedores de
    Debian. Por otro lado, no debemos obviar que se ha tardado casi
    tres años en publicar una nueva versión estable y
    que la fecha de publicación ha sido retrasada varias
    veces.

    En lo referente a otros sistemas software, no hay muchos
    estudios detallados en tamaño de sistemas operativos
    modernos. De ellos, el más destacado es el trabajo de
    David A. Wheeler, que midió el tamaño de Red Hat
    6.2 y Red Hat 7.1. Otras referencias nos proporcionan sumas
    totales del tamaño de algunos sistemas de Sun y Microsoft,
    pero no tienen más detalle que el mencionado. En cualquier
    caso, Debian supera, de largo, en tamaño, a todas las
    demás, aunque esta comparación debe considerarse
    con cuidado.

    Para finalizar, es importante destacar el hecho de que
    este artículo ofrece estimaciones de un estudio preliminar
    (ya que la versión no estaba totalmente finalizada cuando
    se hizo). Sin embargo, creemos que es lo suficientemente precisa
    para llevarnos a algunas conclusiones y comparar Debian 3.1 con
    otros sistemas software.

    Agradecimientos

    Este trabajo ha sido financiado en parte por la
    Comisión Europea, dentro del CALIBRE CA, programa IST,
    número de contrato 004337;
    por la Universidad Rey
    Juan Carlos con el proyecto PPR-2004-42 y por la CICyT dentro del
    proyecto TIN2004-07296.

    Referencias

    [1] Juan José Amor, Gregorio
    Robles, Jesús M. González-Barahona.

    Measuring Woody: The size of Debian 3.0 (pendiente de
    publicación). Estará disponible en <http://people.debian.org/~jgb/
    debian-counting/>.

    [2] Barry W. Boehm. Software Engineering
    Economics
    , Prentice Hall, 1981.

    [3] Computer World. Salary Survey 2000.
    <http:/ /www.computerworld.com/cwi/careers/
    surveysandreports>.

    [4] Jesús M. González Barahona,
    Gregorio Robles, Juan José Amor.
    Debian
    Counting
    . <http:/
    /libresoft.urjc.es/debian-counting/>.

    [5] Debian Project. Debian Policy Manual.
    <http:/ /www.debian.org/doc/debian-policy/>.

    [6] Debian Project. Debian GNU/Linux 3.1
    released (June 6th 2005)
    . <http://www. debian.org/News/
    2005/20050606>.

    [7] Debian Project. Debian Free Software
    Guidelines (part of the Debian Social
    Contract)
    .<http://www.debian.org/social_contract>.

    [8] Jesús M. González Barahona, Miguel
    A. Ortuño Pérez, Pedro de las Heras Quirós,
    José Centeno González, Vicente Matellán
    Olivera.
    Contando patatas: el tamaño de Debian
    2.2./ Counting potatoes: The size of Debian 2.2
    .
    Novática, nº 151 (nov.-dic. 2001),
    <http://www.ati.es/ novatica/2001/154/154-30.pdf> (en
    español);
    UPGRADE, vol. 2, issue 6, December 2001, <http:/
    /upgrade-cepis.org/issues/2001/6/up2-6Gonzalez. pdf> (en
    inglés).

    [9] Jesús M. González-Barahona,
    Gregorio Robles, Miguel Ortuño-Pérez, Luis
    Rodero-Merino, José Centeno-González, Vicente
    Matellán, Olivera, Eva Castro-Barbero, Pedro
    de-las-Heras-Quirós.
    Anatomy of two GNU/Linux
    distributions
    . Capítulo del libro
    «Free/Open Source Software Development» editado por
    Stefan Koch y publicado por Idea Group, Inc., 2004.

    [10] Gregorio Robles, Jesús M.
    González-Barahona, Luis López, Juan José
    Amor.
    Toy Story: an analysis of the evolution of Debian
    GNU/Linux
    , noviembre 2004 (pendiente de publicación).
    Borrador disponible
    <http://libresoft.urjc.es/debiancounting/>.

    [11] Gregorio Robles, Jesús M.
    González-Barahona, Martin Michlmayr.
    Evolution
    ofVolunteer Participation in Libre Software Projects: Evidence
    from Debian
    , julio 2005, Proceedings of the First
    International Conference on Open Source Systems. Genova, Italy,
    pp. 100-107. <http://
    gsyc.escet.urjc.es/~grex/volunteers-robles-jgbmartin.
    pdf>.

    [12] David Wheeler. SLOCCount.
    <http://www.dwheeler.com/sloccount/>.

    [13] David A. Wheeler. More Than a
    Gigabuck:Estimating GNU/Linux’s Size
    .
    <http://www.dwheeler.com/sloc>.

    Notas

    1 Los sistemas GNU/Linux se conocen también como
    ‘distribuciones’.

    2. Concretamente hemos utilizado la versión 2.26,
    que es capaz de reconocer 27 lenguajes de
    programación.

    Autores

    Juan José Amor Iglesias es Licenciado en
    Informática por la Universidad
    Politécnica de Madrid y
    actualmente realiza estudios de doctorado en la Universidad Rey
    Juan Carlos, de Madrid. Desde 1995 ha colaborado en diversas
    organizaciones
    relacionadas con el Software Libre: ha sido cofundador de LuCAS,
    el portal de documentación libre más conocido e
    Hispalinux, y colabora habitualmente con
    Barrapunto.com.

    Jesús M. González Barahona es
    profesor e
    investigador en la Universidad Rey Juan Carlos de Madrid.
    Empezó a trabajar en la divulgación del Software
    Libre al principio de los 90. Desde entonces, ha realizado
    numerosas actividades en este área, como la
    organización de seminarios y cursos y la
    participación en diversos grupos de trabajo
    en Software Libre. Actualmente, colabora con diversos proyectos
    de Software Libre (como Debian), con asociaciones para la defensa
    y divulgación del Software Libre, y es consultor en temas
    relacionados con la adopción
    del Software Libre en varias empresas. Sus
    intereses investigadores se centran en la Ingeniería del
    Software Libre, en particular en las medidas cuantitativas sobre
    el desarrollo del Software Libre y las herramientas distribuidas
    utilizadas. Es socio de ATI y coordinador de la sección de
    Software Libre de Novática.

    Gregorio Robles Martínez es estudiante de
    Doctorado en la Universidad Rey Juan Carlos de Madrid. Su
    actividad investigadora principal se centra en la
    ingeniería del Software Libre, específicamente en
    la adquisición de conocimiento
    sobre el desarrollo del Software Libre a partir de datos
    cuantitativos. Ha estado
    involucrado en el proyecto FLOSS y actualmente participa en la
    acción
    coordinada CALIBRE y el proyecto FLOSSWorld, todos ellos
    patrocinados por la Comisión Europea, programa
    IST.

    Israel Herráiz Tabernero es Ingeniero
    Industrial y actualmente realiza estudios de Doctorado en
    Informática en la Universidad Rey Juan Carlos.
    Descubrió el Software Libre en 2000 y desde entonces ha
    desarrollado algunas utilidades para la Ingeniería
    Química.

    Novática, revista de ATI
    (Asociación de Técnicos de Informática)
    / http://www.ati.es/novatica

    Juan José Amor Iglesias,
    Jesús

    M. González Barahona,

    Gregorio Robles Martínez,
    Israel

    Herráiz Tabernero

    Grupo de Sistemas y Comunicaciones
    / (GSYC),

    Universidad Rey Juan Carlos (Móstoles,
    Madrid)

    Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

    Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

    Categorias
    Newsletter