• Nenhum resultado encontrado

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

N/A
N/A
Protected

Academic year: 2021

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

Copied!
44
0
0

Texto

(1)

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)

(2)

Agenda

Domain-Specific Languages

Web Programável

DSL Encoder

Uso da Ferramenta

Um Caso Prático

Conclusões

Trabalhos Futuros

(3)

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].

(4)

Domain-Specific Languages

Motivações

Reuso de Software

Geração de Código

Aumento da Abstração

Produtividade

Confiabilidade

Manutenabilidade

Portabilidade

Notação

Automação de Tarefas

Linhas de Produto

Estrutura de Dados  Representação  Intercâmbio

Interfaces do Usuário

Quando Utilizar

(5)

Domain-Specific Languages

Fases

Análise do Domínio

Projeto

(6)

Domain-Specific Languages

Análise

Coleta de Informações

Noções Semânticas

Operações

Informalmente

Resultado Formal

 Metodologias

 ODM – Organization Domain

Modeling  FODA – Feature-Oriented Domain Analysis  DSSA – Domain-Specific Software Architetures  Domain-Model  Vocabulário e Ontologia  Conceitos  Feature-Models

(7)

Domain-Specific Languages

Projeto

Informal

Piggyback

Extension

Specialization

“objetivo geral de uma DSL, como com em

(8)

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”

(9)

Domain-Specific Languages

Ferramentas

Ferramenta Dependências Gratuita

Sistemas Operacionais

Suportados

MetaEdit+ (MetaCase) Não Windows, Linux e

Mac OS X GME (Vanderbilt

University) Sim Windows

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

(10)

Domain-Specific Languages

Ferramentas

(11)

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

(12)

Web Programável

Web Programável

RSS

Mashups

APIs

Simple Object Access Protocol (SOAP)

Representational State Transfer (REST)

Smartphones

JSON REST 68% XML-RPC 2% JavaScript 5% OUTROS 2% SOAP 23%

Protocolos usados por APIs

Fonte: Programmable Web

“Existe uma grande chance que qualquer aplicativo no seu telefone faça alguma coisa interessante

(13)

Web Programável

Fonte: Programmable Web 0% 5% 10% 15% 20% 25% 2006 2007 2008 2009 2010 2011

Porcentagem de novas APIs

com suporte somente a JSON

(14)

Web Programável

2.30% 6.90% 8.50% 10.00% 11.50% 12.30% 13.10% 29.20% 34.60% 35.40% 85.40% PubSubHubbub OAuth 1.0a Webhooks WS-* CORS WebSockets RSS/Atom feeds SOAP OAuth 2 JSONP REST

Que tecnologia você usou em 2012?

(15)

Web Programável

JSON

JSONP

(16)

DSL Encoder

Características

 IDE

 Web como plataforma

 Código Aberto  HTML5  JavaScript  JSON  Extensível  Linguagens, Templates e Plug-ins.

(17)
(18)

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].

(19)

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].

(20)

DSL

Encoder

JavaS

(21)

DSL Encoder

Clientes

Servidor de Aplicação DSL Encoder

Servidor de API de Terceiros

Internet

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

Servidor de API de Terceiros

(22)

DSL Encoder

Sistema de Arquivos

HTML5 Filesystem API

Web Database

SQLIte

IndexedDB

Local Storage

Cloud Storage

Dsle.Filestorage IndexedDB SQLite IndexedDB SQLite Filesystem Local Storage Local Storage Local Storage Local Storage

(23)

DSL Encoder

Editor de Texto

Open Source

New BSD

JavaScript

Syntax highlighting

Indentação Automática

Live syntax checker

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

“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].

(24)

DSL Encoder

DSL Processor

DSL.JS (Componente)

Analisa a Linguagem

Instancia a Linguagem

Valida o Programa DSL

Executa o Programa DSL IDE DSL Processo r Sistema de Arquivos Gerar Obter Linguagem

Linguagem Obter Templates

Templates

Salvar Arquivos Gerados

Arquivos Gerados org.dsle.Math.json

(25)

DSL Encoder

Template Engine

JSON Template

JavaScript Template

Registro de Engines

(26)

DSL Encoder

Code Generator

Qualidade

Consistência

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]. “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].

(27)

DSL Encoder

Console

Log

Info

Warning

Success

Error

(28)

DSL Encoder

Hot-Spots

Extensível

Reutilizável

Plug-ins

Framework Extensions Languages Templates Plugins Ajax Tree Toolbar Tabs Dialog Console IDE FileTypes <<interface>> FileStorage LocalStorage

(29)

DSL Encoder

Plug-ins

JavaScript

Extensibilidade

Reuso

Adaptação

Configuração

Tempo de Execução

(30)

Uso da Ferramenta

Linguagens

JSON

DslTemplateOptions

DslType

DslTypeItem

(31)

Uso da Ferramenta

Templates

JSON Template

JavaScript Template

{% %}

(32)

Uso da Ferramenta

Plug-ins

JavaScript

Id, name

load();

#noplugins

(33)

Uso da Ferramenta

Programa DSL

JSON

language

main

Validate

Generate

(34)

Elementos de Formulário

Label

Textfield

Textarea

Select

Checkbox

Slider

Button

Um Caso Prático

(35)

org.dsle.FormUI.dsl

DslTypes

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

Um Caso Prático

(36)

Front-End

E-Mail (Textfield)

Password (Textfield)

I Accept This Terms. (Checkbox)

Create Account (Button)

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" }

] } } }

(37)
(38)

Designer

Fullname (Textfield)

E-Mail (Textfield)

Password (Textfield)

I Accept This Terms. (Checkbox)

Create Account (Button)

Um Caso Prático

{

"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" } ...

(39)
(40)

Resultado

Aumento da Abstração

Fácil Utilização por

Conhecedores do Domínio

Geração de Código

 jQuery Mobile

 Appcelerator Titanium

(41)

Conclusões

DSL

Aumenta Abstração

Aumenta Produtividade

Necessita de Ferramentas Especializadas

DSL Encoder

Ferramenta Alternativa

Web como plataforma

Inteligência Coletiva

Extensível

(42)

Trabalhos Futuros

DSL Encoder

Realizar Estudo Formal

Realizar Comparativo

Melhoria do Framework

Cloud Storage

(43)
(44)

Referências

Documentos relacionados

Quando você inserir um relatório, deve avisar ao Supervisor para que preencha a Ficha de avaliação (pode ser à mão), disponível para descarga no Portal do EMC. Esta

Para disciplinar o processo de desenvolvimento, a Engenharia de Usabilidade, também conceituada e descrita neste capítulo, descreve os métodos estruturados, a

Sendo assim, a automação residencial pode prover meios para controlar todos os sistemas da residência como sistema de ar condicionado e aquecimento, home- office, contemplando

O trabalho procura responder à questão relativa aos limites de absorção pelo mercado dos profissionais egressos dos cursos de graduação em Jornalismo em contraste

Para configurar papéis de alta gramatura, etiquetas ou envelopes como o material de impressão padrão na bandeja MP.. Nota: Para a bandeja MP, a configuração padrão do tamanho

Saladas: Verde: alface, brócolis, rúcula, agrião, pepino; Branca: repolho, brotos, cebola, couve-flor, batata inglesa; Vermelha: tomate salada, tomate cereja; Roxa: beterraba

Ainda segundo Gil (2002), como a revisão bibliográfica esclarece os pressupostos teóricos que dão fundamentação à pesquisa e às contribuições oferecidas por

A tabela 25 apresenta os resultados brutos desta avaliação em relação à característica busca e a tabela 26 exibe o resultado ponderado para esta característica.. A tabela 27