infos importantes: fonte utilizada: segoe (essa não é uma fonte padrão do windows. favor instalar...

54

Upload: internet

Post on 22-Apr-2015

105 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar em seu computador) Paleta de cores: 183 – 67 - 41 234
Page 2: INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar em seu computador) Paleta de cores: 183 – 67 - 41 234

Geração de código e criação de designers visuais com o Domain Specific Language Tools

André Furtado

Page 3: INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar em seu computador) Paleta de cores: 183 – 67 - 41 234

01.

02.

03.

04.

05.

O Insucesso de Software

Software Factories

Domain-Specific Languages

Demo: QuizLanguage

Conclusões

Page 4: INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar em seu computador) Paleta de cores: 183 – 67 - 41 234

O Insucesso de Software

Page 5: INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar em seu computador) Paleta de cores: 183 – 67 - 41 234

Qual o sucesso de projetos de desenvolvimento de software hoje?

Reflexão

Page 6: INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar em seu computador) Paleta de cores: 183 – 67 - 41 234

Pesquisa do The Standish Group:

desfecho de projetos de diferentes portes

no EUA, 2004

Failed: 18%

Challenged: 53%

Succeeded: 29%

O sucesso não vem fácil...

Page 7: INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar em seu computador) Paleta de cores: 183 – 67 - 41 234

© The Standish Group 2004

Taxa de sucesso de projetos de software

Successful: 29%

“Red tape” development

Tarefas rotineiras erepetitivas consomem

tempo e recursos valiososdo projeto!

Cenário de Desenv. de Software

Page 8: INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar em seu computador) Paleta de cores: 183 – 67 - 41 234

Como permitir que tempo e Como permitir que tempo e recursos sejam alocados ao que recursos sejam alocados ao que

realmente está precisando?realmente está precisando?

Ainda mais em um cenário com Ainda mais em um cenário com tendência a aumento tendência a aumento

exponencial da demanda por exponencial da demanda por software?software?

Questões a serem respondidas

Page 9: INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar em seu computador) Paleta de cores: 183 – 67 - 41 234

Software Factories

Page 10: INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar em seu computador) Paleta de cores: 183 – 67 - 41 234

Desenv. de Software como Artesanato

Trabalho intensivo

Ferramentas genéricas

Processos genéricos

Um tipo de aplicação por vez

Feita a mão do zero

Reuso mínimo

Page 11: INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar em seu computador) Paleta de cores: 183 – 67 - 41 234

Objetivo: aumentar o nível de abstração no desenvolvimento...

... levando para software conceitos já praticados em outras indústrias

Documentação

Padrões

Frameworks

Ferramentas

Linguagensautomaçãoautomação

linhas de linhas de produçãoprodução

cadeias de cadeias de abastecimentoabastecimento

previsibilidadprevisibilidadeereuso!reuso!

Industrialização de Software

Page 12: INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar em seu computador) Paleta de cores: 183 – 67 - 41 234

Reuso de designs & componentes

Construção de protótipos similares mas distintos

A chave está em suportar a variabilidade

Defina apenas as peças únicas de cada

sistema

Explorando o que há de comum

Page 13: INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar em seu computador) Paleta de cores: 183 – 67 - 41 234

Evolução do paradigma de desenvolvimento de software:

Foco em:

Famílias de aplicações

Abordagem sistemática

Reuso e empacotamento (assembling) de componentes

Automatizar trabalho rotineiro

artesanal artesanal manufatura manufatura

Fundamentos de Software Factories

Page 14: INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar em seu computador) Paleta de cores: 183 – 67 - 41 234

Customizam Word/Excel para uma tarefa específica

Analogia: templates do Office

Page 15: INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar em seu computador) Paleta de cores: 183 – 67 - 41 234

Software Factories não são novidade

Conceito já usado no Japão em 1980 Mas o que está sendo mais enfatizado agora?

Domínios específicos suportados Domínios específicos suportados por ambientes de por ambientes de

desenvolvimento (IDEs)desenvolvimento (IDEs)

Fundamentos de Software Factories

Page 16: INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar em seu computador) Paleta de cores: 183 – 67 - 41 234

Domain-Specific Languages (DSLs)

Page 17: INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar em seu computador) Paleta de cores: 183 – 67 - 41 234

Abordagens de pesquisa / desenvolvimento

Page 18: INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar em seu computador) Paleta de cores: 183 – 67 - 41 234

Quais as principais diferenças de cada abordagem?

Reflexão

