SlideShare una empresa de Scribd logo
Un lenguaje
de dominio específico
para mutación de modelos
UNIVERSIDAD AUTÓNOMA DE MADRID
Pablo Gómez Abajo
Directores: Esther Guerra y Mercedes G. Merayo
Doctorado en Ingeniería Informática y de Telecomunicaciones, Julio 2020
2 de 51
✓ La mutación de un modelo es la variación de un modelo
semilla al que se aplica uno o más operadores de mutación
✓ La mutación de modelos tiene múltiples aplicaciones:
▪ Pruebas de transformación de modelos
▪ Pruebas de software basadas en modelos
▪ Pruebas de líneas de producto software
▪ Algoritmos genéticos
▪ Generación automática de ejercicios
▪ Pruebas de mutación
▪ …
0
101
0
110
1
010
Modelo semilla
Modelos
mutantes
...
if (a == true)
then ...
...
if (a != true)
then ...
Mutación
Modelo semilla Modelo mutante
¿Qué es la mutación de modelos?
Motivación
3 de 51
✓ Los entornos existentes para mutación de modelos son:
▪ Específicos para un lenguaje (p.ej., fórmulas lógicas)
▪ Específicos para un dominio (p.ej., pruebas)
▪ Los operadores de mutación están codificados a mano
✓ Se requiere un método fácil para crear aplicaciones basadas
en mutación de modelos
✓ No proporcionan utilidades para la mutación de modelos
como:
▪ Generación de las trazas de los modelos mutantes
▪ Primitivas potentes para crear los mutantes
▪ Validación de los mutantes
Objetivos
✓ Lenguaje independiente del dominio para mutación de
modelos- Wodel
▪ Primitivas de mutación de alto nivel
▪ Generación de modelos semilla
▪ Métricas de mutación
✓ Extensible para aplicaciones de los mutantes
▪ Wodel-Edu: Generación automática de ejercicios
▪ Wodel-Test: Creación de herramientas de pruebas de mutación
para lenguajes de programación o de modelado
✓ Utilizamos un enfoque basado en MDE
4 de 51
I. Conceptos previos
II. DSL Wodel
III. Entorno Wodel-Edu
IV. Entorno Wodel-Test
V. Conclusiones y trabajo futuro
5 de 51
Índice
I. Conceptos previos
6 de 51
I. Ingeniería dirigida por modelos
II. Transformación de modelos
III. Mutación de modelos
Ingeniería dirigida por modelos
✓ Modelo: descripción de un sistema utilizando un lenguaje
✓ Meta-modelo: modelo que describe un lenguaje
✓ Lenguaje de dominio específico:
▪ Ofrece los conceptos para un dominio de aplicación
▪ Gráfico o textual
▪ Primitivas de alto nivel
▪ Orientado a expertos en el dominio
▪ Traducido automáticamente a lenguajes como C, Java, etc.
7 de 51
Transformación de modelos
✓ Necesario para la manipulación de modelos
8 de 51
✓Caso especial de transformación de modelos
✓ Las primitivas de mutación de alto nivel son más potentes que
utilizar la transformación de modelos para aplicar mutación
Mutación de modelos
9 de 51
Modelo semilla Modelo mutante
Wodel
s0:InitialFinalState t:Transitionsrc
symbol
sym:Symbol
symbol= “1"
a:Automaton
states
alphabet
transitions
tar
s0:InitialFinalState
sym:Symbol
symbol= “1"
a:Automaton
states
alphabet
name = “s0” name = “s0”
II. Wodel
Un lenguaje de dominio
específico para mutación de
modelos
10 de 51
I. DSL de operadores de mutación
II. Servicios de ejecución
III. Servicios de desarrollo
IV. Herramienta proporcionada
Propuesta
✓ DSL Wodel para mutación de modelos con:
▪ Primitivas de mutación de alto nivel
▪ Independiente del dominio
▪ Compilado a Java
✓ Servicios de ejecución (extensibles)
▪ Validación de los mutantes
▪ Detección de los mutantes equivalentes
▪ Registro de mutaciones
▪ Extensible para diferentes aplicaciones
✓ Servicios de desarrollo
▪ Síntesis de modelos semilla
▪ Métricas de mutación
11 de 51
pruebas de transformación de modelos
pruebas de software basadas en modelos
pruebas de líneas de producto software
algoritmos genéticos
generación automática de ejercicios
pruebas de mutación
…
Esquema
12 de 51
modelos
semilla
meta-
modelo
«conforme a»
Programa
WODEL artefactos específicos del
dominio/aplicación
1
2
Motor de
WODEL
modelos
mutantes
+ registro
post-
procesado
4
«conforme a»
3
Ejemplo
generate 3 mutants in "out/" from "models/"
metamodel "http://fa.com"
description "Simple Wodel Program"
with blocks {
CNFS "Changes a final state to non-final and connects it with a new final state"
{
s0 = retype one FinalState as CommonState
s1 = create FinalState
t0 = create Transition with {src = s0, tar = s1, symbol = one Symbol}
}}
13 de 51
Operadores de mutación
14 de 51
✓ 9 primitivas de mutación
▪ crear, clonar, seleccionar, modificar, retipar y borrar información
✓Asignación automática de los elementos creados en contenedores
compatibles
✓Eliminación de referencias vacías al borrar elementos
✓ Comprobación de cardinalidades y restricciones OCL
✓ Cardinalidades de los operadores de mutación
Registro de mutaciones
✓ Trazas entre modelos semilla y modelos mutantes
✓ Opción de compactar el registro (mutaciones irrelevantes)
✓ Opciones de texto en Wodel-Edu
✓ Identificación del operador de mutación en Wodel-Test
15 de 51
Validación de los mutantes
✓ OCL en programa Wodel
✓ Punto de extensión (p.ej. modelo de autómata que acepta
un lenguaje determinado)
16 de 51
generate 2 mutants in "out/" from "models/"
metamodel "http://fa.com"
with blocks {
simple {
s0 = select one InitialState
s1 = select one State where {self not typed FinalState}
t0 = select one Transition where {src = s0}
modify one Transition where {tar = s1} with {swap(tar, t0->tar)}
} [2]
}
constraints {
context State connected:
"oclIsKindOf(InitialState) or
Set{self}->closure(s | Transition.allInstances()->select(t | t.tar=s)->collect(src))
->exists(s | s.oclIsKindOf(InitialState))"
}
Detección de mutantes equivalentes
17 de 51
✓ Equivalencia sintáctica
✓Equivalencia semántica
int inc(int value) {
// Incrementa el valor
return value + 1;
}
int inc(int value) {
return value + 1;
}
int inc(int value) {
// Incrementa el valor
return value + 1;
}
int inc(int value) {
// Incrementa el valor
return value + 1 + 0;
}
Síntesis de modelos semilla I
✓ Comprobar que los operadores de mutación están implementados
correctamente
✓ Basado en la búsqueda de modelos
18 de 51
SALIDA
mm de dominio
+ OCL
OCL
programa
Wodel
modelo
semilla
ENTRADA
mm enriquecido
buscador de
modelos
Síntesis de modelos semilla II
generate 2 mutants in "out/" from "models/"
metamodel http://fa.com
with blocks {
cs2fs "Retypes a common state as a final state"
{
retype one CommonState as FinalState
}
}
19 de 51
context Dummy
inv mut1 : CommonState.allInstances()->exists(s | true)
OCL
Modelo generado
Buscador de modelos
Métricas de mutación
✓Cobertura de mutación de los elementos
✓Métricas estáticas
▪ Elementos del meta-modelo afectados por las mutaciones
▪ Métricas del meta-modelo
▪ Métricas por operador
✓ Métricas dinámicas
▪ Efectos reales del programa de mutación
▪ Métricas netas
▪ Métricas de depuración
20 de 51
Arquitectura de la herramienta
21 de 51
IDE de la herramienta
Herramienta disponible en http://gomezabajo.github.io/Wodel/ junto con ejemplos, vídeos y tutoriales
22 de 51
III. Wodel-Edu
Generación de ejercicios
mediante mutación
23 de 51
Motivación
✓ Generación de un volumen grande de ejercicios tipo test
✓ Fáciles de generar
✓ Independientes del dominio
24 de 51
Se propone el entorno Wodel-Edu - extensión a Wodel
Propuesta
✓ Aplicación web con tres formatos de
ejercicios:
▪ Respuesta alternativa
▪ Selección de un diagrama entre varios
▪ Selección de opciones de texto
✓ Se requiere:
▪ Representación gráfica de los modelos
▪ Generación de las opciones de texto
▪ Generación de código HTML+JavaScript
25 de 51
Arquitectura de Wodel-Edu
26 de 51
Respuesta alternativa
27 de 51
Selección de diagrama múltiple
28 de 51
Selección de opciones de texto
✓ Opciones de texto a partir
del registro
✓ Utilización de los DSLs
modelText y mutaText
29 de 51
IDE de Wodel-Edu I
DSL eduTest
DSL modelDraw
30 de 51
IDE de Wodel-Edu II
DSL modelText
DSL mutaText
31 de 51
Evaluación de Wodel-Edu
✓ Aplicación web http://www.wodel.eu en el dominio de los
autómatas con tres secciones
▪ Opciones de texto
▪ Selección de un diagrama entre varios
▪ Respuesta alternativa
✓ Tres dimensiones, además de la nota obtenida (opcional)
▪ El ejercicio se entiende bien
▪ La dificultad del ejercicio es adecuada
▪ El ejercicio es útil para aprender autómatas
✓ 10 participantes entre 22 y 41 años (1 sin formación en
autómatas)
32 de 51
Conclusiones de la evaluación
✓ Se perciben como muy útiles para aprender autómatas
✓ Dificultad percibida razonable
✓ El ejercicio de selección de opciones de texto es el más
complicado de entender (la nota promedio fue de un 50%)
33 de 51
IV. Wodel-Test
Generación de herramientas
de pruebas de mutación
34 de 51
Motivación
✓ Las herramientas de pruebas de mutación son
▪ específicas para un lenguaje
▪ se desarrollan manualmente
▪ alto coste de mantenimiento
35 de 51
Se propone el entorno Wodel-Test - extensión a Wodel
para la generación de herramientas
de pruebas de mutación
Se implementan dos herramientas de pruebas de mutación
Wodel-Test para Java y Wodel-Test para ATL
¿Qué son las pruebas de mutación?
✓ Enfoque de pruebas de software
para evaluar la calidad de los
conjuntos de pruebas
✓ Introducción de cambios
sintácticos en un programa
mediante operadores de mutación
✓ Las mutaciones introducidas
emulan fallos comunes de
programación
✓ Facilita mejorar la calidad de los
conjuntos de pruebas
36 de 51
Proceso de Wodel-Test
37 de 51
Herramienta de pruebas de mutación
para Java
38 de 51
Herramienta de pruebas de mutación
generada
1) Explorador de proyectos
2) Ejemplo de programa mutante
3) Conjunto de pruebas
4) Resultados globales del proceso
de pruebas de mutación
39 de 51
✓Comparativa de Wodel-Test para Java con herramientas
existentes de pruebas de mutación para Java
✓Implementación de Wodel-Test para ATL con los operadores de
mutación introducidos en Troya et al.[1]
[1] Troya, J., Bergmayr, A., Burgueño, L. y Wimmer, M.: Towards systematic mutations for and with ATL model transformations. En
International conference on software testing, verification and validation workshops (ICSTW), págs. 1–10, 2015
Evaluación de Wodel-Test
RQ1
¿Permite Wodel-Test crear herramientas de pruebas de
mutación con capacidades similares a las herramientas de
pruebas de mutación creadas manualmente?
40 de 51
RQ2
¿Wodel-Test es efectivo para especificar herramientas de
pruebas de mutación?
Evaluación de Wodel-Test RQ1
41 de 51
Major Javalanche PITest LittleDarwin Wodel-Test/Java
N. de operadores 30 (por
defecto)
19 40 28 77 (por defecto)
Extensibilidad de ops. Sí (DSL) No API No Sí (DSL)
Artefacto mutado Bytecode Bytecode Bytecode AST Modelo
Código del mutante No No Sí Sí Sí
Detección equivalentes No Sí (invariantes
dinámicas)
No No Sí (TCE)
Tipo de informe CSV HTML HTML HTML Vistas interactivas
Número de mutantes
Mutation score
Mutantes muertos/vivos Número Número Número Número Número, lista
Cobertura de operadores Número Número Número Número, lista
Mutantes por clase
Pruebas por mutante
Mutantes por prueba
✓ ✓ ✓ ✓ ✓
✓ ✓ ✓ ✓ ✓

  
   
