SlideShare une entreprise Scribd logo
1  sur  33
Domain Specific Language
generation based on
a XML Schema
13/12/2018
ÁREA DEPARTAMENTAL DE ENGENHARIA DE ELETRÓNICA E TELECOMUNICAÇÕES E DE COMPUTADORES
MESTRADO EM ENGENHARIA INFORMÁTICA E DE COMPUTADORES
1
Autor : Luís Duarte Nº 39378
Orientador: Fernando Miguel Gamboa de Carvalho
13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 2
• O que são?
• Externas.
• XSD.
Domain Specific Languages
13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 3
• O que são?
• Externas.
• XSD.
• Expressões regulares.
Domain Specific Languages
13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 4
• O que são?
• Externas.
• XSD.
• Expressões regulares.
• Internas.
• LINQ.
Domain Specific Languages
13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 5
Domain Specific Language Externa - HTML
Componente Estática
Componente Dinâmica
13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 6
Template Engines
Apache Velocity
ASP.NET
Laravel Blade
CodeCharge Studio
ColdFusion
CTPP
Django
FreeMarker
eRuby
Genshi
Go Templates
Haml
Hamlets
Thymeleaf
Smarty
Razor
PHP
Open Power Template
Mustache
Kid
Jinja
JSP
vlibTemplate
WebMarco
Twig
Handlebars
13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 7
• Segurança.
• Documentos bem formados.
• Validação das regras do HTML.
• Validação de objectos de contexto.
Template Engines - Problemas
13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 8
• Segurança.
• Documentos bem formados.
• Validação das regras do HTML.
• Validação de objectos de contexto.
• Desempenho.
Template Engines - Problemas
13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 9
• Segurança.
• Documentos bem formados.
• Validação das regras do HTML.
• Validação de objectos de contexto.
• Desempenho.
• Flexibilidade.
Template Engines - Problemas
If/Else:
For:
13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 10
• Segurança.
• Documentos bem formados.
• Validação das regras do HTML.
• Validação de objectos de contexto.
• Desempenho.
• Flexibilidade.
• Complexidade.
Template Engines - Problemas
13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 11
Template Engines – Os Inovadores
J2Html
KotlinHtml HtmlFlow1
Rocker
13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 12
Template Engines – As Inovações – J2Html
Templates em Java.
Documentos bem formados.
Regras de HTML.
Desempenho.
Incompleto.
13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 13
Template Engines – As Inovações - Rocker
Desempenho.
Valida objectos de contexto.
Completo.
Usa templates textuais.
Documentos bem formados.
Regras de HTML.
13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 14
Template Engines – As Inovações - KotlinHtml
Segurança.
Garante regras do HTML.
Templates em Kotlin.
Documentos bem formados.
Desempenho.
13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 15
Template Engines – As Inovações – HtmlFlow1
Tentativa de DSL de HTML.
Garante algumas regras do HTML.
Templates em Java.
Documentos bem formados.
Desempenho.
Garante apenas algumas regras.
Incompleto.
13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 16
Template Engines – As Inovações - Resumo
13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 17
Abordagem - xmlet
HtmlApiFaster
XsdAsmFaster
XsdParser
1) Ficheiro XSD, Nome DSL
2) Ficheiro XSD
3) Lista de elementos XSD
4) Classes geradas
• Geração de uma DSL Java.
13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 18
• Segurança.
• Regras da linguagem.
• Automatização + Reutilização.
• Rapidez.
• Evitar erro humano.
• Intuitivo.
• Transparente.
Objectivos - xmlet
13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 19
• Suporte completo à linguagem HTML.
• Desempenho.
• Manutenção.
• Templates definidos como funções.
Novo HtmlFlow – HtmlFlow + xmlet
13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 20
• Introdução.
• A motivação.
• “(...) That's about a thousand times faster than Apache Velocity.”
• Benchmarks utilizados.
• Spring Benchmark.
• Template Benchmark.
Benchmarks
13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 21
• Abordagem.
• Fiabilidade.
• Resultados.
Benchmarks – Spring Benchmark - Resultados
13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 22
Benchmarks – Spring Benchmark - Resultados
13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 23
• Abordagem.
• JMH.
• Resultados.
Benchmarks – Template Benchmark - Resultados
13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 24
Benchmarks – Template Benchmark - Resultados
13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 25
Benchmarks – Template Benchmark - Resultados
13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 26
Versatilidade – Android Visual Layouts
13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 27
Versatilidade – Android Visual Layouts
Android android = new Android(androidObj ->
androidObj.layout()
.linearLayout()
.attrLayoutWidth("wrap_content")
.attrLayoutHeight("wrap_content")
.attrGravity(EnumGravityLinearLayout.CENTER)
.textView()
.attrText("Hello MEIC!")
.attrLayoutWidth("wrap_content")
.attrLayoutHeight("wrap_content")
.attrTextSize("36sp")
.attrTextColor("@android:color/black")
.attrBackground("#ccddff")
.attrPadding("20dp")
.__()
.__());
String layout = android.getLayout();
13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 28
Versatilidade – Expressões Regulares
String toMatch = "regulares";
Desafio: Obter todos os caracteres no intervalo de ‘a’ a ‘d’ ou no intervalo de ‘r’ a ‘z’.
Expressão regular:
[a-d]|[r-z]
Resultados:
r
u
a
r
s
13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 29
Versatilidade – Expressões Regulares
String toMatch = "regulares";
Regex regex = new Regex(expr ->
expr.matchRegex()
.fromFirstUntilLast().attrFirst("a").attrLast("d")
.or()
.fromFirstUntilLast().attrFirst("r").attrLast("z"));
List<String> result = regex.match(toMatch);
13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 30
• O que é?
• Mapeamento de elementos.
• Validação das regras do XSD.
Versatilidade – XsdParser
13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 31
• HtmlFlow v3.0.
• Várias DSLs publicadas.
• Sub-projectos com utilizações variadas.
Conclusões
13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 32
Conclusões - Artigo
13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 33
Questões
“Template engines are a great way to build dynamic HTML pages,
but are you using the best template engine for your purposes?” - DZone

