SlideShare una empresa de Scribd logo
1 de 39
Descargar para leer sin conexión
21 – 23 Octubre 2020, Ecuador
Automatización en el desarrollo de software
a través de lenguajes específicos de
dominio – caso CRUDyLeaf
Omar S. Gómez
FIE-ESPOCH
III Congreso Internacional de Ciencias Informáticas 21 – 23 Octubre 2020
Agenda
• Contexto
• Lenguajes específicos de dominio
• Automatización en el desarrollo de software - caso CRUDyLeaf
• Proceso para desarrollar un lenguaje específico de dominio
• Conclusiones
Contexto
Sin duda alguna, actualmente en nuestra sociedad, el software desempeña un
papel relevante, prácticamente se encuentra presente en todos los sectores:
- Educación
- Defensa
- Ciencia
- Servicios
- Ocio
- Etc.
FACULTAD DE INFORMÁTICA Y ELECTRÓNICA, ESCUELA SUPERIOR POLITÉCNICA DE CHIMBORAZOImagen de: https://sp.depositphotos.com/201006334/stock-illustration-software-word-cloud-collage-business.html
Contexto
Principalmente, el software es desarrollado y corregido por profesionales del área
informática.
FACULTAD DE INFORMÁTICA Y ELECTRÓNICA, ESCUELA SUPERIOR POLITÉCNICA DE CHIMBORAZOImagen de: https://vizah.ch/en/how-to-choose-the-right-dedicated-software-development-team-in-2020/
Demanda mundial de profesionales del
software
FACULTAD DE INFORMÁTICA Y ELECTRÓNICA, ESCUELA SUPERIOR POLITÉCNICA DE CHIMBORAZO
Imagen de: https://www.michaelpage.co.uk/minisite/most-in-demand-professions/
Contexto
Dada la gran demanda de productos software, los profesionales del software día
con día se enfrentan con diferentes retos para entregar productos software en
tiempo, bajo presupuesto y con cierta calidad.
Procesos de automatización comienzan a aplicarse en diferentes fases del proceso
de desarrollo para agilizar la entrega de productos software.
FACULTAD DE INFORMÁTICA Y ELECTRÓNICA, ESCUELA SUPERIOR POLITÉCNICA DE CHIMBORAZO
Imagen de: https://www.krminc.com/custom-it-solutions/
Contexto
Como parte de estos procesos de automatización, de manera paulatina, el uso de
lenguajes específicos de dominio (en Inglés, domain specific languages o DSLs)
comienzan a utilizarse.
FACULTAD DE INFORMÁTICA Y ELECTRÓNICA, ESCUELA SUPERIOR POLITÉCNICA DE CHIMBORAZO
Imagen de: https://martinfowler.com/books/dsl.html
¿Qué es un lenguaje específico de
dominio?
A diferencia de los lenguajes de propósito general como Java, C# o UML, un
lenguaje específico de dominio (DSL) es diseñado para expresar instrucciones en
un espació de problema o dominio particular.
FACULTAD DE INFORMÁTICA Y ELECTRÓNICA, ESCUELA SUPERIOR POLITÉCNICA DE CHIMBORAZOImagen de: https://opensource.com/article/20/2/domain-specific-languages
Lenguajes específicos de dominio
Los DSLs pueden servir para diferentes propósitos particulares,
pueden ser usados en diferentes contextos por diferentes tipos de
usuarios.
Por ejemplo, algunos DSLs son usados por programadores y suelen
ser más técnicos, mientras que otros son menos técnicos y
requieren menos conocimientos técnicos por parte de los usuarios.
Lenguajes específicos de dominio
Algunos DSLs pueden ser extremadamente específicos y ser creados, por
ejemplo, sólo para usarse dentro de alguna compañía.
Estructura de un DSL
FACULTAD DE INFORMÁTICA Y ELECTRÓNICA, ESCUELA SUPERIOR POLITÉCNICA DE CHIMBORAZO
Imagen de: https://www.se-rwth.de/topics/Domain-Specific-Languages.php
Clasificación
Caracterización de los DSLs:
- Horizontal o Vertical (Dominio técnico vs Dominio de negocio)
- Interno o externo
- Gráfico o textual
- Declarativo o imperativo
https://qrgo.page.link/4J49G https://qrgo.page.link/2df3X
Información detallada en:
Algunos ejemplos de DSLs
DOT – DSL para definir grafos
PlantUML – DSL para crear diagramas UML
Gherkin – DSL para especificar pruebas funcionales
Sonic Pi – DSL para realizar live-coding y producción musical.
Más ejemplos en: https://qrgo.page.link/WV5cY
Ejemplo DSL: Sonic Pi
Características:
- Horizontal
- Interno
- Textual
- Imperativo
Fragmento de la canción can-can de Jacques Offenbach escrita en
Sonic Pi.
Código de la canción disponible en:
Ejemplo código DSL Sonic Pi
https://qrgo.page.link/f4Cbj
https://qrgo.page.link/ku321
Ejemplo DSL: PlantUML
FACULTAD DE INFORMÁTICA Y ELECTRÓNICA, ESCUELA SUPERIOR POLITÉCNICA DE CHIMBORAZO
Características:
- Horizontal
- Externo
- Textual
- Declarativo
Automatización en el desarrollo de
software – caso CRUDyLeaf
url: https://qrgo.page.link/8tCLh
Automatización en el desarrollo de
software – caso CRUDyLeaf
Motivación de CRUDyLeaf
En el universo Java, Spring Boot es un framework que ha ganado
popularidad a nivel mundial entre los desarrolladores. Spring Boot
es usado para implementar aplicaciones orientadas a micro
servicios las cuales son fácilmente desplegadas.
Motivación de CRUDyLeaf
En este contexto de Spring Boot, un tipo de aplicación comúnmente
desarrollada es la implementación del backend con micro servicios
(recursos REST) para efectuar operaciones CRUD (Create, Read,
Update, Delete) sobre tablas de alguna base de datos.
Estructura típica de del backend
con microservicios en Spring Boot
Estructura típica del backend con
microservicios en Spring Boot
Proceso para desarrollar un DSL
1. Inmersión
del dominio
2. Desarrollo de
la aplicación
plantilla
3. Definición de
la sintaxis
4. Generación
del metamodelo
5. Generador
de código
6. Despliegue
7. Refinamiento
Omar S. Gómez, Raúl H. Rosero, and Karen Cortés-Verdín.
2020. CRUDyLeaf: A DSL for Generating Spring Boot REST
APIs from Entity CRUD Operations. Cybern. Inf. Technol. 20, 3
(Sep 2020), 3–14.
Inmersión del dominio
Para el caso de CRUDyLeaf, la inmersión del dominio consistió en
conocer la estructura de un aplicación Spring Boot que expone
recursos REST (microservicios) asociados a operaciones CRUD de
tablas de una base de datos.
Desarrollo de la aplicación plantilla
Definición de la sintaxis
Para la definición de la sintaxis de
CRUDyLeaf se usó Xtext
Generación del metamodelo
A partir de la definición de la sintaxis, se genera un meta modelo el cual permitirá extraer
información sobre la sintaxis del DSL. Este metamodelo es utilizado para generar el código
según la sintaxis del DSL.
Metamodelo
completo en:
Generador de código
El generador de código se
implementó con el
lenguaje Xtend
Despliegue
Una vez desarrollado el DSL, éste está listo para ser desplegado y utilizado. En este caso,
CRUDyLeaf se desarrolló como un plugin para el IDE eclipse.
Refinamiento
En esta última etapa del proceso de desarrollo de un DSL, el refinamiento
sirve para iterar a través de las anteriores etapas y mejorar el DSL propuesto.
Ejemplo de sintaxis y uso de
CRUDyLeaf
Video con ejemplo
De CRUDyLeaf
Ejemplo de archivos de código
generados por CRUDyLeaf
Ejemplo de código generado por
CRUDyLeaf
Ejecución del backend generado por
CRUDyLeaf
Evaluación de CRUDyLeaf
Con 18 líneas de código (ejemplo descrito en Gómez et al., 2020) escritas en
CRUDyLeaf se generaron automáticamente 578 LOC.
Generated File LOC
pom.xml 58
application.properties 10
DemoApplication.java 47
DemoApplicationTests.java 19
Car.java 36
CarController.java 63
CarRepository.java 22
CarService.java 68
Order.java 66
OrderController.java 66
OrderRepository.java 30
OrderService.java 70
RecordNotFoundException.java 23
Total 578
Omar S. Gómez, Raúl H. Rosero, and Karen Cortés-Verdín.
2020. CRUDyLeaf: A DSL for Generating Spring Boot REST
APIs from Entity CRUD Operations. Cybern. Inf. Technol. 20, 3
(Sep 2020), 3–14.
Tasa de automatización (LOCS): 32:1
Ventajas y desventajas
de los DSLs
FACULTAD DE INFORMÁTICA Y ELECTRÓNICA, ESCUELA SUPERIOR POLITÉCNICA DE CHIMBORAZO
Imagen de: https://tomassetti.me/domain-specific-languages/
Conclusiones
Dada la gran demanda por profesionales en el desarrollo de software, una
opción para agilizar el desarrollo de éste es utilizar lenguajes específicos de
dominio.
Los lenguajes específicos de dominio (DSLs) pueden ser utilizados en diferentes
etapas del proceso de desarrollo software.
Para desarrollar un DSL se pueden usar como referencia las etapas antes
descritas: inmersión del dominio, desarrollo de la aplicación plantilla,
definición de la sintaxis, generación del metamodelo, implementación del
generador de código, despliegue y refinamiento.
CRUDyLeaf facilita el desarrollo de aplicaciones Spring Boot que exponen
recursos REST (microservicios) a partir de operaciones CRUD.
ogomez@espoch.edu.ec

