SlideShare una empresa de Scribd logo
1 de 53
Descargar para leer sin conexión
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 casaMicael 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
 
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 JAvaMartha Beatriz Coronado Rosales
 

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

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 obsoletasatSistemas
 
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édulosJordi 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 modelosPatxi 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 .NETV Sanchez
 
Programación en C#.pptx
Programación en C#.pptxProgramación en C#.pptx
Programación en C#.pptxRosmaryDS
 
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
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño Ijjegonzalezf
 
PD1_7moA_TS3_JavierLogroño.pptx
PD1_7moA_TS3_JavierLogroño.pptxPD1_7moA_TS3_JavierLogroño.pptx
PD1_7moA_TS3_JavierLogroño.pptxEddyJavierLogrooLen
 
Desarrollo de aplicasiones .net
Desarrollo de aplicasiones .netDesarrollo de aplicasiones .net
Desarrollo de aplicasiones .netjesus lopez
 
Grails 2013 - PUCMM - Santiago - Sistemas
Grails 2013 - PUCMM - Santiago - SistemasGrails 2013 - PUCMM - Santiago - Sistemas
Grails 2013 - PUCMM - Santiago - SistemasCarlos Camacho
 

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 exercisesPablo 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 environmentsPablo 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 TestingPablo 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-TestPablo 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 VBAPablo 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 OperatorsPablo 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 DomainsPablo 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 MutationPablo 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

Tortosa et al. 2º Simposio Internacional Composta.pdf
Tortosa et al. 2º Simposio Internacional Composta.pdfTortosa et al. 2º Simposio Internacional Composta.pdf
Tortosa et al. 2º Simposio Internacional Composta.pdfGermán Tortosa
 
registro cardiotocografico interpretacion y valoracion
registro cardiotocografico interpretacion y valoracionregistro cardiotocografico interpretacion y valoracion
registro cardiotocografico interpretacion y valoracionMarcoAntonioJimenez14
 
Harvey, David. - Paris capital de la modernidad [2008].pdf
Harvey, David. - Paris capital de la modernidad [2008].pdfHarvey, David. - Paris capital de la modernidad [2008].pdf
Harvey, David. - Paris capital de la modernidad [2008].pdffrank0071
 
Generalidades de Morfología y del aparato musculoesquelético.pdf
Generalidades de Morfología y del aparato musculoesquelético.pdfGeneralidades de Morfología y del aparato musculoesquelético.pdf
Generalidades de Morfología y del aparato musculoesquelético.pdfJosefinaRojas27
 
Informe Aemet Tornados Sabado Santo Marchena Paradas
Informe Aemet Tornados Sabado Santo Marchena ParadasInforme Aemet Tornados Sabado Santo Marchena Paradas
Informe Aemet Tornados Sabado Santo Marchena ParadasRevista Saber Mas
 
Sternhell & Sznajder & Asheri. - El nacimiento de la ideología fascista [ocr]...
Sternhell & Sznajder & Asheri. - El nacimiento de la ideología fascista [ocr]...Sternhell & Sznajder & Asheri. - El nacimiento de la ideología fascista [ocr]...
Sternhell & Sznajder & Asheri. - El nacimiento de la ideología fascista [ocr]...frank0071
 
Límites derivadas e integrales y análisis matemático.pptx
Límites derivadas e integrales y análisis matemático.pptxLímites derivadas e integrales y análisis matemático.pptx
Límites derivadas e integrales y análisis matemático.pptxErichManriqueCastill
 
PARES CRANEALES. ORIGEN REAL Y APARENTE, TRAYECTO E INERVACIÓN. CLASIFICACIÓN...
PARES CRANEALES. ORIGEN REAL Y APARENTE, TRAYECTO E INERVACIÓN. CLASIFICACIÓN...PARES CRANEALES. ORIGEN REAL Y APARENTE, TRAYECTO E INERVACIÓN. CLASIFICACIÓN...
PARES CRANEALES. ORIGEN REAL Y APARENTE, TRAYECTO E INERVACIÓN. CLASIFICACIÓN...ocanajuanpablo0
 
López, L. - Destierro y memoria. Trayectorias de familias judías piemontesas ...
López, L. - Destierro y memoria. Trayectorias de familias judías piemontesas ...López, L. - Destierro y memoria. Trayectorias de familias judías piemontesas ...
López, L. - Destierro y memoria. Trayectorias de familias judías piemontesas ...frank0071
 
SESIÓN DE APRENDIZAJE N° 5 SEMANA 7 CYT I BIMESTRE ESTUDIANTES.pdf
SESIÓN DE APRENDIZAJE N° 5  SEMANA 7 CYT  I BIMESTRE ESTUDIANTES.pdfSESIÓN DE APRENDIZAJE N° 5  SEMANA 7 CYT  I BIMESTRE ESTUDIANTES.pdf
SESIÓN DE APRENDIZAJE N° 5 SEMANA 7 CYT I BIMESTRE ESTUDIANTES.pdfkevingblassespinalor
 