Page 19: INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar em seu computador) Paleta de cores: 183 – 67 - 41 234

Em computação:

Dilema Genérico X Específico

Page 20: INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar em seu computador) Paleta de cores: 183 – 67 - 41 234

CobolCobol FortranFortran LispLisp

businessbusinessprocessingprocessing

numericnumericcomputationcomputation

symbolicsymbolicprocessingprocessing

CC

(Visual) Basic(Visual) Basic

C#C#

??????

JogosJogos

MedicinaMedicina MúsicaMúsica

Banco de dadosBanco de dados

Device driversDevice drivers

Manipulação deManipulação deimagensimagens Agentes móveisAgentes móveisProtocolos deProtocolos de

comunicaçãocomunicação

?????? ??????

Um pouco de história...

Page 21: INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar em seu computador) Paleta de cores: 183 – 67 - 41 234

?????? ??????

Frameworks orientados a objeto /Frameworks orientados a objeto /Frameworks de componentesFrameworks de componentes

Domain SpecificDomain SpecificLanguagesLanguages

Bibliotecas de subrotinas /Bibliotecas de subrotinas /APIs (Application Program Interface)APIs (Application Program Interface)

Endereçando domínios específicos

Page 22: INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar em seu computador) Paleta de cores: 183 – 67 - 41 234

Definição formal:

Linguagem que oferece, através deLinguagem que oferece, através denotações e abstrações adequadas,notações e abstrações adequadas,um poder de expressão focado emum poder de expressão focado em

(e geralmente restrito a)(e geralmente restrito a)um domínio particularum domínio particular

Domain Specific Languages

Page 23: INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar em seu computador) Paleta de cores: 183 – 67 - 41 234

Exemplos de DSLs

LEX

YACC

SQL

BNF

HTML

JavaDoc

TeX

Linguagens para comandos na shell do sistema operacional

Page 24: INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar em seu computador) Paleta de cores: 183 – 67 - 41 234

DSLs estão em todos os lugares

A própria linguagens de fórmulas do Excel é uma DSL!

Exemplos de DSLs

Page 25: INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar em seu computador) Paleta de cores: 183 – 67 - 41 234

Construtores de GUI também podem ser vistos como manipuladores de DSLs?

Sim, mas a Sim, mas a experiência do experiência do

usuáriousuário, , entretanto, é entretanto, é

diferente (pois a diferente (pois a DSL é visual!)DSL é visual!)

DSL Visuais

Page 26: INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar em seu computador) Paleta de cores: 183 – 67 - 41 234

Utiliza DSLs visuais para modelar a solução em um domínio

Exemplo: linguagem para aplicações de smart phones

Modelagem visual

Page 27: INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar em seu computador) Paleta de cores: 183 – 67 - 41 234

Outro exemplo: modelagem no VS Team System for Architects

Modelagem Visual

Page 28: INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar em seu computador) Paleta de cores: 183 – 67 - 41 234

Modelagem, diagramas, etc. para documentação são de pouco uso

Proposta: agregar geradores ao processo

[Tolvanen 2003][Tolvanen 2003]

Modelagem Visual

Page 29: INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar em seu computador) Paleta de cores: 183 – 67 - 41 234

[Tolvanen 2003][Tolvanen 2003]

Feito várias Feito várias vezes, pelos vezes, pelos

desenvolvedordesenvolvedoreses

+ abstração e + abstração e poder de poder de

expressão!expressão!

Feito Feito apenas uma apenas uma

vez, pelo vez, pelo projetista da projetista da linguagemlinguagem

Modelagem Visual

Page 30: INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar em seu computador) Paleta de cores: 183 – 67 - 41 234

DSLs (principalmente as visuais) são poderosas e ao mesmo tempo custosas... como melhorar isso?

Através de programas Através de programas de suporte à criação de suporte à criação de DSLs:de DSLs: “language “language

workbenches”workbenches”

Reflexão

Page 31: INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar em seu computador) Paleta de cores: 183 – 67 - 41 234

Plug in para a IDE Visual Studio .NET

Suporte à criação de DSLs visuais

Captura dos conceitos do domínio

Definição de um editor gráfico

Criação de transformadores (ex.: gerador de código)

VS Team System DSL Tools

Page 32: INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar em seu computador) Paleta de cores: 183 – 67 - 41 234

Exemplo do DSL Tools: SharpLudus

Page 33: INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar em seu computador) Paleta de cores: 183 – 67 - 41 234

VÍDEOModelagem visual com o SharpLudus