Más contenido relacionado

La actualidad más candente

Lenguaje de programación C - Cleibery.
Lenguaje de programación C - Cleibery.Lenguaje de programación C - Cleibery.
Lenguaje de programación C - Cleibery.cleiberylobo
 
Programacion ii modulo2-leccion1
Programacion ii modulo2-leccion1Programacion ii modulo2-leccion1
Programacion ii modulo2-leccion1karlalopezbello
 
Mi lenguaje de programación de preferencia c++
Mi lenguaje de programación de preferencia c++Mi lenguaje de programación de preferencia c++
Mi lenguaje de programación de preferencia c++bastard1
 
Lenguaje c
Lenguaje cLenguaje c
Lenguaje cAle2417
 
LENGUAJES DE PROGRAMACION
LENGUAJES DE PROGRAMACIONLENGUAJES DE PROGRAMACION
LENGUAJES DE PROGRAMACIONBryan Perdomo
 
Microsoft .NET Propuesta
Microsoft .NET PropuestaMicrosoft .NET Propuesta
Microsoft .NET PropuestaMarcel Aponte
 
Azure Storage y Xamarin - Tec Tianguistenco
Azure Storage y Xamarin - Tec TianguistencoAzure Storage y Xamarin - Tec Tianguistenco
Azure Storage y Xamarin - Tec Tianguistencoenriqueaguilar
 