tecnica de necropsia en bovinos rum.pptx
tecnica de necropsia en bovinos rum.pptxtecnica de necropsia en bovinos rum.pptx
tecnica de necropsia en bovinos rum.pptxJESUSDANIELYONGOLIVE
 
4.-ENLACE-QUÍMICO.-LIBRO-PRINCIPAL (1).pdf
4.-ENLACE-QUÍMICO.-LIBRO-PRINCIPAL (1).pdf4.-ENLACE-QUÍMICO.-LIBRO-PRINCIPAL (1).pdf
4.-ENLACE-QUÍMICO.-LIBRO-PRINCIPAL (1).pdfvguadarramaespinal
 
Campo_magnético_y_fuerzas_magnéticas.pdf
Campo_magnético_y_fuerzas_magnéticas.pdfCampo_magnético_y_fuerzas_magnéticas.pdf
Campo_magnético_y_fuerzas_magnéticas.pdfArturoDavilaObando
 
valoracion hemodinamica y respuesta a fluidorerapia
valoracion hemodinamica y respuesta a fluidorerapiavaloracion hemodinamica y respuesta a fluidorerapia
valoracion hemodinamica y respuesta a fluidorerapiaresiutihjaf
 
PIZARRO-parte4.pdf apuntes de física 3, electricidad y magnetismo
PIZARRO-parte4.pdf apuntes de física 3, electricidad y magnetismoPIZARRO-parte4.pdf apuntes de física 3, electricidad y magnetismo
PIZARRO-parte4.pdf apuntes de física 3, electricidad y magnetismoArturoDavilaObando
 
Ensayo ENRICH (sesión clínica, Servicio de Neurología HUCA)
Ensayo ENRICH (sesión clínica, Servicio de Neurología HUCA)Ensayo ENRICH (sesión clínica, Servicio de Neurología HUCA)
Ensayo ENRICH (sesión clínica, Servicio de Neurología HUCA)s.calleja
 
DESPOTISMO ILUSTRADOO - copia - copia - copia - copia.pdf
DESPOTISMO ILUSTRADOO - copia - copia - copia - copia.pdfDESPOTISMO ILUSTRADOO - copia - copia - copia - copia.pdf
DESPOTISMO ILUSTRADOO - copia - copia - copia - copia.pdfssuser6a4120
 
Codigo rojo manejo y tratamient 2022.pptx
Codigo rojo manejo y tratamient 2022.pptxCodigo rojo manejo y tratamient 2022.pptx
Codigo rojo manejo y tratamient 2022.pptxSergioSanto4
 
HISTORIA NATURAL DE LA ENFEREMEDAD: SARAMPION
HISTORIA NATURAL DE LA ENFEREMEDAD: SARAMPIONHISTORIA NATURAL DE LA ENFEREMEDAD: SARAMPION
HISTORIA NATURAL DE LA ENFEREMEDAD: SARAMPIONAleMena14
 
Tractos ascendentes y descendentes de la médula
Tractos ascendentes y descendentes de la médulaTractos ascendentes y descendentes de la médula
Tractos ascendentes y descendentes de la méduladianymorales5
 

Último (20)

Tortosa et al. 2º Simposio Internacional Composta.pdf
Tortosa et al. 2º Simposio Internacional Composta.pdfTortosa et al. 2º Simposio Internacional Composta.pdf
Tortosa et al. 2º Simposio Internacional Composta.pdf
 
registro cardiotocografico interpretacion y valoracion
registro cardiotocografico interpretacion y valoracionregistro cardiotocografico interpretacion y valoracion
registro cardiotocografico interpretacion y valoracion
 
Harvey, David. - Paris capital de la modernidad [2008].pdf
Harvey, David. - Paris capital de la modernidad [2008].pdfHarvey, David. - Paris capital de la modernidad [2008].pdf
Harvey, David. - Paris capital de la modernidad [2008].pdf
 
Generalidades de Morfología y del aparato musculoesquelético.pdf
Generalidades de Morfología y del aparato musculoesquelético.pdfGeneralidades de Morfología y del aparato musculoesquelético.pdf
Generalidades de Morfología y del aparato musculoesquelético.pdf
 
Informe Aemet Tornados Sabado Santo Marchena Paradas
Informe Aemet Tornados Sabado Santo Marchena ParadasInforme Aemet Tornados Sabado Santo Marchena Paradas
Informe Aemet Tornados Sabado Santo Marchena Paradas
 