Contenu connexe

Similaire à Domain Specific Language generation based on a XML Schema.

Salao_Mexico_10h50m_16out_Cristiano_Ferraz_Netcon
Salao_Mexico_10h50m_16out_Cristiano_Ferraz_NetconSalao_Mexico_10h50m_16out_Cristiano_Ferraz_Netcon
Salao_Mexico_10h50m_16out_Cristiano_Ferraz_Netcon
Cristiano Ferraz
 
Estratégia Oracle para MySQL
Estratégia Oracle para MySQLEstratégia Oracle para MySQL
Estratégia Oracle para MySQL
MySQL Brasil
 
Introduction Android - C.E.S.A.R
Introduction Android - C.E.S.A.RIntroduction Android - C.E.S.A.R
Introduction Android - C.E.S.A.R
Renato
 
O comparativo de arquiteturas de software monolíticas em relação a arquitetur...
O comparativo de arquiteturas de software monolíticas em relação a arquitetur...O comparativo de arquiteturas de software monolíticas em relação a arquitetur...
O comparativo de arquiteturas de software monolíticas em relação a arquitetur...
Emmanuel Neri
 
ApresentaçãO Gerenciamento De Riscos
ApresentaçãO Gerenciamento De RiscosApresentaçãO Gerenciamento De Riscos
ApresentaçãO Gerenciamento De Riscos
Diego Martins
 

Similaire à Domain Specific Language generation based on a XML Schema. (20)

Salao_Mexico_10h50m_16out_Cristiano_Ferraz_Netcon
Salao_Mexico_10h50m_16out_Cristiano_Ferraz_NetconSalao_Mexico_10h50m_16out_Cristiano_Ferraz_Netcon
Salao_Mexico_10h50m_16out_Cristiano_Ferraz_Netcon
 