Qué visual basic
 Qué visual basic Qué visual basic
Qué visual basicUniversidad
 
1.introducción a las computadoras, internet y java
1.introducción a las computadoras, internet y java1.introducción a las computadoras, internet y java
1.introducción a las computadoras, internet y javaRamiro Estigarribia Canese
 
Historia y caracteristicas del lenguaje c opt
Historia y caracteristicas del lenguaje c optHistoria y caracteristicas del lenguaje c opt
Historia y caracteristicas del lenguaje c optMarvin Romero
 
Alexandrarevelo 10jm 4p Tarea01 Programacion
Alexandrarevelo 10jm 4p Tarea01 ProgramacionAlexandrarevelo 10jm 4p Tarea01 Programacion
Alexandrarevelo 10jm 4p Tarea01 Programacionguestbe59d1
 

La actualidad más candente (20)

Lenguaje de programación C - Cleibery.
Lenguaje de programación C - Cleibery.Lenguaje de programación C - Cleibery.
Lenguaje de programación C - Cleibery.
 
Programacion ii modulo2-leccion1
Programacion ii modulo2-leccion1Programacion ii modulo2-leccion1
Programacion ii modulo2-leccion1
 
Introduccion a Visual C Sharp
Introduccion a Visual C SharpIntroduccion a Visual C Sharp
Introduccion a Visual C Sharp
 