✓ ✓
✓
✓   
Evaluación de Wodel-Test RQ1
✓Aplicación del proceso de pruebas de mutación sobre el proyecto
functional-matrix1:
1https://github.com/soursop/functional-matrix-operator
42 de 51
Herramienta Mutantes
(muertos/vivos)
Mutation
score
Tiempo
ejecución
Tiempo por
mutante
Major 1638 (331/864) 20,21% 11h 21min 40seg 24,99seg
PITest 918 (321/597) 34,97% 56min 9seg 3,67seg
LittleDarwin 439 (130/309) 29,61% 2h 45min 27seg 22,61seg
Wodel-Test/Java 4756 (985/3771) 20,71% 2h 40min 27seg 2,02seg
Evaluación de Wodel-Test RQ2
✓ Wodel-Test para ATL con los operadores de mutación
introducidos en el trabajo de Troya et al.
✓ El prototipo de Troya et al. es un generador de
mutantes
✓ Wodel-Test para ATL proporciona la funcionalidad
completa de una herramienta de pruebas de mutación
para este lenguaje
43 de 51
Evaluación de Wodel-Test RQ2
✓ Operadores de mutación para ATL
44 de 51
Concepto Operador de
mutación
LOC en Wodel LOC en ATL
Regla Creación
Borrado
Cambio de nombre
1
1
1
-
-
-
Elemento de patrón de entrada Creación
Borrado
Cambio de tipo
Cambio de condición
6
1
4
1
14
-
-
-
Filtro de regla Creación
Borrado
Cambio de condición
10
1
4
-
-
-
Elemento de patrón de salida Creación
Borrado
Cambio de tipo
Cambio de nombre
6
1
4
1
-
6
-
-
Binding Creación
Borrado
Cambio de valor
Cambio de propiedad
6
1
2
6
-
3
-
-
Conclusiones de la evaluación
✓ Wodel-Test proporciona una funcionalidad comparable a la de
las herramientas de pruebas de mutación existentes para Java
✓ Wodel-Test puede ser una mejor opción:
▪ Acceso al código fuente de los mutantes
▪ Razonar sobre qué mutantes reducen el mutation score y por qué
▪ Experimentar con nuevos operadores de mutación
✓ Las herramientas de pruebas de mutación existentes requieren
dos órdenes de magnitud más de código que la especificación de
un entorno similar utilizando Wodel-Test
45 de 51
V. Conclusiones y trabajo
futuro
46 de 51
Conclusiones
✓ La mutación está presente en múltiples dominios en la ingeniería
del software
✓ Las soluciones existentes son específicas para cada caso
✓ Se ha propuesto Wodel que es un DSL para mutación de modelos
✓ Se han hecho dos aplicaciones:
◦ Generación de ejercicios
◦ Pruebas de mutación
47 de 51
Trabajo futuro
✓ Servicios de Wodel
▪ generación de modelos near misses: verificación de la implementación correcta de los
operadores de mutación
▪ técnicas de análisis estático para detectar conflictos y dependencias entre los operadores
✓ Nuevas aplicaciones de Wodel
▪ ingeniería basada en búsqueda
✓ Wodel-Edu
▪ entornos de aprendizaje más complejos (gamificación)
▪ ejercicios (p. ej., que sean interactivos)
▪ diferentes plataformas (móviles o tablets)
▪ ejercicios para Moodle
✓ Wodel-Test
▪ abordar programas más grandes
▪ optimizaciones del proceso de pruebas de mutación
▪ estudio con usuarios para analizar la usabilidad
48 de 51
Publicaciones I
Revistas (3):
◦ P. Gómez-Abajo, E. Guerra, y J. de Lara. A domain-specific language for model
mutation and its application to the automated generation of exercises. Computer
Languages, Systems & Structures, 49:152 – 173, 2017. Elsevier. Índice de impacto: JCR
2017: 1,840. Q2 en Computer Science / Software Engineering
◦ P. Gómez-Abajo, E. Guerra, J. de Lara, y M. G. Merayo. A tool for domain independent
model mutation. Science of Computer Programming, 163:85–92, 2018. Elsevier. Índice
de impacto: JCR 2018: 1,088 Q3 en Computer Science / Software Engineering
◦ P. Gómez-Abajo, E. Guerra, J. de Lara, y M. G. Merayo. Systematic Engineering of
Mutation Operators. Journal of Object Technology Special Issue dedicated to Martin
Gogolla
Revistas en proceso de revisión (1):
◦ P. Gómez-Abajo, E. Guerra, J. de Lara, y M. G. Merayo. A model-based framework for
language-independent mutation testing. Software and Systems Modeling. Springer.
Índice de impacto: JCR 2018: 2,660. Q1 en Computer Science / Software Engineering.
En segunda ronda de revisión
49 de 51
Publicaciones II
Congresos internacionales y workshops (4):
◦ P. Gómez-Abajo, E. Guerra, y J. de Lara. Wodel: a domain-specific language for model mutation.
31st ACM/SIGAPP Symposium on Applied Computing, SAC, páginas 1968–1973. ACM, 2016.
Porcentaje de aceptación: 24,07%
◦ P. Gómez-Abajo. A DSL for model mutation and its application to different domains. Doctoral
Symposium at the 19th ACM/IEEE International Conference of Model-Driven Engineering
Languages and Systems, MoDELS. ACM/IEEE, 2016
◦ P. Gómez-Abajo, E. Guerra, J. de Lara, y M. G. Merayo. Mutation Testing for DSLs (Tool Demo).
17th ACM SIGPLAN International Workshop on Domain-Specific Modeling, DSM, páginas 60–62.
ACM, 2019
◦ P. Gómez-Abajo, E. Guerra, J. de Lara, y M. G. Merayo. Seed Model Synthesis for Testing Model-
based Mutation Operators. 32nd International Conference on Advanced Information Systems
Engineering, CAiSE Forum. ACM, 2020
Congresos nacionales (1):
◦ P. Gómez-Abajo, E. Guerra, J. de Lara, y M. G. Merayo. Towards a model-driven engineering
solution for language independent mutation testing. En Jornadas de Ingeniería del Software y
Bases de Datos (JISBD), página 4pps. Biblioteca digital SISTEDES, 2018
Presentaciones en cursos y seminarios internacionales (1):
◦ P. Gómez-Abajo, E. Guerra, y J. de Lara. Wodel: a DSL for model mutation; and Wodel- Edu: its
application to the automated generation of exercises. En 7th International Summer School on
Domain-Specific Modeling, DSM-TP, 2016
50 de 51
51 de 51
¡GRACIAS!
Pablo.GomezA@uam.es
• Opciones generadas: correctas
1. Retype final state q2 as common state
2. Change transition a from state q1 to state q0 with
new target state q1
• Opciones generadas: incorrectas
1. Retype initial state q0 as initial final state
2. Change transition b from state q2 to state q2 with
new target state q0
A. Modelo semilla B. Mutante de A (mostrado) C. Mutante de B
Mutaciones de los pasos 1 y 2:
Paso 1 Paso 2
modify target tar from one Transition to other State
retype one CommonState as FinalState
Selección de opciones de texto
motor de
WODEL
equivalencia
sintáctica
WODEL-TEST
postProc
2
1
LanguageService
Provider
projectToModel()
modelToProject()
annotateMutation()
compile()
run()
3
equivalencia
semántica
ESPEC MT DEL
LENGUAJE
equivalencia
EMFCompare
«interfaz»
«requiere»
«utiliza»
4
Trivial
compiler
equivalence
«utiliza»registro
de mutación
programas WODEL
(meta-modelo + ops. mutación)
«incluye»
Arquitectura de Wodel-Test

