Explorar E-books
Categorias
Explorar Audiolivros
Categorias
Explorar Revistas
Categorias
Explorar Documentos
Categorias
Agenda
Domain-Specific Languages
Web Programvel
DSL Encoder Uso da Ferramenta Um Caso Prtico Concluses Trabalhos Futuros
Domain-Specific Languages
O Que ?
Dcada de 50 (APT)
Linguagem Pequena
Declarativa Notaes Especficas
Domnio do Problema
SQL, HTML, LaTeX
linguagem pequena, usualmente declarativa, que oferece poder expressivo focado em um dominio de um problema particular [2].
Domain-Specific Languages
Motivaes
Reuso de Software
Quando Utilizar
Notao
Gerao de Cdigo
Aumento da Abstrao Produtividade
Automao de Tarefas
Linhas de Produto Estrutura de Dados
Representao Intercmbio
Confiabilidade
Manutenabilidade Portabilidade
Interfaces do Usurio
Domain-Specific Languages
Fases
Anlise do Domnio
Projeto
Desenvolvimento
Domain-Specific Languages
Anlise
Coleta de Informaes
Resultado Formal
Metodologias
ODM Organization Domain
Modeling FODA Feature-Oriented Domain Analysis DSSA Domain-Specific Software Architetures
Noes Semnticas
Operaes Informalmente
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
Implementao
Compilao e Interpretao
Incorporao
Processamento e Macro-processamento Compilador ou Interpretador Extensvel
Ferramentas Especializadas
Verificador de Inconsistncias IDE
desenvolvimento de DSL difcil, exigindo tanto conhecimento do domnio quanto experincia no desenvolvimento de linguagens [3].
Domain-Specific Languages
Ferramentas
Ferramenta
MetaEdit+ (MetaCase) GME (Vanderbilt University) DSL Tools (Microsoft) MPS (JetBrains) Eclipse Modeling Project (Eclipse) Visual Studio 2005 Professional Edition Java Virtual Machine (JVM) Java Virtual Machine (JVM)
Dependncias
Gratuita
No Sim No Sim Sim
Domain-Specific Languages
Ferramentas
DSL Encoder
Web Programvel
Web 2.0
Beta Perptuo
Rich Internet Applications AJAX
Web Programvel
Web Programvel
RSS
Mashups APIs
SOAP 23%
Representational State
Transfer (REST)
Smartphones
JSON
Existe uma grande chance que qualquer aplicativo no seu telefone faa alguma coisa interessante usando uma API [12].
Fonte: Programmable Web
Web Programvel
Porcentagem de novas APIs com suporte somente a JSON
25% 20% 15% 10% 5% 0% 2006 2007 2008 2009 2010 2011
Web Programvel
Que tecnologia voc usou em 2012?
REST JSONP OAuth 2 SOAP 35.40% 34.60% 29.20% 13.10% 12.30% 11.50% 10.00% 8.50% 6.90% 2.30% 85.40%
RSS/Atom feeds
WebSockets CORS WS-*
Webhooks
OAuth 1.0a PubSubHubbub
Web Programvel
JSON JSONP
DSL Encoder
DSL Encoder
Caractersticas
IDE Web como plataforma Cdigo Aberto HTML5 JavaScript JSON Extensvel Linguagens, Templates
e Plug-ins.
DSL Encoder
DSL Encoder
Cdigo Aberto
New BSD
Co-desenvolvedores
Deteco e Correo de
Erros
DSL Encoder
Web como plataforma
Multiplataforma
DSL Encoder
JavaScript
DSL Encoder
Clientes Servidor de Aplicao DSL Encoder
Internet
DSL Encoder
Sistema de Arquivos
HTML5 Filesystem API
Local Storage
Filesystem
Web Database
SQLIte IndexedDB
IndexedDB Local Storage
SQLite
Local Storage
Cloud Storage Dsle.Filestorage
IndexedDB Local Storage SQLite
Local Storage
DSL Encoder
Editor de Texto
Open Source
New BSD
JavaScript Syntax highlighting
Indentacao Automatica
Live syntax checker
Apesar do interesse crescente em interfaces icnicas e mtodos de programao visual, o texto onipresente no ambiente de computador e sua importncia no diminui [26].
Ele combina as caractersticas e performance de editores nativos como Sublime, Vim e TextMate [27].
DSL Encoder
DSL Processor
IDE
DSL.JS (Componente)
Gerar
DSL Sistema Processo de r Arquivos Obter Linguagem Linguagem Obter Templates Templates Salvar Arquivos Gerados
Analisa a Linguagem
Instancia a Linguagem Valida o Programa DSL
org.dsle.Math.json
DSL Encoder
Template Engine
JSON Template
JavaScript Template
Registro de Engines
DSL Encoder
Code Generator
Qualidade
gerador de codigo um auto mato que acessa modelos, extrai informacoes a partir deles, e transforma-os em producao em uma sintaxe especifica [1].
Consistncia
Produtividade Abstrao
Geracao de codigo e outro elo na cadeia evolutiva da crescente abstracao. Com ela, voce vai produzir rapidamente codigo de maior qualidade, e assim ser capaz de responder as necessidades de mudanca com facilidade [32].
DSL Encoder
Console
Log
Info
Warning Success
Error
DSL Encoder
Hot-Spots
Extensvel
Languages
Toolbar Extensions FileTypes Tree
Reutilizvel
Plug-ins Framework
Plugins Dialog Templates IDE Tabs
<<interface>> FileStorage
Ajax
Console
LocalStorage
DSL Encoder
Plug-ins
JavaScript
Extensibilidade
Reuso Adaptao
Configurao
Tempo de Execuo
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 Prtico
Elementos de Formulrio
Label
Textfield
Textarea Select
Checkbox
Slider Button
Um Caso Prtico
org.dsle.FormUI.dsl
DslTypes
Templates
org.dsle.formUi.jQueryMobile.tpl .html org.dsle.formUi.Titanium.tpl .js
Um Caso Prtico
{
Front-End
E-Mail (Textfield)
Password (Textfield)
"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" } ] } }
Um Caso Prtico
Um Caso Prtico
Designer
Fullname (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" } ...
E-Mail (Textfield)
Password (Textfield)
Um Caso Prtico
Um Caso Prtico
Resultado
Aumento da Abstrao
Gerao de Cdigo
jQuery Mobile Appcelerator Titanium
Concluses
DSL
Aumenta Abstrao
DSL Encoder
Ferramenta Alternativa
Aumenta Produtividade
Necessita de Ferramentas
Especializadas
Reutilizvel
Trabalhos Futuros
DSL Encoder
Realizar Estudo Formal
Realizar Comparativo
Melhoria do Framework Cloud Storage
Versionamento
Dvidas?
Obrigado!