Mi lenguaje de programación de preferencia c++
Mi lenguaje de programación de preferencia c++Mi lenguaje de programación de preferencia c++
Mi lenguaje de programación de preferencia c++
 
Lenguaje c
Lenguaje cLenguaje c
Lenguaje c
 
Lenguaje c
Lenguaje cLenguaje c
Lenguaje c
 
Mi lenguaje de programación de preferencia
Mi lenguaje de programación de preferenciaMi lenguaje de programación de preferencia
Mi lenguaje de programación de preferencia
 
Clase2
Clase2Clase2
Clase2
 
LENGUAJES DE PROGRAMACION
LENGUAJES DE PROGRAMACIONLENGUAJES DE PROGRAMACION
LENGUAJES DE PROGRAMACION
 
Wikitude. ARchiect
Wikitude. ARchiectWikitude. ARchiect
Wikitude. ARchiect
 
Desarrollo Full Stack. El nuevo rol del programador
Desarrollo Full Stack. El nuevo rol del programadorDesarrollo Full Stack. El nuevo rol del programador
Desarrollo Full Stack. El nuevo rol del programador
 
Microsoft .NET Propuesta
Microsoft .NET PropuestaMicrosoft .NET Propuesta
Microsoft .NET Propuesta
 
Lenguaje c
Lenguaje cLenguaje c
Lenguaje c
 
Azure Storage y Xamarin - Tec Tianguistenco
Azure Storage y Xamarin - Tec TianguistencoAzure Storage y Xamarin - Tec Tianguistenco
Azure Storage y Xamarin - Tec Tianguistenco
 
Qué visual basic
 Qué visual basic Qué visual basic
Qué visual basic
 
Universidad autónoma de chiapas
Universidad autónoma de chiapasUniversidad autónoma de chiapas
Universidad autónoma de chiapas
 
1.introducción a las computadoras, internet y java
1.introducción a las computadoras, internet y java1.introducción a las computadoras, internet y java
1.introducción a las computadoras, internet y java
 
Guia teorica
Guia teoricaGuia teorica
Guia teorica
 
Historia y caracteristicas del lenguaje c opt
Historia y caracteristicas del lenguaje c optHistoria y caracteristicas del lenguaje c opt
Historia y caracteristicas del lenguaje c opt
 
Alexandrarevelo 10jm 4p Tarea01 Programacion
Alexandrarevelo 10jm 4p Tarea01 ProgramacionAlexandrarevelo 10jm 4p Tarea01 Programacion
Alexandrarevelo 10jm 4p Tarea01 Programacion
 

Similar a Automatización en el desarrollo de software a través de lenguajes específicos de dominio – caso CRUDyLeaf

Introduccion Aplicaciones Web en java j2ee
Introduccion Aplicaciones Web en java j2ee Introduccion Aplicaciones Web en java j2ee
Introduccion Aplicaciones Web en java j2ee Rodrigo Zottola Pareja
 
