SlideShare a Scribd company logo
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

More Related Content

Similar to 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
 
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
tdc-globalcode
 
Mobile Ria Para Aplicacoes Para Negocios
Mobile Ria Para Aplicacoes Para NegociosMobile Ria Para Aplicacoes Para Negocios
Mobile Ria Para Aplicacoes Para Negocios
Rodney Repullo
 
PMCanvas oque e para que serve 10.05.pptx
PMCanvas oque e para que serve  10.05.pptxPMCanvas oque e para que serve  10.05.pptx
PMCanvas oque e para que serve 10.05.pptx
0000998206
 
Apresentacao pré banca TCC em SI
Apresentacao pré banca TCC em SIApresentacao pré banca TCC em SI
Apresentacao pré banca TCC em SI
Helton Ritter
 
Estratégia Oracle para MySQL
Estratégia Oracle para MySQLEstratégia Oracle para MySQL
Estratégia Oracle para MySQL
MySQL Brasil
 
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...
David Maia
 
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
 
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 ...
tdc-globalcode
 
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
 
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
Pablo Dall'Oglio
 
Projetos Digitais v.1.8 from 2010
Projetos Digitais v.1.8 from 2010Projetos Digitais v.1.8 from 2010
Projetos Digitais v.1.13 from 2013
Projetos Digitais v.1.13 from 2013Projetos Digitais v.1.13 from 2013
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
Ricardo Ogliari
 
PROJ40-Loja de Pneus
PROJ40-Loja de PneusPROJ40-Loja de Pneus
PROJ40-Loja de Pneus
Marco Coghi
 
Tg460 project modelcanvas
Tg460 project modelcanvasTg460 project modelcanvas
Tg460 project modelcanvas
Alexsander Fim
 
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...
Helton Ritter
 
ApresentaçãO Gerenciamento De Riscos
ApresentaçãO Gerenciamento De RiscosApresentaçãO Gerenciamento De Riscos
ApresentaçãO Gerenciamento De Riscos
Diego Martins
 
ApresentaçãO Gerenciamento De Riscos
ApresentaçãO Gerenciamento De RiscosApresentaçãO Gerenciamento De Riscos
ApresentaçãO Gerenciamento De Riscos
Diego Martins
 
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
Fernando Fernández
 

Similar to 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
 
PMCanvas oque e para que serve 10.05.pptx
PMCanvas oque e para que serve  10.05.pptxPMCanvas oque e para que serve  10.05.pptx
PMCanvas oque e para que serve 10.05.pptx
 
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.8 from 2010
Projetos Digitais v.1.8 from 2010Projetos Digitais v.1.8 from 2010
Projetos Digitais v.1.8 from 2010
 
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
 
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
 

Recently uploaded

Apresentação concreto autodesempenho 123
Apresentação concreto autodesempenho 123Apresentação concreto autodesempenho 123
Apresentação concreto autodesempenho 123
GabrielGarcia356832
 
Dimensionamento de eixo. estudo de caso.pdf
Dimensionamento de eixo. estudo de caso.pdfDimensionamento de eixo. estudo de caso.pdf
Dimensionamento de eixo. estudo de caso.pdf
RodrigoQuintilianode1
 
AULA LEI DOS SENOS OU COSSENOS - parte final (3) (1).pdf
AULA LEI DOS SENOS OU COSSENOS - parte final (3) (1).pdfAULA LEI DOS SENOS OU COSSENOS - parte final (3) (1).pdf
AULA LEI DOS SENOS OU COSSENOS - parte final (3) (1).pdf
MaxwellBentodeOlivei1
 
AE03 - ESTUDO CONTEMPORÂNEO E TRANSVERSAL COMUNICAÇÃO ASSERTIVA E INTERPESSOA...
AE03 - ESTUDO CONTEMPORÂNEO E TRANSVERSAL COMUNICAÇÃO ASSERTIVA E INTERPESSOA...AE03 - ESTUDO CONTEMPORÂNEO E TRANSVERSAL COMUNICAÇÃO ASSERTIVA E INTERPESSOA...
AE03 - ESTUDO CONTEMPORÂNEO E TRANSVERSAL COMUNICAÇÃO ASSERTIVA E INTERPESSOA...
Consultoria Acadêmica
 
Elementos de Máquina aplicados na tornearia mecânica.ppt
Elementos de Máquina aplicados na tornearia mecânica.pptElementos de Máquina aplicados na tornearia mecânica.ppt
Elementos de Máquina aplicados na tornearia mecânica.ppt
Wagner Moraes
 
AE03 - LOGISTICA EMPRESARIAL UNICESUMAR 52/2024
AE03 - LOGISTICA EMPRESARIAL UNICESUMAR 52/2024AE03 - LOGISTICA EMPRESARIAL UNICESUMAR 52/2024
AE03 - LOGISTICA EMPRESARIAL UNICESUMAR 52/2024
Consultoria Acadêmica
 
AE03 - ESTUDO CONTEMPORÂNEO E TRANSVERSAL EMPREENDEDORISMO CORPORATIVO UNICES...
AE03 - ESTUDO CONTEMPORÂNEO E TRANSVERSAL EMPREENDEDORISMO CORPORATIVO UNICES...AE03 - ESTUDO CONTEMPORÂNEO E TRANSVERSAL EMPREENDEDORISMO CORPORATIVO UNICES...
AE03 - ESTUDO CONTEMPORÂNEO E TRANSVERSAL EMPREENDEDORISMO CORPORATIVO UNICES...
Consultoria Acadêmica
 