Más contenido relacionado

La actualidad más candente

TypeScript para Javeros: Cómo programar web front-end y sentirse como en casa
TypeScript para Javeros: Cómo programar web front-end y sentirse como en casaTypeScript para Javeros: Cómo programar web front-end y sentirse como en casa
TypeScript para Javeros: Cómo programar web front-end y sentirse como en casa
Micael Gallego
 
oTema6 pruebas del software
oTema6 pruebas del softwareoTema6 pruebas del software
oTema6 pruebas del softwareSilvia Guilcapi
 
JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?
JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?
JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?
Micael Gallego
 
Caja negra
Caja negraCaja negra
Caja negra
gio191919
 
Ejercicios de Java Básico. Listado 1 de Ejercicios.Programación.
Ejercicios de Java Básico. Listado 1 de Ejercicios.Programación.Ejercicios de Java Básico. Listado 1 de Ejercicios.Programación.
Ejercicios de Java Básico. Listado 1 de Ejercicios.Programación.
Isabel Gómez
 
Ejercicios de evaluación de fundametnos de programacion en JAva
Ejercicios de evaluación de fundametnos de programacion en JAvaEjercicios de evaluación de fundametnos de programacion en JAva
Ejercicios de evaluación de fundametnos de programacion en JAva
Martha Beatriz Coronado Rosales
 
tipos de pruebas
tipos de pruebastipos de pruebas
tipos de pruebas
Juan Briceño
 
The billion dollar mistake
The billion dollar mistakeThe billion dollar mistake
The billion dollar mistake
Alvaro García Loaisa
 
Java
Java Java

La actualidad más candente (11)

TypeScript para Javeros: Cómo programar web front-end y sentirse como en casa
TypeScript para Javeros: Cómo programar web front-end y sentirse como en casaTypeScript para Javeros: Cómo programar web front-end y sentirse como en casa
TypeScript para Javeros: Cómo programar web front-end y sentirse como en casa
 
oTema6 pruebas del software
oTema6 pruebas del softwareoTema6 pruebas del software
oTema6 pruebas del software
 
JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?
JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?
JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?
 
Caja negra
Caja negraCaja negra
Caja negra
 
Ejercicios de Java Básico. Listado 1 de Ejercicios.Programación.
Ejercicios de Java Básico. Listado 1 de Ejercicios.Programación.Ejercicios de Java Básico. Listado 1 de Ejercicios.Programación.
Ejercicios de Java Básico. Listado 1 de Ejercicios.Programación.
 
Ejercicios de evaluación de fundametnos de programacion en JAva
Ejercicios de evaluación de fundametnos de programacion en JAvaEjercicios de evaluación de fundametnos de programacion en JAva
Ejercicios de evaluación de fundametnos de programacion en JAva
 
tipos de pruebas
tipos de pruebastipos de pruebas
tipos de pruebas
 
Funciones
FuncionesFunciones
Funciones
 
The billion dollar mistake
The billion dollar mistakeThe billion dollar mistake
The billion dollar mistake
 
Java
Java Java
Java
 
Pl
PlPl
Pl
 

Similar a PhD defense presentation

ATL
ATLATL
1.1. Conceptos preliminares sobre la evolucion y desarrollo de los leguajes d...
1.1. Conceptos preliminares sobre la evolucion y desarrollo de los leguajes d...1.1. Conceptos preliminares sobre la evolucion y desarrollo de los leguajes d...
1.1. Conceptos preliminares sobre la evolucion y desarrollo de los leguajes d...
LeonelCortes5
 
Tutorial de prolog
Tutorial de prologTutorial de prolog
Tutorial de prologPedro Vera
 
Webinar como modernizar aplicaciones legacy y abandonar tecnologías obsoletas
Webinar como modernizar aplicaciones legacy y abandonar tecnologías obsoletasWebinar como modernizar aplicaciones legacy y abandonar tecnologías obsoletas
Webinar como modernizar aplicaciones legacy y abandonar tecnologías obsoletas
atSistemas
 
20090723 Presentacion Pfc
20090723 Presentacion Pfc20090723 Presentacion Pfc
20090723 Presentacion Pfcazubi
 
20090723 Presentacion Pfc
20090723 Presentacion Pfc20090723 Presentacion Pfc
20090723 Presentacion Pfcazubi
 
Ingeniería del Software dirigida por modelos -Versión para incrédulos
Ingeniería del Software dirigida por modelos -Versión para incrédulosIngeniería del Software dirigida por modelos -Versión para incrédulos
Ingeniería del Software dirigida por modelos -Versión para incrédulos
Jordi Cabot
 
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...
Miguel Ángel Sánchez Chordi
 
Grammarware engineering: un enfoque dirigido por modelos
Grammarware engineering: un enfoque dirigido por modelosGrammarware engineering: un enfoque dirigido por modelos
Grammarware engineering: un enfoque dirigido por modelos
Patxi Gortázar
 
Java Ago Dic07
Java Ago Dic07Java Ago Dic07
Java Ago Dic07adrianpro
 
Migracion a Visual Basic .NET
Migracion a Visual Basic .NETMigracion a Visual Basic .NET
Migracion a Visual Basic .NET
V Sanchez
 
Programación en C#.pptx
Programación en C#.pptxProgramación en C#.pptx
Programación en C#.pptx
RosmaryDS
 
Taller evento TestingUY 2015 - Técnicas de Automatización Going from GOOD to ...
Taller evento TestingUY 2015 - Técnicas de Automatización Going from GOOD to ...Taller evento TestingUY 2015 - Técnicas de Automatización Going from GOOD to ...
Taller evento TestingUY 2015 - Técnicas de Automatización Going from GOOD to ...
TestingUy
 
