DSL Encoder - Uma ferramenta web para desenvolvimento de linguagens específicas de domínio (Apresentação)

June 28, 2016 | Author: Vinicius Cardoso Garcia | Category: Types, Presentations
Share Embed Donate


Short Description

Artigo apresentado como pré-requisito para conclusão do Mestrado Profissional em Engenharia de Software do...

Description

DSL Encoder Uma ferramenta web para desenvolvimento de linguagens específicas de domínio

Mestrado Profissional em Engenharia de Software Bruno Falcão Leão Maia Ph.D. Vinicius Cardoso Garcia (orientador) M.Sc. Leandro Marques do Nascimento (co-orientador)

Agenda  Domain-Specific Languages

 Web Programável  DSL Encoder  Uso da Ferramenta  Um Caso Prático  Conclusões  Trabalhos Futuros

Domain-Specific Languages O Que é?  Década de 50 (APT)

 Linguagem Pequena  Declarativa  Notações Específicas

 Domínio do Problema  SQL, HTML, LaTeX

“linguagem pequena, usualmente declarativa, que oferece poder expressivo focado em um domínio de um problema particular” [2].

Domain-Specific Languages Motivações

Quando Utilizar

 Reuso de Software

 Notação

 Geração de Código

 Automação de Tarefas

 Aumento da Abstração

 Linhas de Produto

 Produtividade

 Estrutura de Dados

 Confiabilidade

 Representação  Intercâmbio

 Manutenabilidade  Portabilidade

 Interfaces do Usuário

Domain-Specific Languages Fases  Análise do Domínio

 Projeto  Desenvolvimento

Domain-Specific Languages Análise

Resultado Formal

 Coleta de Informações

 Metodologias

 Noções Semânticas  Operações  Informalmente

 ODM – Organization Domain Modeling  FODA – Feature-Oriented Domain Analysis  DSSA – Domain-Specific Software Architetures

 Domain-Model  Vocabulário e Ontologia  Conceitos  Feature-Models

Domain-Specific Languages Projeto  Informal

 Piggyback  Extension  Specialization

“objetivo geral de uma DSL, como com em qualquer escrita, é a clareza para o leitor” [6].

Domain-Specific Languages Implementação  Compilação e Interpretação

 Incorporação  Processamento e Macro-processamento  Compilador ou Interpretador Extensível

 Ferramentas Especializadas  Verificador de Inconsistências  IDE “desenvolvimento de DSL é difícil, exigindo tanto conhecimento do domínio quanto experiência no desenvolvimento de linguagens” [3].

Domain-Specific Languages Ferramentas Gratuita

Sistemas Operacionais Suportados

MetaEdit+ (MetaCase)

Não

Windows, Linux e Mac OS X

GME (Vanderbilt University)

Sim

Windows

Ferramenta

Dependências

DSL Tools (Microsoft)

Visual Studio 2005 Professional Edition

Não

Windows

MPS (JetBrains)

Java Virtual Machine (JVM)

Sim

Windows, Linux e Mac OS X

Eclipse Modeling Project (Eclipse)

Java Virtual Machine (JVM)

Sim

Windows, Linux e Mac OS X

Domain-Specific Languages Ferramentas

DSL Encoder

Web Programável  Web 2.0

 Web como plataforma  Inteligência Coletiva  Co-desenvolvedores

 Beta Perpétuo  Rich Internet Applications  AJAX

 Software Acima do Nível de um Único Dispositivo

Web Programável  Web Programável

 RSS

Protocolos usados por APIs

 Mashups  APIs

 Simple Object Access Protocol (SOAP)

 Representational State Transfer (REST)

SOAP 23%

OUTROS 2% JavaScript 5% XML-RPC 2%

REST 68%

 Smartphones  JSON “Existe uma grande chance que qualquer aplicativo no seu telefone faça alguma coisa interessante usando uma API” [12].

Fonte: Programmable Web

Web Programável Porcentagem de novas APIs com suporte somente a JSON 25% 20% 15% 10% 5% 0% 2006

2007

2008

2009

2010

2011

Fonte: Programmable Web

Web Programável Que tecnologia você usou em 2012?

REST

85.40%

JSONP

35.40%

OAuth 2

34.60%

SOAP

29.20%

RSS/Atom feeds

13.10%

WebSockets

12.30%

CORS

11.50%

WS-*

10.00%

Webhooks OAuth 1.0a PubSubHubbub

8.50% 6.90% 2.30%

Fonte: Programmable Web

Web Programável JSON

JSONP

DSL Encoder

DSL Encoder Características  IDE  Web como plataforma  Código Aberto  HTML5  JavaScript  JSON  Extensível  Linguagens, Templates e Plug-ins.

DSL Encoder

DSL Encoder Código Aberto  New BSD

 Co-desenvolvedores  Detecção e Correção de Erros

 Melhoria da Qualidade  Estrutura Modularizada  Crescimento e Evolução

“dados olhos suficientes, todos os erros são triviais” [21].

DSL Encoder Web como plataforma  Multiplataforma

 “Instant Deploy World Wide”  HTML5, CSS3, WebGL + AJAX e JSONP

 FileSystem  Offline Applications  Local Storage “aplicações binárias convencionais estão em maior desvantagem comparadas a software baseado na web porque este pode ser implantado instantaneamente ao redor do mundo” [18].

DSL Encoder