Trabajo escrito de contra jornada
Trabajo escrito de contra jornadaTrabajo escrito de contra jornada
Trabajo escrito de contra jornadaBryanandrey
 
Unidad 4
Unidad 4Unidad 4
Unidad 4mi casa
 
Nuevas tecnologías reingsys 31_3_09
Nuevas tecnologías reingsys 31_3_09Nuevas tecnologías reingsys 31_3_09
Nuevas tecnologías reingsys 31_3_09Reingsys
 
Programacion IV - Semana 01.pptx
Programacion IV - Semana 01.pptxProgramacion IV - Semana 01.pptx
Programacion IV - Semana 01.pptxErrol31
 
Reconocimiento de voz c#
Reconocimiento de voz c#Reconocimiento de voz c#
Reconocimiento de voz c#Braulio Alvarez
 
Tecnologia web
Tecnologia webTecnologia web
Tecnologia webfanyto
 
Introdución a aplicaciones web en java
Introdución a aplicaciones web en java Introdución a aplicaciones web en java
Introdución a aplicaciones web en java Rodrigo Zottola Pareja
 
Aspect Oriented Programming introduction
Aspect Oriented Programming introductionAspect Oriented Programming introduction
Aspect Oriented Programming introductionMiguel Pastor
 
TEMAS RELACIONADOS WEB2
TEMAS RELACIONADOS WEB2TEMAS RELACIONADOS WEB2
TEMAS RELACIONADOS WEB2guest33bc33
 
Proyecto de Aplicación-Implementación de una INTRANET = Colegio Sagrado Coraz...
Proyecto de Aplicación-Implementación de una INTRANET = Colegio Sagrado Coraz...Proyecto de Aplicación-Implementación de una INTRANET = Colegio Sagrado Coraz...
Proyecto de Aplicación-Implementación de una INTRANET = Colegio Sagrado Coraz...Ianpierr Miranda
 
Zend Framework2
Zend Framework2Zend Framework2
Zend Framework2uni
 
Tecnologías de Desarrollo de Sistemas Distribuidos basados en Objetos
Tecnologías de Desarrollo de Sistemas Distribuidos basados en ObjetosTecnologías de Desarrollo de Sistemas Distribuidos basados en Objetos
Tecnologías de Desarrollo de Sistemas Distribuidos basados en ObjetosTensor
 
Programacion basica-en-java
Programacion basica-en-javaProgramacion basica-en-java
Programacion basica-en-javaDaniel Martinez
 

Similar a Automatización en el desarrollo de software a través de lenguajes específicos de dominio – caso CRUDyLeaf (20)

Olivares
OlivaresOlivares
Olivares
 
Temas Relacionados Web 2
Temas Relacionados Web 2Temas Relacionados Web 2
Temas Relacionados Web 2
 
Introduccion Aplicaciones Web en java j2ee
Introduccion Aplicaciones Web en java j2ee Introduccion Aplicaciones Web en java j2ee
Introduccion Aplicaciones Web en java j2ee
 
Trabajo escrito de contra jornada
Trabajo escrito de contra jornadaTrabajo escrito de contra jornada
Trabajo escrito de contra jornada
 
Unidad 4
Unidad 4Unidad 4
Unidad 4
 
Nuevas tecnologías reingsys 31_3_09
Nuevas tecnologías reingsys 31_3_09Nuevas tecnologías reingsys 31_3_09
Nuevas tecnologías reingsys 31_3_09
 
Programacion IV - Semana 01.pptx
Programacion IV - Semana 01.pptxProgramacion IV - Semana 01.pptx
Programacion IV - Semana 01.pptx
 
Reconocimiento de voz c#
Reconocimiento de voz c#Reconocimiento de voz c#
Reconocimiento de voz c#
 
Sercicios web
Sercicios webSercicios web
Sercicios web
 
Tecnologia web
Tecnologia webTecnologia web
Tecnologia web
 
