Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Gregorio Robles
grex@scouts-es.org
La ingeniera del software libre viene a dar aires renovados a una ingeniera del software tradicional que se encuentra estancada debido bsicamente a que no ha sabido crear mtodos para cuantificar tiempos, costes y calidad del software de forma aceptable y contrastable. En este artculo se introducir al lector en los primeros pasos de la ingeniera del software libre que se centrarn en la extraccin de la ingente cantidad de datos que ofrecen sus desarrollos debido a la tendencia a que sean lo ms abiertos posibles. Se discutirn algoritmos, herramientas y condiciones que posibiliten que en una segunda etapa todos estos datos puedan ser mostrados, analizados y correlados por otro tipo de herramientas independientes, a ser posible incluso por otros de equipos de investigacin de otras ramas de la ciencia. Como colofn a este artculo, se presentar en el apndice una aplicacin que ha sido desarrollada para la extraccin de datos de los sistemas de control de versiones que son utilizados en muchos de los desarrollos de software libre.
Curso de Doctorado "Programas Libres" Departamento de Ingeniera Telemtica - Universidad Politcnica de Madrid
1. Introduccin
Desde hace cuatro dcadas, la ingeniera del software se ha venido consolidando como una rama importante dentro del campo de la informtica en busca de mtodos de desarrollo y tcnicas que permitan producir software de gran calidad con unos recursos limitados. Segn la definicin del IEEE, la ingeniera del software es "un enfoque sistemtico y cuantificable al desarrollo, operacin (funcionamiento) y mantenimiento del software: es decir, la aplicacin de la ingeniera del software". [IEEE 1993] A pesar de que la ingeniera del software ha conseguido indudablemente notables xitos, tambin es cierto que ha sucumbido a lo que se ha venido a llamar la "crisis del software". A da de hoy todava sigue sin ser posible cuantificar con exactitud los plazos, costes, recursos humanos y tcnicas que lleven a un desarrollo exitoso del software, tal y como otras ramas de la ingeniera en otros campos s han sido capaces de hacer. Es ms, incluso en los ltimos aos, parece ser que la tendencia es volver a retomar viejos caminos bajo nuevas frmulas. Ejemplo de ello es la incipiente expansin de las tcnicas de programacin evolutiva (o extrema), que se basan en gran parte en principios y tcnicas ya conocidos y usados en la dcada de los 70. Argumentar que la ingeniera del software se encuentra estancada es una consideracin que, por lo tanto, podemos tomar como muy vlida.
puede ser muy vlido en la actualidad, aunque no cabe duda de que es muy probable que necesite ser adaptado e incluso mejorado. De la evolucin histrica se puede sacar mucha e interesante informacin. Para muchas decisiones es de gran importancia sabear los lenguajes de programacin en alza, la evolucin en cuanto a colaboradores de los proyectos (o, pongamos un ejemplo, de proyectos que se dediquen a crear aplicaciones p2p), etc. Mediante un anlisis temporal continuo estaremos en disposicin de tener un termmetro permanente de lo que est ocurriendo en el mundo del software (libre). Por otro lado, el anlisis de software libre no plantea problemas de granularidad. La ingeniera del software se ha basado con frecuencia en el anlisis de unos pocos proyectos de software debido en gran parte a la facilidad de acumular experiencias en entornos corporativos propios. COCOMO, un modelo de clculo de costes y tiempos para proyectos software, es un claro ejemplo de esto, ya que fue creado en un departamento de la NASA a raz de la experiencia en poco ms de un centenar de proyectos. Tomando como analoga las ciencias econmicas, podramos decir que estamos hablando de un microanlisis. Por otra parte deberamos tener, por tanto, el macroanlisis, que tratara de cuantificar y estudiar la totalidad del software existente. Mientras el macroanlisis ha sido histricamente ignorado por la ingeniera del software tradicional (bsicamente por los impedimentos descritos con anterioridad), el software libre da la posiblidad de que se pueda ver la evolucin a gran escala de muchos parmetros que faciliten informacin relevante a la hora de tomar decisiones en entornos empresariales y proyectos de software libre. Gracias a la ingeniera del software libre ser posible, por consiguiente, medir un proyecto dentro de entornos cerrados (microanlisis) y globales (macroanlisis), lo que puede ser de gran ayuda para medir la salud del mismo. Por ejemplo, se podra analizar Evolution dentro de GNOME y dentro del resto de software libre en general, obteniendo informacin desde dos puntos de vista que, a buen seguro, enriquecern a los que tengan que tomar decisiones o quieran cuantificar ciertos parmetros.
desarrollo que desemboquen en software con calidad ISO 9000, son interesantes pero van ms all de lo que este artculo pretende abarcar. An as, el autor est seguro de que en un futuro sern parte indispensable dentro de la ingeniera del software libre. La ingeniera del software libre tambin pretende acabar con muchas afirmaciones pseudo-cientficas, casi bordeando la fantasa, de muchos ensayos sobre software libre. A la vez se busca poner fin a muchas teoras especulativas y prejuicios fundamentados en apreciaciones propias y/u opiniones personales difcilmente contrastables y, generalmente, con escasa finalidad prctica. Estamos ante la posibilidad de analizar el pasado y el presente para poder predecir el futuro con mayor precisin. Las discusiones se deben basar en datos objetivos y contrastables y no en elucubraciones o percepciones parciales de la realidad. Si retomamos el smil de la economa, lo que se est haciendo en demasiadas ocasiones es hablar de la economa de un pas sin ni siquiera mirar los datos macroeconmicos. Esto, por lo que cualquier economista se llevara las manos a la cabeza, es bastante comn en la actualidad en las previsiones sobre las tendencias del software en general y del software libre en particular. La ingeniera del software libre cuenta como objetivo a corto plazo poder realizar un anlisis completo al desarrollo de software libre que permita indagar profundamente en los procesos que estn involucrados, as como en las consecuencias que ciertas acciones tienen sobre el conjunto del desarrollo. Por otra parte, se pretende tener en un espacio de tiempo corto una adaptacin de modelos de previsin de costes como lo es COCOMO en el software propietario. En estos primeros pasos tambin se quiere llamar la atencin de otros grupos de investigacin para que se den cuenta de la importancia que puede llegar a tener y ayuden en el avance de la misma. Asimismo, muchos investigadores de los campos de la economa, sociologa o psicologa seguro que pueden estar interesados en estudiar esta forma tan vanguardista de desarrollo software en la que no estn del todo claras las relaciones sociales y econmicas que se establecen. Aunque hablar de objetivos a largo plazo en este momento puede parecer premeditado, me atrevo a decir que, en mi opinin, la ingeniera del software libre tiene tanto que ofrecer que puede resultar una rama clave para sacar de la crisis a toda la ingeniera del software tradicional. Utilizando smiles histricos, la situacin que se vive en la actualidad en la generacin de software libre concuerda con la que describi de la economa Adam Smith hace casi tres siglos. Smith constat que existan unos parmetros econmicos claros (oferta y demanda), unas formas de interaccionar (transacciones) y consecuencias econmicas palpables. Sin embargo, no entenda el modelo general que haca que todo tuviera sentido y funcionara conjuntamente. Lo que haca que oferta y demanda cuadrasen era para l literalmente una "mano negra", que ms tarde se dio a llamar mercado. Hoy en da todos los ciudadanos, an sin comprenderlo completamente, tenemos ms o menos una idea intuitiva de lo que es un mercado. Gracias a la definicin de mercado y a la investigacin de los elementos que lo componen, las ciencias econmicas han dado un paso de gigante que junto con la revolucin industrial ha llevado a un bienestar en los pases industrializados nunca imaginado.
En cierto sentido, esta situacin se vive hoy en da en el software libre, donde nos encontramos con que existe una especie de "mano negra" que hace que mgicamente se genere software libre. Sin embargo, es necesario llegar a conocer con mayor profundidad las complejas interacciones para poder comprender lo que est sucendiendo y llegar a predecir el futuro. Tambin debe servir como punto de partida de acumulacin de experiencia, ya que la ingeniera en realidad no es otra cosa que un conjunto de experiencias exitosas debidamente empaquetadas para poder ser reproducidas una y otra vez.
4.1.1. CODD
CODD es una herramienta diseada por Vipul Ved Prakash y Rishab Aiyer Ghosh que analiza el cdigo fuente de los paquetes de software libre y asigna cuotas de autora (en bytes) a los que han participado en el desarrollo. Tambin ha sido diseada e implementada para extraer y resolver dependencias entre paquetes como se ver a continuacin. CODD consta de una serie de procesos que han de ejecutarse de manera consecutiva y que guardan sus resultados en ficheros denominados codds (en minsculas). Para cada paquete de software libre se generar un codd, que contendr informacin sobre el mismo, ya sea extraida del propio paquete o de la correlacin con codds de otros paquetes.
Al final del proceso, cada codd debera contener la siguiente informacin: nombre del paquete, generalmente ms versin (p.ej. evolution-0.13) crditos de autora (y bytes de contribucin) archivos de cdigo archivos de documentacin interfaces cdigo compartido implementaciones externas o no resueltas implementaciones resueltas metainformacin Es importante ver que los codds se crean en la primera iteracin con informacin que extraen directamente de los paquetes. Como todos los resultados de los procesos intermedios se guardan en el mismo codd, no podremos saber a simple vista en qu paso dentro del algoritmo de CODD nos encontramos. La nica forma de saber esto es por inspeccin del contenido del codd. El proceso que sigue CODD para obtener estos datos es la que se muestra en la siguiente figura:
Extraccin de ficheros: La subrutina init toma el paquete (o paquetes) que se le ha pasado por la lnea de instrucciones, lo descomprime y explota si es necesario, e intenta identificar recursivamente el tipo de ficheros que contiene el paquete. Seleccin de ficheros: Se toman los archivos de cdigo, de documentacin, interfaces e implementaciones no resueltas junto con su tamao en bytes, su suma MD5 y su ruta relativa dentro del paquete. Esto se hace comparando las extensiones de los archivos del paquete. CODD contiene una serie de arrays en los que estn almacenadas las extensiones que pueden
10
tener los archivos de cdigo (p.ej. ".c" para C o ".pl" para Perl), de documentacin, etc. CODD almacena como interfaces aqullos archivos ".h" que tienen un archivo ".c" en el paquete (el algoritmo que se usa aqu depende parcialmente del lenguaje de programacin que se est analizando). Las llamadas a interfaces en archivos de cdigo (p.ej. ".c" para C) que no tengan su correspondiente interfaz en el paquete (p.ej. ".h" para C) pasarn a englobar la categora de implementaciones no resueltas, que en futuros pasos dar pie a la resolucin de dependencias. Base de datos de dependencias: En el tercer paso se crean dos bases de datos para encontrar cdigo compartido y dependencias. En la primera, de nombre codefile_signatures, se almacenan todas las sumas MD5 de los ficheros de cdigo. Para ello, CODD se recorre todos los codds, mira en las entradas correspondientes a los ficheros de cdigo y aade un par (suma MD5 y nombre de fichero, paquete). Del mismo modo insertar pares para los interfaces en la base de datos de nombre interfaces. En este caso, los pares son del tipo (nombre de fichero, paquete). Cdigo compartido: En el siguiente paso, CODD recorre otra vez todo los codds y mira si los archivos de cdigo aparecen ms de una vez en la base de datos (en realidad, si coinciden su nombre y su suma MD5). Si esto ocurre, el archivo se encuentra como mnimo en dos paquetes, por lo que se aadir en la seccin del codd dedicada al cdigo compartido (shared) la siguiente informacin por cada paquete que tambin contenga el fichero: (fichero de cdigo, ruta, MD5, tamao) => nombre del paquete. Resolucin de dependencias: CODD realizar un proceso parecido al punto anterior para la resolucin de dependencias. Buscar las implementaciones no resueltas en los codds y comparar sus sumas MD5 con las que hay en la base de datos de interfaces. Si hay coincidencia, el interfaz se borrar de la seccin de interfaces no resueltas (unresolved interfaces) a la de interfaces resueltas (resolved). Adems, se proporcionar una lista con todos los paquetes en los que est implementada. Bsqueda de autores: Es entonces cuando CODD realiza la tarea que ha hecho que sea conocido: la bsqueda de autora (ownergrep). Para ello, recorre todos los ficheros de cdigo y documentacin cuya ruta est almacenada en cada codd y extrae, siguiendo ciertos algoritmos de comparacin de patrones, a los autores. La informacin sobre los autores se almacenan en la seccin de crditos (credits) del codd. Resolucin de cdigo compartido: En la seccin del cdigo compartido (shared) del codd tenemos todava ficheros y una lista de paquetes que tambin lo tienen. Como este fichero slo puede ser asignado a un paquete, lo que hace CODD es buscar por su autor (ownergrep) en el propio fichero y asignarlo al paquete del cual el autor es el autor principal. Los ltimos bloques de la figura muestran que los codds debern ser entonces transformados a un formato intermedio e independiente en XML a partir del cual se pueden realizar ya tcnicas de anlisis, correlacin o clustering como veremos ms adelante en este artculo. Como se puede ver de la figura, existe una herramienta de transformacin de codds a SQL, que realiza tambin tareas de normalizacin de las tablas. Esta herramienta ha sido concebida para crear CODDWeb, una interfaz web para poder visualizar los resultados de CODD a travs del navegador.
11
CODD es una herramienta muy potente, aunque tiene algunos puntos flacos. El ms importante es que todava no tiene ninguna forma de agrupar las diferentes formas en las que aparece un autor. Por ejemplo, Miguel de Icaza aparece varias veces con diferentes nombres o direcciones de correo. Aglutinar todas sus referencias en una nica sera lo ms correcto. En este sentido, se est creando una base de datos con relaciones 1 a N por autor. Por otra parte, el proceso de ejecucin de CODD no es lo ms simple que podra ser. Carece de un buen sistema de configuracin, hay que ejecutarlo como superusuario y la secuencia de procesos que hay que ejecutar no est agrupada bajo un nico guin de shell, sino que hay que correrla de manera manual.
4.1.2. SLOCcount
SLOCcount, una herramienta creada por David A. Wheeler, cuenta el nmero de lneas fsicas ofreciendo como resultado bsicamente el lenguaje de programacin utilizado. Adems, utiliza el modelo COCOMO clsico para, a partir de una serie parmetros y algoritmos preconfigurados, obtener el coste, los plazos y los recursos humanos necesarios para haber realizado una (nica) entrega del software. El algoritmo que utiliza SLOCcount consta de una serie de fases: en un primer paso SLOCCount busca ficheros de cdigo por su extensin dentro del rbol de archivos del proyecto. Cuando encuentra un archivo con cdigo, utiliza una serie de mtricas para determinar si de verdad lo que contiene el archivo es cdigo y est en el lenguaje de programacin que se determina de su extensin. En caso de ser as, contar las lneas de cdigo que no sean comentarios ni espacios en blanco (lneas fsicas) e incrementar el contador para dicho lenguaje en su nmero. Los datos que devuelve SLOCcount son los siguientes: Nombre del proyecto Nmero de lneas del proyecto Nmero de lneas en un lenguaje de programacin Tiempo estimado de esfuerzo de desarrollo (COCOMO bsico) Estimacin de tiempo de desarrollo (COCOMO bsico) Nmero estimado de desarrolladores (COCOMO bsico) Estimacin del coste de desarrollo (COCOMO bsico) Siendo estrictos, las estimaciones realizadas a partir de COCOMO bsico no deberan corresponder a la fase de extraccin de datos, sino a una posterior de anlisis. En la actualidad, SLOCCount devuelve los resultados en texto plano, aunque existe la posiblidad de que los devuelva entre tabuladores para que puedan ser introducidos en una base de datos. Existe una herramienta, de nombre sloc2html, que permite transformar los resultados a vistosas pginas HTML.
12
4.2.1. MailListStats
MailListStats toma los archivos de texto que generan GNU Mailman, majordomo u otros gestores de listas de correo-e. Este tipo de archivos suelen estar accesibles mediante HTTP. MailListStats se descarga el archivo con los mensajes durante un cierto espacio temporal (generalmente un mes) de la lista y toma de las cabeceras de los mensajes tanto el autor como la fecha de envo. Datos que se pueden extraer de las estadsticas de las listas de correo-e: Nombre (y direccin) del autor Fecha Nombre de la lista (de forma que podamos adjudicar las estadsticas a un proyecto o metaproyecto) En un futuro se pretende aadir la capacidad de seguir el hilo de la discusin o incluso alguna forma de cuantificar la longitud del mensaje, aunque para ello habr que buscar mtodos para eliminar las lneas que corresponden a un mensaje original al que se est respondiendo o a las firmas PGP.
13
En las pruebas que he hecho por ahora, la toma de datos no ha sido posible. Muchos canales no quieren tener un bot que les "espe", por lo que hay que ir con sumo cuidado y pedir en primer lugar permiso.
14
Datos que podemos obtener va cvstat2: fecha del commit (accin por la cual un desarrollador sincroniza su versin local con la existente en el repositorio) fichero modificado desarrollador nmero de versin (CVS) nmero de lneas aadidas nmero de lneas borradas En el apndice de este trabajo se detalla el proceso de implementacin de esta aplicacin, ya que ha sido generada como parte del trabajo para la asignatura de doctorado "Programas Libres". Como se podr observar, se ha hecho hincapi en que todas las acciones manuales se hagan en el momento de instalacin y el resto del proceso sea totalmente automtico.
15
4.5.1. SFparser
SFparser recorre las pginas web de todos los proyectos que se hospedan en SourceForge y obtiene informacin sobre los desarrolladores que estn dados de alta, las ltimas publicaciones de todas las ramas del proyecto, as como los datos que lo describen y lo ordenan dentro de SourceForge (licencia, lenguaje de programacin, destinatarios, estado...). SFparser es un script en Perl muy sencillo que empieza por el proyecto con identificador nmero 1 y, en el caso de que exista dicho proyecto, se descarga las siguientes pginas HTML: la pgina principal, la de la listas de correo-e, la del CVS y la de la descarga de ficheros. La lista de parmetros que devuelve SFparser es la siguiente: Nombre del proyecto Pgina web Descripcin Categorizacin Tipo de proyecto Estado del desarrollo Lenguaje(s) de programacin Lenguaje natural Licencia(s) Audiencia Nmero de desarrolladores Nombres de usuario "Cargos" dentro del proyecto Existencia de CVS Existencia de listas de correo Nombre de las listas Paquetes (incluso de diferentes ramas) Versiones Fecha de publicacin Tamao Descargas Informacin sobre la existencia o no de CVS y listas de correo puede ser utilizada por cvstat2 y MailListStats para descargarse el repositorio en un caso y los archivos en el otro y proceder a su anlisis como se ha descrito con anterioridad.
16
Adems, con el mismo software y ligeras modificaciones, se podran extraer datos de sitios que utilizan SourceForge con ligeras modificaciones como son BerliOS y Savannah.
4.5.2. codd-find-latest
Codd-find-latest es una aplicacin que toma una lista de paquetes, se queda con las ltimas publicaciones y desecha las ms antiguas. El algoritmo que sigue es el siguiente: si existen paquete-1.2.3.tar.gz y paquete-1.3.4.tar.bz2, supondr que el segundo es ms reciente. Es una herramienta muy prctica en el caso de que es estn estudiando repositorios de cdigo que slo requieran las ltimas versiones de los paquetes. ste es, por ejemplo, el caso de CODD, ya que al comprobar el cdigo compartido entre varios aplicaciones, se confundira de manera notable si existieran dos versiones de la misma aplicacin.
17
Los resultados obtenidos pueden ser utilizados para, en conjuncin con otras fuentes, poder calcular costes y tiempos de desarrollo. Una de las primeras acciones que podran llevar a cabo es integrar estos resultados en la algoritmia de SLOCcount para ponderar convenientemente el modelo de COCOMO (o incluso realizar un nuevo modelo que sea ms conforme con los desarrollos de software libre). Datos laborales interesantes: Nombre Fechas en las que ha estado/estuvo empleado Tiempo parcial/completo Proyecto para el que estuvo empleado En GNOME, KDE, Apache o incluso Linux estamos hablando de comunidades en las que este tipo de datos se podra conseguir con una fiabilidad bastante aceptable.
4.4.2. Encuestas
Tambin existe la posibildad de referirse a encuestas a desarrolladores que se han hecho hasta la fecha. Por desgracia, las encuestas tienen la desventaja de que no pueden ser reproducidas. An as, los resultados de las encuestas pueden servir de punto de partida para analizar el software libre e interpretar los resultados que las diferentes fuentes y anlisis pueden dar. Cierto tipo de aspectos hacen necesaria la realizacin de encuestas. Es difcil cuantificar la motivacin, estado de nimo u opinin de los desarrolladores de software libre. Tambin es siempre muy interesante observar que cierto tipo de desarrolladores tienden a agruparse en cierto tipo de proyectos, mientras que otros lo hacen en otros.
18
19
20
Ghosh cre una serie de funciones para calcular el peso entre dos proyectos P y Q: weight(P,Q) = combifunction(commonality(P,Q), sharedcontrib(P,Q)) El peso entre dos proyectos P y Q es la funcin combinativa entre la comunalidad y la relacin de cdigo compartido de los proyectos P y Q. Por ahora, se ha adoptado la multiplicacin para la funcin combinativa, aunque si se encuentra una funcin que se adapte mejor a la realidad, se modificar: combifunction(a,b) = a * b Que la funcin combinativa sea la multiplicacin implica, a priori, que la comunalidad y la relacin de cdigo compartido tienen el mismo peso en el resultado. Esto no tiene por qu ser as en anlisis futuros.
21
La comunalidad se calcula de la siguiente forma: commonality(P,Q) = (numberOfAuthors(R) / numberOfAuthors(P)) * (numberOfAuthors(R)/numberOfAuthors(Q)) donde R es el conjunto de autores en comn en los proyectos P y Q. R = intersection(P,Q) Por tanto, la comunalidad es la multiplicacin de la relacin de desarrolladores comunes en los proyectos. Si P cuenta con 7 desarrolladores y Q con 5, y hay dos desarrolladores comunes entre P y Q, tendremos: commonality(P,Q) = 2/7 * 2/5 = 4/35 = 0.11 La comunalidad es siempre menor que 1 igual a 1 si todos los autores son comunes a los proyectos P y Q. En general, tiende a ser un nmero pequeo, siendo raro el caso en que supera 0.5. La relacin de cdigo compartido entre dos aplicaciones, por su parte, se calcula con las siguientes frmulas: sharedcontrib(P,Q) = contribsum(R,P) * contribsum(R,Q) donde la suma de contribuciones se calcula como: contribsum(R,P) = forall (r in R) {sum += contrib(P,r);} contrib(P,r) es la contribucin relativa del autor r al proyecto P. Recordemos que R es el conjunto de autores que P y Q tienen en comn. En palabras, la suma contributiva es el sumatorio de todas las aportaciones (en tanto por 1 con respecto al total del proyecto) de los autores comunes a P y Q. La suma contributiva de estos dos proyectos se multiplicarn para obtener la relacin de cdigo compartido. Por ejemplo, si los autores comunes han realizado la mitad del proyecto P y un tercio del proyecto Q, la relacin de cdigo compartido ser: 0.5 * 0.33 = 0.167. Como vemos, esta relacin tiene tambin una cota mxima de 1 que se da cuando todos los autores son comunes (ya que entonces habrn realizado el cdigo completo en los dos proyectos). Concluyendo, entre dos proyectos cualquiera existir siempre un peso entre 0 y 1 que tender a ser mayor cuanto mayor sea el nmero de desarrolladores y cdigo en comn. Codd-cluster permite dado un valor lmite del peso, seguir un grafo para crear un cluster alrededor de una aplicacin. La aplicacin seguir todas las ramas que encuentre cuyo peso sea mayor que el especificado y devolver los datos de los nombres y autores involucrados.
22
Como curiosidad, se puede llegar a crear un sistema similar al existente en una famosa web de cine que asegura que dados dos nombres de autores, puede relacionarlos directamente o a travs de otros actores con los que hayan trabajado conjuntamente en pelculas, habiendo seis saltos como mximo. En este caso, no sabemos si existe una cota superior o no, pero podemos demostrar que s existe una relacin ms o menos grande entre proyectos, lo que da una idea de que realmente existe una comunidad de software libre.
23
7. Conclusiones
Empezamos este artculo viendo los problemas que tiene la ingeniera del software tradicional, bsicamente por su falta de anlisis metdicos y sistemticos. Hemos visto que el software libre cuenta con cualidades innatas para introducir mtodos que permitan conocer ms a fondo todos los parmetros que influyen en la generacin del mismo. Esta formalizacin es muy prometedora, ya que el software libre es mucho ms difcil de cuantificar que la ingeniera del software tradicional. Por tanto, es probable que el conocimiento del desarrollo de software libre se pueda tambin dar solucin a muchos problemas de la ingeniera del software tradicional. Despus de una introduccin ms bien terica en la que se ha presentado una declaracin de intenciones de la ingeniera del software, hemos visto una propuesta de metodologa para recabar informacin de proyectos de software libre. De esta inmensa cantidad de informacin se pretende extraer experiencias con xito que puedan ser replicadas en otros desarrollos. Hemos visto que hay una serie de herramientas para la extraccin de datos de diversas fuentes, desde el propio cdigo fuente hasta rastreando pginas web de portales de desarrollo de software. Los datos se almacenarn en un formato intermedio e independiente tanto de la fuente como de las herramientas, para que en una segunda fase, se puedan analizar, correlar, procesar y visualizar de diversas maneras. Esto ltimo abre un campo de consecuencias difciles de predecir, pero sin lugar a dudas muy ilusionante y prometedor. La sensacin de que el software libre parece que est propiciando uno de esos extraos momentos donde una industria entera cambia de paradigma, se puede tambin extrapolar a la ingeniera del software libre. An nos encontramos en sus comienzos y hace falta un largo camino por andar. Esperamos poder seguir contndolo.
24
25
The Widi Survey - Encuesta realizada a ms de 5500 desarrolladores (2001), http://widi.berlios.de "Boston Consulting Group/OSDN Hacker Survey" - Encuesta a casi un millar de desarrolladores de Sourceforge (2001), http://www.osdn.com/bcg/ Gregorio Robles "Los desarrolladores de Software Libre", http://congreso.hispalinux.es/congreso2001/actividades/ponencias/robles/pdf/desarrolladores.pdf Robles, Weber & otros "WIDI - Who Is Doing It?", http://ig.cs.tu-berlin.de/s2001/ir2/ergebnisse/OSE-study.pdf CODD - Aplicacin rastreadora de autores y dependencias de cdigo e interfaces en cdigo fuente, http://codd.berlios.de CODDWeb - Interfaz web para acceder a los resultados de CODD, http://floss1.infonomics.nl/coddweb/ Curso de doctorado "Programas Libres" - Departamento de Ingeniera Telemtica UPM, http://curso-sobre.berlios.de Rishab Aiyer Ghosh "Clustering and Dependencies in Free/Open Source Software Development: Methodology and Preliminary Analysis", http://www.idei.asso.fr/Commun/Conferences/Internet/OSS2002/Papiers/Ghosh.PDF Rishab Aiyer Ghosh & Vipul Ved Prakash "The Orbiten Free Software Survey", http://www.firstmonday.dk/issues/issue5_7/ghosh Eric S. Raymond "The Cathedral and the Bazaar", http://www.tuxedo.org/~esr/writings/cathedral-bazaar/ Nikolai Bezroukov "A Second Look at the Cathedral and the Bazaar", http://www.firstmonday.dk/issues/issue4_12/bezroukov/ Rishab Aiyer Ghosh "Cooking pot markets: an economic model for the trade in free goods and services on the INternet", http://www.firstmonday.dk/issues/issue3_3/ghosh/ Josh Lerner & Jean Tirole "The Simple Economics of Open Source", http://www.idei.asso.fr/Commun/Articles/Tirole/simpleeconomics-July-24-2001.pdf Jess M. Gonzlez Barahona "Software libre, monopolios y otras yerbas", http://sinetgy.org/~jgb/articulos/soft-libre-monopolios/ Proyecto Gestin Libre de Hispalinux, http://gestion-libre.hispalinux.es sloc2html - Aplicacin que presenta los resultados de SLOCcount a travs de un interfaz web agradable, http://halfdans.net/index.py?p=sloc2html
26
Estadsticas grficas de GNOME con SLOCCount y sloc2html, http://gnome-stats.berlios.de/gnome-sloc.html Free Software Foundation Europe - Distribucin geogrfica de desarrolladores de software libre, http://www.fsfeurope.org/coposys/index.en.html Alison Luo "TPM (Trinity Participation Metric) for Open Source Developers", http://www.cse.ucsc.edu/~alison/projects/cmpe276/index.html Linux Study - Questionnaire on Linux kernel developers (141 desarrolladores), http://www.psychologie.uni-kiel.de/linux-study/ Proyecto Debian - Mapa con la distribucin geogrfica de los desarrolladores Debian, http://www.debian.org/devel/developers.loc Edward Betts "Debian Developer Centre of Mass", http://people.debian.org/~edward/average/
27