Simbologia e Terminologia de Instrumentação da Norma ISA 5.1 - Simbologia_ISA...
Simbologia e Terminologia de Instrumentação da Norma ISA 5.1 - Simbologia_ISA...Simbologia e Terminologia de Instrumentação da Norma ISA 5.1 - Simbologia_ISA...
Simbologia e Terminologia de Instrumentação da Norma ISA 5.1 - Simbologia_ISA...
pereiramarcossantos0
 
ÁREAS DE ATUAÇÃO DO ENGENHEIRO CIVIL.pdf
ÁREAS DE ATUAÇÃO DO ENGENHEIRO CIVIL.pdfÁREAS DE ATUAÇÃO DO ENGENHEIRO CIVIL.pdf
ÁREAS DE ATUAÇÃO DO ENGENHEIRO CIVIL.pdf
RoemirPeres
 
Segurança nos trabalhos em altura, normas SST
Segurança nos trabalhos em altura, normas SSTSegurança nos trabalhos em altura, normas SST
Segurança nos trabalhos em altura, normas SST
ClaudioArez
 
Aula Vigor de Sementes - Aula Vigor de Sementes
Aula Vigor de Sementes - Aula Vigor de SementesAula Vigor de Sementes - Aula Vigor de Sementes
Aula Vigor de Sementes - Aula Vigor de Sementes
WeltonAgostinhoDias1
 

Recently uploaded (11)

Apresentação concreto autodesempenho 123
Apresentação concreto autodesempenho 123Apresentação concreto autodesempenho 123
Apresentação concreto autodesempenho 123
 
Dimensionamento de eixo. estudo de caso.pdf
Dimensionamento de eixo. estudo de caso.pdfDimensionamento de eixo. estudo de caso.pdf
Dimensionamento de eixo. estudo de caso.pdf
 
AULA LEI DOS SENOS OU COSSENOS - parte final (3) (1).pdf
AULA LEI DOS SENOS OU COSSENOS - parte final (3) (1).pdfAULA LEI DOS SENOS OU COSSENOS - parte final (3) (1).pdf
AULA LEI DOS SENOS OU COSSENOS - parte final (3) (1).pdf
 
AE03 - ESTUDO CONTEMPORÂNEO E TRANSVERSAL COMUNICAÇÃO ASSERTIVA E INTERPESSOA...
AE03 - ESTUDO CONTEMPORÂNEO E TRANSVERSAL COMUNICAÇÃO ASSERTIVA E INTERPESSOA...AE03 - ESTUDO CONTEMPORÂNEO E TRANSVERSAL COMUNICAÇÃO ASSERTIVA E INTERPESSOA...
AE03 - ESTUDO CONTEMPORÂNEO E TRANSVERSAL COMUNICAÇÃO ASSERTIVA E INTERPESSOA...
 
Elementos de Máquina aplicados na tornearia mecânica.ppt
Elementos de Máquina aplicados na tornearia mecânica.pptElementos de Máquina aplicados na tornearia mecânica.ppt
Elementos de Máquina aplicados na tornearia mecânica.ppt
 
AE03 - LOGISTICA EMPRESARIAL UNICESUMAR 52/2024
AE03 - LOGISTICA EMPRESARIAL UNICESUMAR 52/2024AE03 - LOGISTICA EMPRESARIAL UNICESUMAR 52/2024
AE03 - LOGISTICA EMPRESARIAL UNICESUMAR 52/2024
 
AE03 - ESTUDO CONTEMPORÂNEO E TRANSVERSAL EMPREENDEDORISMO CORPORATIVO UNICES...
AE03 - ESTUDO CONTEMPORÂNEO E TRANSVERSAL EMPREENDEDORISMO CORPORATIVO UNICES...AE03 - ESTUDO CONTEMPORÂNEO E TRANSVERSAL EMPREENDEDORISMO CORPORATIVO UNICES...
AE03 - ESTUDO CONTEMPORÂNEO E TRANSVERSAL EMPREENDEDORISMO CORPORATIVO UNICES...
 
Simbologia e Terminologia de Instrumentação da Norma ISA 5.1 - Simbologia_ISA...
Simbologia e Terminologia de Instrumentação da Norma ISA 5.1 - Simbologia_ISA...Simbologia e Terminologia de Instrumentação da Norma ISA 5.1 - Simbologia_ISA...
Simbologia e Terminologia de Instrumentação da Norma ISA 5.1 - Simbologia_ISA...
 
ÁREAS DE ATUAÇÃO DO ENGENHEIRO CIVIL.pdf
ÁREAS DE ATUAÇÃO DO ENGENHEIRO CIVIL.pdfÁREAS DE ATUAÇÃO DO ENGENHEIRO CIVIL.pdf
ÁREAS DE ATUAÇÃO DO ENGENHEIRO CIVIL.pdf
 
Segurança nos trabalhos em altura, normas SST
Segurança nos trabalhos em altura, normas SSTSegurança nos trabalhos em altura, normas SST
Segurança nos trabalhos em altura, normas SST
 
Aula Vigor de Sementes - Aula Vigor de Sementes
Aula Vigor de Sementes - Aula Vigor de SementesAula Vigor de Sementes - Aula Vigor de Sementes
Aula Vigor de Sementes - Aula Vigor de Sementes
 

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