Grails barcamp 2013
Grails barcamp 2013Grails barcamp 2013
Grails barcamp 2013
Carlos Camacho
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño I
jjegonzalezf
 
PD1_7moA_TS3_JavierLogroño.pptx
PD1_7moA_TS3_JavierLogroño.pptxPD1_7moA_TS3_JavierLogroño.pptx
PD1_7moA_TS3_JavierLogroño.pptx
EddyJavierLogrooLen
 
Desarrollo de aplicasiones .net
Desarrollo de aplicasiones .netDesarrollo de aplicasiones .net
Desarrollo de aplicasiones .net
jesus lopez
 
Grails 2013 - PUCMM - Santiago - Sistemas
Grails 2013 - PUCMM - Santiago - SistemasGrails 2013 - PUCMM - Santiago - Sistemas
Grails 2013 - PUCMM - Santiago - Sistemas
Carlos Camacho
 
Optimizacion de software
Optimizacion de softwareOptimizacion de software
Optimizacion de software
Oskar Barrio Ferreiro
 

Similar a PhD defense presentation (20)

ATL
ATLATL
ATL
 
1.1. Conceptos preliminares sobre la evolucion y desarrollo de los leguajes d...
1.1. Conceptos preliminares sobre la evolucion y desarrollo de los leguajes d...1.1. Conceptos preliminares sobre la evolucion y desarrollo de los leguajes d...
1.1. Conceptos preliminares sobre la evolucion y desarrollo de los leguajes d...
 
Tutorial de prolog
Tutorial de prologTutorial de prolog
Tutorial de prolog
 
Webinar como modernizar aplicaciones legacy y abandonar tecnologías obsoletas
Webinar como modernizar aplicaciones legacy y abandonar tecnologías obsoletasWebinar como modernizar aplicaciones legacy y abandonar tecnologías obsoletas
Webinar como modernizar aplicaciones legacy y abandonar tecnologías obsoletas
 
20090723 Presentacion Pfc
20090723 Presentacion Pfc20090723 Presentacion Pfc
20090723 Presentacion Pfc
 
20090723 Presentacion Pfc
20090723 Presentacion Pfc20090723 Presentacion Pfc
20090723 Presentacion Pfc
 
Ingeniería del Software dirigida por modelos -Versión para incrédulos
Ingeniería del Software dirigida por modelos -Versión para incrédulosIngeniería del Software dirigida por modelos -Versión para incrédulos
Ingeniería del Software dirigida por modelos -Versión para incrédulos
 
Visual studio introduccion
Visual studio introduccionVisual studio introduccion
Visual studio introduccion
 
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...
 
Grammarware engineering: un enfoque dirigido por modelos
Grammarware engineering: un enfoque dirigido por modelosGrammarware engineering: un enfoque dirigido por modelos
Grammarware engineering: un enfoque dirigido por modelos
 
Java Ago Dic07
Java Ago Dic07Java Ago Dic07
Java Ago Dic07
 
Migracion a Visual Basic .NET
Migracion a Visual Basic .NETMigracion a Visual Basic .NET
Migracion a Visual Basic .NET
 
Programación en C#.pptx
Programación en C#.pptxProgramación en C#.pptx
Programación en C#.pptx
 
Taller evento TestingUY 2015 - Técnicas de Automatización Going from GOOD to ...
Taller evento TestingUY 2015 - Técnicas de Automatización Going from GOOD to ...Taller evento TestingUY 2015 - Técnicas de Automatización Going from GOOD to ...
Taller evento TestingUY 2015 - Técnicas de Automatización Going from GOOD to ...
 
Grails barcamp 2013
Grails barcamp 2013Grails barcamp 2013
Grails barcamp 2013
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño I
 
PD1_7moA_TS3_JavierLogroño.pptx
PD1_7moA_TS3_JavierLogroño.pptxPD1_7moA_TS3_JavierLogroño.pptx
PD1_7moA_TS3_JavierLogroño.pptx
 
Desarrollo de aplicasiones .net
Desarrollo de aplicasiones .netDesarrollo de aplicasiones .net
Desarrollo de aplicasiones .net
 
Grails 2013 - PUCMM - Santiago - Sistemas
Grails 2013 - PUCMM - Santiago - SistemasGrails 2013 - PUCMM - Santiago - Sistemas
Grails 2013 - PUCMM - Santiago - Sistemas
 
Optimizacion de software
Optimizacion de softwareOptimizacion de software
Optimizacion de software
 

Más de Pablo Gómez Abajo

Wodel-Edu: A tool for the generation and evaluation of diagram-based exercises
Wodel-Edu: A tool for the generation and evaluation of diagram-based exercisesWodel-Edu: A tool for the generation and evaluation of diagram-based exercises
Wodel-Edu: A tool for the generation and evaluation of diagram-based exercises
Pablo Gómez Abajo
 
Automated engineering of domain-specific metamorphic testing environments
Automated engineering of domain-specific metamorphic testing environmentsAutomated engineering of domain-specific metamorphic testing environments
Automated engineering of domain-specific metamorphic testing environments
Pablo Gómez Abajo
 
Wodel-Test: A Model-Based Framework for Language-Independent Mutation Testing
Wodel-Test: A Model-Based Framework for Language-Independent Mutation TestingWodel-Test: A Model-Based Framework for Language-Independent Mutation Testing
Wodel-Test: A Model-Based Framework for Language-Independent Mutation Testing
Pablo Gómez Abajo
 
Wodel-Edu: An MDE Solution for the Generation and Evaluation of Diagram-based...
Wodel-Edu: An MDE Solution for the Generation and Evaluation of Diagram-based...Wodel-Edu: An MDE Solution for the Generation and Evaluation of Diagram-based...
Wodel-Edu: An MDE Solution for the Generation and Evaluation of Diagram-based...
Pablo Gómez Abajo
 
Generation of mutation testing tools with Wodel-Test
Generation of mutation testing tools with Wodel-TestGeneration of mutation testing tools with Wodel-Test
Generation of mutation testing tools with Wodel-Test
Pablo Gómez Abajo
 
Programación de macros en Microsoft Excel VBA
Programación de macros en Microsoft Excel VBAProgramación de macros en Microsoft Excel VBA
Programación de macros en Microsoft Excel VBA
Pablo Gómez Abajo
 
Seed Model Synthesis for Testing Model-based Mutation Operators
Seed Model Synthesis for Testing Model-based Mutation OperatorsSeed Model Synthesis for Testing Model-based Mutation Operators
Seed Model Synthesis for Testing Model-based Mutation Operators
Pablo Gómez Abajo
 
Mutation Testing for DSLs (Tool Demo)
Mutation Testing for DSLs (Tool Demo)Mutation Testing for DSLs (Tool Demo)
Mutation Testing for DSLs (Tool Demo)
Pablo Gómez Abajo
 
Towards a model-driven engineering solution for language independent mutation...
Towards a model-driven engineering solution for language independent mutation...Towards a model-driven engineering solution for language independent mutation...
Towards a model-driven engineering solution for language independent mutation...
Pablo Gómez Abajo
 
Wodel: A DSL for Model Mutation; and Wodel-Edu: its Application to the Automa...
Wodel: A DSL for Model Mutation; and Wodel-Edu: its Application to the Automa...Wodel: A DSL for Model Mutation; and Wodel-Edu: its Application to the Automa...
Wodel: A DSL for Model Mutation; and Wodel-Edu: its Application to the Automa...
Pablo Gómez Abajo
 
A DSL for Model Mutation and its Applications to Different Domains
A DSL for Model Mutation and its Applications to Different DomainsA DSL for Model Mutation and its Applications to Different Domains
A DSL for Model Mutation and its Applications to Different Domains
Pablo Gómez Abajo
 
Wodel: A Domain-Specific Language for Model Mutation
Wodel: A Domain-Specific Language for Model MutationWodel: A Domain-Specific Language for Model Mutation
Wodel: A Domain-Specific Language for Model Mutation
Pablo Gómez Abajo
 

Más de Pablo Gómez Abajo (12)

Wodel-Edu: A tool for the generation and evaluation of diagram-based exercises
Wodel-Edu: A tool for the generation and evaluation of diagram-based exercisesWodel-Edu: A tool for the generation and evaluation of diagram-based exercises
Wodel-Edu: A tool for the generation and evaluation of diagram-based exercises
 
Automated engineering of domain-specific metamorphic testing environments
Automated engineering of domain-specific metamorphic testing environmentsAutomated engineering of domain-specific metamorphic testing environments
Automated engineering of domain-specific metamorphic testing environments
 