Introdución a aplicaciones web en java
Introdución a aplicaciones web en java Introdución a aplicaciones web en java
Introdución a aplicaciones web en java
 
Aspect Oriented Programming introduction
Aspect Oriented Programming introductionAspect Oriented Programming introduction
Aspect Oriented Programming introduction
 
TEMAS RELACIONADOS WEB2
TEMAS RELACIONADOS WEB2TEMAS RELACIONADOS WEB2
TEMAS RELACIONADOS WEB2
 
Proyecto de Aplicación-Implementación de una INTRANET = Colegio Sagrado Coraz...
Proyecto de Aplicación-Implementación de una INTRANET = Colegio Sagrado Coraz...Proyecto de Aplicación-Implementación de una INTRANET = Colegio Sagrado Coraz...
Proyecto de Aplicación-Implementación de una INTRANET = Colegio Sagrado Coraz...
 
Zend Framework2
Zend Framework2Zend Framework2
Zend Framework2
 
Tecnologías de Desarrollo de Sistemas Distribuidos basados en Objetos
Tecnologías de Desarrollo de Sistemas Distribuidos basados en ObjetosTecnologías de Desarrollo de Sistemas Distribuidos basados en Objetos
Tecnologías de Desarrollo de Sistemas Distribuidos basados en Objetos
 
Tutorial 2
Tutorial 2Tutorial 2
Tutorial 2
 
Tutorial 2
Tutorial 2Tutorial 2
Tutorial 2
 
Programacion basica-en-java
Programacion basica-en-javaProgramacion basica-en-java
Programacion basica-en-java
 
Tutorial 2
Tutorial 2Tutorial 2
Tutorial 2
 