Page 34: INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar em seu computador) Paleta de cores: 183 – 67 - 41 234

DEMOUltimate Berzerk - SharpLudus

Page 35: INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar em seu computador) Paleta de cores: 183 – 67 - 41 234

Estudo de caso:QuizLanguage

Page 36: INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar em seu computador) Paleta de cores: 183 – 67 - 41 234

Objetivo

Criar uma DSL visual para a modelagem e construção automática de jogos de pergunta e resposta (quiz games)

QuizLanguage

Page 37: INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar em seu computador) Paleta de cores: 183 – 67 - 41 234

Aonde queremos chegar...

Page 38: INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar em seu computador) Paleta de cores: 183 – 67 - 41 234

Conceitos do domínio podem ser arrastados da Toolbox

1. Projetista modela DSL

Page 39: INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar em seu computador) Paleta de cores: 183 – 67 - 41 234

Aos poucos, a DSL visual vai sendo construída...

Propriedades são adicionadas a conceitos

Relacionamentos entre conceitos são criados

1. Projetista modela DSL

Page 40: INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar em seu computador) Paleta de cores: 183 – 67 - 41 234

A janela DSL Explorer permite criar novos tipos de dados

1. Projetista modela DSL

Page 41: INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar em seu computador) Paleta de cores: 183 – 67 - 41 234

1. Projetista modela DSL

Page 42: INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar em seu computador) Paleta de cores: 183 – 67 - 41 234

Da Toolbox são adicionadas ao diagrama formas gráficas (imagens, compartimentos, etc.)

2. Projetista define sintaxe visual da DSL

Page 43: INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar em seu computador) Paleta de cores: 183 – 67 - 41 234

Mapeamento da sintaxe para os conceitos também é realizado

2. Projetista define sintaxe visual da DSL

Page 44: INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar em seu computador) Paleta de cores: 183 – 67 - 41 234

Decoradores textuais e gráficos podem ser associados às formas gráficas, através da janela DSL Details

2. Projetista define sintaxe visual da DSL

Page 45: INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar em seu computador) Paleta de cores: 183 – 67 - 41 234

O gerador é feito em linguagem de script semelhante a C#

Tags <# ... #> delimitam lógica de processamento

Tags <#= ... #> jogam expressões no output

Texto fora das tags é copiado diretamente

3. Projetista implementa gerador de código

Page 46: INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar em seu computador) Paleta de cores: 183 – 67 - 41 234

4. Projetista implementa framework a ser consumido pelo código gerado

Page 47: INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar em seu computador) Paleta de cores: 183 – 67 - 41 234

5. Desenvolvedor consome a DSL visual

Page 48: INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar em seu computador) Paleta de cores: 183 – 67 - 41 234

Código que consome o framework é gerado

Código próprio do desenvolvedor é implementado em classes parciais

6. Desenvolvedor constrói produto final

Page 49: INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar em seu computador) Paleta de cores: 183 – 67 - 41 234

7. Usuário final consome aplicação

Page 50: INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar em seu computador) Paleta de cores: 183 – 67 - 41 234

Conclusões

Page 51: INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar em seu computador) Paleta de cores: 183 – 67 - 41 234

SFs permitem uma melhor solução de problemas por aproximar desenvolvedores do domíno

Language workbenches como o VS DSL Tools facilitam e suportam o processo

A proposta atual sozinha jamais garantirá o sucesso na criação de software

A indústria precisa amadurecer primeiroFábricas de software, DSLs, etc., são um meio, jamais um fim

Considerações Finais

Page 52: INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar em seu computador) Paleta de cores: 183 – 67 - 41 234

LINKS ÚTEIS

MSDNhttp://www.msdn.com.br

Certificações Microsofthttp://www.microsoft.com/brasil/certifiquehttp://www.microsoft.com/learning

VS 2005 Team System DSL Tools

Projeto SharpLudus

AFurtado - websites pessoais

http://lab.msdn.microsoft.com/teamsystem/workshop/dsltools/default.aspx

http://www.cin.ufpe.br/~sharpludus

http://www.cin.ufpe.br/~awbfhttp://thespoke.net/blogs/afurtado

Page 53: INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar em seu computador) Paleta de cores: 183 – 67 - 41 234

PERGUNTAS E RESPOSTAS

http://www.cin.ufpe.br/~sharpludushttp://thespoke.net/blogs/afurtado

Page 54: INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar em seu computador) Paleta de cores: 183 – 67 - 41 234