Sternhell & Sznajder & Asheri. - El nacimiento de la ideología fascista [ocr]...
Sternhell & Sznajder & Asheri. - El nacimiento de la ideología fascista [ocr]...Sternhell & Sznajder & Asheri. - El nacimiento de la ideología fascista [ocr]...
Sternhell & Sznajder & Asheri. - El nacimiento de la ideología fascista [ocr]...
 
Límites derivadas e integrales y análisis matemático.pptx
Límites derivadas e integrales y análisis matemático.pptxLímites derivadas e integrales y análisis matemático.pptx
Límites derivadas e integrales y análisis matemático.pptx
 
PARES CRANEALES. ORIGEN REAL Y APARENTE, TRAYECTO E INERVACIÓN. CLASIFICACIÓN...
PARES CRANEALES. ORIGEN REAL Y APARENTE, TRAYECTO E INERVACIÓN. CLASIFICACIÓN...PARES CRANEALES. ORIGEN REAL Y APARENTE, TRAYECTO E INERVACIÓN. CLASIFICACIÓN...
PARES CRANEALES. ORIGEN REAL Y APARENTE, TRAYECTO E INERVACIÓN. CLASIFICACIÓN...
 
López, L. - Destierro y memoria. Trayectorias de familias judías piemontesas ...
López, L. - Destierro y memoria. Trayectorias de familias judías piemontesas ...López, L. - Destierro y memoria. Trayectorias de familias judías piemontesas ...
López, L. - Destierro y memoria. Trayectorias de familias judías piemontesas ...
 
SESIÓN DE APRENDIZAJE N° 5 SEMANA 7 CYT I BIMESTRE ESTUDIANTES.pdf
SESIÓN DE APRENDIZAJE N° 5  SEMANA 7 CYT  I BIMESTRE ESTUDIANTES.pdfSESIÓN DE APRENDIZAJE N° 5  SEMANA 7 CYT  I BIMESTRE ESTUDIANTES.pdf
SESIÓN DE APRENDIZAJE N° 5 SEMANA 7 CYT I BIMESTRE ESTUDIANTES.pdf
 
tecnica de necropsia en bovinos rum.pptx
tecnica de necropsia en bovinos rum.pptxtecnica de necropsia en bovinos rum.pptx
tecnica de necropsia en bovinos rum.pptx
 
4.-ENLACE-QUÍMICO.-LIBRO-PRINCIPAL (1).pdf
4.-ENLACE-QUÍMICO.-LIBRO-PRINCIPAL (1).pdf4.-ENLACE-QUÍMICO.-LIBRO-PRINCIPAL (1).pdf
4.-ENLACE-QUÍMICO.-LIBRO-PRINCIPAL (1).pdf
 
Campo_magnético_y_fuerzas_magnéticas.pdf
Campo_magnético_y_fuerzas_magnéticas.pdfCampo_magnético_y_fuerzas_magnéticas.pdf
Campo_magnético_y_fuerzas_magnéticas.pdf
 
valoracion hemodinamica y respuesta a fluidorerapia
valoracion hemodinamica y respuesta a fluidorerapiavaloracion hemodinamica y respuesta a fluidorerapia
valoracion hemodinamica y respuesta a fluidorerapia
 
PIZARRO-parte4.pdf apuntes de física 3, electricidad y magnetismo
PIZARRO-parte4.pdf apuntes de física 3, electricidad y magnetismoPIZARRO-parte4.pdf apuntes de física 3, electricidad y magnetismo
PIZARRO-parte4.pdf apuntes de física 3, electricidad y magnetismo
 
Ensayo ENRICH (sesión clínica, Servicio de Neurología HUCA)
Ensayo ENRICH (sesión clínica, Servicio de Neurología HUCA)Ensayo ENRICH (sesión clínica, Servicio de Neurología HUCA)
Ensayo ENRICH (sesión clínica, Servicio de Neurología HUCA)
 
DESPOTISMO ILUSTRADOO - copia - copia - copia - copia.pdf
DESPOTISMO ILUSTRADOO - copia - copia - copia - copia.pdfDESPOTISMO ILUSTRADOO - copia - copia - copia - copia.pdf
DESPOTISMO ILUSTRADOO - copia - copia - copia - copia.pdf
 
Codigo rojo manejo y tratamient 2022.pptx
Codigo rojo manejo y tratamient 2022.pptxCodigo rojo manejo y tratamient 2022.pptx
Codigo rojo manejo y tratamient 2022.pptx
 
HISTORIA NATURAL DE LA ENFEREMEDAD: SARAMPION
HISTORIA NATURAL DE LA ENFEREMEDAD: SARAMPIONHISTORIA NATURAL DE LA ENFEREMEDAD: SARAMPION
HISTORIA NATURAL DE LA ENFEREMEDAD: SARAMPION
 
Tractos ascendentes y descendentes de la médula
Tractos ascendentes y descendentes de la médulaTractos ascendentes y descendentes de la médula
Tractos ascendentes y descendentes de la médula
 

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