37 research outputs found
GAmeraHOM, un generador de mutantes de orden superior para composiciones WS-BPEL
Memoria de un Proyecto Fin de Carrera de Ingeniería Informática que ha sido llevado a cabo gracias a una beca de colaboración con el Departamento de Lenguajes y Sistemas Informáticos de la Universidad de Cádiz. Este proyecto se enmarca dentro del Grupo de Investigación UCASE donde se está investigando sobre el lenguaje WS-BPEL y su rango de aplicación.GAmeraHOM es el primer generador de mutantes de orden superior para composiciones WS-BPEL, que utiliza la técnica de la mutación evolutiva mediante el empleo de un algoritmo genético. Con GAmeraHOM se persigue detectar aquellos mutantes (programa algunas con modificaciones sintácticas) difíciles de matar por un caso de prueba para poder mejorar la calidad del conjunto de casos de prueba. GAmeraHOM está preparado para WS-BPEL y está basada en MuBPEL, pero se dispone de una estructura modular que permite su fácil adaptación a otros lenguajes155 páginas (PDF). Fuentes LaTeX y código fuente disponibles a través de: https://neptuno.uca.es/redmine/projects/pfc-emm
Interfaz gráfica para MuBPEL
121 páginas (PDF). Código fuente LaTeX bajo licencia GFDL 1.3 en https://neptuno.uca.es/redmine/projects/pfc-juan-danie
Evolutionary Mutation Testing in Object-Oriented Environments
La prueba de mutaciones es reconocida como un potente método para evaluar la fortaleza
de un conjunto de casos de prueba en la detección de posibles fallos en el código. No
obstante, la aplicación de esta técnica es costosa, lo cual ha supuesto normalmente un
obstáculo para una mayor acogida de la misma por parte de la industria. Varias técnicas
han mostrado ser capaces de reducir ampliamente su coste sin mucha pérdida de efectividad,
pero también es cierto que estas técnicas solo han sido evaluadas en determinados
contextos, especialmente en el ámbito de los operadores de mutación tradicionales para
programas procedurales. Por ejemplo, la Prueba de Mutación Evolutiva ha sido aplicada
únicamente a composiciones WS-BPEL, a pesar de que se obtuvo un resultado positivo
al seleccionar un subconjunto de mutantes a través de un algoritmo evolutivo a fin de
mejorar el conjunto de casos de prueba. Como resultado, se desconoce a día de hoy si
los mismos beneficios pueden extrapolarse a otros niveles y dominios.
En particular, en esta tesis nos preguntamos hasta qué punto la Prueba de Mutación
Evolutiva es también útil para reducir el número de mutantes en sistemas orientados a
objetos. Más específicamente, nos enfocamos en el lenguaje de programación C++, ya
que la prueba de mutaciones casi no se ha desarrollado respecto a este popular lenguaje a
juzgar por la falta de artículos de investigación en este campo que se dirigen este lenguaje.
Dado que C++ ha sido apenas abordado en cuanto a investigación y en cuanto a la
práctica, en esta tesis nos ocupamos de todas las fases de la prueba de mutaciones: desde
la definición e implementación de operadores de mutación en un sistema de mutaciones,
hasta la evaluación de esos operadores y la aplicación de la Prueba de Mutación Evolutiva
entre otras técnicas de reducción del coste.
En esta tesis definimos e implementamos un conjunto de operadores de mutación de
clase para C++ en MuCPP, herramienta de mutaciones que nos permite llevar a cabo
experimentos con programas reales gracias a las características incorporadas a la misma.
Estos operadores de mutación son automatizados siguiendo un conjunto de reglas para
que produzcan los mutantes que se esperan de los mismos. En términos generales, los
operadores de clase generan bastantes menos mutantes que los operadores tradicionales,
un porcentaje mayor de mutantes equivalentes y se aplican con diversa frecuencia dependiendo
de las características del programa analizado. El desarrollo de reglas de mejora
en la implementación de los operadores permite reducir incluso más el número de
mutantes, evitando generar mutantes que no son interesantes para el propósito de la
prueba de mutaciones. Otro descubrimiento interesante es que el conjunto de mutantes
de clase y el de mutantes tradicionales se complementan, ayudando a diseñar un conjunto
de casos de prueba más efectivo.
También desarrollamos GiGAn, un nuevo sistema para conectar MuCPP y un algoritmo
genético para aplicar la Prueba de Mutación Evolutiva a sistemas orientados a objetos en
C++. El algoritmo genético permite reducir el número de mutantes que sería generado
por MuCPP ya que guía la búsqueda a la selección de aquellos mutantes que pueden
inducir a la generación de nuevos casos de prueba (mutantes fuertes). El rendimiento de
esta técnica se muestra mejor que el de un algoritmo aleatorio, tanto cuando se buscan
diferentes porcentajes de mutantes fuertes como cuando se simula el refinamiento del
conjunto de casos de prueba mediante los mutantes seleccionados por ambas técnicas.
La estabilidad de la Prueba de Mutación Evolutiva en los diferentes programas analizados
y los buenos resultados en aquellos programas de los que se deriva un mayor número de
mutantes son observaciones adicionales.
Finalmente, realizamos experimentos para evaluar de forma individual a estos operadores
de mutación desde una doble perspectiva: cómo de útiles son para la evaluación (TSE)
y para la mejora (TSR) de un conjunto de casos de prueba. Para ello clasificamos
a los operadores usando dos métricas distintas: el grado de redundancia (TSE) y la
calidad para guiar a la generación de casos de prueba de alta calidad (TSR). Siguiendo
estas clasificaciones, ponemos en práctica un estudio selectivo teniendo en cuenta que
los operadores menos valiosos están en las últimas posiciones. Este enfoque selectivo
revela que los operadores no son necesariamente igual de útiles para TSE y TSR, y que
estas clasificaciones son apropiadas para llevar a cabo una estrategia selectiva cuando
lo comparamos con la aplicación de otras clasificaciones de operadores o la selección
aleatoria de mutantes. Sin embargo, favorecer la generación de mutantes individuales a
partir de los operadores mejor valorados es mucha mejor opción que descartar operadores
al completo debido a que cada uno de estos operadores se centra en una característica
concreta del paradigma de orientación a objetos. En conjunto, todas estas evaluaciones
en torno a estos operadores de clase sugieren que la naturaleza de los mismos puede
limitar los beneficios de aplicar cualquier técnica de reducción del coste.Mutation testing is acknowledged as a powerful method to evaluate the strength of test
suites in detecting possible faults in the code. However, its application is expensive,
which has traditionally been an obstacle for a broader use in the industry. While it is
true that several techniques have shown to greatly reduce the cost without losing much
effectiveness, it is also true that those techniques have been evaluated in limited contexts,
especially in the scope of traditional operators for procedural programs. To illustrate this
fact, Evolutionary Mutation Testing has only been applied to WS-BPEL compositions,
despite the positive outcome when selecting a subset of mutants through an evolutionary
algorithm with the aim of improving a test suite. As a result, it is unknown whether the
same benefits can be extrapolated to other levels and domains.
In particular, we wonder in this thesis to what extent Evolutionary Mutation Testing is
also useful to reduce the number of mutants generated by class mutation operators in
object-oriented systems. More specifically, we focus on the C++ programming language,
since the development of mutation testing with regard to this widely-used language is
clearly immature judging from the lack of papers in the literature tackling this language.
Given that C++ has been hardly addressed in research and practice, we deal with all
the phases of mutation testing: from the definition and implementation of mutation
operators in a mutation system to the evaluation of those operators and the application
of Evolutionary Mutation Testing among other cost reduction techniques.
We define a set of class mutation operators for C++ and implement them in MuCPP,
which allows us to perform experiments with real programs thanks to the facilities incorporated
into this mutation tool. These mutation operators are automated following
a set of guidelines so that they produce the expected mutations. In general, class-level
operators generate far fewer mutants than traditional operators, a higher equivalence
percentage and they are applied with varying frequency depending on the features of
the tested program. Developing improvement rules in the implementation of several
mutation operators help further reduce the number of mutants, avoiding the creation
of uninteresting mutants. Another interesting finding is that the set of class mutants
and the set of traditional mutants complement each other to help the tester design more
effective test suites.
We also develop GiGAn, a new system to connect the mutation tool MuCPP and a genetic
algorithm to apply Evolutionary Mutation Testing to C++ object-oriented systems.
The genetic algorithm allows reducing the number of mutants that would be generated
by MuCPP as it guides to the selection of those mutants that can induce the generation
of new test cases (strong mutants). The performance of this technique shows to be
better than the application of a random algorithm, both when trying to find different
percentages of strong mutants and also when simulating the refinement of the test suite
through the mutants selected by each of these techniques. The stability of EMT among
different case studies and the good results of the simulation in the programs that lead to
the largest set of mutants are additional observations.
Finally, we conduct an experiment to assess individually these mutation operators from a
double perspective: how useful they are for the evaluation of the test suite (TSE) and its
refinement (TSR). To that end, we rank the operators using two different metrics: degree
of redundancy (TSE) and quality to guide on the generation of high-quality test cases
(TSR). Based on these rankings, we perform a selective study taking into account that
the less valuable operators are at the bottom of the classification. This selective approach
reveals that an operator is not necessarily as useful for TSE as for TSR, and that these
rankings are appropriate for a selective strategy when compared to other rankings or the
selection of mutants randomly. However, favouring the generation of individual mutants
from the best-valued operators is much better than discarding operators completely because
each of the operators targets a particular object-oriented feature. Altogether, these
evaluations about class operators suggest that their nature can limit the benefits of any
cost reduction technique.Este trabajo fue financiado por la beca de investigación PU-EPIF-FPI-PPI-BC 2012-
037 de la Universidad de Cádiz, por el proyecto DArDOS (TIN2015-65845-C3-3-R) del
Programa Estatal de Investigación, Desarrollo e Innovación Orientada a los Retos de
la Sociedad del Ministerio de Economía y Competitividad, y por la Red de Excelencia
SEBASENET (TIN2015-71841-REDT) del Programa Estatal de Fomento de la Investigación
Científica y Técnica de Excelencia del Ministerio de Economía y Competitividad.Número de páginas: 23
Da lanza ao portátil. Ao redor de certas estratexias de representación na fotografía galega
Alicerzando en varias figuras chaves da fotografía galega do século XX, como son as de Joaquin Pintos, Luis Casado, José Suárez, Virxilio Vieitez e Manuel Vilariño, o artigo leva a cabo un percurso que, comezando na década dos anos trinta, remata na fronteira que separa os séculos XX e XXI. Dito traxecto serve para analisar certas estratexias de representación, así como para pasar revista a obxectos de grande fortaleza simbólica que se achan inseridos na cultura tradicional galega, quer na súa vertente material, quer na inmaterial, da cal a festa e a morte son dúas manifestacións sobranceiras. O percurso serve, aliás, para reflectir sobre as ideas de modernidade, estabelecendo comparanzas entre a obra de certos autores galegos e os seus homólogos contemporáneos
Filogenia molecular y genética de poblaciones de alouatta palliata e inferencias filogenéticas al interior del genero alouatta con secuencias de ADN mitocondrial
Para llevar a cabo este trabajo, fueron secuenciadas para el gen mitocondrial COII148 muestras del género Alouatta (monos aulladores). A. palliata (103). A. coibensis trabeata (3). A. pigra (3). A. caraya (1). A. sata (6). A. seniculus (11). siendo A. palliata el objetivo principal de este estudio. Adicionalmente se utilizaron muestras de Lagothrix lagotricha cana (11) como outgroups. A partii- de las secuencias obtenidas se realizó un análisis de las relaciones filogenéticas. Se analizó si los datos moleculares obtenidos perniiteli diferenciar las especies propuestas, se evaluó el estado genético de las poblaciones (diversidad genética, heterogeneidad genética y flujo gènico), y además, se indagó sobre su historia evolutiva (se calcularon tiempos de divergencia y cambios demográficos de la especie y se relacionaron con posibles causas climatológicas y geológicas).Magíster en Ciencias BiológicasMaestrí
Charles Darwin y el Arbitraje
In the following paper, relying on authoritative doctrine an empirical data, the authors support the idea that the arbitration is an evolutionary phenomenon that captures the best practices of the civil law system and common law. Finally, they comment on the role of soft law in international arbitration and the importance that lex mercatoria plays today.En el presente artículo, apoyándose en doctrina autorizada y en data empírica, los autores sustentan la idea que el arbitraje es un fenómeno evolutivo que recoge las mejores prácticas del sistema del civil law y el common law. Por último, comentan el rol del soft law en el arbitraje internacional y la importancia que juega hoy en día la lex mercatoria
The "collective intellectual" and the construction of a new hegemony
This article will address the contributions made by Gramsci in the construction of the figure of the intellectual. To do this, the distinctive dyes of Marxist historical determinism will be characterized, and then focus on the Gramscian thought. From there we will expressly focus on the arguments deployed by Gramsci by procuring an active role to the figure of the intellectual, as a collective intellectual that is becoming embodied in the revolutionary party of the working class. In this way, we will propose that this disposition of the collective intellectual is linked to the problems of social life in the search to unify theory and praxis, and seeks to create a new hegemony, since it admits the indeterminacy of history according to laws.En el presente artículo se abordarán los aportes realizados por Gramsci en la construcción de la figura del intelectual. Para ello, se caracterizarán los rasgos distintivos del determinismo histórico marxista, para luego enfocarnos en el pensamiento gramsciano. A partir de allí nos centraremos de manera expresa en los argumentos desplegados por Gramsci al procurarle una función activa a la figura del intelectual, en tanto intelectual colectivo que se va conformando encarnado en el partido revolucionario de la clase obrera. De esta manera, plantearemos que esta disposición del intelectual colectivo se enlaza con los problemas de la vida social en la búsqueda de unificar teoría y praxis, y pretende crear así una nueva hegemonía, puesto que admite la indeterminabilidad de la historia según leyes
Principios, derechos y deberes en el derecho colombiano de protección al consumidor
A la globalización de la economía y de las comunicaciones van aparejadas las nuevas categorías de “consumidor” y “relación de consumo”. La categoría “consumidor” es despersonalizada y revela en sus características la posición asimétrica de uno de los sujetos de la relación de consumo. Parte débil de la relación de consumo, al consumidor se le otorga especial protección en aras de “humanizar” esta disciplina y de mitigar los efectos de la asimetría en la posición de las partes determinada por las condiciones del mercado y de la contratación masiva. Así, conviene a la doctrina construir las bases dogmáticas de los principios generales de una disciplina legal que actualizó nuestro derecho de protección al consumidor y lo ubicó en una etapa decididamente garantista