Automatización en el desarrollo de software a través de lenguajes específicos de dominio – caso CRUDyLeaf

  • 1. 21 – 23 Octubre 2020, Ecuador
  • 2. Automatización en el desarrollo de software a través de lenguajes específicos de dominio – caso CRUDyLeaf Omar S. Gómez FIE-ESPOCH III Congreso Internacional de Ciencias Informáticas 21 – 23 Octubre 2020
  • 3. Agenda • Contexto • Lenguajes específicos de dominio • Automatización en el desarrollo de software - caso CRUDyLeaf • Proceso para desarrollar un lenguaje específico de dominio • Conclusiones
  • 4. Contexto Sin duda alguna, actualmente en nuestra sociedad, el software desempeña un papel relevante, prácticamente se encuentra presente en todos los sectores: - Educación - Defensa - Ciencia - Servicios - Ocio - Etc. FACULTAD DE INFORMÁTICA Y ELECTRÓNICA, ESCUELA SUPERIOR POLITÉCNICA DE CHIMBORAZOImagen de: https://sp.depositphotos.com/201006334/stock-illustration-software-word-cloud-collage-business.html
  • 5. Contexto Principalmente, el software es desarrollado y corregido por profesionales del área informática. FACULTAD DE INFORMÁTICA Y ELECTRÓNICA, ESCUELA SUPERIOR POLITÉCNICA DE CHIMBORAZOImagen de: https://vizah.ch/en/how-to-choose-the-right-dedicated-software-development-team-in-2020/
  • 6. Demanda mundial de profesionales del software FACULTAD DE INFORMÁTICA Y ELECTRÓNICA, ESCUELA SUPERIOR POLITÉCNICA DE CHIMBORAZO Imagen de: https://www.michaelpage.co.uk/minisite/most-in-demand-professions/
  • 7. Contexto Dada la gran demanda de productos software, los profesionales del software día con día se enfrentan con diferentes retos para entregar productos software en tiempo, bajo presupuesto y con cierta calidad. Procesos de automatización comienzan a aplicarse en diferentes fases del proceso de desarrollo para agilizar la entrega de productos software. FACULTAD DE INFORMÁTICA Y ELECTRÓNICA, ESCUELA SUPERIOR POLITÉCNICA DE CHIMBORAZO Imagen de: https://www.krminc.com/custom-it-solutions/
  • 8. Contexto Como parte de estos procesos de automatización, de manera paulatina, el uso de lenguajes específicos de dominio (en Inglés, domain specific languages o DSLs) comienzan a utilizarse. FACULTAD DE INFORMÁTICA Y ELECTRÓNICA, ESCUELA SUPERIOR POLITÉCNICA DE CHIMBORAZO Imagen de: https://martinfowler.com/books/dsl.html
  • 9. ¿Qué es un lenguaje específico de dominio? A diferencia de los lenguajes de propósito general como Java, C# o UML, un lenguaje específico de dominio (DSL) es diseñado para expresar instrucciones en un espació de problema o dominio particular. FACULTAD DE INFORMÁTICA Y ELECTRÓNICA, ESCUELA SUPERIOR POLITÉCNICA DE CHIMBORAZOImagen de: https://opensource.com/article/20/2/domain-specific-languages
  • 10. Lenguajes específicos de dominio Los DSLs pueden servir para diferentes propósitos particulares, pueden ser usados en diferentes contextos por diferentes tipos de usuarios. Por ejemplo, algunos DSLs son usados por programadores y suelen ser más técnicos, mientras que otros son menos técnicos y requieren menos conocimientos técnicos por parte de los usuarios.
  • 11. Lenguajes específicos de dominio Algunos DSLs pueden ser extremadamente específicos y ser creados, por ejemplo, sólo para usarse dentro de alguna compañía.
  • 12. Estructura de un DSL FACULTAD DE INFORMÁTICA Y ELECTRÓNICA, ESCUELA SUPERIOR POLITÉCNICA DE CHIMBORAZO Imagen de: https://www.se-rwth.de/topics/Domain-Specific-Languages.php
  • 13. Clasificación Caracterización de los DSLs: - Horizontal o Vertical (Dominio técnico vs Dominio de negocio) - Interno o externo - Gráfico o textual - Declarativo o imperativo https://qrgo.page.link/4J49G https://qrgo.page.link/2df3X Información detallada en:
  • 14. Algunos ejemplos de DSLs DOT – DSL para definir grafos PlantUML – DSL para crear diagramas UML Gherkin – DSL para especificar pruebas funcionales Sonic Pi – DSL para realizar live-coding y producción musical. Más ejemplos en: https://qrgo.page.link/WV5cY
  • 15. Ejemplo DSL: Sonic Pi Características: - Horizontal - Interno - Textual - Imperativo
  • 16. Fragmento de la canción can-can de Jacques Offenbach escrita en Sonic Pi. Código de la canción disponible en: Ejemplo código DSL Sonic Pi https://qrgo.page.link/f4Cbj https://qrgo.page.link/ku321
  • 17. Ejemplo DSL: PlantUML FACULTAD DE INFORMÁTICA Y ELECTRÓNICA, ESCUELA SUPERIOR POLITÉCNICA DE CHIMBORAZO Características: - Horizontal - Externo - Textual - Declarativo
  • 18. Automatización en el desarrollo de software – caso CRUDyLeaf
  • 19. url: https://qrgo.page.link/8tCLh Automatización en el desarrollo de software – caso CRUDyLeaf
  • 20. Motivación de CRUDyLeaf En el universo Java, Spring Boot es un framework que ha ganado popularidad a nivel mundial entre los desarrolladores. Spring Boot es usado para implementar aplicaciones orientadas a micro servicios las cuales son fácilmente desplegadas.
  • 21. Motivación de CRUDyLeaf En este contexto de Spring Boot, un tipo de aplicación comúnmente desarrollada es la implementación del backend con micro servicios (recursos REST) para efectuar operaciones CRUD (Create, Read, Update, Delete) sobre tablas de alguna base de datos.
  • 22. Estructura típica de del backend con microservicios en Spring Boot
  • 23. Estructura típica del backend con microservicios en Spring Boot
  • 24. Proceso para desarrollar un DSL 1. Inmersión del dominio 2. Desarrollo de la aplicación plantilla 3. Definición de la sintaxis 4. Generación del metamodelo 5. Generador de código 6. Despliegue 7. Refinamiento Omar S. Gómez, Raúl H. Rosero, and Karen Cortés-Verdín. 2020. CRUDyLeaf: A DSL for Generating Spring Boot REST APIs from Entity CRUD Operations. Cybern. Inf. Technol. 20, 3 (Sep 2020), 3–14.
  • 25. Inmersión del dominio Para el caso de CRUDyLeaf, la inmersión del dominio consistió en conocer la estructura de un aplicación Spring Boot que expone recursos REST (microservicios) asociados a operaciones CRUD de tablas de una base de datos.
  • 26. Desarrollo de la aplicación plantilla
  • 27. Definición de la sintaxis Para la definición de la sintaxis de CRUDyLeaf se usó Xtext
  • 28. Generación del metamodelo A partir de la definición de la sintaxis, se genera un meta modelo el cual permitirá extraer información sobre la sintaxis del DSL. Este metamodelo es utilizado para generar el código según la sintaxis del DSL. Metamodelo completo en:
  • 29. Generador de código El generador de código se implementó con el lenguaje Xtend
  • 30. Despliegue Una vez desarrollado el DSL, éste está listo para ser desplegado y utilizado. En este caso, CRUDyLeaf se desarrolló como un plugin para el IDE eclipse.
  • 31. Refinamiento En esta última etapa del proceso de desarrollo de un DSL, el refinamiento sirve para iterar a través de las anteriores etapas y mejorar el DSL propuesto.
  • 32. Ejemplo de sintaxis y uso de CRUDyLeaf Video con ejemplo De CRUDyLeaf
  • 33. Ejemplo de archivos de código generados por CRUDyLeaf
  • 34. Ejemplo de código generado por CRUDyLeaf
  • 35. Ejecución del backend generado por CRUDyLeaf
  • 36. Evaluación de CRUDyLeaf Con 18 líneas de código (ejemplo descrito en Gómez et al., 2020) escritas en CRUDyLeaf se generaron automáticamente 578 LOC. Generated File LOC pom.xml 58 application.properties 10 DemoApplication.java 47 DemoApplicationTests.java 19 Car.java 36 CarController.java 63 CarRepository.java 22 CarService.java 68 Order.java 66 OrderController.java 66 OrderRepository.java 30 OrderService.java 70 RecordNotFoundException.java 23 Total 578 Omar S. Gómez, Raúl H. Rosero, and Karen Cortés-Verdín. 2020. CRUDyLeaf: A DSL for Generating Spring Boot REST APIs from Entity CRUD Operations. Cybern. Inf. Technol. 20, 3 (Sep 2020), 3–14. Tasa de automatización (LOCS): 32:1
  • 37. Ventajas y desventajas de los DSLs FACULTAD DE INFORMÁTICA Y ELECTRÓNICA, ESCUELA SUPERIOR POLITÉCNICA DE CHIMBORAZO Imagen de: https://tomassetti.me/domain-specific-languages/
  • 38. Conclusiones Dada la gran demanda por profesionales en el desarrollo de software, una opción para agilizar el desarrollo de éste es utilizar lenguajes específicos de dominio. Los lenguajes específicos de dominio (DSLs) pueden ser utilizados en diferentes etapas del proceso de desarrollo software. Para desarrollar un DSL se pueden usar como referencia las etapas antes descritas: inmersión del dominio, desarrollo de la aplicación plantilla, definición de la sintaxis, generación del metamodelo, implementación del generador de código, despliegue y refinamiento. CRUDyLeaf facilita el desarrollo de aplicaciones Spring Boot que exponen recursos REST (microservicios) a partir de operaciones CRUD.