Métricas
Métricas
Métricas
Resumen
La disponibilidad de una creciente variedad de Software Libre y de Cdigo Abierto (F/OSS
por sus siglas en ingls) distribuidos bajo licencias que permiten explcitamente su
modificacin y el desarrollo de aplicaciones derivadas, abre nuevas posibilidades para el
desarrollo con reutilizacin.
Las caractersticas y la informacin disponible en relacin a cada producto de F/OSS es
muy heterognea; no obstante, todas tienen en comn la libre disponibilidad del cdigo
fuente.
Esta tesis presenta nuevas formas de abordar el problema de evaluar y seleccionar
productos de F/OSS, centrndose en dos aspectos:
La utilizacin de mtricas que pueden obtenerse del cdigo fuente para la
evaluacin de F/OSS, de modo de caracterizar el diseo general de los productos
de software que se consideren para la reutilizacin.
La elaboracin de un marco de trabajo para la seleccin y evaluacin de software
que sirva de base para una sistematizacin paulatina de la incorporacin de la
reutilizacin de F/OSS en diferentes procesos de desarrollo de software.
A partir del estudio de una muestra de 560 versiones diferentes de aplicaciones de
F/OSS, y en base al estudio de distribuciones de frecuencia, se proponen umbrales para
mtricas que reflejan aspectos generales del diseo de una aplicacin. Especficamente,
se consideran el promedio de la cantidad de mtodos por clase y la proporcin de
referencias a mtodos de otras clases respecto del total de mtodos definidos en la
aplicacin. Estas dos medidas se refieren a la aplicacin en su conjunto y no a clases o
mdulos particulares, lo que supone una utilidad diferente de estos valores respecto del
papel que cumplen en otros aspectos de la gestin de proyectos de software.
En relacin al segundo aspecto, se presenta un marco de trabajo en tres etapas, a saber,
la deteccin de oportunidades de reutilizacin, la bsqueda de recursos candidatos y la
seleccin y evaluacin. Este marco es de carcter general, pudiendo adaptarse a
diferentes metodologas y contextos de desarrollo.
La elaboracin del marco parte de la realizacin de una experiencia de desarrollo con
reutilizacin de F/OSS, la revisin de la literatura relacionada con las temticas de
seleccin de elementos reutilizables y la evaluacin de stos para su incorporacin en
nuevos desarrollos.
2
Resumen
3
Resumen
ndice de contenido
Resumen.......................................................................................................................................2
Captulo 1.- Introduccin................................................................................................................7
1.1 Conceptos Previos.......................................................................................................9
1.1.1 Tipos de Reutilizacin..........................................................................................9
1.1.1.1 Otras categoras..........................................................................................10
1.1.2 Componentes de Software.................................................................................10
1.1.3 Evaluacin y Certificacin de componentes de Software..................................11
1.1.4 Reusabilidad.......................................................................................................12
1.1.5 El software libre y de cdigo abierto..................................................................12
1.1.5.1 Dificultades para la reutilizacin de F/OSS................................................13
1.1.6 Investigacin y F/OSS........................................................................................14
1.2 Alcance de este trabajo.............................................................................................15
Captulo 2.- La evaluacin de la viabilidad de modificar el software................................................18
2.1 Mantenimiento y mantenibilidad................................................................................19
2.2 Mantenimiento de software como parte del ciclo de vida.........................................20
2.3 Medicin de la mantenibilidad y la evolutividad........................................................21
2.3.1 El ndice de mantenibilidad................................................................................22
2.3.2 Limitaciones en la medicin de la mantenibilidad..............................................23
2.4 Modificabilidad...........................................................................................................24
2.5 Umbrales....................................................................................................................25
2.5.1 La bsqueda de umbrales..................................................................................25
2.5.2 Umbrales propuestos segn distribuciones de frecuencia de las mtricas.......25
2.5.3 Estudios de umbrales en base a correlaciones estadsticas.............................26
Captulo 3: Metodologa...............................................................................................................29
3.1 La investigacin emprica en Ingeniera de Software y F/OSS.................................30
3.2 Etapas de la investigacin emprica..........................................................................31
3.3 Anlisis de las Fuentes de datos...............................................................................31
3.4 Mtricas Computadas................................................................................................32
3.5 Herramientas empleadas en la recoleccin de datos...............................................34
Capitulo 4: Investigacin Emprica.................................................................................................36
4.1 Estudio de caso.........................................................................................................36
4.2 Estudio exploratorio...................................................................................................39
4.2.1 Valores extrados................................................................................................41
4.2.2 Anlisis de los datos...........................................................................................41
4.3 Determinacin de umbrales.......................................................................................44
4.3.1 Caractersticas de la muestra analizada............................................................44
4.3.2 Anlisis de los datos...........................................................................................45
4.3.2 Comparacin con umbrales propuestos en otros trabajos................................49
4.3.3 Observaciones sobre los resultados..................................................................50
Captulo 5: Marco para la Reutilizacin de F/OSS............................................................................51
5.1 Consideraciones Previas...........................................................................................51
4
Resumen
5
Resumen
Anexo III...................................................................................................................................106
Lista de Software Analizado..........................................................................................107
Anexo IV....................................................................................................................................109
Trminos, expresiones y siglas mencionadas en esta tesis.............................................................110
ndices de Tablas e ilustraciones..................................................................................................111
Referencias................................................................................................................................114
6
Captulo 1.- Introduccin
7
Captulo 1.- Introduccin
8
Captulo 1.- Introduccin
Taxonoma de Reutilizacin
Substancia Alcance Modo Tcnica Propsito Producto
Ideas, conceptos Vertical Planificado, Composicional Caja Negra, tal Cdigo fuente
Artefactos, Horizontal sistemtico Generativo cual es Diseo
componentes Ad-hoc, Caja Blanca, Especificacin
Procedimientos, oportunista modificado Objetos
habilidades Textos
Arquitecturas
9
Captulo 1.- Introduccin
10
Captulo 1.- Introduccin
11
Captulo 1.- Introduccin
1.1.4 Reusabilidad
En el mbito de la reutilizacin de software, los recursos a ser reutilizados pueden ser
ms fciles o ms difciles de integrar en nuevos desarrollos. Esta caracterstica se
denomina reusabilidad, y comprende diferentes aspectos[18]. El F/OSS se crea con la
explcita intencin de que puedan realizarse desarrollos derivados y por ende reutilizarse;
sin embargo, como se ver ms adelante, tal reutilizacin no es sencilla.
Existen diferentes enfoques acerca de cmo evaluar este atributo, aunque no hay un
consenso generalizado[18] [31].
12
Captulo 1.- Introduccin
13
Captulo 1.- Introduccin
14
Captulo 1.- Introduccin
atractivas para los investigadores. Dos de ellas resultan particularmente relevantes para
nuestro trabajo: la transparencia, en virtud de la cual se dispone de una enorme cantidad
de datos sobre desarrollos reales; y la proximidad, lo que se refiere a las similitudes entre
el proceso de desarrollo del F/OSS y la produccin de conocimientos en el mbito de las
ciencias.
En los ltimos aos se observa un incremento en el nmero de estudios que aprovechan
la masa de datos disponibles para emplear tcnicas estadsticas para desentraar
diferentes aspectos del desarrollo[45]. En particular, se han presentado numerosas
publicaciones relacionadas con la evolucin del software[46], [47].
15
Captulo 1.- Introduccin
16
Captulo 1.- Introduccin
17
Captulo 2.- La evaluacin de la viabilidad de modificar el software
18
Captulo 2.- La evaluacin de la viabilidad de modificar el software
desde las perspectivas del mantenimiento y la evolucin, por lo que constituyen reas
afines a nuestro trabajo.
En esta seccin revisaremos conceptos y aproximaciones vinculadas a la evaluacin de la
modificabilidad del software, sea desde las perspectivas del mantenimiento, la evolucin
del software, y la adecuacin para la reutilizacin.
En cada caso, repasaremos diferentes enfoques para la medicin de estas
caractersticas. Una revisin ms completa, de algunos aos atrs, puede verse en
Mantenibilidad y Evolutividad en el Software Libre y de Cdigo Abierto[11], donde se
presenta una recopilacin bibliogrfica.
No existe un consenso amplio en cuanto a la relacin entre las diferentes mtricas y los
atributos que se pretende evaluar; por eso, en la ltima parte del captulo presentamos
una revisin bibliogrfica sobre la determinacin de umbrales de mtricas, indicadores
que pueden servir de referencia o advertencia sobre algunas caractersticas del software
potencialmente riesgosos.
19
Captulo 2.- La evaluacin de la viabilidad de modificar el software
Realizar mejoras
Mejorar el diseo
20
Captulo 2.- La evaluacin de la viabilidad de modificar el software
El mantenimiento puede verse desde el punto de vista externo[56] [11], en relacin con el
proceso de correccin de errores, adaptacin y mejora; los atributos internos, entre los
que se encuentran los atributos estructurales y las caractersticas de diseo, inciden en la
facilidad o dificultad de los procesos. Sin embargo, es difcil de establecer la relacin entre
las caractersticas internas y la facilidad de modificacin.
21
Captulo 2.- La evaluacin de la viabilidad de modificar el software
22
Captulo 2.- La evaluacin de la viabilidad de modificar el software
23
Captulo 2.- La evaluacin de la viabilidad de modificar el software
Este sencillo trabajo advierte sobre las limitaciones de las mtricas como indicadores de
mantenibilidad, lo que debe ponderarse en la gestin de los proyectos y en la seleccin de
software.
2.4 Modificabilidad
La evolucin, el mantenimiento y la adaptacin de un software para su reutilizacin
implican la modificacin del mismo. A pesar de la importancia que tendra disponer de
indicadores acerca de este aspecto, se han publicado pocos estudios que intentan medir
la posibilidad de modificacin de un software en funcin de mtricas de diseo o de
cdigo fuente; puede verse que la bsqueda de publicaciones que incluyan las palabras
software y changeability junto a measurement, metrics o assessment en la
biblioteca digital de la ACM entre los aos 2000 y 2015 arroja slo 7 resultados (al 3 de
junio de 2015).
En el ao 2001 Kabaili y otros [67] buscaron posibles correlaciones entre mtricas
vinculadas a la cohesin de mtodos y clases (LCC y LCOM) con la modificabilidad del
software resultante. Para ello indagaron sobre el efecto de esas mtricas sobre el impacto
de cambio, entendido como el nmero de clases que se debieron modificar como
consecuencia de realizar el cambio en una de ellas. Los software analizados fueron tres:
xForm, ET++ (distribuidos bajo licencias libres) y una aplicacin privativa provista por la
entidad que financiaba el proyecto.
Estos autores concluyeron que no haba elementos que permitieran correlacionar las
mtricas de cohesin mencionadas con la modificabilidad. Adems, observaron mediante
anlisis manual que algunas clases cuyos valores de estas mtricas era bajo,
presentaban alto grado de cohesin.
Ayalew y Mguni [68] analizaron la relacin de la modificabilidad con las mtricas CBO
(acoplamiento entre objetos), WMC (mtodos ponderados por clase), Ca (Acoplamiento
aferente) y Ce (Acoplamiento eferente). Para ello observaron en una aplicacin libre
-OpenBravo- los valores computados de estas mtricas para cada clase y las tareas de
mantenimiento que se realizaron en ellas.
Para el caso estudiado, los autores observaron una importante correlacin entre todas
esas mtricas y la cantidad de tareas de mantenimiento, de acuerdo al cmputo del
coeficiente de Pearson. De todas las mtricas bajo consideracin, CBO muestra la
correlacin ms fuerte.
Este resumen pone de relieve que no se han alcanzado conclusiones determinantes
sobre este tema.
24
Captulo 2.- La evaluacin de la viabilidad de modificar el software
2.5 Umbrales
A pesar de las limitaciones sealadas por Sjberg[65] y la insuficiente base emprica, es
posible que los valores que se registran en distintas mtricas sirvan como referencia para
tener en cuenta respecto de las posibilidades de modificacin del software.
Un enfoque que busca sistematizar la informacin sugerida por las mtricas es la de
establecer umbrales: valores lmites que cuando se registran cifras por fuera de ellos
llamen la atencin sobre posibles debilidades en el diseo o en el cdigo.
En general, los trabajos empricos realizados para establecer umbrales apuntan a
determinar valores tiles para la evaluacin de clases particulares; en los captulos
posteriores adoptamos una perspectiva diferente, buscando referencias sobre los valores
promedio de determinadas mtricas en toda una aplicacin o componente, de modo de
advertir acerca de posibles debilidades de diseo en una pieza de software en su
conjunto.
25
Captulo 2.- La evaluacin de la viabilidad de modificar el software
de Chidamber y Kemerer[64] sobre la calidad del software. Los valores de los umbrales se
basan en el anlisis de los histogramas, aunque no se analiza la posible relacin entre
esos valores y la probabilidad de que mdulos presenten errores o deban modificarse.
Erni y Lewerentz[70] analizaron la distribucin de mtricas orientadas a objetos
postulando como potenciales umbrales a la media la desviacin estndar. Los autores
plantean la adopcin de uno de esos valores en funcin de los problemas que planteara
en cada caso cifras demasiado altas o demasiado bajas. Por ejemplo, si para una mtrica
se considera que un nmero alto es perjudicial, se adopta + como umbral (siendo la
media y la desviacin estndar).
Chidamber y otros[71] consideraron las distribuciones empricas de las mtricas
sugiriendo que el tope para definir un valor como alto sera el 80 percentil (es decir, el
80% de las muestras alcanzaran valores por debajo del umbral sealado).
Varios autores apelaron a la regresin logstica para estudiar la relacin entre valores de
las mtricas y la propensin a fallos, evaluando la efectividad del establecimiento de
umbrales.
Lanza y Marinescu[72] tambin propusieron umbrales para mtricas comunes partiendo
de la distribucin de los valores en un grupo de 45 aplicaciones escritas en Java.
Clasificaron los valores de las medidas segn sus frecuencias en bajo, medio, alto y muy
alto.
Ferreira y otros[73] apelaron al anlisis de distribuciones para indagar sobre posibles
umbrales para las mtricas COF (Factor de Acoplamiento), cantidad de mtodos pblicos,
cantidad de campos (atributos) pblicos, LCOM (Falta de Cohesin en los mtodos) y DIT
(Profundidad del rbol de herencia), estos dos ltimos propuestos por Chidamber y
Kemerer. Analizaron 40 aplicaciones escritas en Java, obtenidas de SourceForge. Las
mtricas fueron computadas con la herramienta Connecta, y las distribuciones de
frecuencia se ajustaron a distribuciones tericas mediante la herramienta EasyFit. Los
autores dividieron la muestra segn diferentes dominios, planteando diferentes umbrales
para cada uno de ellos.
26
Captulo 2.- La evaluacin de la viabilidad de modificar el software
27
Captulo 2.- La evaluacin de la viabilidad de modificar el software
El autor tambin compara los umbrales calculados con los propuestos por Rosenberg[69],
concluyendo que los valores propuestos por esta autora son menos seguros para estimar
clases defectuosas.
Kaur[77] y otros obtuvieron las mtricas CK y otras indicativas de posibles bad smells
sobre dos versiones del software JFreeChart. Realizaron un anlisis basado en regresin
logstica, estimando posibles umbrales en base al Nivel Aceptable de Riesgo (Value for
Acceptable Risk Level, VAR) de acuerdo a la metodologa presentada por Bender[79] .
De este resumen se observa que los objetivos buscados en los trabajos mencionados se
relacionan con la determinacin de mtricas que permitan caracterizar piezas particulares
del software (por ejemplo, clases y mtodos especficos) y no el diseo de la aplicacin en
su conjunto.
28
'()
)*!+
85!/
" 6 . "8 "
/
)8
! " 6 % 8
".
6./.
9/ 6
% 3 / " . = 0 4
"/ "/
"#
3
5 % $128 6 %
!"
<3%
5$12
*)
Captulo 3: Metodologa
30
Captulo 3: Metodologa
Caracterstica Detalle
Reflejar experiencia real No debe tratarse de fenmenos construidos artificialmente
Dar cobertura adecuada Tanto a los fenmenos que ocurren naturalmente como a
perspectivas alternativas y marcos analticos
Examinar niveles representativos Atender los rangos completos de las dimensiones y
de variabilidad fenmenos clave
Demostrar significatividad Seleccionar las muestras y los tamaos de las muestras a
estadstica los efectos de alcanzar mayor generalidad en los resultados
obtenidos
Proveer resultados comparables Posibilitar la comparacin de los resultados obtenidos entre
entre proyectos distintos proyectos, diferentes comunidades o dominios de
aplicacin
Proveer resultados que pueden Posibilitar la replicabilidad de las experiencias, de modo de
ser reconstruidos, probados, que otros investigadores puedan verificar, refutar o
evaluados, extendidos y complementar las conclusiones que se alcancen
redistribuidos por otrxs
Estudio de caso
31
Captulo 3: Metodologa
SourceForge y GitHub se verifica que no slo se ofrece el acceso al cdigo fuente sino
tambin a una serie de otros artefactos relacionados con el proceso de desarrollo.
Estos repositorios brindan alojamiento (hosting) a los proyectos mediante sistemas que
brindan a los desarrolladores una serie de recursos para la gestin.
Uno de los elementos que podra brindar informacin relevante sobre la factibilidad de
modificacin del cdigo es el sistema de gestin de errores. SourceForge, por ejemplo,
posibilita a los desarrolladores administrar trackers donde se registran artefactos, que
pueden referirse tpicamente a solicitudes de mejora o errores detectados en el software;
se analiz la posibilidad de recopilar esta informacin para comprender los procesos de
mantenimiento del F/OSS en el trabajo Indicadores de la utilizacin del Bug Tracker en
proyectos de F/OSS [41].
En un anlisis de los 15 proyectos mejor rankeados al 29 de mayo de 2009 bajo la
categora Enterprise de SourceForge se verific que la utilizacin del Bug Tracker es
heterognea, registrando en algunos casos una alta proporcin de bugs reportados que
son cerrados sin que conste resolucin[41].
Este trabajo puso en evidencia que esa informacin es demasiado fragmentaria como
para ser pasible de tratamiento estadstico del proceso de resolucin de errores. No
obstante, brinda elementos para desestimar esa informacin en estudios de caso que
analicen mtricas de mantenimiento (ver Kan [85]) cuando se verifica una alta proporcin
como la descrita en el prrafo anterior.
Teniendo en cuenta las limitaciones mencionadas, se opt por el estudio del cdigo fuente
en proyectos de F/OSS maduros, que hubieran producido varias versiones a lo largo del
tiempo. Para ello se descarg el cdigo de cada una de las versiones publicadas,
registrando la fecha de emisin de cada una de ellas, a los efectos de analizar
posteriormente la secuencia de versiones.
32
Captulo 3: Metodologa
diseo en su conjunto; por ello, plantean el uso de proporciones que brinden un panorama
de carcter ms general.
Las mtricas computadas se detallan en la tabla siguiente.
Mtrica Descripcin
CYCLO Complejidad ciclomtica, segn la definicin de McCabe[63]
LOC Lneas de cdigo, incluyendo lneas en blanco y comentarios
NOM Cantidad de mtodos y otras operaciones definidas en toda la
aplicacin
NOC Cantidad de clases
NOP Cantidad de paquetes
CALL Cantidad de invocaciones a operaciones
FOUT Suma de las clases referenciadas por cada una de las clases
Cada una de estas mtricas arroja un valor global dependiente del tamao del software.
Es esperable que una aplicacin ms grande tenga un mayor nmero de clases, mayor
cantidad de lneas de cdigo, etc.
Lanza y Marinescu plantean la caracterizacin del diseo de un software en base a un
conjunto de proporciones entre estas mtricas. La siguiente tabla muestra las
proporciones en cuestin.
33
Captulo 3: Metodologa
34
Capitulo 4: Investigacin Emprica
35
Capitulo 4: Investigacin Emprica
A partir de los datos obtenidos, se observ cmo variaban las mtricas y las proporciones
descritas anteriormente, a lo largo de las distintas versiones publicadas; prestamos
atencin particularmente a la deteccin de posibles tendencias, buscando verificar
eventuales correlaciones entre las versiones, el tamao y las proporciones que
caracterizan a las cuatro estructuraciones mencionadas, de acuerdo con el modelo
adoptado.
Los datos obtenidos y reflejados en la ilustracin anterior, sugirieron la existencia de una
fuerte correlacin lineal entre el tamao (tanto en LOC como SLOC), el nmero de clases
y la cantidad de mtodos. En todos los casos, el coeficiente de Pearson arroja valores
entre 0,97 y 0,99. Esto refleja que, en promedio, las distintas versiones tienden a
mantener la cantidad de mtodos por clase.
La grfica muestra un pequeo salto en la estructuracin de alto nive en la versin 1.4 del
software, indicando un incremento de la cantidad de clases por paquete. A partir de la
versin siguiente, esta proporcin recupera la tendencia de crecimiento lineal que
presentaba anteriormente.
Fuera de esta versin puntual, la cantidad de clases por paquetes tienden a crecer de
manera lineal respecto del tamao medido en lneas de cdigo. Este valor atpico podra
36
Capitulo 4: Investigacin Emprica
37
Capitulo 4: Investigacin Emprica
38
Capitulo 4: Investigacin Emprica
39
Capitulo 4: Investigacin Emprica
1 Por ejemplo, se descart el proyecto Batik porque todas las versiones antiguas figuraban con la misma fecha de
publicacin.
40
Capitulo 4: Investigacin Emprica
41
Capitulo 4: Investigacin Emprica
42
Capitulo 4: Investigacin Emprica
Los atributos que se quiere reflejar con las mtricas dependen de muchos factores.
Esos factores pueden variar en su incidencia relativa[56] [104].
Las mtricas que intentan medir los factores no siempre estn debidamente
validadas o no cuentan con el consenso suficiente en la comunidad cientfica[65].
Cuando se intenta relacionar los valores medidos con atributos como la
mantenibilidad, evolutividad, etc., se apela al juicio de expertos a falta de medidas
que reflejen esos atributos.
Los juicios de expertos pueden ser contradictorios o al menos no ser
completamente coincidentes.
43
Capitulo 4: Investigacin Emprica
44
45
Capitulo 4: Investigacin Emprica
46
Capitulo 4: Investigacin Emprica
paso entre el octavo y noveno decil es el mayor, lo que sugiere adoptar como referencia
ese valor como umbral superior.
Las distribuciones de frecuencias de la Estructuracin de Clases y de la Intensidad de
Acoplamiento muestran claramente una zona modal a partir de las cuales las frecuencias
decrecen en ambos sentidos. Analizando la variacin de los deciles podemos proponer
umbrales superiores buscando cambios pronunciados entre los valores sucesivos de los
mismos, lo que implicara un descenso rpido de las frecuencias. La siguiente tabla
resume los deciles para las distribuciones de las mtricas consideradas.
Observemos tambin la distribucin de WMC, calculada a partir de otras mtricas segn
se seal ms arriba.
47
Capitulo 4: Investigacin Emprica
48
Capitulo 4: Investigacin Emprica
Como puede observarse, las cifras postuladas son muy dismiles. Cabe sealar, no
obstante, que el valor planteado por Lanza y Marinescu para WMC es similar al obtenido
en este trabajo sobre una muestra mucho mayor.
49
Captulo 5: Marco para la Reutilizacin de F/OSS
50
Captulo 5: Marco para la Reutilizacin de F/OSS
51
Captulo 5: Marco para la Reutilizacin de F/OSS
52
Captulo 5: Marco para la Reutilizacin de F/OSS
enfatizando los errores comunes en este tipo de proyectos. Este autor coincide en
destacar la importancia de que el desarrollo se relacione con las necesidades e intereses
de los iniciadores del proyecto y de la incorporacin de desarrolladores y usuarios.
53
Captulo 5: Marco para la Reutilizacin de F/OSS
ZUI. La ltima versin lanzada al momento del desarrollo era del 14 de abril de 2011. Otro
aspecto destacable es la cantidad de aplicaciones que utilizan este framework
(http://piccolo2d.org).
Para la tarea de almacenar en formato XML, analizamos JiBX y XOM. El primero es ms
flexible, pero requiere de un paso intermedio para incorporar el contenido XML a clases
java. Por lo tanto, se adopt la segunda.
Licencia: SiZoop se distribuye bajo una licencia dual (GPL y BSD) para brindar opciones
diferentes a potenciales desarrolladores, al mismo tiempo atender a las diferencias entre
las licencias de los componentes reutilizados (LGPL para XOM, BSD para Piccolo2D).
Documentacin: dado que el proyecto an es de tamao pequeo (menos de 2K lneas
de cdigo nuevas), la nica documentacin existente del desarrollo es el JavaDoc
generado durante la codificacin.
54
Captulo 5: Marco para la Reutilizacin de F/OSS
Para elaborar el marco tomamos en cuenta las estrategias y tcnicas para la reutilizacin,
presentadas en el captulo 2 y las observaciones de la experiencia descrita en la seccin
anterior.
En este apartado presentamos una revisin de los enfoques para la seleccin de activos
reutilizables, incluyendo propuestas de marcos de trabajo para la reutilizacin. A
continuacin; luego repasaremos diversas publicaciones sobre la reutilizacin en F/OSS y
revisaremos propuestas de evaluacin y seleccin especficamente para productos de de
este tipo.
55
Captulo 5: Marco para la Reutilizacin de F/OSS
56
Captulo 5: Marco para la Reutilizacin de F/OSS
57
Captulo 5: Marco para la Reutilizacin de F/OSS
58
Captulo 5: Marco para la Reutilizacin de F/OSS
5.2.3.1 QSOS
La empresa Atos Origin elabor el mtodo denominado Qualification and Selection of
Open Source software (QSOS).
QSOS ofrece en su sitio Web el detalle del mtodo en un documento[125] distribuido bajo
una licencia libre. Se han publicado las versiones 1.6 y 2.0. En el sitio tambin se ofrecen
herramientas para realizar evaluaciones.
Los objetivos declarados de la metodologa son:
Calificar una pieza de software integrando las especificidades del software libre y
de cdigo abierto
Comparar diferentes piezas de software dependiendo de las necesidades y
ponderando criterios para tomar una decisin final.
La decisin de distribuir los documentos y las herramientas bajo licencias libres se orienta
a permitir la reutilizacin de las evaluaciones, as como la calidad y objetividad de la
documentacin posibilitando la transparencia y la revisin por pares.
La metodologa consta de 4 pasos que se siguen de forma iterativa:
Definicin
Evaluacin
Calificacin
Seleccin
59
Captulo 5: Marco para la Reutilizacin de F/OSS
juzgar el software en funcin de los criterios establecidos en el paso anterior. Para ello se
emplean plantillas donde se completan las calificaciones respecto de cada criterio.
La tercera etapa se centra en ajustar las evaluaciones en funcin del contexto especfico
en el que se realiza, estableciendo pesos para las distintos factores en funcin de los
requerimientos y necesidades reales.
La ltima etapa consiste en la seleccin de la pieza o su comparacin con otras. Esta
seleccin puede ser estricta o laxa, segn se determine como imperativo el cumplimiento
de determinados valores para la aceptabilidad.
5.2.3.2 OpenBRR
Bussiness Readyness Rating otorga una clasificacin de 5 valores posibles que van de
inaceptable a excelente.
Utiliza 4 fases:
Filtro de evaluacin rpida
Traduccin de datos.
5.2.3.3 SQO-SSO
Samoladas elabor una metodologa orientada a la evaluacin automtica de F/OSS.
Este mtodo no toma en cuenta la funcionalidad; se centra -en cambio- en la calificacin
del cdigo fuente, al que considera el producto ms importante de un proyecto de
desarrollo de software.
SQO-SSO tambin toma en cuenta la comunidad que da soporte a un proyecto, pero slo
en cuanto a las caractersticas que pueden ser medidas de manera automatizada.
Samoladas considera que OpenBRR es altamente subjetivo y seala que la
especificacin de una aplicacin de referencia ha sido criticada en diversos trabajos.
60
Captulo 5: Marco para la Reutilizacin de F/OSS
Segunda Fase:
Definicin de las categoras de evaluacin
Este modelo parte de dos supuestos: que la salud y la calidad de un software libre
depende de la calidad del cdigo fuente y de la comunidad que los sostiene.
La definicin de las mtricas parte del modelo GQM (Goal Question Metrics) planteado
61
Captulo 5: Marco para la Reutilizacin de F/OSS
por Basili[130].
El modelo de SQO-OSS busca evaluar la mantenibilidad, la confiabilidad y la seguridad.
Basndose en el estndar ISO/IEC 9126, desglosa la mantenibilidad en:
Analizabilidad
Mutabilidad
Estabilidad
Capacidad de prueba
62
Captulo 5: Marco para la Reutilizacin de F/OSS
63
Captulo 5: Marco para la Reutilizacin de F/OSS
Mtrica 2: CBO+LCOM
Mtrica 3: WMC+RFC
64
Captulo 5: Marco para la Reutilizacin de F/OSS
reusabilidad:
Reusabilidad=aDIT + bNOCcCBO
El autor realiza un estudio emprico sobre 5 programas orientados a objetos que apoyan
la hiptesis del sentido de la incidencia de estas mtricas. Es llamativo que la cantidad de
clases se considere como un indicador positivo para la reusabilidad.
65
Captulo 5: Marco para la Reutilizacin de F/OSS
Para evaluar el indicador compuesto que proponen los autores, realizaron una encuesta a
travs de un cuestionario sobre 54 estudiantes de un curso de ingeniera de software; de
las respuestas elaboraron un indicador para validar las cifras obtenidas mediante el
polinomio postulado. Mediante un anlisis del alfa de Cronbach concluyen que los
resultados reflejan la reusabilidad.
Extensibilidad
Modularidad
Empaquetamiento
Portabilidad
66
Captulo 5: Marco para la Reutilizacin de F/OSS
Cumplimiento de estndares
Soporte
Prueba/Verificacin
Nivel Sumario
1 El software no es reutilizable
2 Reusabilidad inicial. La reutilizacin del software no es prctica
3 Reusabilidad bsica: el software puede ser reutilizado por personas calificadas con un
esfuerzo, riesgo y costo sustanciales.
4 La reutilizacin es posible. El software puede ser reutilizado por cualquier usado con
algn esfuerzo, costo y riesgo
5 La reutilizacin es prctica. El software puede ser reutilizado por la mayora de los
usuarios con costo y riesgo razonables.
6 El software es reutilizable. Puede ser reutilizado por la mayora de los usuarios aunque
puede haber costos y riesgos
7 El software es altamente reutilizable. La mayora de los usuarios puede reutilizarlo con
costos y riesgos mnimos.
8 Reusabilidad demostrada. El software fue efectivamente reutilizado por mltiples
usuarios
9 Reusabilidad probada. El software fue reutilizado efectivamente por usuarios de
diferentes clases y en un amplio rango de sistemas.
5.2.5 Consideraciones
Luego de repasar diferentes propuestas para seleccionar elementos reutilizables, evaluar
software libre y calificar la reusabilidad de un elemento, resulta claro que los diversos
enfoques presentan una serie de aspectos comunes a tener en cuenta al momento de
definir un marco general para la seleccin de F/OSS para la reutilizacin.
Los mtodos para la seleccin de componentes suelen enfocarse en
caractersticas generales de los componentes[116] o en el diseo de un
componente modelo respecto del cual se califica la mayor o menor similitud de los
componentes candidatos[27].
Una bsqueda basada en un listado exhaustivo de requerimientos obligatorios
devolver una cantidad muy baja de alternativas; por el contrario, una bsqueda
demasiado general puede ocasionar nuevos problemas que debern considerarse,
67
Captulo 5: Marco para la Reutilizacin de F/OSS
68
Captulo 5: Marco para la Reutilizacin de F/OSS
69
2( +,-**
A( +,-**
, )
#
) 6 / / 8
/ / "
/8./
6."/M,@?N
</%;6
"6)9/
8 6 6 ! 8
86;"6
!//"#M,@DN
F538!
8"":8!%
$12"6
del proceso.
La interaccin entre los procesos de elaboracin de los requerimientos y el de deteccin
de oportunidades estar condicionada por la metodologa de desarrollo; en cualquier
caso, es necesario establecer a priori el lmite de la retroalimentacin entre los procesos
de desarrollo de requerimientos y la deteccin de oportunidades.
La salida de esta etapa es una lista de funcionalidades
Requerimientos no negociables
De esta actividad surgir una lista de productos F/OSS candidatos a ser reutilizados para
cubrir las funcionalidades determinadas en el primer paso. En esta instancia, podr
volverse al proceso anterior para una nueva definicin de funcionalidades y
eventualmente para modificar los criterios y el propsito.
Esta tarea aparece en principio como menos estructurada y sistemtica; no obstante,
existen diversas iniciativas que podran mejorar este escenario. En el mbito industrial,
hay empresas que disponen de personal especfico para el conocimiento y mantenimiento
de repositorios propios de recursos F/OSS[124]; tambin se ha propuesto la conformacin
de un portal Web que permita la certificacin de este tipo de software[140]; un tercer
71
Captulo 5: Marco para la Reutilizacin de F/OSS
La seleccin del recurso surgir del proceso de evaluacin, que puede basarse en una de
las metodologas reseadas, teniendo en cuenta el esquema de prioridades sealados en
la tabla anterior.
Los aspectos ms relevantes a considerar desde la perspectiva de la reutilizacin sern la
cobertura de las funcionalidades requeridas, la madurez de un proyecto, la
documentacin disponible y las caractersticas del cdigo fuente; este conjunto de
caractersticas est disponible en mayor o menor medida en todos los productos F/OSS.
Otro elemento que se puede considerar aqu es la verificacin de la reutilizacin efectiva
del producto que se analiza; que un software sea efectivamente utilizado en otros
proyectos es un indicio claro de su viabilidad de reutilizacin y al mismo tiempo brinda la
posibilidad de estudiar la forma en que se reutiliza, complementando la documentacin
que pudiera presentar el proyecto por s mismo.
Esta actividad sobre distintos grupos de productos F/OSS vinculados con distintas
funcionalidades, puede realizarse de manera paralela para cada una de ellas.
La reutilizacin de caja de vidrio debera considerarse como primera opcin en la
72
Captulo 5: Marco para la Reutilizacin de F/OSS
73
Captulo 6: Desarrollo de una Herramienta de apoyo a la seleccin de F/OSS
6.1 Presentacin
En las secciones anteriores observamos que algunas mtricas podan servir como
advertencia de posibles debilidades en el diseo de una aplicacin, aspecto relevante al
momento de decidir la reutilizacin de un producto F/OSS.
Posteriormente, repasamos someramente la literatura referida a la evaluacin seleccin y
evaluacin referida tanto a componentes para la reutilizacin como a aplicaciones F/OSS,
la medicin de la reusabilidad y la reutilizacin especficamente de F/OSS.
En la seccin anterior se elabor una propuesta de marco de trabajo para la reutilizacin
de F/OSS, con miras a sistematizar el proceso de seleccin correspondiente.
En esta seccin describiremos el desarrollo de una sencilla herramienta para la medicin
de mtricas de aplicaciones escritas en Java; la necesidad de contar con la herramienta
surgi especficamente del proceso de investigacin.
Para desarrollar la herramienta propuesta en este trabajo, nos planteamos reutilizar
F/OSS que realice parte de las tareas necesarias; aplicaremos el marco de trabajo
presentado anteriormente a fin de explorar la viabilidad del mismo en un caso concreto.
Si bien la herramienta en cuestin es sencilla, hay dos aspectos que la convierten en una
prueba interesante para el marco: 1) Debe desarrollarse en poco tiempo y 2) Debe cumplir
con una tarea surgida de necesidades reales.
74
Captulo 6: Desarrollo de una Herramienta de apoyo a la seleccin de F/OSS
Funcionalidades Descripcin
Lista de mtricas a computar NOC (nmero de clases), NOM (nmero de mtodos, incluyendo
sobre cdigo fuente en Java constructores), CYCLO (Complejidad ciclomtica total), CALL
(Cantidad total de llamadas diferentes a mtodos en todo el
cdigo) y FOUT (Suma de los valores de fan-out de todas las
clases)
Lectura y almacenamiento en Generar una estructura de rbol con los elementos y
XML subelementos de un archivo XML
Escribir un archivo XML a partir de una estructura de rbol
En una primera instancia, nos orientamos en funcin de una reutilizacin de caja blanca,
bajo la hiptesis de que sera ms sencillo modificar una herramienta existente que ya
computara parcialmente las mtricas de nuestro inters.
A continuacin detallaremos slo bsqueda de recursos para cubrir con la funcionalidad
de computar el conjunto de mtricas de nuestro inters.
75
Captulo 6: Desarrollo de una Herramienta de apoyo a la seleccin de F/OSS
En cada se analiz el mtodo main de la clase que aparece como principal para
determinar qu instancias de qu clases realizan el anlisis de cdigo fuente, a fin de
determinar cules son las clases que tienen responsabilidades en el cmputo de las
mtricas y de qu informacin disponen las instancias de esas clases. El mtodo es
similar a los descritos por Kotonya[22] en lo referente a la reutilizacin de porciones de
software descartadas; en nuestro caso, contamos con la colaboracin del IDE NetBeans,
JavaNCSS y JDepend resultaron fciles de integrar, pero las modificaciones necesarias
requeriran de un conocimiento profundo de la estructura de los proyectos; en este
aspecto, la escasez de documentacin result determinante para buscar otras
76
Captulo 6: Desarrollo de una Herramienta de apoyo a la seleccin de F/OSS
alternativas.
Con estas consideraciones, se replante el proceso de deteccin de oportunidades,
apuntando ahora a obtener un parser de F/OSS que facilitara extraer las mtricas. La
bsqueda se orient teniendo en mente la reutilizacin de caja de vidrio (contemplando la
posibilidad de analizar el cdigo, pero sin modificar la funcionalidad).
En esta instancia se descartaron los generadores de parsers (ANTLR, JavaCC), ya que
dependen de gramticas especficas, con lo que la lista se redujo a dos productos:
JavaParser versin 1.5 y Qdox, versin 2.0. En ambos casos, se trata de las ltimas
versiones encontradas al momento del desarrollo.
77
Captulo 6: Desarrollo de una Herramienta de apoyo a la seleccin de F/OSS
que XOM consta de 51283 LOC. El cdigo nuevo contiene slo 435 LOC, en 10 clases
que incluyen 31 mtodos (sin considerar las pruebas).
Qdox devuelve el modelo del cdigo parseado en una estructura de rbol contenido en un
objeto JavaProjectBuilder; esa clase ofrece mtodos para acceder a la lista de paquetes,
clases y mtodos. La limitacin que presenta esta biblioteca es que no analiza el cdigo a
nivel de mtodo, por lo que fue necesario programar el cmputo de las mtricas que
requieren ese anlisis, como la Complejidad Ciclomtica o las llamadas desde y hacia las
instancias de una clase.
Si bien la Complejidad Ciclomtica es una mtrica ampliamente conocida y utilizada,
adoptamos la metodologa de clculo explicitada en la herramienta JavaNCSS[142]. En
este caso, se trata de reutilizacin de ideas, segn la clasificacin de Prieto-Daz[18].
En funcin de las facilidades brindadas por Qdox, y la necesidad de analizar el cdigo de
los mtodos, decidimos incorporar otras dos mtricas: PM (Mtodos Pblicos), que da
cuenta de los mensajes que puede recibir una instancia; MSCL (Lneas de cdigo no
comentadas en un mtodo) y CL (lneas comentadas).
Las decisiones de diseo priorizaron el desarrollo rpido; no obstante, se centr en una
clase denominada Analyzer la responsabilidad de recibir un String con la ruta al directorio
raz del cdigo a analizar, devolviendo una lista con las mtricas computadas. Esta
decisin obedece a la posibilidad de reutilizarla en un futuro, posibilitando el anlisis
simultneo en varios hilos ejecutndose en forma paralela, teniendo en mente computar el
conjunto de mtricas para diversas versiones de un mismo software en las que el cdigo
78
Captulo 6: Desarrollo de una Herramienta de apoyo a la seleccin de F/OSS
6.3.1 Utilizacin
Para utilizar la herramienta se la invoca desde consola de acuerdo con el siguiente
esquema:
java -jar <directorio raz> <nombre> <version>
El programa analiza el cdigo bajo el directorio raz, y almacena una archivo XML con el
nombre pasado como segundo argumento. El tercer argumento se inluye dentro del
mismo archivo como atributo de un elemento que representa el nombre de la aplicacin.
79
Captulo 6: Desarrollo de una Herramienta de apoyo a la seleccin de F/OSS
Java.
Las dos bibliotecas seleccionadas para la reutilizacin (Qdox y XOM) muestran interfaces
de programacin de la aplicacin (API) simples y directos, con ejemplos claros disponibles
en sus sitios web.
El hecho de que ambas bibliotecas hayan sido reutilizadas en muchos otros proyectos
ofreci la oportunidad de analizar la forma en que se haban integrado a los mismos.
80
Capitulo 7: Conclusiones y Trabajos Futuros
81
Capitulo 7: Conclusiones y Trabajos Futuros
sin embargo, tal hiptesis debera contrastarse con nuevos estudios empricos.
Los proyectos analizados en este trabajo (cuyo listado se detalla en el Anexo III) en
general son de tamao mediano a grande; en proyectos pequeos es probable que los
umbrales propuestos sean menos relevantes, dadas las caractersticas de la media como
medida de tendencia central. influenciada por los valores extremos.
Coincidimos con Fowler[103] en que ningn nmero puede rivalizar con la intuicin
humana; sin embargo, pueden servir como llamadas de atencin que nos indiquen la
necesidad de mirar con ms cuidado el diseo de un producto F/OSS que nos planteamos
reutilizar.
Cabe sealar que los umbrales propuestos no se vinculan directamente con atributos
particulares del software; no obstante se refieren a la distribucin efectiva, empricamente
analizada, de estas proporciones en aplicaciones que han producido diversas versiones
durante varios aos, dando muestras de la viabilidad de que sean modificados y de sus
posibilidades evolutivas.
82
Capitulo 7: Conclusiones y Trabajos Futuros
estos productos.
Por otra parte, la investigacin emprica sobre F/OSS[38] es un campo creciente que
ofrece nuevas temticas y oportunidades para la ingeniera de software. Este aspecto,
sumado al mencionado en el prrafo anterior, plantea la necesidad de incluir estas
temticas en la formacin de profesionales en informtica.
83
Anexo I
Anexo I
Mtricas mencionadas en este trabajo
Mtrica Nombre Descripcin
MI ndice de Parte de un valor mximo al que se le van restando
Mantenibilidad ponderadamente los promedios del Volumen (V), la Complejidad
Ciclomtica Extendida(CCE), el tamao en cantidad de Lneas de
Cdigo (LOC) y una funcin del porcentaje de lneas con
comentarios (PorCom)
CYCLO Complejidad Definida por McCabe como la cantidad de caminos
Ciclomtica independientes a travs del programa
V Volumen de V =N + log 2 () Donde N es la cantidad total de operadores y
Halstead operandos y es la cantidad de operadores y operandos distintos
Ca Acoplamiento Nmero de paquetes que dependen de clases dentro del paquete
Aferente analizado
Ce Acoplamiento Cantidad de paquetes de los cuales dependen las clases de un
Eferente paquete determinado
WMC Mtodos n
CBO Acoplamiento entre El CBO de una clase es la cantidad de otras clases a las que
objetos est acoplada (es decir, a las que hace referencia o desde
las cuales es referenciada)
84
Anexo I
85
Anexo II
Anexo II
86
Anexo II
Datos obtenidos
id_asset identifica a cada uno de los proyectos analizados en este trabajo.
87
Anexo II
88
Anexo II
89
Anexo II
90
Anexo II
91
Anexo II
92
Anexo II
93
Anexo II
94
Anexo II
95
Anexo II
96
Anexo II
97
Anexo II
98
Anexo II
99
Anexo II
100
Anexo II
101
Anexo II
102
Anexo II
103
Anexo II
104
Anexo III
Anexo III
105
Anexo III
Cantidad
de
Id_asset Nombre Descripcin Versiones
Librera para gestionar formato
1 iText PDF 17
2 Apache PDF Box Bilbioteca de manipulacin de PDF 18
3 GNUJpdf Biblioteca para gestionar PDF 7
Framework de manipulacin de
4 jpod archivos PDF 11
5 PDF Clown Biblioteca de manipulacin de PDF
6 JOpenChart Biblioteca para incluir grficas
7 JfreeChart Librera para grficas 20
10 Art of Illusions Modelador grfico 3D 28
Herramienta para crear mapas
11 FreeMind mentales 41
Biblioteca para manipulacin de
12 ICEPdf PDF 25
13 Hodoku Generador de Sudoku 12
14 PMD Analizador de cdigo fuente 15
API que proporciona un modelo de
objetos espaciales y funciones
15 JTS fundamentales geomtricas 2D 11
Implementacin liviana y rpida de
16 JFreeSVG SVG para Java 11
Biblioteca liviana para desarrollo
17 lwjgl de juegos 49
Herramienta para realizar
18 SQLeonardo consultas a bases de datos 16
Librera para gestionar formato
19 Batik SVG 19
Chemistry Librera orientada a bioqumica y
20 Development Kit qumica 36
Herramienta para crear mapas
21 FreePlane mentales 10
22 Vuze Cliente Bittorrent 28
106
Anexo III
107
Anexo IV
Anexo IV
108
Trminos, expresiones y siglas mencionadas en esta tesis
109
ndices de Tablas e ilustraciones
110
ndices de Tablas e ilustraciones
ndice de tablas
Tabla 1: Presentaciones ante eventos acadmicos................................................................................8
Tabla 2: Taxonoma de la Reutilizacin propuesta por Prieto-Daz.....................................................9
Tabla 3: Caractersticas esperables de la investigacin sobre F/OSS.................................................31
Tabla 4: Mtricas computadas con la herramienta iPlasma, utilizadas en el presente trabajo...........33
Tabla 5: Proporciones postuladas por Lanza y Marinescu para la caracterizacin del diseo a partir
del cdigo fuente................................................................................................................................34
Tabla 6: Proyectos seleccionados para el estudio exploratorio..........................................................40
Tabla 7: Coeficientes de correlacin de los distintos indicadores de diseo en las diferentes
versiones respecto de las lneas de cdigo de cada una......................................................................42
Tabla 8: medidas de localizacin y dispersin observadas en las proporciones de mtricas bajo
estudio.................................................................................................................................................45
Tabla 9: Valores de los distintos deciles de la distribucin de las proporciones consideradas...........49
Tabla 10: Umbrales propuestos en otros trabajos...............................................................................50
Tabla 11: Metodologas de seleccin de F/OSS.................................................................................64
Tabla 12: Atributos principales de acuerdo con la propsito de reutilizacin, y su relacin con
posibles mtodos de evaluacin de F/OSS.........................................................................................73
Tabla 13: Lista de herramientas analizadas con miras a su posible reutilizacin...............................77
Tabla 14: Comparacin de JavaParser y Qdox...................................................................................78
111
ndices de Tablas e ilustraciones
ndice de ilustraciones
Ilustracin 1: Aspectos que inciden en la reusabilidad de una pieza de software..............................16
Ilustracin 2: Secuencia de la investigacin emprica........................................................................29
Ilustracin 3: Evolucin de distintas proporciones de mtricas en las versiones publicadas por el
proyecto Sweet Home 3D...................................................................................................................37
Ilustracin 4: Curva de distribucin de la Intensidad de Acoplamiento.............................................45
Ilustracin 5: Distribucin de la Estructuracin de Clases.................................................................46
Ilustracin 6: Distribucin de la Estructuracin de Operaciones.......................................................47
Ilustracin 7: Distribucin de la Complejidad Intrnseca...................................................................48
Ilustracin 8: Distribucin de WMC calculada en base a C.I., E.O. y E.C........................................49
Ilustracin 9: Esquema de la elaboracin del marco de trabajo.........................................................53
Ilustracin 10: Marco para la seleccin de F/OSS para la reutilizacin.............................................72
Ilustracin 11: Ejecucin de la Herramienta en lnea de comandos...................................................80
Ilustracin 12: Captura de un archivo XML generado por la herramienta para la versin 0.2 de la
biblioteca jCharts................................................................................................................................82
112
Referencias
Referencias
[1] F. P. Brooks, No Silver Bullet Essence and Accidents of Software Engineering, Computer,
vol. 20, pp. 1019, Apr. 1987.
[2] E. S. de Almeida, A. Alvaro, V. C. Garcia, J. Cordeiro Pires, V. A. Burgio, L. M.
Nascimento, D. Lucrdio, and S. Lemos Meira, C.R.U.I.S.E: Component Reuse in Software
Engineering, 1st ed. Recife: C.E.S.A.R e-book, 2007.
[3] J. Sametinger, Software engineering with reusable components. New York, NY, USA:
Springer-Verlag New York, Inc., 1997.
[4] M. D. McIlroy, Mass Produced Software Components, in Software Engineering Concepts
and Techniques, vol. 1, P. Naur and Be. Randell, Eds. NATO Science Committee, 1968, pp.
138150.
[5] W. B. Frakes and S. Isoda, Success Factors of Systematic Reuse, IEEE Softw, vol. 11, pp.
1419, Sep. 1994.
[6] M. Morisio, M. Ezran, and C. Tully, Success and Failure Factors in Software Reuse, IEEE
Trans Softw Eng, vol. 28, pp. 340357, Apr. 2002.
[7] R. Holmes and R. J. Walker, Systematizing Pragmatic Software Reuse, ACM Trans Softw
Eng Methodol, vol. 21, no. 4, pp. 20:120:44, Feb. 2013.
[8] J. Ramirez, G. Gil, G. Romero, and L. Gimson, Indicadores de la utilizacin del bug traker
en proyectos F/OSS, in Congreso Argentino de Ciencias de la Computacin 2009, Jujuy,
2009, pp. 713721.
[9] J. Ramirez, L. Gimson, and G. Gil, Evaluacin de la Evolucin del Diseo en F/OSS:un
Caso de Estudio, in VII Workshop Ingeniera de Software - XVI Congreso Argentino de
Ciencias de la Computacin, 2010.
[10] J. Ramirez, G. Gil, and L. Gimson, El Nacimiento de una Herramienta Educativa Libre, in
40 Jornadas Argentinas de Informtica, Crdoba, 2011.
[11] J. Ramirez, Mantenibilidad y Evolutividad en el Software Libre y de Cdigo Abierto,
Trabajo Integrador Especialidad en Ingeniera de Software, Universidad Nacional de La
Plata, La Plata, 2011.
[12] J. Ramirez, G. Gil, and M. L. Mass Palermo, Hacia un catlogo prctico de componentes
de F/OSS para la reutilizacin, in 41 Jornadas Argentinas de Informtica, La Plata, 2012,
pp. 4552.
[13] J. Ramirez, C. Reyes, and G. Gil, Mtricas de Cdigo fuente y Evolucin de F/OSS: un
estudio exploratorio, in 42 Jornadas Argentinas de Informtica, Crdoba, 2013, pp. 198
209.
[14] J. Ramirez, C. Reyes, G. Gil, and F. Durgam, Evolucin y reusabilidad en F/OSS, in XVII
Workshop de Investigadores en Ciencias de la Computacin, Salta, 2015.
[15] J. Ramirez, G. Gil, and C. Reyes, Umbrales sugeridos para promedios de mtricas de diseo
de una aplicacin en Java, 2015.
[16] B. Jalender, A. Govardhan, and P. Premchand, A pragmatic approach to Software Reuse, J.
Theor. Appl. Inf. Technol., vol. 14, no. 2, pp. 8796, Jun. 2010.
[17] H. Apperly, Component-based software engineering, G. T. Heineman and W. T. Councill,
Eds. Boston, MA, USA: Addison-Wesley Longman Publishing Co., Inc., 2001, pp. 513526.
113
Referencias
[18] R. P. Prieto-Daz, Status Report: Software Reusability., IEEE Softw., vol. 10, no. 3, pp. 61
66, 1993.
[19] R. Pressman, Ingeniera del Software. Un enfoque Prctico. Mxico: McGraw-Hill, 2010.
[20] R. Holmes, Pragmatic software reuse, University of Calgary, Canad, 2008.
[21] S. Jansen, S. Brinkkemper, I. Hunink, and C. Demir, Pragmatic and Opportunistic Reuse in
Innovative Start-up Companies, IEEE Softw, vol. 25, no. 6, pp. 4249, Nov. 2008.
[22] G. Kotonya, S. Lock, and J. Mariani, Opportunistic reuse: Lessons from scrapheap software
development, in Component-Based Software Engineering, Springer, 2008, pp. 302309.
[23] G. Caldiera and V. R. Basili, Identifying and Qualifying Reusable Software Components,
IEEE Comput., vol. 24, no. 2, pp. 6170, 1991.
[24] E. Selim, Y. Ghanam, C. Burns, T. Seyed, and F. Maurer, A Test-Driven Approach for
Extracting Libraries of Reusable Components from Existing Applications, in Agile
Processes in Software Engineering and Extreme Programming, Springer, 2011, pp. 238252.
[25] C. Szyperski, Component Software: Beyond Object-Oriented Programming, 2nd ed. Boston,
MA, USA: Addison-Wesley Longman Publishing Co., Inc., 2002.
[26] J. Bhuta, C. A. Mattmann, N. Medvidovic, and B. Boehm, A Framework for the Assessment
and Selection of Software Components and Connectors in COTS-Based Architectures, in
WICSA 07: Proceedings of the Sixth Working IEEE/IFIP Conference on Software
Architecture, Washington, DC, USA, 2007, p. 6.
[27] G. Bart, R. Fleurquin, and S. Sadou, A Component Selection Framework for COTS
Libraries, in Component-Based Software Engineering, vol. 5282, M. V. Chaudron, C.
Szyperski, and R. Reussner, Eds. Springer Berlin Heidelberg, 2008, pp. 286301.
[28] J. M. Voas, Certifying off-the-shelf software components, Computer, vol. 31, no. 6, pp. 53
59, 1998.
[29] C. Wohlin and P. Runeson, Certification of software components, Softw. Eng. IEEE Trans.
On, vol. 20, no. 6, pp. 494499, 1994.
[30] J. Morris, G. Lee, K. Parker, G. A. Bundell, and C. P. Lam, Software component
certification, Computer, vol. 34, no. 9, pp. 3036, Sep. 2001.
[31] N. Budhija and S. P. Ahuja, Review of software reusability, in International conference on
Computer Science and Information Technology (ICCSIT2011), Pattaya Dec, 2011.
[32] J. Gonzlez-Barahona, J. Seoane Pascual, G. Robles, J. Mas Hernndez, and D. Megas
Gimnez, Introduction to Free Software, Tercera. Free technology Academy, 2009.
[33] S. Hissam, C. B. Weinstock, D. Plakosh, and J. Asundi, Perspectives on Open Source
Software, SEI/CMU, 2001.
[34] F. S. Foundation, Free Software Definition. Free Software Foundation, 2009.
[35] O. S. Initiative, Open Source Definition. 2006.
[36] R. Stallman, Viewpoint: Why Open Source Misses the Point of Free Software, Commun
ACM, vol. 52, no. 6, pp. 3133, Jun. 2009.
[37] J. Howison and K. Crowston, The perils and pitfalls of mining SourceForge, in Proc. of
Mining Software Repositories Workshop at the International Conference on Software
Engineering (ICSE), Edinburgh, Scotland, 2004.
[38] F. Kon, P. Meirelles, N. Lago, A. S. Terceiro, C. Chavez, and M. G. Mendona, Free and
Open Source Software Development and Research: Opportunities for Software Engineering,
in SBES, 2011, pp. 8291.
[39] I. Samoladas, I. Stamelos, L. Angelis, and A. Oikonomou, Open source software
114
Referencias
development should strive for even greater code maintainability, Commun ACM, vol. 47, no.
4, pp. 8387, 2004.
[40] C. M. Schweik, Sustainability in Open Source Software Commons: Lessons Learned from
an Empirical Study of SourceForge Projects, Technol. Innov. Manag. Rev., vol. 3, pp. 1319,
Jan. 2013.
[41] J. Ramirez, G. Gil, G. Romero, and L. Gimson, Indicadores de la Utilizacin del Bug
Tracker en Proyectos F/OSS., in XV Congreso Argentino de Ciencias de la Computacin,
2009.
[42] M. Sojer, Reusing open source code: value creation and value appropriation perspectives on
knowledge reuse, Technical University Munich, 2011.
[43] L. Jaccheri and T. Osterlie, Open Source Software: A Source of Possibilities for Software
Engineering Education and Empirical Software Engineering, in FLOSS 07: Proceedings of
the First International Workshop on Emerging Trends in FLOSS Research and Development,
Washington, DC, USA, 2007, p. 5.
[44] G. von Krogh and S. Spaeth, The Open Source Software Phenomenon: Characteristics That
Promote Research, J Strateg Inf Syst, vol. 16, no. 3, pp. 236253, Sep. 2007.
[45] H. Pei-Breivold, M. A. Chauhan, and M. A. Babar, A Systematic Review of Studies of Open
Source Software Evolution, in 17th Asia Pacific Software Engineering Conference
(APSEC), IEEE, 2010.
[46] J. Gonzlez-Barahora, G. Robles, Gregorio, I. Herraiz, Israel, and F. Ortega, Felipe,
Studying the laws of software evolution in a longlived FLOSS project, J. Softw. Evol.
Process, vol. 26, no. 7, pp. 589612, Jul. 2014.
[47] A. Bauer and M. Pizka, The Contribution of Free Software to Software Evolution, in In
IEEE International Workshop on Principles of Software Evolution (IWPSE03, 2003, pp. 170
179.
[48] I. Sommerville, Ingeniera del Software: un enfoque prctico. Pearson Educacin, 2005.
[49] K. H. Bennett and V. T. Rajlich, Software maintenance and evolution: a roadmap, in ICSE
00: Proceedings of the Conference on The Future of Software Engineering, New York, NY,
USA, 2000, pp. 7387.
[50] T. Mens and S. Demeyer, Software Evolution. Springer, 2008.
[51] J. Adell and Y. Bernab, Software Libre en Educacin. McGraw-Hill, 2007.
[52] P. A. Grubb and A. A. Takang, Software maintenance - concepts and practice (2. ed.). World
Scientific, 2003.
[53] J. Martin and C. McClure, Software Maintenance: The Problem and its Solutions. London,
1983.
[54] K. Erdil, E. Finn, K. Keating, J. Meattle, S. Park, D. Yoon, and P. Stafford, Comp180:
Software Engineering. Tufts University, 2003.
[55] B. Lientz, E. Swanson, and G. Tompkins, Characteristics of application software
maintenance, Commun ACM, vol. 21, no. 6, pp. 466471, 1978.
[56] N. E. Fenton and S. L. Pfleeger, Software Metrics: A Rigorous and Practical Approach.
Boston, MA, USA: PWS Publishing Co., 1998.
[57] M. Fowler and K. Beck, Bad Smells in Code, in Refactoring: Improving the design of
existing code, Addison-Wesley, 1999, pp. 7588.
[58] D. E. Peercy, A Software Maintainability Evaluation Methodology, IEEE Trans Softw Eng,
vol. 7, no. 4, pp. 343351, 1981.
115
Referencias
[59] R. Banker, S. Datar, and D. Zweig, Software complexity and maintainability, in ICIS 89:
Proceedings of the tenth international conference on Information Systems, New York, NY,
USA, 1989, pp. 247255.
[60] M. Kajko-Mattsson, G. Canfora, D. Chiorean, A. van Deursen, T. Ihme, M. M. Lehman, R.
Reiger, T. Engel, and J. Wernke, A Model of Maintainability - Suggestion for Future
Research, in Software Engineering Research and Practice, 2006, pp. 436441.
[61] D. Coleman, D. Ash, B. Lowther, and P. Oman, Using Metrics to Evaluate Software System
Maintainability, Computer, vol. 27, no. 8, pp. 4449, 1994.
[62] I. Heitlager, T. Kuipers, and J. Visser, A Practical Model for Measuring Maintainability,
Qual. Inf. Commun. Technol. Int. Conf. On, vol. 0, pp. 3039, 2007.
[63] T. McCabe, A complexity measure, in ICSE 76: Proceedings of the 2nd international
conference on Software engineering, Los Alamitos, CA, USA, 1976, p. 407.
[64] S. R. Chidamber and C. F. Kemerer, A Metrics Suite for Object Oriented Design, IEEE
Trans Softw Eng, vol. 20, no. 6, pp. 476493, 1994.
[65] D. I. K. Sjberg, B. Anda, and A. Mockus, Questioning Software Maintenance Metrics: A
Comparative Case Study, in Proceedings of the ACM-IEEE International Symposium on
Empirical Software Engineering and Measurement, New York, NY, USA, 2012, pp. 107110.
[66] M. J. Munro, Product Metrics for Automatic Identification of Bad Smell Design Problems in
Java Source-Code, in METRICS 05: Proceedings of the 11th IEEE International Software
Metrics Symposium, Washington, DC, USA, 2005, p. 15.
[67] H. Kabaili, R. K. Keller, and F. Lustman, Cohesion as Changeability Indicator in Object-
Oriented Systems, in Fifth Conference on Software Maintenance and Reengineering, CSMR
2001, Lisbon, Portugal, March 14-16, 2001, 2001, pp. 3946.
[68] Y. Ayalew and K. Mguni, An Assessment of Changeability of Open Source Software,
Comput. Inf. Sci., vol. 6, no. 3, pp. 6879, 2013.
[69] L. Rosenberg, Applying and Interpreting Object Oriented Metrics, presented at the
Software Technology Conference, 1998.
[70] K. Erni and C. Lewerentz, Applying Design-metrics to Object-oriented Frameworks, in
Proceedings of the 3rd International Symposium on Software Metrics: From Measurement to
Empirical Results, Washington, DC, USA, 1996, p. 64.
[71] S. R. Chidamber, D. P. Darcy, and C. F. Kemerer, Managerial Use of Metrics for Object-
Oriented Software: An Exploratory Analysis, IEEE Trans Softw Eng, vol. 24, no. 8, pp. 629
639, Aug. 1998.
[72] M. Lanza, R. Marinescu, and S. Ducasse, Object-Oriented Metrics in Practice. Secaucus, NJ,
USA: Springer-Verlag New York, Inc., 2005.
[73] K. A. M. Ferreira, M. A. S. Bigonha, R. S. Bigonha, L. F. O. Mendes, and H. C. Almeida,
Identifying Thresholds for Object-oriented Software Metrics, J Syst Softw, vol. 85, no. 2,
pp. 244257, Feb. 2012.
[74] S. Benlarbi, K. E. Emam, N. Goel, and S. N. Rai, Thresholds for Object-Oriented
Measures., in ISSRE, 2005, pp. 2439.
[75] R. Shatnawi, W. Li, J. Swain, and T. Newman, Finding software metrics threshold values
using ROC curves, J. Softw. Maint. Evol. Res. Pract., vol. 22, no. 1, pp. 116, 2010.
[76] R. Shatnawi, A Quantitative Investigation of the Acceptable Risk Levels of Object-Oriented
Metrics in Open-Source Systems, IEEE Trans. Softw. Eng., vol. 99, no. RapidPosts, pp.
216225, 2010.
116
Referencias
[77] S. Kaur, S. Singh, and H. Kaur, A Quantitative Investigation Of Software Metrics Threshold
Values At Acceptable Risk Level, Int. J. Eng. Res. Technol., vol. 2, no. 3, Mar. 2013.
[78] F. Brito e Abreu and R. Carapuca, Object-Oriented Software Engineering: Measuring and
Controlling the Development Process, in Proc. Intl Conf. Software Quality (QSIC), 1994.
[79] R. Bender, Quantitative Risk Assessment in Epidemiological Studies Investigating
Threshold Effects, vol. 41, no. 3, pp. 305319, 1999.
[80] P. Runeson and M. Hst, Guidelines for conducting and reporting case study research in
software engineering, Empir. Softw Engg, vol. 14, no. 2, pp. 131164, 2009.
[81] G. Robles, Empirical Software Engineering Research on Libre Software: Data Sources,
Methodologies and Results, Universidad Rey Juan Carlos, 2006.
[82] E. Fernndez, O. Dieste, P. Pesado, and R. Garca-Martinez, La Importancia del Uso de la
Evidencia Emprica en Ingeniera de Software, in CACIC 2010, Buenos Aires, 2010, pp.
206215.
[83] K. Crowston, K. Wei, J. Howison, and A. Wiggins, Free/Libre Open-source Software
Development: What We Know and What We Do Not Know, ACM Comput Surv, vol. 44, no.
2, pp. 7:17:35, Mar. 2008.
[84] L. Gasser and W. Scacchi, Towards a Global Research Infrastructure for Multidisciplinary
Study of Free/Open Source Software Development, in Open Source Development,
Communities and Quality, vol. 275, B. Russo, E. Damiani, S. Hissan, B. Lundell, and G.
Succi, Eds. Boston: Springer, 2008, pp. 143158.
[85] S. H. Kan, Metrics and Models in Software Quality Engineering. Boston, MA, USA:
Addison-Wesley Longman Publishing Co., Inc., 2002.
[86] R. K. Bandi, V. K. Vaishnavi, and D. E. Turk, Predicting Maintenance Performance Using
Object-Oriented Design Complexity Metrics, IEEE Trans Softw Eng, vol. 29, no. 1, pp. 77
87, 2003.
[87] M. Dagpinar and J. H. Jahnke, Predicting Maintainability with Object-Oriented Metrics - An
Empirical Comparison., in WCRE, 2004, pp. 155164.
[88] Gandh, Parul and Bhatia,Pradep, Reusability Metrics for Object-Oriented System: An
Alternative Approach, Int. J. Softw. Eng., vol. 1, no. 4, pp. 6372, 2010.
[89] C. Marinescu, R. Marinescu, P. F. Mihancea, D. Ratiu, and R. Wettel, iPlasma: An Integrated
Platform for Quality Assessment of Object-Oriented Design, in ICSM (Industrial and Tool
Volume), 2005, pp. 7780.
[90] D. C. Ince, L. Hatton, and J. Graham-Cumming, The case for open computer programs,
Nature, vol. 482, no. 7386, pp. 485488, 2012.
[91] D. Wheeler, SLOCcount, 2009. [Online]. Available: http://www.dwheeler.com/sloccount/.
[92] M. M. Lehman and J. F. Ramil, An approach to a theory of software evolution, in IWPSE
01: Proceedings of the 4th International Workshop on Principles of Software Evolution,
New York, NY, USA, 2001, pp. 7074.
[93] M. Lehman and J. C. Fernndez-Ramil, Software Evolution, in Software Evolution and
Feedback, D. E. P., Juan C Fernndez-Ramil Nazim H Madhavji, Ed. 2006, pp. 740.
[94] M. Lehman, Laws of Software Evolution Revisited, in EWSPT 96: Proceedings of the 5th
European Workshop on Software Process Technology, London, UK, 1996, pp. 108124.
[95] M. W. Godfrey and Q. Tu, Evolution in Open Source Software: A Case Study, in In
Proceedings of the International Conference on Software Maintenance, 2000, pp. 131142.
[96] A. Capiluppi, M. Morisio, and J. F. Ramil, Structural Evolution of an Open Source System:
117
Referencias
118
Referencias
119
Referencias
120