TDC2018SP | Trilha PHP Essencial - O que nao fazer ao atualizar para o PHP 7
TDC2018SP | Trilha PHP Essencial - O que nao fazer ao atualizar para o PHP 7TDC2018SP | Trilha PHP Essencial - O que nao fazer ao atualizar para o PHP 7
TDC2018SP | Trilha PHP Essencial - O que nao fazer ao atualizar para o PHP 7
 
Mobile Ria Para Aplicacoes Para Negocios
Mobile Ria Para Aplicacoes Para NegociosMobile Ria Para Aplicacoes Para Negocios
Mobile Ria Para Aplicacoes Para Negocios
 
Apresentacao pré banca TCC em SI
Apresentacao pré banca TCC em SIApresentacao pré banca TCC em SI
Apresentacao pré banca TCC em SI
 
Estratégia Oracle para MySQL
Estratégia Oracle para MySQLEstratégia Oracle para MySQL
Estratégia Oracle para MySQL
 
Planejamento de Capacidade Dirigido a Negócios para Aplicações SaaS de Comérc...
Planejamento de Capacidade Dirigido a Negócios para Aplicações SaaS de Comérc...Planejamento de Capacidade Dirigido a Negócios para Aplicações SaaS de Comérc...
Planejamento de Capacidade Dirigido a Negócios para Aplicações SaaS de Comérc...
 
Introduction Android - C.E.S.A.R
Introduction Android - C.E.S.A.RIntroduction Android - C.E.S.A.R
Introduction Android - C.E.S.A.R
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
O comparativo de arquiteturas de software monolíticas em relação a arquitetur...
O comparativo de arquiteturas de software monolíticas em relação a arquitetur...O comparativo de arquiteturas de software monolíticas em relação a arquitetur...
O comparativo de arquiteturas de software monolíticas em relação a arquitetur...
 
Programando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkProgramando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um Framework
 
Projetos Digitais v.1.13 from 2013
Projetos Digitais v.1.13 from 2013Projetos Digitais v.1.13 from 2013
Projetos Digitais v.1.13 from 2013
 
Projetos Digitais v.1.8 from 2010
Projetos Digitais v.1.8 from 2010Projetos Digitais v.1.8 from 2010
Projetos Digitais v.1.8 from 2010
 
Aula 1 view model livedata e databinding.pptx
Aula 1   view model livedata e databinding.pptxAula 1   view model livedata e databinding.pptx
Aula 1 view model livedata e databinding.pptx
 
PROJ40-Loja de Pneus
PROJ40-Loja de PneusPROJ40-Loja de Pneus
PROJ40-Loja de Pneus
 
Tg460 project modelcanvas
Tg460 project modelcanvasTg460 project modelcanvas
Tg460 project modelcanvas
 
Desenvolvimento de um Portal Web Escalável e de alta Performance comCOM PROC...
Desenvolvimento de um Portal Web  Escalável e de alta Performance comCOM PROC...Desenvolvimento de um Portal Web  Escalável e de alta Performance comCOM PROC...
Desenvolvimento de um Portal Web Escalável e de alta Performance comCOM PROC...
 
ApresentaçãO Gerenciamento De Riscos
ApresentaçãO Gerenciamento De RiscosApresentaçãO Gerenciamento De Riscos
ApresentaçãO Gerenciamento De Riscos
 
ApresentaçãO Gerenciamento De Riscos
ApresentaçãO Gerenciamento De RiscosApresentaçãO Gerenciamento De Riscos
ApresentaçãO Gerenciamento De Riscos
 
Liferay Portugal User Group Slides 1º Meetup
Liferay Portugal User Group Slides 1º Meetup Liferay Portugal User Group Slides 1º Meetup
Liferay Portugal User Group Slides 1º Meetup
 