Wodel-Test: A Model-Based Framework for Language-Independent Mutation Testing
Wodel-Test: A Model-Based Framework for Language-Independent Mutation TestingWodel-Test: A Model-Based Framework for Language-Independent Mutation Testing
Wodel-Test: A Model-Based Framework for Language-Independent Mutation Testing
 
Wodel-Edu: An MDE Solution for the Generation and Evaluation of Diagram-based...
Wodel-Edu: An MDE Solution for the Generation and Evaluation of Diagram-based...Wodel-Edu: An MDE Solution for the Generation and Evaluation of Diagram-based...
Wodel-Edu: An MDE Solution for the Generation and Evaluation of Diagram-based...
 
Generation of mutation testing tools with Wodel-Test
Generation of mutation testing tools with Wodel-TestGeneration of mutation testing tools with Wodel-Test
Generation of mutation testing tools with Wodel-Test
 
Programación de macros en Microsoft Excel VBA
Programación de macros en Microsoft Excel VBAProgramación de macros en Microsoft Excel VBA
Programación de macros en Microsoft Excel VBA
 
Seed Model Synthesis for Testing Model-based Mutation Operators
Seed Model Synthesis for Testing Model-based Mutation OperatorsSeed Model Synthesis for Testing Model-based Mutation Operators
Seed Model Synthesis for Testing Model-based Mutation Operators
 
Mutation Testing for DSLs (Tool Demo)
Mutation Testing for DSLs (Tool Demo)Mutation Testing for DSLs (Tool Demo)
Mutation Testing for DSLs (Tool Demo)
 
Towards a model-driven engineering solution for language independent mutation...
Towards a model-driven engineering solution for language independent mutation...Towards a model-driven engineering solution for language independent mutation...
Towards a model-driven engineering solution for language independent mutation...
 
Wodel: A DSL for Model Mutation; and Wodel-Edu: its Application to the Automa...
Wodel: A DSL for Model Mutation; and Wodel-Edu: its Application to the Automa...Wodel: A DSL for Model Mutation; and Wodel-Edu: its Application to the Automa...
Wodel: A DSL for Model Mutation; and Wodel-Edu: its Application to the Automa...
 
A DSL for Model Mutation and its Applications to Different Domains
A DSL for Model Mutation and its Applications to Different DomainsA DSL for Model Mutation and its Applications to Different Domains
A DSL for Model Mutation and its Applications to Different Domains
 
Wodel: A Domain-Specific Language for Model Mutation
Wodel: A Domain-Specific Language for Model MutationWodel: A Domain-Specific Language for Model Mutation
Wodel: A Domain-Specific Language for Model Mutation
 

Último

VIRUS COXSACKIE, CASOS CLÍNICOS, ANÁLISIS, MORFOLOGÍA ENTRE OTROS
VIRUS COXSACKIE, CASOS CLÍNICOS, ANÁLISIS, MORFOLOGÍA ENTRE OTROSVIRUS COXSACKIE, CASOS CLÍNICOS, ANÁLISIS, MORFOLOGÍA ENTRE OTROS
VIRUS COXSACKIE, CASOS CLÍNICOS, ANÁLISIS, MORFOLOGÍA ENTRE OTROS
alexacruz1502
 
Ultrasonido Fast y métodos DX trauma.pptx
Ultrasonido Fast y métodos DX trauma.pptxUltrasonido Fast y métodos DX trauma.pptx
Ultrasonido Fast y métodos DX trauma.pptx
LuisAlfredoChavarra
 
Pinker, Steven. - La tabla rasa. La negacion moderna de la naturaleza humana ...
Pinker, Steven. - La tabla rasa. La negacion moderna de la naturaleza humana ...Pinker, Steven. - La tabla rasa. La negacion moderna de la naturaleza humana ...
Pinker, Steven. - La tabla rasa. La negacion moderna de la naturaleza humana ...
frank0071
 
Cap 35 Resistencia del Organismo a la Infeccion II INMUNIDAD.pptx
Cap 35 Resistencia  del Organismo a la Infeccion II INMUNIDAD.pptxCap 35 Resistencia  del Organismo a la Infeccion II INMUNIDAD.pptx
Cap 35 Resistencia del Organismo a la Infeccion II INMUNIDAD.pptx
MailyAses
 
10 razones para estudiar filosofia1.pptx
10 razones para estudiar filosofia1.pptx10 razones para estudiar filosofia1.pptx
10 razones para estudiar filosofia1.pptx
2024311042
 
Pelvis y periné anatomía clínica básica
Pelvis y periné anatomía clínica básicaPelvis y periné anatomía clínica básica
Pelvis y periné anatomía clínica básica
manuelminion05
 
CEFALEAS CLASIFICACIÓN, TRATAMIENTO Y PREVENCION
CEFALEAS CLASIFICACIÓN, TRATAMIENTO Y PREVENCIONCEFALEAS CLASIFICACIÓN, TRATAMIENTO Y PREVENCION
CEFALEAS CLASIFICACIÓN, TRATAMIENTO Y PREVENCION
do4alexwell
 
Historia Electromagnetismo .... Física M
Historia Electromagnetismo .... Física MHistoria Electromagnetismo .... Física M
Historia Electromagnetismo .... Física M
RichardVasquez80
 
Sistemas-de-Produccion-Porcina dispositi
Sistemas-de-Produccion-Porcina dispositiSistemas-de-Produccion-Porcina dispositi
Sistemas-de-Produccion-Porcina dispositi
dubaicams1
 
Tipos-de-Fracciones-Algebraicas1234.pptx
Tipos-de-Fracciones-Algebraicas1234.pptxTipos-de-Fracciones-Algebraicas1234.pptx
Tipos-de-Fracciones-Algebraicas1234.pptx
JonathanMorales422812
 
terapia hormonal de la menopausia.......
terapia hormonal de la menopausia.......terapia hormonal de la menopausia.......
terapia hormonal de la menopausia.......
JosalbertoLpezLpez
 
5 RECETA MEDICA. TIPOS DE RECETAS FARMACIA
5  RECETA MEDICA. TIPOS DE RECETAS FARMACIA5  RECETA MEDICA. TIPOS DE RECETAS FARMACIA
5 RECETA MEDICA. TIPOS DE RECETAS FARMACIA
solizines27
 
Nodulo tiroideo presentacion de power point
Nodulo tiroideo presentacion de power pointNodulo tiroideo presentacion de power point
Nodulo tiroideo presentacion de power point
iansam1319
 
Algebra trigonometria y geometri analitica 3ra Edicio Dennis G. Zill.pdf
Algebra trigonometria y geometri analitica 3ra Edicio Dennis G. Zill.pdfAlgebra trigonometria y geometri analitica 3ra Edicio Dennis G. Zill.pdf
Algebra trigonometria y geometri analitica 3ra Edicio Dennis G. Zill.pdf
alejandro esteban concha leiva
 
5+La+alimentación+de+la+trucha+arcoíris+_versión+final+(1).pdf
5+La+alimentación+de+la+trucha+arcoíris+_versión+final+(1).pdf5+La+alimentación+de+la+trucha+arcoíris+_versión+final+(1).pdf
5+La+alimentación+de+la+trucha+arcoíris+_versión+final+(1).pdf
EdsonCienfuegos
 
CAMBIOS INSTITUCIONALES Y NORMATIVOS. CIENCIAS SOCIALES
CAMBIOS INSTITUCIONALES Y NORMATIVOS. CIENCIAS SOCIALESCAMBIOS INSTITUCIONALES Y NORMATIVOS. CIENCIAS SOCIALES
CAMBIOS INSTITUCIONALES Y NORMATIVOS. CIENCIAS SOCIALES
dianamichelleolivier
 
son mas ejercicios_de_estequiometria.docx
son mas ejercicios_de_estequiometria.docxson mas ejercicios_de_estequiometria.docx
son mas ejercicios_de_estequiometria.docx
Alondracarrasco8
 
Presentación de diapositivas sobre los gases nobles
Presentación de diapositivas sobre los gases noblesPresentación de diapositivas sobre los gases nobles
Presentación de diapositivas sobre los gases nobles
OresterPrieto
 
Ejercicios formulación 3ºESO nomenclatura y formulación compuestos binarios
Ejercicios formulación 3ºESO nomenclatura y formulación compuestos binariosEjercicios formulación 3ºESO nomenclatura y formulación compuestos binarios
Ejercicios formulación 3ºESO nomenclatura y formulación compuestos binarios
penfistiella
 
Hayek, Friedrich A. - Camino de servidumbre [ocr] [2000].pdf
Hayek, Friedrich A. - Camino de servidumbre [ocr] [2000].pdfHayek, Friedrich A. - Camino de servidumbre [ocr] [2000].pdf
Hayek, Friedrich A. - Camino de servidumbre [ocr] [2000].pdf
frank0071
 

