INFOS IMPORTANTES: Fonte utilizada: Segoe (essa não é uma fonte padrão do Windows. Favor instalar...

Preview:

Citation preview

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

André Furtado

01.

02.

03.

04.

05.

O Insucesso de Software

Software Factories

Domain-Specific Languages

Demo: QuizLanguage

Conclusões

O Insucesso de Software

Qual o sucesso de projetos de desenvolvimento de software hoje?

Reflexão

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

© 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

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

Software Factories

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

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

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

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

Customizam Word/Excel para uma tarefa específica

Analogia: templates do Office

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

Domain-Specific Languages (DSLs)

Abordagens de pesquisa / desenvolvimento

Quais as principais diferenças de cada abordagem?

Reflexão

Em computação:

Dilema Genérico X Específico

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

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

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

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

Exemplos de DSLs

LEX

YACC

SQL

BNF

HTML

JavaDoc

TeX

Linguagens para comandos na shell do sistema operacional

DSLs estão em todos os lugares

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

Exemplos de DSLs

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

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

Exemplo: linguagem para aplicações de smart phones

Modelagem visual

Outro exemplo: modelagem no VS Team System for Architects

Modelagem Visual

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

Proposta: agregar geradores ao processo

[Tolvanen 2003][Tolvanen 2003]

Modelagem Visual

[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

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

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

Exemplo do DSL Tools: SharpLudus

VÍDEOModelagem visual com o SharpLudus

DEMOUltimate Berzerk - SharpLudus

Estudo de caso:QuizLanguage

Objetivo

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

QuizLanguage

Aonde queremos chegar...

Conceitos do domínio podem ser arrastados da Toolbox

1. Projetista modela DSL

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

A janela DSL Explorer permite criar novos tipos de dados

1. Projetista modela DSL

1. Projetista modela DSL

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

2. Projetista define sintaxe visual da DSL

Mapeamento da sintaxe para os conceitos também é realizado

2. Projetista define sintaxe visual da DSL

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

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

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

5. Desenvolvedor consome a DSL visual

Código que consome o framework é gerado

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

6. Desenvolvedor constrói produto final

7. Usuário final consome aplicação

Conclusões

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

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

PERGUNTAS E RESPOSTAS

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

Recommended