JavaScript

DSL Encoder Clientes

Servidor de Aplicação DSL Encoder

Internet

Servidor de API de Terceiros

Servidor de API de Terceiros Comunicação com a Ferramenta Comunicação com API de terceiros

DSL Encoder Sistema de Arquivos

Filesystem

Local Storage

 HTML5 Filesystem API SQLite

 Web Database  SQLIte

IndexedDB Local Storage

 IndexedDB

 Local Storage  Cloud Storage SQLite

 Dsle.Filestorage IndexedDB

Local Storage Local Storage

DSL Encoder Editor de Texto  Open Source

 New BSD  JavaScript  Syntax highlighting

 Indentação Automática  Live syntax checker “Apesar do interesse crescente em interfaces icônicas e métodos de programação visual, o texto é onipresente no ambiente de computador e sua importância não diminui” [26].

“Ele combina as características e performance de editores nativos como Sublime, Vim e TextMate” [27].

DSL Encoder DSL Processor IDE

 DSL.JS (Componente)

 Analisa a Linguagem

Gerar

DSL Sistema Processo de r Arquivos Obter Linguagem

org.dsle.Math.json Linguagem Obter Templates

 Instancia a Linguagem

Templates

 Valida o Programa DSL

Salvar Arquivos Gerados

 Executa o Programa DSL Arquivos Gerados

DSL Encoder Template Engine  JSON Template

 JavaScript Template  Registro de Engines

DSL Encoder Code Generator  Qualidade

 Consistência

“gerador de código é um autô mato que acessa modelos, extrai informações a partir deles, e transforma-os em produção em uma sintaxe específica” [1].

 Produtividade  Abstração

“Geração de código é outro elo na cadeia evolutiva da crescente abstração. Com ela, você vai produzir rapidamente código de maior qualidade, e assim ser capaz de responder as necessidades de mudança com facilidade” [32].

DSL Encoder Console  Log

 Info  Warning  Success

 Error

DSL Encoder Hot-Spots

Extensions

FileTypes

Tree

 Extensível Languages

Toolbar

 Reutilizável  Plug-ins

Templates

IDE

Tabs

 Framework Plugins

Dialog

FileStorage

Ajax

Console

LocalStorage

DSL Encoder Plug-ins  JavaScript

 Extensibilidade  Reuso  Adaptação

 Configuração  Tempo de Execução

Uso da Ferramenta Linguagens  JSON

 DslTemplateOptions  DslType  DslTypeItem

Uso da Ferramenta Templates  JSON Template

 JavaScript Template  {% %}

Uso da Ferramenta Plug-ins  JavaScript

 Id, name  load();  #noplugins

Uso da Ferramenta Programa DSL  JSON

 language  main  Validate

 Generate

Um Caso Prático Elementos de Formulário  Label

 Textfield  Textarea  Select

 Checkbox  Slider  Button

Um Caso Prático org.dsle.FormUI.dsl  DslTypes

 Templates  org.dsle.formUi.jQueryMobile.tpl  .html  org.dsle.formUi.Titanium.tpl  .js

Um Caso Prático { "language":"org.dsle.FormUI", "main": { "id":"winCreateAccount", "title": "Create Account", "form": { "id": "frmCreateAccount", "formItems": [{ "type":"label", "id": "lblEmail", "text":"E-mail:", "for": "email" },{ "type":"textfield", "id":"email", "hint": "enter your e-mail" },{ "type":"label", "id": "lblPassword", "text":"Password:", "for": "password" },{ "type":"textfield", "id":"password", "hint": "enter your password", "password": true },{ "type":"checkbox", "id":"accept", "text": "I accept this terms.", "checked": false },{ "type":"button", "id":"btCreateAccount", "text": "create account" } ] } }

Front-End  E-Mail (Textfield)

 Password (Textfield)

 I Accept This Terms. (Checkbox)  Create Account (Button)

}

Um Caso Prático

Um Caso Prático Designer  Fullname (Textfield)

 E-Mail (Textfield)  Password (Textfield)

{ "language":"org.dsle.FormUI", "main": { "id":"winCreateAccount", "title": "Create Account", "form": { "id": "frmCreateAccount", "formItems": [{ "type":"label", "id": "lblFullname", "text":"Full Name:", "for": "fullname" },{ "type":"textfield", "id":"fullname", "hint": "enter your fullname" },{ "type":"label", "id": "lblEmail", "text":"E-mail:", "for": "email" },{ "type":"textfield", "id":"email", "hint": "enter your e-mail" },{ "type":"label", "id": "lblPassword", "text":"Password:", "for": "password" } ...

 I Accept This Terms. (Checkbox)

 Create Account (Button)

Um Caso Prático

Um Caso Prático Resultado  Aumento da Abstração

 Fácil Utilização por Conhecedores do Domínio

 Geração de Código  jQuery Mobile  Appcelerator Titanium

Conclusões DSL

DSL Encoder

 Aumenta Abstração

 Ferramenta Alternativa

 Aumenta Produtividade

 Web como plataforma

 Necessita de Ferramentas

 Inteligência Coletiva

Especializadas

 Extensível

 Reutilizável

Trabalhos Futuros DSL Encoder  Realizar Estudo Formal

 Realizar Comparativo  Melhoria do Framework  Cloud Storage

 Versionamento

Dúvidas?

Obrigado!

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF