SlideShare ist ein Scribd-Unternehmen logo
1 von 37
Downloaden Sie, um offline zu lesen
Un framework para la generación
automática de ejercicios
mediante técnicas de mutación
Universidad Autónoma de Madrid
Pablo Gómez Abajo
Tutores: Esther Guerra y Juan de Lara
http://www.miso.es
modelling & software engineering
research group
Trabajo Fin de Máster, Junio 2016
• 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
• Generación automática de ejercicios
• Algoritmos genéticos
• …
2
0
101
0
110
1
010
Modelo semilla
Modelos mutantes
Mutación
Modelo semilla
...
if (a == true) then
...
...
if (a != true) then
...
Modelo mutante
¿Qué es la mutación de
modelos?
Objetivos
• Diseño e implementación de:
• Un lenguaje de mutación independiente del dominio: Wodel
• Una aplicación de este lenguaje a la generación automática de
ejercicios: Wodel-Edu
• Motivación:
• No hay lenguajes generales para la mutación de modelos
• No hay frameworks para generar ejercicios de forma automática
independientes del dominio
• Wodel-Edu sirve además como prueba de concepto de
Wodel
3
I. Conceptos y técnicas utilizados
II. DSL Wodel
III. Framework Wodel-Edu
IV. Conclusiones y trabajo futuro
4
Índice
5
I. Conceptos y técnicas
de la Ingeniería Dirigida
por Modelos
• Un modelo es la descripción de un sistema utilizando un
lenguaje
• Un meta-modelo es un modelo que describe un lenguaje
• Los meta-modelos se definen mediante diagramas de
clase o diagramas entidad-relación
• Restricciones OCL adicionales
6
Modelos y meta-modelos
Automaton
name: String
State
Transition
*
name: String
isInitial: boolean
isFinal: boolean
src
tar symbol0..1
states* * transitions
inv1: self.states->one(s | s.isInitial)
inv2: self.states->exists(s | s.isFinal)
inv3: self.alphabet->forAll (a1, a2 |
a1.symbol = a2.symbol
implies a1 = a2)
alphabet
Symbol
symbol: String
• Un meta-modelo define la sintaxis abstracta del lenguaje
• La sintaxis concreta incluye información sobre cómo
visualizar y representar los conceptos de la sintaxis
abstracta
7
Sintaxis abstracta y sintaxis
concreta
fa:Automaton
states
q0:State
isInitial=true
isFinal=true
:Symbol
symbol=a
alphabet
:Transition
src
tar symbol
transitions
Modelo de autómata finito Sintaxis concreta gráfica Sintaxis concreta textual
(hecho con Xtext)
• Un DSL 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 Java, C, etc.
• Wodel es un DSL para aplicar mutaciones en modelos
8
Lenguajes de dominio específico
(DSLs)
9
Transformación de modelos
• Necesario para la manipulación de modelos
• Out-place
• In-place
10
Mutación de modelos
• Tipo especial de transformación de modelos
• Los modelos de entrada son los modelos semilla
• Los modelos de salida son los mutantes
• Los modelos semilla y los mutantes son conformes al mismo
meta-modelo
11
Generación de código
• Producción de código a partir de un modelo de un nivel más
alto con el objetivo de crear una aplicación que funcione
• Código Java de los
programas Wodel
• Código HTML y
JavaScript de la
aplicación web creada
con Wodel-Edu
Meta-modelo Modelo
Motor de plantillas
Plantilla Código
12
II. Wodel: un lenguaje de
dominio específico para
mutación de modelos
Motivación
• Los frameworks 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 propone el DSL Wodel para mutación de modelos,
con:
• Primitivas de mutación de alto nivel
• Independencia del lenguaje y del dominio destino
• Compilado a código Java
• Extensible mediante post-procesadores
13
14
Esquema
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
pruebas de transformación de modelos
pruebas de software basadas en modelos
pruebas de líneas de producto software
generación automática de ejercicios
algoritmos genéticos
...
Ejemplo
15
Automaton
name: String
State
Transition
*
name: String
isInitial: boolean
isFinal: boolean
src
tar symbol0..1
states* * transitions
inv1: self.states->one(s | s.isInitial)
inv2: self.states->exists(s | s.isFinal)
inv3: self.alphabet->forAll (a1, a2 |
a1.symbol = a2.symbol
implies a1 = a2)
alphabet
Symbol
symbol: String
generate 3 mutants in "out/" from "evenBinary.fa"
metamodel "http://fa.com"
with commands {
s0 = modify one State where {isFinal = true} with {reverse(isFinal)}
s1 = create State with {isFinal = true}
t0 = create Transition with {src = s0, tar = s1, symbol = one Symbol}
}
Operadores de mutación
16
// creación de objetos/refs
create State
create reference tar in
one Transition
// modificación de objetos/refs
modify one State
with {isFinal = true}
modify source src from
one Transition
modify target tar from
one Transition
// eliminación de objetos/refs
remove one State
remove reference tar in
one Transition
// mutaciones compuestas
[
s0 = create State
modify s0 with {name = 's0'}
]
Mutation
min: int=1
max: int=1
CreateObject
ObjectEmitter EClass
type
0..1
name: String[0..1]
ObjectSelection
Strategy
container 0..1
EReference
0..1refType
AttributeSet EAttribute
attributes
*
Attribute
Init
Attribute
Swap
{ordered}
Attribute
Copy
object 0..1
Modify
Information
object
0..1
attributes*attributes *
Attribute
Type
value
Composite
Mutation
*
ModifySource
Reference
…
ObjectSelection
Strategy
source
newSource
EReference
refType 0..1
Asigna automáticamente los elementos creados a los contenedores
Elimina las referencias que quedan sueltas al borrar elementos
Comprueba las cardinalidades y restricciones OCL del meta-modelo
Control de mutantes duplicados
Compilado automático a código Java
Bloques y restricciones OCL
17
• Wodel da soporte para bloques de mutaciones:
• Generación de mutantes por etapas
• Un bloque puede tomar como modelos semilla los mutantes
generados en bloques declarados previamente
• Jerarquía de carpetas para identificación de los mutantes
• Control de mutantes repetidos con la directiva repeat=no
• Útil para los ejercicios de selección de opciones de texto en
Wodel-Edu
• Restricciones OCL en el código Wodel:
• Se aplican sobre los modelos mutantes generados, aunque no
estén en el meta-modelo del dominio
Registro de mutaciones
18
• Opcional, se activa desde la página de preferencias
• Útil en la generación las opciones de texto en Wodel-Edu
• Referencias a modelos semilla y a modelos mutantes
• Opción de compactar el registro (mutaciones irrelevantes)
Registry
def
AppliedMutation
*
Object
Created
Reference
Changed
refs Information
Changed
mutations
*
*
… Attribute
Changed
Composite
Mutation
Source
Reference
Changed
Target
Reference
Changed
Reference
Swap
*
atts
Attribute
Swap
objects
*
Mutation
EObject
object objects
*
{ordered}
19
Arquitectura de la herramienta
mutation
registry
seed
models
DSL
meta-
model
postProc
WODEL
engine
editor (Xtext)
code gen (Xtend)
Java code
model
mutants
code completion, validator
WODEL
program
«conforms»
check
generate, compile, execute
«refers-to»«refers-to»
20
IDE de la herramienta
• Completado de código,
validación, generación de
código, ...
21
1....
2.// create transition
3.EClass transitionClass = (EClass)epackage.getEClassifier("Transition");
4.EObject transition = EcoreUtil.create(transitionClass);
5.
6.// search object automaton in model
7.EObject automaton = null;
8.for (TreeIterator<EObject> it = seed.getAllContents(); it.hasNext();) {
9. automaton = it.next();
10. if (automaton.eClass().getName().equals("Automaton")) {
11. // add transition to automaton
12. EStructuralFeature feature =
13. automaton.eClass().getEStructuralFeature("transitions");
14. ((List<EObject>)automaton.eGet(feature)).add(transition);
15. // set random state as source of the transition
16. feature = automaton.eClass().getEStructuralFeature("states");
17. List<EObject> states = (List<EObject>)automaton.eGet(feature);
18. EObject randomState = states.get(rand.nextInt(states.size()));
19. feature = transitionClass.getEStructuralFeature("src");
20. transition.eSet(feature, randomState);
21....
Comparación de Wodel con Java
create Transition with {symbol = one Symbol}
Facilidad de integración con otros programas Java
22
III. Wodel-Edu: un
framework para la
generación automática de
ejercicios mediante
técnicas de mutación
Motivación
• Se propone el entorno Wodel-Edu –
una extensión a Wodel – para la
generación automática de ejercicios
que es independiente del dominio
• Aplicación web con tres formatos de
ejercicios:
• Respuesta alternativa
• Selección de un diagrama entre varios
• Selección de opciones de texto
• Necesidad de:
• Representación gráfica de los modelos
• Generación de las opciones de texto
• Generación de código HTML+JavaScript
23
Arquitectura
24
postProc
Motor
del
WODEL
WODEL-EDU
DSL eduTest
DSL modelDraw
mutantes
representación gráfica
de los modelos
generación de código
entorno de
aprendizaje
descripción
de los ejercicios
DSL modelText
DSL mutaText
identificación textual
de los elementos
descripción textual
de las mutaciones
Formatos de ejercicios I y II
25
• Respuesta alternativa • Selección de un
diagrama entre varios
Formato de ejercicios III
26
• Las opciones de texto
(correctas e incorrectas)
se generan utilizando el
registro de mutaciones
• Los DSLs modelText y
mutaText se pueden
utilizar para la
configuración del texto
de estas opciones
• Selección de opciones de texto para corregir el diagrama
Descripción del formato de
ejercicios III
27
• Opciones generadas: correctas
1. Change attribute isFinal from State q2 with value
true to false
2. Change Transition a from State q1 to State q0
with new target State q1
• Opciones generadas: incorrectas
1. Change attribute isFinal from State q0 with value
false to true
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
28
IDE de Wodel-Edu I
• DSL eduTest
• DSL modelGraph
29
IDE de Wodel-Edu II
• DSL modelText
• DSL mutaText
30
Descripción de la evaluación
• Se genera una aplicación web de ejercicios de test con
Wodel-Edu (http://www.wodel.eu):
• Primera página: 4 ejercicios de opciones de texto
• Segunda página: 4 ejercicios de seleccionar un diagrama entre
varios
• Tercera página: 4 ejercicios de respuesta alternativa
• Se miden 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
• Se consiguen 10 participantes (1 sin formación en
autómatas, 8 hombres y 2 mujeres, entre 22 y 41 años, ...)
31
Resultados de la evaluación
• Fácil de entender
(68%, 78%, 76%)
• Nivel adecuado de
dificultad (82%, 89%, 87%)
• Útil para aprender
autómatas (94%, 94%, 88%)
• Nota obtenida
(50%, 67%, 63%)
32
Conclusiones de la evaluación
• El ejercicio de selección de opciones de texto es
complicado de entender:
• Agrupar con mode=radiobutton en el DSL eduTest
• Mostrar el resultado de aplicar la opción sobre el diagrama
• Hacer el ejercicio interactivo
• Dificultad percibida razonable
• Se perciben como muy útiles para aprender autómatas
• Cuestiones para evaluaciones posteriores
• Incluir instrucciones o un tutorial
• Influencia del orden de los ejercicios (mejor dificultad creciente)
• Mezclar ejercicios generados de forma automática con otros
hechos a mano
• Evaluación desde el punto de vista del profesor
33
IV. Conclusiones y trabajo
futuro
• Wodel es un DSL para mutación de modelos:
• Primitivas de mutación de alto nivel
• Independiente del dominio
• Da soporte a mutaciones compuestas
• Da soporte a bloques de mutaciones: mutar mutantes
generados previamente
• Mutantes duplicados, validez de los mutantes
• Compilado a Java
• Extensible para diferentes aplicaciones
• Wodel-Edu: generación automática de ejercicios
mediante técnicas de mutación
• Independiente del dominio
• Tres tipos diferentes de ejercicios
• Generación de opciones de texto basadas en el registro de
mutaciones
• Resultados prometedores para la educación
34
Conclusiones
• Artículo ‘Wodel: a Domain-Specific Language for Model
Mutation’ presentado en el 31st ACM Symposium on
Applied Computing (SAC’16) que fue celebrado el pasado
mes de abril en Pisa (Italia)
• Artículo ‘A Domain-Specific Language for Model Mutation
and its Application to the Automated Generation of
Exercises’ para la revista Computer Languages, Systems
and Structures (Elsevier) (en evaluación)
35
Publicaciones
• Ampliar Wodel con nuevas primitivas de mutación
• Desarrollar nuevos plugins para Wodel (para pruebas
basadas en modelos, algoritmos genéticos…)
• Ampliar Wodel-Edu para generar entornos de
aprendizaje más complejos (p. ej., con gamificación),
ejercicios (p. ej., que sean interactivos), y diferentes
plataformas (móviles o tablets)
• Hacer más experimentos con Wodel-Edu, contando
con el punto de vista del profesor
36
Trabajo futuro
37
Puedes descargarte el código
de este proyecto en GitHub:
http://gomezabajo.github.io/Wodel/
Una demo breve:
https://youtu.be/T9n3T0jGvzg
Gracias!!
Pablo.GomezA@uam.es

Weitere ähnliche Inhalte

Was ist angesagt?

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
 
Giving an agile flavor to Use Case documentation
Giving an agile flavor to Use Case documentationGiving an agile flavor to Use Case documentation
Giving an agile flavor to Use Case documentationWalter Carpio Molina
 
Angular 2 Campus Madrid Septiembre 2016
Angular 2 Campus Madrid Septiembre 2016Angular 2 Campus Madrid Septiembre 2016
Angular 2 Campus Madrid Septiembre 2016Micael Gallego
 
Fases de prueba de software
Fases de prueba de softwareFases de prueba de software
Fases de prueba de softwareMarco Antonio
 

Was ist angesagt? (13)

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
 
tipos de pruebas
tipos de pruebastipos de pruebas
tipos de pruebas
 
Funciones
FuncionesFunciones
Funciones
 
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
 
The billion dollar mistake
The billion dollar mistakeThe billion dollar mistake
The billion dollar mistake
 
Giving an agile flavor to Use Case documentation
Giving an agile flavor to Use Case documentationGiving an agile flavor to Use Case documentation
Giving an agile flavor to Use Case documentation
 
Angular 2 Campus Madrid Septiembre 2016
Angular 2 Campus Madrid Septiembre 2016Angular 2 Campus Madrid Septiembre 2016
Angular 2 Campus Madrid Septiembre 2016
 
Fases de prueba de software
Fases de prueba de softwareFases de prueba de software
Fases de prueba de software
 
Empezando con Angular 2
Empezando con Angular 2Empezando con Angular 2
Empezando con Angular 2
 

Ähnlich wie Generador automático de ejercicios mediante mutación de modelos

Cross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.netCross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.netAlberto Diaz Martin
 
CrossDvlpu - REACT para desarrolladores de ASP.NET
CrossDvlpu - REACT para desarrolladores de ASP.NETCrossDvlpu - REACT para desarrolladores de ASP.NET
CrossDvlpu - REACT para desarrolladores de ASP.NETAlberto Diaz Martin
 
Framework .NET 3.5 06 Operativa básica del framework .net
Framework .NET 3.5 06 Operativa básica del framework .netFramework .NET 3.5 06 Operativa básica del framework .net
Framework .NET 3.5 06 Operativa básica del framework .netAntonio Palomares Sender
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño Ijjegonzalezf
 
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
 
Desarrollo de aplicasiones .net
Desarrollo de aplicasiones .netDesarrollo de aplicasiones .net
Desarrollo de aplicasiones .netjesus lopez
 
dokumen.tips_introduccion-javascript-javascript-introduccion-a-javascript.pptx
dokumen.tips_introduccion-javascript-javascript-introduccion-a-javascript.pptxdokumen.tips_introduccion-javascript-javascript-introduccion-a-javascript.pptx
dokumen.tips_introduccion-javascript-javascript-introduccion-a-javascript.pptxRobertoDupuy
 
JSR354: Moneda y Dinero
JSR354: Moneda y DineroJSR354: Moneda y Dinero
JSR354: Moneda y DineroAlexis Lopez
 
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.Juan Manuel
 
Presentacion Hanuman
Presentacion HanumanPresentacion Hanuman
Presentacion Hanumanfelixgborrego
 
Mootools Y Otros Frameworks JS
Mootools Y Otros Frameworks JSMootools Y Otros Frameworks JS
Mootools Y Otros Frameworks JSIan Monge Pérez
 
Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700Luis Fernando Aguas Bucheli
 
Introducción a Backbone
Introducción a BackboneIntroducción a Backbone
Introducción a BackboneOscar Gensollen
 
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptxEFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptxLuis Fernando Aguas Bucheli
 

Ähnlich wie Generador automático de ejercicios mediante mutación de modelos (20)

Cross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.netCross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.net
 
CrossDvlpu - REACT para desarrolladores de ASP.NET
CrossDvlpu - REACT para desarrolladores de ASP.NETCrossDvlpu - REACT para desarrolladores de ASP.NET
CrossDvlpu - REACT para desarrolladores de ASP.NET
 
Framework .NET 3.5 06 Operativa básica del framework .net
Framework .NET 3.5 06 Operativa básica del framework .netFramework .NET 3.5 06 Operativa básica del framework .net
Framework .NET 3.5 06 Operativa básica del framework .net
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño I
 
Capa de persistencia con ecto
Capa de persistencia con ectoCapa de persistencia con ecto
Capa de persistencia con ecto
 
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
 
Desarrollo de aplicasiones .net
Desarrollo de aplicasiones .netDesarrollo de aplicasiones .net
Desarrollo de aplicasiones .net
 
dokumen.tips_introduccion-javascript-javascript-introduccion-a-javascript.pptx
dokumen.tips_introduccion-javascript-javascript-introduccion-a-javascript.pptxdokumen.tips_introduccion-javascript-javascript-introduccion-a-javascript.pptx
dokumen.tips_introduccion-javascript-javascript-introduccion-a-javascript.pptx
 
JSR354: Moneda y Dinero
JSR354: Moneda y DineroJSR354: Moneda y Dinero
JSR354: Moneda y Dinero
 
Operadores poo
Operadores pooOperadores poo
Operadores poo
 
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.
 
Presentacion Hanuman
Presentacion HanumanPresentacion Hanuman
Presentacion Hanuman
 
Manual Basico De Struts
Manual Basico De StrutsManual Basico De Struts
Manual Basico De Struts
 
Mootools Y Otros Frameworks JS
Mootools Y Otros Frameworks JSMootools Y Otros Frameworks JS
Mootools Y Otros Frameworks JS
 
Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700
 
Apache Camel - Parte II
Apache Camel - Parte IIApache Camel - Parte II
Apache Camel - Parte II
 
Introducción a Backbone
Introducción a BackboneIntroducción a Backbone
Introducción a Backbone
 
Jdbc
JdbcJdbc
Jdbc
 
Diapositivas objeto statement
Diapositivas objeto statementDiapositivas objeto statement
Diapositivas objeto statement
 
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptxEFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
 

Mehr von 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
 

Mehr von 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
 

Kürzlich hochgeladen

ENSEÑAR ACUIDAR EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.
ENSEÑAR ACUIDAR  EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.ENSEÑAR ACUIDAR  EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.
ENSEÑAR ACUIDAR EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.karlazoegarciagarcia
 
4° SES COM MAR 09 Leemos una noticia del dengue e identificamos sus partes (1...
4° SES COM MAR 09 Leemos una noticia del dengue e identificamos sus partes (1...4° SES COM MAR 09 Leemos una noticia del dengue e identificamos sus partes (1...
4° SES COM MAR 09 Leemos una noticia del dengue e identificamos sus partes (1...MagalyDacostaPea
 
HISPANIDAD - La cultura común de la HISPANOAMERICA
HISPANIDAD - La cultura común de la HISPANOAMERICAHISPANIDAD - La cultura común de la HISPANOAMERICA
HISPANIDAD - La cultura común de la HISPANOAMERICAJesus Gonzalez Losada
 
Presentación Bloque 3 Actividad 2 transversal.pptx
Presentación Bloque 3 Actividad 2 transversal.pptxPresentación Bloque 3 Actividad 2 transversal.pptx
Presentación Bloque 3 Actividad 2 transversal.pptxRosabel UA
 
Programa sintetico fase 2 - Preescolar.pdf
Programa sintetico fase 2 - Preescolar.pdfPrograma sintetico fase 2 - Preescolar.pdf
Programa sintetico fase 2 - Preescolar.pdfHannyDenissePinedaOr
 
DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...
DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...
DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...Martin M Flynn
 
EJEMPLO MODELO DE PLAN DE REFUERZO ESCOLAR.docx
EJEMPLO MODELO DE PLAN DE REFUERZO ESCOLAR.docxEJEMPLO MODELO DE PLAN DE REFUERZO ESCOLAR.docx
EJEMPLO MODELO DE PLAN DE REFUERZO ESCOLAR.docxFabianValenciaJabo
 
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).hebegris04
 
Actividades eclipse solar 2024 Educacion
Actividades eclipse solar 2024 EducacionActividades eclipse solar 2024 Educacion
Actividades eclipse solar 2024 Educacionviviantorres91
 
Salvando mi mundo , mi comunidad , y mi entorno
Salvando mi mundo , mi comunidad  , y mi entornoSalvando mi mundo , mi comunidad  , y mi entorno
Salvando mi mundo , mi comunidad , y mi entornoday561sol
 
BITÁCORA DE ESTUDIO DE PROBLEMÁTICA. TUTORÍA V. PDF 2 UNIDAD.pdf
BITÁCORA DE ESTUDIO DE PROBLEMÁTICA. TUTORÍA V. PDF 2 UNIDAD.pdfBITÁCORA DE ESTUDIO DE PROBLEMÁTICA. TUTORÍA V. PDF 2 UNIDAD.pdf
BITÁCORA DE ESTUDIO DE PROBLEMÁTICA. TUTORÍA V. PDF 2 UNIDAD.pdfsolidalilaalvaradoro
 
libro grafismo fonético guía de uso para el lenguaje
libro grafismo fonético guía de uso para el lenguajelibro grafismo fonético guía de uso para el lenguaje
libro grafismo fonético guía de uso para el lenguajeKattyMoran3
 
NUEVO PLAN Y PROGRAMAS DE ESTUDIO 2022.pdf
NUEVO PLAN Y PROGRAMAS DE ESTUDIO  2022.pdfNUEVO PLAN Y PROGRAMAS DE ESTUDIO  2022.pdf
NUEVO PLAN Y PROGRAMAS DE ESTUDIO 2022.pdfEDNAMONICARUIZNIETO
 
4° UNIDAD 2 SALUD,ALIMENTACIÓN Y DÍA DE LA MADRE 933623393 PROF YESSENIA CN.docx
4° UNIDAD 2 SALUD,ALIMENTACIÓN Y DÍA DE LA MADRE 933623393 PROF YESSENIA CN.docx4° UNIDAD 2 SALUD,ALIMENTACIÓN Y DÍA DE LA MADRE 933623393 PROF YESSENIA CN.docx
4° UNIDAD 2 SALUD,ALIMENTACIÓN Y DÍA DE LA MADRE 933623393 PROF YESSENIA CN.docxMagalyDacostaPea
 
PRIMER GRADO SOY LECTOR PART1- MD EDUCATIVO.pdf
PRIMER GRADO SOY LECTOR PART1- MD  EDUCATIVO.pdfPRIMER GRADO SOY LECTOR PART1- MD  EDUCATIVO.pdf
PRIMER GRADO SOY LECTOR PART1- MD EDUCATIVO.pdfGabrieldeJesusLopezG
 
MEDIACIÓN INTERNACIONAL MF 1445 vl45.pdf
MEDIACIÓN INTERNACIONAL MF 1445 vl45.pdfMEDIACIÓN INTERNACIONAL MF 1445 vl45.pdf
MEDIACIÓN INTERNACIONAL MF 1445 vl45.pdfJosé Hecht
 
LOS AMBIENTALISTAS todo por un mundo mejor
LOS AMBIENTALISTAS todo por un mundo mejorLOS AMBIENTALISTAS todo por un mundo mejor
LOS AMBIENTALISTAS todo por un mundo mejormrcrmnrojasgarcia
 

Kürzlich hochgeladen (20)

ENSEÑAR ACUIDAR EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.
ENSEÑAR ACUIDAR  EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.ENSEÑAR ACUIDAR  EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.
ENSEÑAR ACUIDAR EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.
 
4° SES COM MAR 09 Leemos una noticia del dengue e identificamos sus partes (1...
4° SES COM MAR 09 Leemos una noticia del dengue e identificamos sus partes (1...4° SES COM MAR 09 Leemos una noticia del dengue e identificamos sus partes (1...
4° SES COM MAR 09 Leemos una noticia del dengue e identificamos sus partes (1...
 
HISPANIDAD - La cultura común de la HISPANOAMERICA
HISPANIDAD - La cultura común de la HISPANOAMERICAHISPANIDAD - La cultura común de la HISPANOAMERICA
HISPANIDAD - La cultura común de la HISPANOAMERICA
 
Presentación Bloque 3 Actividad 2 transversal.pptx
Presentación Bloque 3 Actividad 2 transversal.pptxPresentación Bloque 3 Actividad 2 transversal.pptx
Presentación Bloque 3 Actividad 2 transversal.pptx
 
Aedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptxAedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptx
 
Programa sintetico fase 2 - Preescolar.pdf
Programa sintetico fase 2 - Preescolar.pdfPrograma sintetico fase 2 - Preescolar.pdf
Programa sintetico fase 2 - Preescolar.pdf
 
DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...
DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...
DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...
 
EJEMPLO MODELO DE PLAN DE REFUERZO ESCOLAR.docx
EJEMPLO MODELO DE PLAN DE REFUERZO ESCOLAR.docxEJEMPLO MODELO DE PLAN DE REFUERZO ESCOLAR.docx
EJEMPLO MODELO DE PLAN DE REFUERZO ESCOLAR.docx
 
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).
 
Actividades eclipse solar 2024 Educacion
Actividades eclipse solar 2024 EducacionActividades eclipse solar 2024 Educacion
Actividades eclipse solar 2024 Educacion
 
Salvando mi mundo , mi comunidad , y mi entorno
Salvando mi mundo , mi comunidad  , y mi entornoSalvando mi mundo , mi comunidad  , y mi entorno
Salvando mi mundo , mi comunidad , y mi entorno
 
BITÁCORA DE ESTUDIO DE PROBLEMÁTICA. TUTORÍA V. PDF 2 UNIDAD.pdf
BITÁCORA DE ESTUDIO DE PROBLEMÁTICA. TUTORÍA V. PDF 2 UNIDAD.pdfBITÁCORA DE ESTUDIO DE PROBLEMÁTICA. TUTORÍA V. PDF 2 UNIDAD.pdf
BITÁCORA DE ESTUDIO DE PROBLEMÁTICA. TUTORÍA V. PDF 2 UNIDAD.pdf
 
libro grafismo fonético guía de uso para el lenguaje
libro grafismo fonético guía de uso para el lenguajelibro grafismo fonético guía de uso para el lenguaje
libro grafismo fonético guía de uso para el lenguaje
 
NUEVO PLAN Y PROGRAMAS DE ESTUDIO 2022.pdf
NUEVO PLAN Y PROGRAMAS DE ESTUDIO  2022.pdfNUEVO PLAN Y PROGRAMAS DE ESTUDIO  2022.pdf
NUEVO PLAN Y PROGRAMAS DE ESTUDIO 2022.pdf
 
Acuerdo segundo periodo - Grado Noveno.pptx
Acuerdo segundo periodo - Grado Noveno.pptxAcuerdo segundo periodo - Grado Noveno.pptx
Acuerdo segundo periodo - Grado Noveno.pptx
 
4° UNIDAD 2 SALUD,ALIMENTACIÓN Y DÍA DE LA MADRE 933623393 PROF YESSENIA CN.docx
4° UNIDAD 2 SALUD,ALIMENTACIÓN Y DÍA DE LA MADRE 933623393 PROF YESSENIA CN.docx4° UNIDAD 2 SALUD,ALIMENTACIÓN Y DÍA DE LA MADRE 933623393 PROF YESSENIA CN.docx
4° UNIDAD 2 SALUD,ALIMENTACIÓN Y DÍA DE LA MADRE 933623393 PROF YESSENIA CN.docx
 
PRIMER GRADO SOY LECTOR PART1- MD EDUCATIVO.pdf
PRIMER GRADO SOY LECTOR PART1- MD  EDUCATIVO.pdfPRIMER GRADO SOY LECTOR PART1- MD  EDUCATIVO.pdf
PRIMER GRADO SOY LECTOR PART1- MD EDUCATIVO.pdf
 
MEDIACIÓN INTERNACIONAL MF 1445 vl45.pdf
MEDIACIÓN INTERNACIONAL MF 1445 vl45.pdfMEDIACIÓN INTERNACIONAL MF 1445 vl45.pdf
MEDIACIÓN INTERNACIONAL MF 1445 vl45.pdf
 
Acuerdo segundo periodo - Grado Sexto.pptx
Acuerdo segundo periodo - Grado Sexto.pptxAcuerdo segundo periodo - Grado Sexto.pptx
Acuerdo segundo periodo - Grado Sexto.pptx
 
LOS AMBIENTALISTAS todo por un mundo mejor
LOS AMBIENTALISTAS todo por un mundo mejorLOS AMBIENTALISTAS todo por un mundo mejor
LOS AMBIENTALISTAS todo por un mundo mejor
 

Generador automático de ejercicios mediante mutación de modelos

  • 1. Un framework para la generación automática de ejercicios mediante técnicas de mutación Universidad Autónoma de Madrid Pablo Gómez Abajo Tutores: Esther Guerra y Juan de Lara http://www.miso.es modelling & software engineering research group Trabajo Fin de Máster, Junio 2016
  • 2. • 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 • Generación automática de ejercicios • Algoritmos genéticos • … 2 0 101 0 110 1 010 Modelo semilla Modelos mutantes Mutación Modelo semilla ... if (a == true) then ... ... if (a != true) then ... Modelo mutante ¿Qué es la mutación de modelos?
  • 3. Objetivos • Diseño e implementación de: • Un lenguaje de mutación independiente del dominio: Wodel • Una aplicación de este lenguaje a la generación automática de ejercicios: Wodel-Edu • Motivación: • No hay lenguajes generales para la mutación de modelos • No hay frameworks para generar ejercicios de forma automática independientes del dominio • Wodel-Edu sirve además como prueba de concepto de Wodel 3
  • 4. I. Conceptos y técnicas utilizados II. DSL Wodel III. Framework Wodel-Edu IV. Conclusiones y trabajo futuro 4 Índice
  • 5. 5 I. Conceptos y técnicas de la Ingeniería Dirigida por Modelos
  • 6. • Un modelo es la descripción de un sistema utilizando un lenguaje • Un meta-modelo es un modelo que describe un lenguaje • Los meta-modelos se definen mediante diagramas de clase o diagramas entidad-relación • Restricciones OCL adicionales 6 Modelos y meta-modelos Automaton name: String State Transition * name: String isInitial: boolean isFinal: boolean src tar symbol0..1 states* * transitions inv1: self.states->one(s | s.isInitial) inv2: self.states->exists(s | s.isFinal) inv3: self.alphabet->forAll (a1, a2 | a1.symbol = a2.symbol implies a1 = a2) alphabet Symbol symbol: String
  • 7. • Un meta-modelo define la sintaxis abstracta del lenguaje • La sintaxis concreta incluye información sobre cómo visualizar y representar los conceptos de la sintaxis abstracta 7 Sintaxis abstracta y sintaxis concreta fa:Automaton states q0:State isInitial=true isFinal=true :Symbol symbol=a alphabet :Transition src tar symbol transitions Modelo de autómata finito Sintaxis concreta gráfica Sintaxis concreta textual (hecho con Xtext)
  • 8. • Un DSL 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 Java, C, etc. • Wodel es un DSL para aplicar mutaciones en modelos 8 Lenguajes de dominio específico (DSLs)
  • 9. 9 Transformación de modelos • Necesario para la manipulación de modelos • Out-place • In-place
  • 10. 10 Mutación de modelos • Tipo especial de transformación de modelos • Los modelos de entrada son los modelos semilla • Los modelos de salida son los mutantes • Los modelos semilla y los mutantes son conformes al mismo meta-modelo
  • 11. 11 Generación de código • Producción de código a partir de un modelo de un nivel más alto con el objetivo de crear una aplicación que funcione • Código Java de los programas Wodel • Código HTML y JavaScript de la aplicación web creada con Wodel-Edu Meta-modelo Modelo Motor de plantillas Plantilla Código
  • 12. 12 II. Wodel: un lenguaje de dominio específico para mutación de modelos
  • 13. Motivación • Los frameworks 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 propone el DSL Wodel para mutación de modelos, con: • Primitivas de mutación de alto nivel • Independencia del lenguaje y del dominio destino • Compilado a código Java • Extensible mediante post-procesadores 13
  • 14. 14 Esquema 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 pruebas de transformación de modelos pruebas de software basadas en modelos pruebas de líneas de producto software generación automática de ejercicios algoritmos genéticos ...
  • 15. Ejemplo 15 Automaton name: String State Transition * name: String isInitial: boolean isFinal: boolean src tar symbol0..1 states* * transitions inv1: self.states->one(s | s.isInitial) inv2: self.states->exists(s | s.isFinal) inv3: self.alphabet->forAll (a1, a2 | a1.symbol = a2.symbol implies a1 = a2) alphabet Symbol symbol: String generate 3 mutants in "out/" from "evenBinary.fa" metamodel "http://fa.com" with commands { s0 = modify one State where {isFinal = true} with {reverse(isFinal)} s1 = create State with {isFinal = true} t0 = create Transition with {src = s0, tar = s1, symbol = one Symbol} }
  • 16. Operadores de mutación 16 // creación de objetos/refs create State create reference tar in one Transition // modificación de objetos/refs modify one State with {isFinal = true} modify source src from one Transition modify target tar from one Transition // eliminación de objetos/refs remove one State remove reference tar in one Transition // mutaciones compuestas [ s0 = create State modify s0 with {name = 's0'} ] Mutation min: int=1 max: int=1 CreateObject ObjectEmitter EClass type 0..1 name: String[0..1] ObjectSelection Strategy container 0..1 EReference 0..1refType AttributeSet EAttribute attributes * Attribute Init Attribute Swap {ordered} Attribute Copy object 0..1 Modify Information object 0..1 attributes*attributes * Attribute Type value Composite Mutation * ModifySource Reference … ObjectSelection Strategy source newSource EReference refType 0..1 Asigna automáticamente los elementos creados a los contenedores Elimina las referencias que quedan sueltas al borrar elementos Comprueba las cardinalidades y restricciones OCL del meta-modelo Control de mutantes duplicados Compilado automático a código Java
  • 17. Bloques y restricciones OCL 17 • Wodel da soporte para bloques de mutaciones: • Generación de mutantes por etapas • Un bloque puede tomar como modelos semilla los mutantes generados en bloques declarados previamente • Jerarquía de carpetas para identificación de los mutantes • Control de mutantes repetidos con la directiva repeat=no • Útil para los ejercicios de selección de opciones de texto en Wodel-Edu • Restricciones OCL en el código Wodel: • Se aplican sobre los modelos mutantes generados, aunque no estén en el meta-modelo del dominio
  • 18. Registro de mutaciones 18 • Opcional, se activa desde la página de preferencias • Útil en la generación las opciones de texto en Wodel-Edu • Referencias a modelos semilla y a modelos mutantes • Opción de compactar el registro (mutaciones irrelevantes) Registry def AppliedMutation * Object Created Reference Changed refs Information Changed mutations * * … Attribute Changed Composite Mutation Source Reference Changed Target Reference Changed Reference Swap * atts Attribute Swap objects * Mutation EObject object objects * {ordered}
  • 19. 19 Arquitectura de la herramienta mutation registry seed models DSL meta- model postProc WODEL engine editor (Xtext) code gen (Xtend) Java code model mutants code completion, validator WODEL program «conforms» check generate, compile, execute «refers-to»«refers-to»
  • 20. 20 IDE de la herramienta • Completado de código, validación, generación de código, ...
  • 21. 21 1.... 2.// create transition 3.EClass transitionClass = (EClass)epackage.getEClassifier("Transition"); 4.EObject transition = EcoreUtil.create(transitionClass); 5. 6.// search object automaton in model 7.EObject automaton = null; 8.for (TreeIterator<EObject> it = seed.getAllContents(); it.hasNext();) { 9. automaton = it.next(); 10. if (automaton.eClass().getName().equals("Automaton")) { 11. // add transition to automaton 12. EStructuralFeature feature = 13. automaton.eClass().getEStructuralFeature("transitions"); 14. ((List<EObject>)automaton.eGet(feature)).add(transition); 15. // set random state as source of the transition 16. feature = automaton.eClass().getEStructuralFeature("states"); 17. List<EObject> states = (List<EObject>)automaton.eGet(feature); 18. EObject randomState = states.get(rand.nextInt(states.size())); 19. feature = transitionClass.getEStructuralFeature("src"); 20. transition.eSet(feature, randomState); 21.... Comparación de Wodel con Java create Transition with {symbol = one Symbol} Facilidad de integración con otros programas Java
  • 22. 22 III. Wodel-Edu: un framework para la generación automática de ejercicios mediante técnicas de mutación
  • 23. Motivación • Se propone el entorno Wodel-Edu – una extensión a Wodel – para la generación automática de ejercicios que es independiente del dominio • Aplicación web con tres formatos de ejercicios: • Respuesta alternativa • Selección de un diagrama entre varios • Selección de opciones de texto • Necesidad de: • Representación gráfica de los modelos • Generación de las opciones de texto • Generación de código HTML+JavaScript 23
  • 24. Arquitectura 24 postProc Motor del WODEL WODEL-EDU DSL eduTest DSL modelDraw mutantes representación gráfica de los modelos generación de código entorno de aprendizaje descripción de los ejercicios DSL modelText DSL mutaText identificación textual de los elementos descripción textual de las mutaciones
  • 25. Formatos de ejercicios I y II 25 • Respuesta alternativa • Selección de un diagrama entre varios
  • 26. Formato de ejercicios III 26 • Las opciones de texto (correctas e incorrectas) se generan utilizando el registro de mutaciones • Los DSLs modelText y mutaText se pueden utilizar para la configuración del texto de estas opciones • Selección de opciones de texto para corregir el diagrama
  • 27. Descripción del formato de ejercicios III 27 • Opciones generadas: correctas 1. Change attribute isFinal from State q2 with value true to false 2. Change Transition a from State q1 to State q0 with new target State q1 • Opciones generadas: incorrectas 1. Change attribute isFinal from State q0 with value false to true 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
  • 28. 28 IDE de Wodel-Edu I • DSL eduTest • DSL modelGraph
  • 29. 29 IDE de Wodel-Edu II • DSL modelText • DSL mutaText
  • 30. 30 Descripción de la evaluación • Se genera una aplicación web de ejercicios de test con Wodel-Edu (http://www.wodel.eu): • Primera página: 4 ejercicios de opciones de texto • Segunda página: 4 ejercicios de seleccionar un diagrama entre varios • Tercera página: 4 ejercicios de respuesta alternativa • Se miden 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 • Se consiguen 10 participantes (1 sin formación en autómatas, 8 hombres y 2 mujeres, entre 22 y 41 años, ...)
  • 31. 31 Resultados de la evaluación • Fácil de entender (68%, 78%, 76%) • Nivel adecuado de dificultad (82%, 89%, 87%) • Útil para aprender autómatas (94%, 94%, 88%) • Nota obtenida (50%, 67%, 63%)
  • 32. 32 Conclusiones de la evaluación • El ejercicio de selección de opciones de texto es complicado de entender: • Agrupar con mode=radiobutton en el DSL eduTest • Mostrar el resultado de aplicar la opción sobre el diagrama • Hacer el ejercicio interactivo • Dificultad percibida razonable • Se perciben como muy útiles para aprender autómatas • Cuestiones para evaluaciones posteriores • Incluir instrucciones o un tutorial • Influencia del orden de los ejercicios (mejor dificultad creciente) • Mezclar ejercicios generados de forma automática con otros hechos a mano • Evaluación desde el punto de vista del profesor
  • 33. 33 IV. Conclusiones y trabajo futuro
  • 34. • Wodel es un DSL para mutación de modelos: • Primitivas de mutación de alto nivel • Independiente del dominio • Da soporte a mutaciones compuestas • Da soporte a bloques de mutaciones: mutar mutantes generados previamente • Mutantes duplicados, validez de los mutantes • Compilado a Java • Extensible para diferentes aplicaciones • Wodel-Edu: generación automática de ejercicios mediante técnicas de mutación • Independiente del dominio • Tres tipos diferentes de ejercicios • Generación de opciones de texto basadas en el registro de mutaciones • Resultados prometedores para la educación 34 Conclusiones
  • 35. • Artículo ‘Wodel: a Domain-Specific Language for Model Mutation’ presentado en el 31st ACM Symposium on Applied Computing (SAC’16) que fue celebrado el pasado mes de abril en Pisa (Italia) • Artículo ‘A Domain-Specific Language for Model Mutation and its Application to the Automated Generation of Exercises’ para la revista Computer Languages, Systems and Structures (Elsevier) (en evaluación) 35 Publicaciones
  • 36. • Ampliar Wodel con nuevas primitivas de mutación • Desarrollar nuevos plugins para Wodel (para pruebas basadas en modelos, algoritmos genéticos…) • Ampliar Wodel-Edu para generar entornos de aprendizaje más complejos (p. ej., con gamificación), ejercicios (p. ej., que sean interactivos), y diferentes plataformas (móviles o tablets) • Hacer más experimentos con Wodel-Edu, contando con el punto de vista del profesor 36 Trabajo futuro
  • 37. 37 Puedes descargarte el código de este proyecto en GitHub: http://gomezabajo.github.io/Wodel/ Una demo breve: https://youtu.be/T9n3T0jGvzg Gracias!! Pablo.GomezA@uam.es