2016 dell-networking
2016 dell-networking2016 dell-networking
2016 dell-networking
 

Dernier (6)

Sistemas Termodinâmicos Aula 10 FPB Tambia.pdf
Sistemas Termodinâmicos Aula 10 FPB Tambia.pdfSistemas Termodinâmicos Aula 10 FPB Tambia.pdf
Sistemas Termodinâmicos Aula 10 FPB Tambia.pdf
 
NR10 - Treinamento LOTO - 2023.pp tx
NR10 - Treinamento LOTO - 2023.pp     txNR10 - Treinamento LOTO - 2023.pp     tx
NR10 - Treinamento LOTO - 2023.pp tx
 
70nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn6946.pptx
70nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn6946.pptx70nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn6946.pptx
70nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn6946.pptx
 
planejamento de obra utilizando o pert cpm.ppt
planejamento de obra utilizando o pert cpm.pptplanejamento de obra utilizando o pert cpm.ppt
planejamento de obra utilizando o pert cpm.ppt
 
Eletroquimica aplicada à Simulação do mundo físico-químico
Eletroquimica aplicada à Simulação do mundo físico-químicoEletroquimica aplicada à Simulação do mundo físico-químico
Eletroquimica aplicada à Simulação do mundo físico-químico
 
Tanques industriais, principais tipos , conceitos
Tanques industriais, principais tipos , conceitosTanques industriais, principais tipos , conceitos
Tanques industriais, principais tipos , conceitos
 