Último (20)

VIRUS COXSACKIE, CASOS CLÍNICOS, ANÁLISIS, MORFOLOGÍA ENTRE OTROS
VIRUS COXSACKIE, CASOS CLÍNICOS, ANÁLISIS, MORFOLOGÍA ENTRE OTROSVIRUS COXSACKIE, CASOS CLÍNICOS, ANÁLISIS, MORFOLOGÍA ENTRE OTROS
VIRUS COXSACKIE, CASOS CLÍNICOS, ANÁLISIS, MORFOLOGÍA ENTRE OTROS
 
Ultrasonido Fast y métodos DX trauma.pptx
Ultrasonido Fast y métodos DX trauma.pptxUltrasonido Fast y métodos DX trauma.pptx
Ultrasonido Fast y métodos DX trauma.pptx
 
Pinker, Steven. - La tabla rasa. La negacion moderna de la naturaleza humana ...
Pinker, Steven. - La tabla rasa. La negacion moderna de la naturaleza humana ...Pinker, Steven. - La tabla rasa. La negacion moderna de la naturaleza humana ...
Pinker, Steven. - La tabla rasa. La negacion moderna de la naturaleza humana ...
 
Cap 35 Resistencia del Organismo a la Infeccion II INMUNIDAD.pptx
Cap 35 Resistencia  del Organismo a la Infeccion II INMUNIDAD.pptxCap 35 Resistencia  del Organismo a la Infeccion II INMUNIDAD.pptx
Cap 35 Resistencia del Organismo a la Infeccion II INMUNIDAD.pptx
 
10 razones para estudiar filosofia1.pptx
10 razones para estudiar filosofia1.pptx10 razones para estudiar filosofia1.pptx
10 razones para estudiar filosofia1.pptx
 
Pelvis y periné anatomía clínica básica
Pelvis y periné anatomía clínica básicaPelvis y periné anatomía clínica básica
Pelvis y periné anatomía clínica básica
 
CEFALEAS CLASIFICACIÓN, TRATAMIENTO Y PREVENCION
CEFALEAS CLASIFICACIÓN, TRATAMIENTO Y PREVENCIONCEFALEAS CLASIFICACIÓN, TRATAMIENTO Y PREVENCION
CEFALEAS CLASIFICACIÓN, TRATAMIENTO Y PREVENCION
 
Historia Electromagnetismo .... Física M
Historia Electromagnetismo .... Física MHistoria Electromagnetismo .... Física M
Historia Electromagnetismo .... Física M
 
Sistemas-de-Produccion-Porcina dispositi
Sistemas-de-Produccion-Porcina dispositiSistemas-de-Produccion-Porcina dispositi
Sistemas-de-Produccion-Porcina dispositi
 
Tipos-de-Fracciones-Algebraicas1234.pptx
Tipos-de-Fracciones-Algebraicas1234.pptxTipos-de-Fracciones-Algebraicas1234.pptx
Tipos-de-Fracciones-Algebraicas1234.pptx
 
terapia hormonal de la menopausia.......
terapia hormonal de la menopausia.......terapia hormonal de la menopausia.......
terapia hormonal de la menopausia.......
 
5 RECETA MEDICA. TIPOS DE RECETAS FARMACIA
5  RECETA MEDICA. TIPOS DE RECETAS FARMACIA5  RECETA MEDICA. TIPOS DE RECETAS FARMACIA
5 RECETA MEDICA. TIPOS DE RECETAS FARMACIA
 
Nodulo tiroideo presentacion de power point
Nodulo tiroideo presentacion de power pointNodulo tiroideo presentacion de power point
Nodulo tiroideo presentacion de power point
 
Algebra trigonometria y geometri analitica 3ra Edicio Dennis G. Zill.pdf
Algebra trigonometria y geometri analitica 3ra Edicio Dennis G. Zill.pdfAlgebra trigonometria y geometri analitica 3ra Edicio Dennis G. Zill.pdf
Algebra trigonometria y geometri analitica 3ra Edicio Dennis G. Zill.pdf
 
5+La+alimentación+de+la+trucha+arcoíris+_versión+final+(1).pdf
5+La+alimentación+de+la+trucha+arcoíris+_versión+final+(1).pdf5+La+alimentación+de+la+trucha+arcoíris+_versión+final+(1).pdf
5+La+alimentación+de+la+trucha+arcoíris+_versión+final+(1).pdf
 
CAMBIOS INSTITUCIONALES Y NORMATIVOS. CIENCIAS SOCIALES
CAMBIOS INSTITUCIONALES Y NORMATIVOS. CIENCIAS SOCIALESCAMBIOS INSTITUCIONALES Y NORMATIVOS. CIENCIAS SOCIALES
CAMBIOS INSTITUCIONALES Y NORMATIVOS. CIENCIAS SOCIALES
 
son mas ejercicios_de_estequiometria.docx
son mas ejercicios_de_estequiometria.docxson mas ejercicios_de_estequiometria.docx
son mas ejercicios_de_estequiometria.docx
 
Presentación de diapositivas sobre los gases nobles
Presentación de diapositivas sobre los gases noblesPresentación de diapositivas sobre los gases nobles
Presentación de diapositivas sobre los gases nobles
 
Ejercicios formulación 3ºESO nomenclatura y formulación compuestos binarios
Ejercicios formulación 3ºESO nomenclatura y formulación compuestos binariosEjercicios formulación 3ºESO nomenclatura y formulación compuestos binarios
Ejercicios formulación 3ºESO nomenclatura y formulación compuestos binarios
 
Hayek, Friedrich A. - Camino de servidumbre [ocr] [2000].pdf
Hayek, Friedrich A. - Camino de servidumbre [ocr] [2000].pdfHayek, Friedrich A. - Camino de servidumbre [ocr] [2000].pdf
Hayek, Friedrich A. - Camino de servidumbre [ocr] [2000].pdf
 

