Diferencia entre revisiones de «Estudios cuantitativos en Software libre»

De wiki EOI de documentación docente
Saltar a: navegación, buscar
(Página creada con «{{Sección |Título=Estudios cuantitativos |Libro=Software libre |Capítulo=Ingeniería del software libre |Número sección=5 |Introducción=El software libre permite ahon...»)
(Sin diferencias)

Revisión del 00:43 28 feb 2012


Estado de desarrollo de la sección: esbozo esbozo

Wikilibro: Software libre > Capítulo 6: Ingeniería del software libre

Sección 5

Estudios cuantitativos
El software libre permite ahondar en el estudio cuantitativo del código y del resto de parámetros que intervienen en su generación, dada la accesibilidad a los mismos. Esto permite que áreas de la ingeniería del software tradicional - como la ingeniería del software empírica - se puedan ver potenciadas debido a la existencia de una ingente cantidad de información a la que se puede acceder sin necesidad de una fuerte intromisión en el desarrollo de software libre. Los autores estamos convencidos de que esta visión puede ayudar enormemente en el análisis y en la comprensión de los fenómenos ligados a la generación de software libre (y de software en general) llegándose incluso, entre otras posibilidades, a tener modelos predictivos del software que se realimenten en tiempo real.

La idea que hay detrás es muy simple: dado que tenemos la posibilidad de estudiar la evolución de un número inmenso de proyectos de software libre, hagámoslo. Y es que además del estado actual de un proyecto, toda su evolución en el pasado es pública, por lo que toda esta información debidamente extraída, analizada y empaquetada puede servir como una base de conocimiento que permita evaluar la salud de un proyecto, facilitar la toma de decisiones y pronosticar complicaciones actuales y futuras.

El primer estudio cuantitativo de cierta importancia en el mundo del software libre data de 1998, aunque fuera publicado a principios de 2000 [ghosh:orbiten-survey:00]. Su finalidad era conocer de manera empírica la participación de los desarrolladores en el mundo del software libre. Para ello se valían del tratamiento estadístico de la asignación de autoría que los autores suelen situar en la cabeza de los ficheros de código fuente. Se demostró que la participación sigue la ley de Pareto [pareto:political-economy]: el 80% del código corresponde al 20% más activo de los desarrolladores, mientras que el 80% de desarrolladores restante tiene una aportación de un 20% del total. Muchos estudios posteriores han confirmado y ampliado a otras formas de participación diferentes a la aportación de código fuente (mensajes a lista de correo, notificación de errores, incluso el número de descargas como se pueden ver en [hunt:on-the-pareto-distribution:02]) la validez de este resultado.

Nota: El hecho de que aparezcan muchos términos de las ciencias económicas en el estudio ingenieril del software libre es consecuencia del interés que algunos economistas han mostrado en los últimos tiempos en conocer y entender los procesos que llevan a voluntarios a producir bienes de gran valor sin obtener generalmente beneficio directo a cambio. El artículo más conocido es [ghosh:cooking-pot-markets:98], en el que se introduce la economía del regalo en Internet. En [wikipedia:_pareto] se puede obtener más información sobre el principio de Pareto y su generalización en la distribución de Pareto. Asimismo, son interesantes la curva de Lorenz [wikipedia:_lorenz], que representa de manera gráfica la participación en el proyecto de los desarrolladores, y el coeficiente de Gini [wikipedia:_gini], que se calcula a partir de la curva de Lorenz resultando un número a partir del cual se puede ver la desigualdad en el sistema.

La herramienta que se utilizó para la realización de este estudio fue publicada con una licencia libre por los autores, por lo que se ofrece tanto la posibilidad de reproducir sus resultados como de efectuar nuevos estudios.

En un estudio posterior, Koch [koch:results-software-engineering:00] fue más allá y también analizó las interacciones que se llevan a cabo en un proyecto de software libre. La fuente de información eran las lista de correo y el repositorio de versiones del proyecto GNOME. Pero el aspecto más interesante del estudio de Koch es el análisis económico. Koch se centra en comprobar la validez de predicción de costes clásicos (puntos de función, modelo de COCOMO, ...) y muestra los problemas que su aplicación conlleva, aunque ciertamente admite que los resultados que obtiene -tomados con ciertas precauciones- se ajustan parcialmente a la realidad. Concluye que el software libre necesita de métodos de estudio y modelos propios, ya que los conocidos no se adaptan a su naturaleza. Sin embargo, resulta evidente que la posibilidad de obtener públicamente muchos de los datos relacionados con el desarrollo del software libre permite ser optimistas de cara a la consecución de éstos en un futuro no muy lejano. El de Koch se puede considerar el primer estudio cuantitativo completo, aún cuando ciertamente adolece de una metodología clara y, sobre todo, de unas herramientas ad-hoc que permitieran comprobar sus resultados y el estudio de otros proyectos.

Mockus et al. presentaron en el año 2000 el primer estudio de proyectos de software libre que englobaba la descripción completa del proceso de desarrollo y de las estructuras organizativas, incluyendo evidencias tanto cualitativas como cuantitativas [mockus00case]. Utilizan para tal fin la historia de cambios del software así como de los informes de error para cuantificar aspectos de la participación de desarrolladores, el tamaño del núcleo, la autoría de código, la productividad, la densidad de defectos y los intervalos de resolución de errores. En cierto sentido, este estudio no deja de ser un estudio de ingeniería de software clásico, con la salvedad de que la obtención de los datos ha sido realizada íntegramente mediante la inspección semi-automática de los datos que los proyectos ofrecen públicamente en la red. Al igual que en [koch:results-software-engineering:00], con este artículo no se proporcionó ninguna herramienta ni proceso automático que permitiera ser reutilizada en el futuro por otros equipos de investigación.

En [wheeler:redhat:00] y [wheeler:redhat:01] encontramos el análisis cuantitativo de las líneas de código y los lenguajes de programación utilizados en la distribución Red Hat. González Barahona et al. han seguido sus pasos en una serie de artículos dedicados a la distribución Debian (véase por ejemplo [gonzalez-barahona01:_count_potat] y [barahona:anatomy-distributions:03]). Todos ellos ofrecen una especie de radiografía de estas dos populares distribuciones de GNU/Linux realizadas a partir de los datos que aporta una herramienta que cuenta el número de líneas físicas (las líneas de código que no son ni líneas en blanco ni comentarios) de un programa. Aparte del espectacular resultado en líneas de código totales (la última versión estable hasta el momento, Debian 3.0 -conocida como Woody- supera los cien millones de líneas de código), se puede ver la distribución del número de líneas en cada lenguaje de programación. La posibilidad de estudiar la evolución de las diferentes versiones de Debian en el tiempo aporta algunas evidencias interesantes [barahona:anatomy-distributions:03]. Cabe mencionar que el tamaño medio de los paquetes permanece prácticamente constante a lo largo de los últimos cinco años, por lo que la tendencia natural de los paquetes a ir creciendo se ve neutralizada por la inclusión de paquetes más pequeños. Por otro lado, se puede percibir cómo la importancia del lenguaje de programación C, todavía predominante, decrece con el tiempo, mientras que lenguajes de guión (Python, PHP y Perl) y Java contabilizan un crecimiento explosivo. Los lenguajes compilados clásicos (Pascal, Ada, Modula...) están en clara recesión. Finalmente, estos artículos incluyen un apartado dedicado a mostrar los resultados obtenidos si se aplica el modelo COCOMO - un modelo de estimación de esfuerzos clásico que data de principios de la década de los ochenta [boehm:software-engineering-economics:81] y que se utiliza en proyectos de software propietario - para realizar una estimación de esfuerzo, duración del proyecto y costes.

Aunque precursores, la mayoría de los estudios presentados en esta sección están bastante limitados a los proyectos que analizan. La metodología que se ha usado se ajusta al proyecto en estudio, es parcialmente manual y en contadas ocasiones la parte automatizada puede ser utilizada de forma general con el resto de proyectos de software libre. Esto supone que el esfuerzo que hay que realizar para estudiar un nuevo proyecto es muy grande, ya que se ha de volver a adaptar el método utilizado y repetir las acciones manuales que se han llevado a cabo.

Por eso, los últimos esfuerzos ([robles:evolution:03] o [german:automating-measurement:03]) se centran en crear una infraestructura de análisis que integre varias herramientas de manera que se automatice el proceso al máximo. Existen dos motivaciones bastante evidentes para hacer esto: la primera es que una vez que se ha invertido mucho tiempo y esfuerzo en crear una herramienta para analizar un proyecto -poniendo especial hincapié en que sea genérica-, utilizarla para otros proyectos de software libre implica un esfuerzo mínimo. Por otro lado, el análisis mediante una serie de herramientas que analizan los programas desde diferentes puntos de vista -a veces complementarios, otras veces no- permite obtener una mayor perspectiva del proyecto. En [libresoft] se pueden seguir con mayor detenimiento estas iniciativas.

< Sección anterior
Crítica a La catedral y el bazar