Domain Specific Language generation based on a XML Schema.

  • 1. Domain Specific Language generation based on a XML Schema 13/12/2018 ÁREA DEPARTAMENTAL DE ENGENHARIA DE ELETRÓNICA E TELECOMUNICAÇÕES E DE COMPUTADORES MESTRADO EM ENGENHARIA INFORMÁTICA E DE COMPUTADORES 1 Autor : Luís Duarte Nº 39378 Orientador: Fernando Miguel Gamboa de Carvalho
  • 2. 13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 2 • O que são? • Externas. • XSD. Domain Specific Languages
  • 3. 13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 3 • O que são? • Externas. • XSD. • Expressões regulares. Domain Specific Languages
  • 4. 13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 4 • O que são? • Externas. • XSD. • Expressões regulares. • Internas. • LINQ. Domain Specific Languages
  • 5. 13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 5 Domain Specific Language Externa - HTML Componente Estática Componente Dinâmica
  • 6. 13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 6 Template Engines Apache Velocity ASP.NET Laravel Blade CodeCharge Studio ColdFusion CTPP Django FreeMarker eRuby Genshi Go Templates Haml Hamlets Thymeleaf Smarty Razor PHP Open Power Template Mustache Kid Jinja JSP vlibTemplate WebMarco Twig Handlebars
  • 7. 13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 7 • Segurança. • Documentos bem formados. • Validação das regras do HTML. • Validação de objectos de contexto. Template Engines - Problemas
  • 8. 13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 8 • Segurança. • Documentos bem formados. • Validação das regras do HTML. • Validação de objectos de contexto. • Desempenho. Template Engines - Problemas
  • 9. 13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 9 • Segurança. • Documentos bem formados. • Validação das regras do HTML. • Validação de objectos de contexto. • Desempenho. • Flexibilidade. Template Engines - Problemas If/Else: For:
  • 10. 13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 10 • Segurança. • Documentos bem formados. • Validação das regras do HTML. • Validação de objectos de contexto. • Desempenho. • Flexibilidade. • Complexidade. Template Engines - Problemas
  • 11. 13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 11 Template Engines – Os Inovadores J2Html KotlinHtml HtmlFlow1 Rocker
  • 12. 13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 12 Template Engines – As Inovações – J2Html Templates em Java. Documentos bem formados. Regras de HTML. Desempenho. Incompleto.
  • 13. 13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 13 Template Engines – As Inovações - Rocker Desempenho. Valida objectos de contexto. Completo. Usa templates textuais. Documentos bem formados. Regras de HTML.
  • 14. 13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 14 Template Engines – As Inovações - KotlinHtml Segurança. Garante regras do HTML. Templates em Kotlin. Documentos bem formados. Desempenho.
  • 15. 13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 15 Template Engines – As Inovações – HtmlFlow1 Tentativa de DSL de HTML. Garante algumas regras do HTML. Templates em Java. Documentos bem formados. Desempenho. Garante apenas algumas regras. Incompleto.
  • 16. 13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 16 Template Engines – As Inovações - Resumo
  • 17. 13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 17 Abordagem - xmlet HtmlApiFaster XsdAsmFaster XsdParser 1) Ficheiro XSD, Nome DSL 2) Ficheiro XSD 3) Lista de elementos XSD 4) Classes geradas • Geração de uma DSL Java.
  • 18. 13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 18 • Segurança. • Regras da linguagem. • Automatização + Reutilização. • Rapidez. • Evitar erro humano. • Intuitivo. • Transparente. Objectivos - xmlet
  • 19. 13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 19 • Suporte completo à linguagem HTML. • Desempenho. • Manutenção. • Templates definidos como funções. Novo HtmlFlow – HtmlFlow + xmlet
  • 20. 13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 20 • Introdução. • A motivação. • “(...) That's about a thousand times faster than Apache Velocity.” • Benchmarks utilizados. • Spring Benchmark. • Template Benchmark. Benchmarks
  • 21. 13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 21 • Abordagem. • Fiabilidade. • Resultados. Benchmarks – Spring Benchmark - Resultados
  • 22. 13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 22 Benchmarks – Spring Benchmark - Resultados
  • 23. 13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 23 • Abordagem. • JMH. • Resultados. Benchmarks – Template Benchmark - Resultados
  • 24. 13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 24 Benchmarks – Template Benchmark - Resultados
  • 25. 13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 25 Benchmarks – Template Benchmark - Resultados
  • 26. 13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 26 Versatilidade – Android Visual Layouts
  • 27. 13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 27 Versatilidade – Android Visual Layouts Android android = new Android(androidObj -> androidObj.layout() .linearLayout() .attrLayoutWidth("wrap_content") .attrLayoutHeight("wrap_content") .attrGravity(EnumGravityLinearLayout.CENTER) .textView() .attrText("Hello MEIC!") .attrLayoutWidth("wrap_content") .attrLayoutHeight("wrap_content") .attrTextSize("36sp") .attrTextColor("@android:color/black") .attrBackground("#ccddff") .attrPadding("20dp") .__() .__()); String layout = android.getLayout();
  • 28. 13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 28 Versatilidade – Expressões Regulares String toMatch = "regulares"; Desafio: Obter todos os caracteres no intervalo de ‘a’ a ‘d’ ou no intervalo de ‘r’ a ‘z’. Expressão regular: [a-d]|[r-z] Resultados: r u a r s
  • 29. 13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 29 Versatilidade – Expressões Regulares String toMatch = "regulares"; Regex regex = new Regex(expr -> expr.matchRegex() .fromFirstUntilLast().attrFirst("a").attrLast("d") .or() .fromFirstUntilLast().attrFirst("r").attrLast("z")); List<String> result = regex.match(toMatch);
  • 30. 13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 30 • O que é? • Mapeamento de elementos. • Validação das regras do XSD. Versatilidade – XsdParser
  • 31. 13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 31 • HtmlFlow v3.0. • Várias DSLs publicadas. • Sub-projectos com utilizações variadas. Conclusões
  • 32. 13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 32 Conclusões - Artigo
  • 33. 13/12/2018 ADEETC – MEIC - DISSERTAÇÃO 33 Questões “Template engines are a great way to build dynamic HTML pages, but are you using the best template engine for your purposes?” - DZone