DSL Tools Nancy Lyra. Introdução Imaginem um mundo em que: – Desenvolvedores não são limitados...
-
Upload
olivia-caldeira -
Category
Documents
-
view
219 -
download
1
Transcript of DSL Tools Nancy Lyra. Introdução Imaginem um mundo em que: – Desenvolvedores não são limitados...
![Page 1: DSL Tools Nancy Lyra. Introdução Imaginem um mundo em que: – Desenvolvedores não são limitados a lidar com conceitos de programação (classes, interfaces,](https://reader035.fdocuments.net/reader035/viewer/2022062522/5706384d1a28abb8238f6e8f/html5/thumbnails/1.jpg)
DSL Tools
Nancy Lyra
![Page 2: DSL Tools Nancy Lyra. Introdução Imaginem um mundo em que: – Desenvolvedores não são limitados a lidar com conceitos de programação (classes, interfaces,](https://reader035.fdocuments.net/reader035/viewer/2022062522/5706384d1a28abb8238f6e8f/html5/thumbnails/2.jpg)
Introdução
• Imaginem um mundo em que:– Desenvolvedores não são limitados a lidar com
conceitos de programação (classes, interfaces, structs, namespaces, etc.)
– Domínio da aplicação a ser desenvolvida utilize conceitos específicos do domínio• Ex: “fase do jogo”, “personagem principal”, “inimigo” no
domínio de jogos– Possibilidade de criação de diagramas visuais que
geram o código fonte da aplicação
![Page 3: DSL Tools Nancy Lyra. Introdução Imaginem um mundo em que: – Desenvolvedores não são limitados a lidar com conceitos de programação (classes, interfaces,](https://reader035.fdocuments.net/reader035/viewer/2022062522/5706384d1a28abb8238f6e8f/html5/thumbnails/3.jpg)
Visualization and Modeling SDK (DSL Tools) – Visual Studio
• Permite definir conceitos a serem utilizados em um domínio
• Além disso:– Como os conceitos se relacionam– Representação gráfica para eles– Geração de código
![Page 4: DSL Tools Nancy Lyra. Introdução Imaginem um mundo em que: – Desenvolvedores não são limitados a lidar com conceitos de programação (classes, interfaces,](https://reader035.fdocuments.net/reader035/viewer/2022062522/5706384d1a28abb8238f6e8f/html5/thumbnails/4.jpg)
Nosso Demo
• Jogo: Quiz Language– Perguntas e Respostas
• Permitir que um desenvolvedor use a DSL criada para construir jogos de perguntas e respostas
![Page 5: DSL Tools Nancy Lyra. Introdução Imaginem um mundo em que: – Desenvolvedores não são limitados a lidar com conceitos de programação (classes, interfaces,](https://reader035.fdocuments.net/reader035/viewer/2022062522/5706384d1a28abb8238f6e8f/html5/thumbnails/5.jpg)
Algo assim
![Page 6: DSL Tools Nancy Lyra. Introdução Imaginem um mundo em que: – Desenvolvedores não são limitados a lidar com conceitos de programação (classes, interfaces,](https://reader035.fdocuments.net/reader035/viewer/2022062522/5706384d1a28abb8238f6e8f/html5/thumbnails/6.jpg)
Curiosidade
• Alguém do time do VSTS (Visual Studio Team System) observou que muitas DSL visuais precisariam ser desenvolvidas– Criou um framework – DSL Tools
• Microsoft não restringiu o uso aos seus desenvolvedores e disponibilizou o plug in
• Então vocês devem instalar o plug in e o T4 editor (nesta ordem) de acordo com a versão do Visual Studio instalado.
![Page 7: DSL Tools Nancy Lyra. Introdução Imaginem um mundo em que: – Desenvolvedores não são limitados a lidar com conceitos de programação (classes, interfaces,](https://reader035.fdocuments.net/reader035/viewer/2022062522/5706384d1a28abb8238f6e8f/html5/thumbnails/7.jpg)
Papéis
• Projetista– Define conceitos e representação gráfica da DSL
• Desenvolvedor– Utiliza a DSL para criar aplicações
• Usuário– Utiliza as aplicações
Maior partedo tempo
![Page 8: DSL Tools Nancy Lyra. Introdução Imaginem um mundo em que: – Desenvolvedores não são limitados a lidar com conceitos de programação (classes, interfaces,](https://reader035.fdocuments.net/reader035/viewer/2022062522/5706384d1a28abb8238f6e8f/html5/thumbnails/8.jpg)
Importante• As regras que compõem o domínio precisam ser
claramente descritas.
• Regras para o nosso DEMO:– Um jogo (quiz game) é composto por uma sequência de quizzes– Uma quiz contém uma pergunta e um conjunto de respostas
(choices), que pode ser única ou mais de uma– Cada quiz vale uma quantidade de pontos (score)
• Se tiver mais de uma alternativa correta, o ponto só será considerado se todas as respostas corretas forem assinaladas
– Placar final equivale a soma dos pontos das quizzes acertadas– É possível associar dicas (hints) às quizzes
![Page 9: DSL Tools Nancy Lyra. Introdução Imaginem um mundo em que: – Desenvolvedores não são limitados a lidar com conceitos de programação (classes, interfaces,](https://reader035.fdocuments.net/reader035/viewer/2022062522/5706384d1a28abb8238f6e8f/html5/thumbnails/9.jpg)
Nosso alvo (com a QuizLanguage implantada no VS)
Toolbox com conceitos do domínioConceitos com representação visual distintaError List (Validação em alto nível)
Propriedades específicas ao elemento do domínio selecionadoElementos visualizados de maneira hierárquica
![Page 10: DSL Tools Nancy Lyra. Introdução Imaginem um mundo em que: – Desenvolvedores não são limitados a lidar com conceitos de programação (classes, interfaces,](https://reader035.fdocuments.net/reader035/viewer/2022062522/5706384d1a28abb8238f6e8f/html5/thumbnails/10.jpg)
Criando um Projeto DSL Designer
![Page 11: DSL Tools Nancy Lyra. Introdução Imaginem um mundo em que: – Desenvolvedores não são limitados a lidar com conceitos de programação (classes, interfaces,](https://reader035.fdocuments.net/reader035/viewer/2022062522/5706384d1a28abb8238f6e8f/html5/thumbnails/11.jpg)
Minimal Language - contém os elementos básicos de uma DSL, que você pode estender para criar a sua própria
![Page 12: DSL Tools Nancy Lyra. Introdução Imaginem um mundo em que: – Desenvolvedores não são limitados a lidar com conceitos de programação (classes, interfaces,](https://reader035.fdocuments.net/reader035/viewer/2022062522/5706384d1a28abb8238f6e8f/html5/thumbnails/12.jpg)
Extensão dos arquivos que vão conter os diagramas da DSL
![Page 13: DSL Tools Nancy Lyra. Introdução Imaginem um mundo em que: – Desenvolvedores não são limitados a lidar com conceitos de programação (classes, interfaces,](https://reader035.fdocuments.net/reader035/viewer/2022062522/5706384d1a28abb8238f6e8f/html5/thumbnails/13.jpg)
![Page 14: DSL Tools Nancy Lyra. Introdução Imaginem um mundo em que: – Desenvolvedores não são limitados a lidar com conceitos de programação (classes, interfaces,](https://reader035.fdocuments.net/reader035/viewer/2022062522/5706384d1a28abb8238f6e8f/html5/thumbnails/14.jpg)
Contém informações sobre os conceitos e a representação visual de sua DSL
Utilizado para registrar a DSL no VS.NET. A princípio, você não deve se preocupar com este último.
Abra este
![Page 15: DSL Tools Nancy Lyra. Introdução Imaginem um mundo em que: – Desenvolvedores não são limitados a lidar com conceitos de programação (classes, interfaces,](https://reader035.fdocuments.net/reader035/viewer/2022062522/5706384d1a28abb8238f6e8f/html5/thumbnails/15.jpg)
Conceitos (ou Classes) e Relacionamentos Como os conceitos serão exibidos graficamente
A idéia do DSL Tools é prover, aos usuários mais experientes, elementos básicos prontos para uso e modificação, permitindo que uma DSL possa ser minimamente construída (isso justifica o nome Minimal Language do template) – por isso o editor já vem preenchido
![Page 16: DSL Tools Nancy Lyra. Introdução Imaginem um mundo em que: – Desenvolvedores não são limitados a lidar com conceitos de programação (classes, interfaces,](https://reader035.fdocuments.net/reader035/viewer/2022062522/5706384d1a28abb8238f6e8f/html5/thumbnails/16.jpg)
Instâncias poderão ter nome.
Ex: Conceito “Cidade”Instâncias como: Recife, Olinda, etc
Faz mais sentido pro nosso Demo
![Page 17: DSL Tools Nancy Lyra. Introdução Imaginem um mundo em que: – Desenvolvedores não são limitados a lidar com conceitos de programação (classes, interfaces,](https://reader035.fdocuments.net/reader035/viewer/2022062522/5706384d1a28abb8238f6e8f/html5/thumbnails/17.jpg)
Conceitos e Propriedades do Demo
![Page 18: DSL Tools Nancy Lyra. Introdução Imaginem um mundo em que: – Desenvolvedores não são limitados a lidar com conceitos de programação (classes, interfaces,](https://reader035.fdocuments.net/reader035/viewer/2022062522/5706384d1a28abb8238f6e8f/html5/thumbnails/18.jpg)
Criando tipos• Adicionando uma enumeração
• Adicione uma nova propriedade ao conceito Quiz:– Com o botão direito “Add New Domain Enumeration”– Altere o nome do domain type– Com o botão direito “Add new Enumeration Literal”
![Page 19: DSL Tools Nancy Lyra. Introdução Imaginem um mundo em que: – Desenvolvedores não são limitados a lidar com conceitos de programação (classes, interfaces,](https://reader035.fdocuments.net/reader035/viewer/2022062522/5706384d1a28abb8238f6e8f/html5/thumbnails/19.jpg)
Definindo Relacionamentos
Relacionamento ForteEx: Quiz e ChoiceSó existe Choice se existir Quiz
Relacionamento FracoEx: Hint e QuizExiste Quiz sem Hint
HerançaEx: IllustratedQuiz herdaria de Quiz
![Page 20: DSL Tools Nancy Lyra. Introdução Imaginem um mundo em que: – Desenvolvedores não são limitados a lidar com conceitos de programação (classes, interfaces,](https://reader035.fdocuments.net/reader035/viewer/2022062522/5706384d1a28abb8238f6e8f/html5/thumbnails/20.jpg)
Papéis
• Quiz tem papel “Quiz” em Choice• Choice tem papel “Choices” em Quiz
Nem todo papel recebe o nome do conceito.EX: Professor e Universidade. Um professor pode ser Reitor, Vice-Reitor, Coordenador, Professor, etc.
![Page 21: DSL Tools Nancy Lyra. Introdução Imaginem um mundo em que: – Desenvolvedores não são limitados a lidar com conceitos de programação (classes, interfaces,](https://reader035.fdocuments.net/reader035/viewer/2022062522/5706384d1a28abb8238f6e8f/html5/thumbnails/21.jpg)
No nosso Demo
![Page 22: DSL Tools Nancy Lyra. Introdução Imaginem um mundo em que: – Desenvolvedores não são limitados a lidar com conceitos de programação (classes, interfaces,](https://reader035.fdocuments.net/reader035/viewer/2022062522/5706384d1a28abb8238f6e8f/html5/thumbnails/22.jpg)
Representação Gráfica
• Até agora definimos – Conceitos– Propriedades– Relacionamentos
Nada informado como os desenvolvedores vão criar os modelos (diagramas) através dessa
linguagem QuizLanguage
![Page 23: DSL Tools Nancy Lyra. Introdução Imaginem um mundo em que: – Desenvolvedores não são limitados a lidar com conceitos de programação (classes, interfaces,](https://reader035.fdocuments.net/reader035/viewer/2022062522/5706384d1a28abb8238f6e8f/html5/thumbnails/23.jpg)
Projetando Representação Gráfica – Sintaxe Visual
• Nem todo conceito está associado a uma imagem. – Ex: Conceito “Quiz” será associado a uma forma gráfica pré-
existente
Arquivos de imagem
![Page 24: DSL Tools Nancy Lyra. Introdução Imaginem um mundo em que: – Desenvolvedores não são limitados a lidar com conceitos de programação (classes, interfaces,](https://reader035.fdocuments.net/reader035/viewer/2022062522/5706384d1a28abb8238f6e8f/html5/thumbnails/24.jpg)
Adicionando Diagrama
• Antes de adicionar formas, criar um diagrama (um conjunto de mapeamentos entre conceitos/relacionamentos e formas gráficas.)
QuizLanguageDiagram
![Page 25: DSL Tools Nancy Lyra. Introdução Imaginem um mundo em que: – Desenvolvedores não são limitados a lidar com conceitos de programação (classes, interfaces,](https://reader035.fdocuments.net/reader035/viewer/2022062522/5706384d1a28abb8238f6e8f/html5/thumbnails/25.jpg)
Uma vez definido um Diagram para a DSL e o conceito da linguagem por ele representado, é hora de modelar as formas gráficas (shapes).
![Page 26: DSL Tools Nancy Lyra. Introdução Imaginem um mundo em que: – Desenvolvedores não são limitados a lidar com conceitos de programação (classes, interfaces,](https://reader035.fdocuments.net/reader035/viewer/2022062522/5706384d1a28abb8238f6e8f/html5/thumbnails/26.jpg)
Modelando Formas Gráficas• Hint
– Imagem (Image Shape)– Name: HintShape– Image: HintImage– Outline Color: Transparent– Initial Height: 0,4– Initial Width: 0,4
• Informações sobre o conceito associado à forma:Obs. É preciso habilitar a associação (Diagram Element Map da Toolbox)
– Associar Hint a HintShapeExibir/Ocultar linhas de mapeamento
![Page 27: DSL Tools Nancy Lyra. Introdução Imaginem um mundo em que: – Desenvolvedores não são limitados a lidar com conceitos de programação (classes, interfaces,](https://reader035.fdocuments.net/reader035/viewer/2022062522/5706384d1a28abb8238f6e8f/html5/thumbnails/27.jpg)
• Quiz– Forma gráfica pré-definida Compartment Shape– Name: QuizShape– Geometry: RoundedRectangle– Fill Color: Qualquer uma, ex: Sky Blue– Associar Quiz à QuizShape– Adicionar um Compartment chamado Choices
• Title Fill: Lime• Fill Color: Yellow• Title: Choices
![Page 28: DSL Tools Nancy Lyra. Introdução Imaginem um mundo em que: – Desenvolvedores não são limitados a lidar com conceitos de programação (classes, interfaces,](https://reader035.fdocuments.net/reader035/viewer/2022062522/5706384d1a28abb8238f6e8f/html5/thumbnails/28.jpg)
• Apesar do conceito Quiz estar associado ao QuizShape, em nenhum momento você informou ao DSL Tools que o conceito Choice está relacionado ao compartimento Choices do Quiz Shape.
• Para fazer isso, clique na linha cinza de mapeamento entre Quiz e QuizShape, e exiba a janela DSL Details
Indica que estamos acessandoo papel Choices desse relacionamento. E “/!Choice” que o caminho termina com o elemento Choice ao qual o papel Choices se refere
![Page 29: DSL Tools Nancy Lyra. Introdução Imaginem um mundo em que: – Desenvolvedores não são limitados a lidar com conceitos de programação (classes, interfaces,](https://reader035.fdocuments.net/reader035/viewer/2022062522/5706384d1a28abb8238f6e8f/html5/thumbnails/29.jpg)
Adicionando Decoradores Textuais e Gráficos
• Hint até agora só tem imagem– Add new Text Decorator• Name: ContentDecorator• Position: OuterTopCenter
– Associar Hint a ContentDecorator• Mesmo esquema (clica na linha de mapeamento e abre
o DSL Details)
![Page 30: DSL Tools Nancy Lyra. Introdução Imaginem um mundo em que: – Desenvolvedores não são limitados a lidar com conceitos de programação (classes, interfaces,](https://reader035.fdocuments.net/reader035/viewer/2022062522/5706384d1a28abb8238f6e8f/html5/thumbnails/30.jpg)
• Text decorator ao QuizShape– Name: QuestionDecorator– VerticalOffset: 0,3
• Mapear Question a Quiz
• São 2 Icon Decorators ao QuizShape:– indicar se um Quiz é SingleChoice ou MultiChoice– associar imagens correspondentes– Position: InnerTopRight
• Mapeamento Quiz-QuizShape
![Page 31: DSL Tools Nancy Lyra. Introdução Imaginem um mundo em que: – Desenvolvedores não são limitados a lidar com conceitos de programação (classes, interfaces,](https://reader035.fdocuments.net/reader035/viewer/2022062522/5706384d1a28abb8238f6e8f/html5/thumbnails/31.jpg)
Representação Gráfica de Relacionamentos
• Como aparecerão conectados (Connector) os conceitos na DSL gráfica
• No nosso Demo– Uma quiz a outra quiz– Uma dica a uma quiz– Connector
• Name: HintLinkConnector• Dash Style: Dot• Thickness: 0,01
– Mapear este conector ao relacionamento HintReferencesQuizzes– Fazer a mesma coisa para o connector NextQuizConnector
![Page 32: DSL Tools Nancy Lyra. Introdução Imaginem um mundo em que: – Desenvolvedores não são limitados a lidar com conceitos de programação (classes, interfaces,](https://reader035.fdocuments.net/reader035/viewer/2022062522/5706384d1a28abb8238f6e8f/html5/thumbnails/32.jpg)
Customizar Toolbox• Quiz
– Toolbox Icon: QuizIcon– Class: Quiz
• Hint (Idem)
• Somente estes dois pois:– QuizGame: é o próprio QuizLanguageDiagram– Choice: tem um mapeamento dentro do QuizShape
• Os elementos da toolbox não são apenas conceitos, há relacionamentos:– Add New Connection Tool– Name: HintLink– Toolbox Icon: HintLinkIcon– ConnectionBuilder: HintReferencesQuizzesBuilder
• Relacionamento entre duas quizzes: idem (name QuizLink)• SALVAR o DslDefinition.dsl sem erros
Add New Element Tool
Root Class: QuizGame
Pode apagar!
![Page 33: DSL Tools Nancy Lyra. Introdução Imaginem um mundo em que: – Desenvolvedores não são limitados a lidar com conceitos de programação (classes, interfaces,](https://reader035.fdocuments.net/reader035/viewer/2022062522/5706384d1a28abb8238f6e8f/html5/thumbnails/33.jpg)
Testando a DSL
• Ctrl + F5 (ou acesse a opção Debug>Start Without Debugging)
![Page 34: DSL Tools Nancy Lyra. Introdução Imaginem um mundo em que: – Desenvolvedores não são limitados a lidar com conceitos de programação (classes, interfaces,](https://reader035.fdocuments.net/reader035/viewer/2022062522/5706384d1a28abb8238f6e8f/html5/thumbnails/34.jpg)
Testando
![Page 35: DSL Tools Nancy Lyra. Introdução Imaginem um mundo em que: – Desenvolvedores não são limitados a lidar com conceitos de programação (classes, interfaces,](https://reader035.fdocuments.net/reader035/viewer/2022062522/5706384d1a28abb8238f6e8f/html5/thumbnails/35.jpg)
Validadores Semânticos
• A definição de uma DSL – Conceitos– Relacionamentos– Especificação de seu comportamento gráfico– Regras de negócio, dependendo do domínio
modelado.– EX: • qualquer texto da pergunta de uma quiz precisa terminar
ou com o caractere de interrogação (‘?’) ou com o caractere de dois pontos (‘:’).
![Page 36: DSL Tools Nancy Lyra. Introdução Imaginem um mundo em que: – Desenvolvedores não são limitados a lidar com conceitos de programação (classes, interfaces,](https://reader035.fdocuments.net/reader035/viewer/2022062522/5706384d1a28abb8238f6e8f/html5/thumbnails/36.jpg)
Adicionando Validadores
• Adicionar ao projeto Dsl, uma classe parcial
![Page 37: DSL Tools Nancy Lyra. Introdução Imaginem um mundo em que: – Desenvolvedores não são limitados a lidar com conceitos de programação (classes, interfaces,](https://reader035.fdocuments.net/reader035/viewer/2022062522/5706384d1a28abb8238f6e8f/html5/thumbnails/37.jpg)
Lógica da Validação• Método que contém a lógica de validação. 3 Restrições:
– Retornar void;– Possuir como parâmetro um objeto do tipo ValidationContext;– Possuir um atributo de método do tipo ValidationMethod.
• parâmetro do tipo ValidationCategories (Custom, Load, Menu, Open e Save)
![Page 38: DSL Tools Nancy Lyra. Introdução Imaginem um mundo em que: – Desenvolvedores não são limitados a lidar com conceitos de programação (classes, interfaces,](https://reader035.fdocuments.net/reader035/viewer/2022062522/5706384d1a28abb8238f6e8f/html5/thumbnails/38.jpg)
Habilitar Validações
![Page 39: DSL Tools Nancy Lyra. Introdução Imaginem um mundo em que: – Desenvolvedores não são limitados a lidar com conceitos de programação (classes, interfaces,](https://reader035.fdocuments.net/reader035/viewer/2022062522/5706384d1a28abb8238f6e8f/html5/thumbnails/39.jpg)
Testando Tudo
![Page 40: DSL Tools Nancy Lyra. Introdução Imaginem um mundo em que: – Desenvolvedores não são limitados a lidar com conceitos de programação (classes, interfaces,](https://reader035.fdocuments.net/reader035/viewer/2022062522/5706384d1a28abb8238f6e8f/html5/thumbnails/40.jpg)
Transformadores
• De limitada utilidade seriam os diagramas se eles servissem apenas para documentação
• Solução:– Usar diagrama como input de algum transformador (ex.:
gerador de código)
• Consequência:– Criação automática de artefatos de desenvolvimento (ex.:
código-fonte, scripts, arquivos de configuração...)
![Page 41: DSL Tools Nancy Lyra. Introdução Imaginem um mundo em que: – Desenvolvedores não são limitados a lidar com conceitos de programação (classes, interfaces,](https://reader035.fdocuments.net/reader035/viewer/2022062522/5706384d1a28abb8238f6e8f/html5/thumbnails/41.jpg)
Transformadores [2]
• São especificados através de uma linguagem de script baseada em C#
• Na versão experimental do VS2010– Abra o arquivo QuizLanguageReport.tt• <#@ #> => Diretivas (características do transf.)• <# #> => Código contendo lógica de programação• <#= #> => Expressões cujo resultado é copiado
para output do transformador• Qualquer texto fora das tags dos itens acima é copiado
automaticamente para o output do transformador
![Page 42: DSL Tools Nancy Lyra. Introdução Imaginem um mundo em que: – Desenvolvedores não são limitados a lidar com conceitos de programação (classes, interfaces,](https://reader035.fdocuments.net/reader035/viewer/2022062522/5706384d1a28abb8238f6e8f/html5/thumbnails/42.jpg)
Geração de Código
![Page 43: DSL Tools Nancy Lyra. Introdução Imaginem um mundo em que: – Desenvolvedores não são limitados a lidar com conceitos de programação (classes, interfaces,](https://reader035.fdocuments.net/reader035/viewer/2022062522/5706384d1a28abb8238f6e8f/html5/thumbnails/43.jpg)
Geração Código (QuizFramework)
![Page 44: DSL Tools Nancy Lyra. Introdução Imaginem um mundo em que: – Desenvolvedores não são limitados a lidar com conceitos de programação (classes, interfaces,](https://reader035.fdocuments.net/reader035/viewer/2022062522/5706384d1a28abb8238f6e8f/html5/thumbnails/44.jpg)
Geração Código (QuizFramework)