PhD defense presentation

  • 1. Un lenguaje de dominio específico para mutación de modelos UNIVERSIDAD AUTÓNOMA DE MADRID Pablo Gómez Abajo Directores: Esther Guerra y Mercedes G. Merayo Doctorado en Ingeniería Informática y de Telecomunicaciones, Julio 2020
  • 2. 2 de 51 ✓ La mutación de un modelo es la variación de un modelo semilla al que se aplica uno o más operadores de mutación ✓ La mutación de modelos tiene múltiples aplicaciones: ▪ Pruebas de transformación de modelos ▪ Pruebas de software basadas en modelos ▪ Pruebas de líneas de producto software ▪ Algoritmos genéticos ▪ Generación automática de ejercicios ▪ Pruebas de mutación ▪ … 0 101 0 110 1 010 Modelo semilla Modelos mutantes ... if (a == true) then ... ... if (a != true) then ... Mutación Modelo semilla Modelo mutante ¿Qué es la mutación de modelos?
  • 3. Motivación 3 de 51 ✓ Los entornos existentes para mutación de modelos son: ▪ Específicos para un lenguaje (p.ej., fórmulas lógicas) ▪ Específicos para un dominio (p.ej., pruebas) ▪ Los operadores de mutación están codificados a mano ✓ Se requiere un método fácil para crear aplicaciones basadas en mutación de modelos ✓ No proporcionan utilidades para la mutación de modelos como: ▪ Generación de las trazas de los modelos mutantes ▪ Primitivas potentes para crear los mutantes ▪ Validación de los mutantes
  • 4. Objetivos ✓ Lenguaje independiente del dominio para mutación de modelos- Wodel ▪ Primitivas de mutación de alto nivel ▪ Generación de modelos semilla ▪ Métricas de mutación ✓ Extensible para aplicaciones de los mutantes ▪ Wodel-Edu: Generación automática de ejercicios ▪ Wodel-Test: Creación de herramientas de pruebas de mutación para lenguajes de programación o de modelado ✓ Utilizamos un enfoque basado en MDE 4 de 51
  • 5. I. Conceptos previos II. DSL Wodel III. Entorno Wodel-Edu IV. Entorno Wodel-Test V. Conclusiones y trabajo futuro 5 de 51 Índice
  • 6. I. Conceptos previos 6 de 51 I. Ingeniería dirigida por modelos II. Transformación de modelos III. Mutación de modelos
  • 7. Ingeniería dirigida por modelos ✓ Modelo: descripción de un sistema utilizando un lenguaje ✓ Meta-modelo: modelo que describe un lenguaje ✓ Lenguaje de dominio específico: ▪ Ofrece los conceptos para un dominio de aplicación ▪ Gráfico o textual ▪ Primitivas de alto nivel ▪ Orientado a expertos en el dominio ▪ Traducido automáticamente a lenguajes como C, Java, etc. 7 de 51
  • 8. Transformación de modelos ✓ Necesario para la manipulación de modelos 8 de 51
  • 9. ✓Caso especial de transformación de modelos ✓ Las primitivas de mutación de alto nivel son más potentes que utilizar la transformación de modelos para aplicar mutación Mutación de modelos 9 de 51 Modelo semilla Modelo mutante Wodel s0:InitialFinalState t:Transitionsrc symbol sym:Symbol symbol= “1" a:Automaton states alphabet transitions tar s0:InitialFinalState sym:Symbol symbol= “1" a:Automaton states alphabet name = “s0” name = “s0”
  • 10. II. Wodel Un lenguaje de dominio específico para mutación de modelos 10 de 51 I. DSL de operadores de mutación II. Servicios de ejecución III. Servicios de desarrollo IV. Herramienta proporcionada
  • 11. Propuesta ✓ DSL Wodel para mutación de modelos con: ▪ Primitivas de mutación de alto nivel ▪ Independiente del dominio ▪ Compilado a Java ✓ Servicios de ejecución (extensibles) ▪ Validación de los mutantes ▪ Detección de los mutantes equivalentes ▪ Registro de mutaciones ▪ Extensible para diferentes aplicaciones ✓ Servicios de desarrollo ▪ Síntesis de modelos semilla ▪ Métricas de mutación 11 de 51
  • 12. pruebas de transformación de modelos pruebas de software basadas en modelos pruebas de líneas de producto software algoritmos genéticos generación automática de ejercicios pruebas de mutación … Esquema 12 de 51 modelos semilla meta- modelo «conforme a» Programa WODEL artefactos específicos del dominio/aplicación 1 2 Motor de WODEL modelos mutantes + registro post- procesado 4 «conforme a» 3
  • 13. Ejemplo generate 3 mutants in "out/" from "models/" metamodel "http://fa.com" description "Simple Wodel Program" with blocks { CNFS "Changes a final state to non-final and connects it with a new final state" { s0 = retype one FinalState as CommonState s1 = create FinalState t0 = create Transition with {src = s0, tar = s1, symbol = one Symbol} }} 13 de 51
  • 14. Operadores de mutación 14 de 51 ✓ 9 primitivas de mutación ▪ crear, clonar, seleccionar, modificar, retipar y borrar información ✓Asignación automática de los elementos creados en contenedores compatibles ✓Eliminación de referencias vacías al borrar elementos ✓ Comprobación de cardinalidades y restricciones OCL ✓ Cardinalidades de los operadores de mutación
  • 15. Registro de mutaciones ✓ Trazas entre modelos semilla y modelos mutantes ✓ Opción de compactar el registro (mutaciones irrelevantes) ✓ Opciones de texto en Wodel-Edu ✓ Identificación del operador de mutación en Wodel-Test 15 de 51
  • 16. Validación de los mutantes ✓ OCL en programa Wodel ✓ Punto de extensión (p.ej. modelo de autómata que acepta un lenguaje determinado) 16 de 51 generate 2 mutants in "out/" from "models/" metamodel "http://fa.com" with blocks { simple { s0 = select one InitialState s1 = select one State where {self not typed FinalState} t0 = select one Transition where {src = s0} modify one Transition where {tar = s1} with {swap(tar, t0->tar)} } [2] } constraints { context State connected: "oclIsKindOf(InitialState) or Set{self}->closure(s | Transition.allInstances()->select(t | t.tar=s)->collect(src)) ->exists(s | s.oclIsKindOf(InitialState))" }
  • 17. Detección de mutantes equivalentes 17 de 51 ✓ Equivalencia sintáctica ✓Equivalencia semántica int inc(int value) { // Incrementa el valor return value + 1; } int inc(int value) { return value + 1; } int inc(int value) { // Incrementa el valor return value + 1; } int inc(int value) { // Incrementa el valor return value + 1 + 0; }
  • 18. Síntesis de modelos semilla I ✓ Comprobar que los operadores de mutación están implementados correctamente ✓ Basado en la búsqueda de modelos 18 de 51 SALIDA mm de dominio + OCL OCL programa Wodel modelo semilla ENTRADA mm enriquecido buscador de modelos
  • 19. Síntesis de modelos semilla II generate 2 mutants in "out/" from "models/" metamodel http://fa.com with blocks { cs2fs "Retypes a common state as a final state" { retype one CommonState as FinalState } } 19 de 51 context Dummy inv mut1 : CommonState.allInstances()->exists(s | true) OCL Modelo generado Buscador de modelos
  • 20. Métricas de mutación ✓Cobertura de mutación de los elementos ✓Métricas estáticas ▪ Elementos del meta-modelo afectados por las mutaciones ▪ Métricas del meta-modelo ▪ Métricas por operador ✓ Métricas dinámicas ▪ Efectos reales del programa de mutación ▪ Métricas netas ▪ Métricas de depuración 20 de 51
  • 21. Arquitectura de la herramienta 21 de 51
  • 22. IDE de la herramienta Herramienta disponible en http://gomezabajo.github.io/Wodel/ junto con ejemplos, vídeos y tutoriales 22 de 51
  • 23. III. Wodel-Edu Generación de ejercicios mediante mutación 23 de 51
  • 24. Motivación ✓ Generación de un volumen grande de ejercicios tipo test ✓ Fáciles de generar ✓ Independientes del dominio 24 de 51 Se propone el entorno Wodel-Edu - extensión a Wodel
  • 25. Propuesta ✓ Aplicación web con tres formatos de ejercicios: ▪ Respuesta alternativa ▪ Selección de un diagrama entre varios ▪ Selección de opciones de texto ✓ Se requiere: ▪ Representación gráfica de los modelos ▪ Generación de las opciones de texto ▪ Generación de código HTML+JavaScript 25 de 51
  • 28. Selección de diagrama múltiple 28 de 51
  • 29. Selección de opciones de texto ✓ Opciones de texto a partir del registro ✓ Utilización de los DSLs modelText y mutaText 29 de 51
  • 30. IDE de Wodel-Edu I DSL eduTest DSL modelDraw 30 de 51
  • 31. IDE de Wodel-Edu II DSL modelText DSL mutaText 31 de 51
  • 32. Evaluación de Wodel-Edu ✓ Aplicación web http://www.wodel.eu en el dominio de los autómatas con tres secciones ▪ Opciones de texto ▪ Selección de un diagrama entre varios ▪ Respuesta alternativa ✓ Tres dimensiones, además de la nota obtenida (opcional) ▪ El ejercicio se entiende bien ▪ La dificultad del ejercicio es adecuada ▪ El ejercicio es útil para aprender autómatas ✓ 10 participantes entre 22 y 41 años (1 sin formación en autómatas) 32 de 51
  • 33. Conclusiones de la evaluación ✓ Se perciben como muy útiles para aprender autómatas ✓ Dificultad percibida razonable ✓ El ejercicio de selección de opciones de texto es el más complicado de entender (la nota promedio fue de un 50%) 33 de 51
  • 34. IV. Wodel-Test Generación de herramientas de pruebas de mutación 34 de 51
  • 35. Motivación ✓ Las herramientas de pruebas de mutación son ▪ específicas para un lenguaje ▪ se desarrollan manualmente ▪ alto coste de mantenimiento 35 de 51 Se propone el entorno Wodel-Test - extensión a Wodel para la generación de herramientas de pruebas de mutación Se implementan dos herramientas de pruebas de mutación Wodel-Test para Java y Wodel-Test para ATL
  • 36. ¿Qué son las pruebas de mutación? ✓ Enfoque de pruebas de software para evaluar la calidad de los conjuntos de pruebas ✓ Introducción de cambios sintácticos en un programa mediante operadores de mutación ✓ Las mutaciones introducidas emulan fallos comunes de programación ✓ Facilita mejorar la calidad de los conjuntos de pruebas 36 de 51
  • 38. Herramienta de pruebas de mutación para Java 38 de 51
  • 39. Herramienta de pruebas de mutación generada 1) Explorador de proyectos 2) Ejemplo de programa mutante 3) Conjunto de pruebas 4) Resultados globales del proceso de pruebas de mutación 39 de 51
  • 40. ✓Comparativa de Wodel-Test para Java con herramientas existentes de pruebas de mutación para Java ✓Implementación de Wodel-Test para ATL con los operadores de mutación introducidos en Troya et al.[1] [1] Troya, J., Bergmayr, A., Burgueño, L. y Wimmer, M.: Towards systematic mutations for and with ATL model transformations. En International conference on software testing, verification and validation workshops (ICSTW), págs. 1–10, 2015 Evaluación de Wodel-Test RQ1 ¿Permite Wodel-Test crear herramientas de pruebas de mutación con capacidades similares a las herramientas de pruebas de mutación creadas manualmente? 40 de 51 RQ2 ¿Wodel-Test es efectivo para especificar herramientas de pruebas de mutación?
  • 41. Evaluación de Wodel-Test RQ1 41 de 51 Major Javalanche PITest LittleDarwin Wodel-Test/Java N. de operadores 30 (por defecto) 19 40 28 77 (por defecto) Extensibilidad de ops. Sí (DSL) No API No Sí (DSL) Artefacto mutado Bytecode Bytecode Bytecode AST Modelo Código del mutante No No Sí Sí Sí Detección equivalentes No Sí (invariantes dinámicas) No No Sí (TCE) Tipo de informe CSV HTML HTML HTML Vistas interactivas Número de mutantes Mutation score Mutantes muertos/vivos Número Número Número Número Número, lista Cobertura de operadores Número Número Número Número, lista Mutantes por clase Pruebas por mutante Mutantes por prueba ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓         ✓ ✓ ✓ ✓   
  • 42. Evaluación de Wodel-Test RQ1 ✓Aplicación del proceso de pruebas de mutación sobre el proyecto functional-matrix1: 1https://github.com/soursop/functional-matrix-operator 42 de 51 Herramienta Mutantes (muertos/vivos) Mutation score Tiempo ejecución Tiempo por mutante Major 1638 (331/864) 20,21% 11h 21min 40seg 24,99seg PITest 918 (321/597) 34,97% 56min 9seg 3,67seg LittleDarwin 439 (130/309) 29,61% 2h 45min 27seg 22,61seg Wodel-Test/Java 4756 (985/3771) 20,71% 2h 40min 27seg 2,02seg
  • 43. Evaluación de Wodel-Test RQ2 ✓ Wodel-Test para ATL con los operadores de mutación introducidos en el trabajo de Troya et al. ✓ El prototipo de Troya et al. es un generador de mutantes ✓ Wodel-Test para ATL proporciona la funcionalidad completa de una herramienta de pruebas de mutación para este lenguaje 43 de 51
  • 44. Evaluación de Wodel-Test RQ2 ✓ Operadores de mutación para ATL 44 de 51 Concepto Operador de mutación LOC en Wodel LOC en ATL Regla Creación Borrado Cambio de nombre 1 1 1 - - - Elemento de patrón de entrada Creación Borrado Cambio de tipo Cambio de condición 6 1 4 1 14 - - - Filtro de regla Creación Borrado Cambio de condición 10 1 4 - - - Elemento de patrón de salida Creación Borrado Cambio de tipo Cambio de nombre 6 1 4 1 - 6 - - Binding Creación Borrado Cambio de valor Cambio de propiedad 6 1 2 6 - 3 - -
  • 45. Conclusiones de la evaluación ✓ Wodel-Test proporciona una funcionalidad comparable a la de las herramientas de pruebas de mutación existentes para Java ✓ Wodel-Test puede ser una mejor opción: ▪ Acceso al código fuente de los mutantes ▪ Razonar sobre qué mutantes reducen el mutation score y por qué ▪ Experimentar con nuevos operadores de mutación ✓ Las herramientas de pruebas de mutación existentes requieren dos órdenes de magnitud más de código que la especificación de un entorno similar utilizando Wodel-Test 45 de 51
  • 46. V. Conclusiones y trabajo futuro 46 de 51
  • 47. Conclusiones ✓ La mutación está presente en múltiples dominios en la ingeniería del software ✓ Las soluciones existentes son específicas para cada caso ✓ Se ha propuesto Wodel que es un DSL para mutación de modelos ✓ Se han hecho dos aplicaciones: ◦ Generación de ejercicios ◦ Pruebas de mutación 47 de 51
  • 48. Trabajo futuro ✓ Servicios de Wodel ▪ generación de modelos near misses: verificación de la implementación correcta de los operadores de mutación ▪ técnicas de análisis estático para detectar conflictos y dependencias entre los operadores ✓ Nuevas aplicaciones de Wodel ▪ ingeniería basada en búsqueda ✓ Wodel-Edu ▪ entornos de aprendizaje más complejos (gamificación) ▪ ejercicios (p. ej., que sean interactivos) ▪ diferentes plataformas (móviles o tablets) ▪ ejercicios para Moodle ✓ Wodel-Test ▪ abordar programas más grandes ▪ optimizaciones del proceso de pruebas de mutación ▪ estudio con usuarios para analizar la usabilidad 48 de 51
  • 49. Publicaciones I Revistas (3): ◦ P. Gómez-Abajo, E. Guerra, y J. de Lara. A domain-specific language for model mutation and its application to the automated generation of exercises. Computer Languages, Systems & Structures, 49:152 – 173, 2017. Elsevier. Índice de impacto: JCR 2017: 1,840. Q2 en Computer Science / Software Engineering ◦ P. Gómez-Abajo, E. Guerra, J. de Lara, y M. G. Merayo. A tool for domain independent model mutation. Science of Computer Programming, 163:85–92, 2018. Elsevier. Índice de impacto: JCR 2018: 1,088 Q3 en Computer Science / Software Engineering ◦ P. Gómez-Abajo, E. Guerra, J. de Lara, y M. G. Merayo. Systematic Engineering of Mutation Operators. Journal of Object Technology Special Issue dedicated to Martin Gogolla Revistas en proceso de revisión (1): ◦ P. Gómez-Abajo, E. Guerra, J. de Lara, y M. G. Merayo. A model-based framework for language-independent mutation testing. Software and Systems Modeling. Springer. Índice de impacto: JCR 2018: 2,660. Q1 en Computer Science / Software Engineering. En segunda ronda de revisión 49 de 51
  • 50. Publicaciones II Congresos internacionales y workshops (4): ◦ P. Gómez-Abajo, E. Guerra, y J. de Lara. Wodel: a domain-specific language for model mutation. 31st ACM/SIGAPP Symposium on Applied Computing, SAC, páginas 1968–1973. ACM, 2016. Porcentaje de aceptación: 24,07% ◦ P. Gómez-Abajo. A DSL for model mutation and its application to different domains. Doctoral Symposium at the 19th ACM/IEEE International Conference of Model-Driven Engineering Languages and Systems, MoDELS. ACM/IEEE, 2016 ◦ P. Gómez-Abajo, E. Guerra, J. de Lara, y M. G. Merayo. Mutation Testing for DSLs (Tool Demo). 17th ACM SIGPLAN International Workshop on Domain-Specific Modeling, DSM, páginas 60–62. ACM, 2019 ◦ P. Gómez-Abajo, E. Guerra, J. de Lara, y M. G. Merayo. Seed Model Synthesis for Testing Model- based Mutation Operators. 32nd International Conference on Advanced Information Systems Engineering, CAiSE Forum. ACM, 2020 Congresos nacionales (1): ◦ P. Gómez-Abajo, E. Guerra, J. de Lara, y M. G. Merayo. Towards a model-driven engineering solution for language independent mutation testing. En Jornadas de Ingeniería del Software y Bases de Datos (JISBD), página 4pps. Biblioteca digital SISTEDES, 2018 Presentaciones en cursos y seminarios internacionales (1): ◦ P. Gómez-Abajo, E. Guerra, y J. de Lara. Wodel: a DSL for model mutation; and Wodel- Edu: its application to the automated generation of exercises. En 7th International Summer School on Domain-Specific Modeling, DSM-TP, 2016 50 de 51
  • 52. • Opciones generadas: correctas 1. Retype final state q2 as common state 2. Change transition a from state q1 to state q0 with new target state q1 • Opciones generadas: incorrectas 1. Retype initial state q0 as initial final state 2. Change transition b from state q2 to state q2 with new target state q0 A. Modelo semilla B. Mutante de A (mostrado) C. Mutante de B Mutaciones de los pasos 1 y 2: Paso 1 Paso 2 modify target tar from one Transition to other State retype one CommonState as FinalState Selección de opciones de texto
  • 53. motor de WODEL equivalencia sintáctica WODEL-TEST postProc 2 1 LanguageService Provider projectToModel() modelToProject() annotateMutation() compile() run() 3 equivalencia semántica ESPEC MT DEL LENGUAJE equivalencia EMFCompare «interfaz» «requiere» «utiliza» 4 Trivial compiler equivalence «utiliza»registro de mutación programas WODEL (meta-modelo + ops. mutación) «incluye» Arquitectura de Wodel-Test