DSL Tools Lucas Mello Nancy Lyra. DSL Tools – Visual Studio Permite definir conceitos a serem utilizados em um domínio Além disso: – Como os conceitos.

Slides:



Advertisements
Apresentações semelhantes
Hipermídia Aula 3.
Advertisements

Consumindo e Criando Web Services SOAP em .Net
Conhecendo o VS2008: Windows Forms X Web Forms X Web Services
Linguagem de Montagem Visão geral.
(Unified Modeling Language)
Diagrama de Classes.
Modelo Entidade-Relacionamento
Rational Unified Process(RUP)
XML - Extensible Markup Language
Um Processo Baseado em MDA para a Especialização de Mecanismos de Persistência Fabio Seixas Marques Seminário LES – 7 de abril de.
Java: Pacotes e Modificadores de Visibilidade
Java: Pacotes e Modificadores de Visibilidade
Encontro Linguagem HTML; 13. Hospedagem na WWW.
Introdução a diagrama de classes e UML
Felipe Dias Maria Fernanda
Tutorial I: Criando a interface de uma aplicação em Java
O.O.H.D.M. Modelagem Conceitual
Diagramas de Sequência e Comunicação
C# Documentando código em XML Sharp Shooters.NET Universidade Federal de Pernambuco Centro de Informática Recife, 10/10/2002 Autor: Marden Menezes Costa.
JAVA: Conceitos Iniciais
SQL Server 2012 Introdução a Modelagem de Dados
Rodrigo Cristiano Silva
Conceitos básicos de orientação a objetos
DIAGRAMA DE CASO DE USO Prof. Fabíola Gonçalves C. Ribeiro.
Treinamento do Microsoft® Access® 2010
Rodrigo Cristiano Silva
Programação I Aula 2 (Métodos)
Capítulo 4 SubVIs. Introdução Este capítulo está relacionado com a criação e uso de SubVIs. As SubVis são subprogramas também feitos em LabVIEW. The Default.
Diagrama de Atividades
Fase de Elaboração: Fluxo de Análise Análise de Sistemas de Software Prof. Rodrigo Ribeiro.
Linguagem de Programação JAVA
Cascading Style Sheets Folhas de Estilo em Cascata
Professor: Márcio Amador
7 - Criação de Páginas Web
Etapas para Desenvolvimento de Base DevInfo 6.0. OBJETIVOS Orientar a criação de bases de dados para utilização no sistema DevInfo. Antes de iniciar o.
Análise e Projeto de Sistemas
DSL Tools Lucas Mello Nancy Lyra. DSL Tools – Visual Studio Permite definir conceitos a serem utilizados em um domínio Além disso: – Como os conceitos.
UML Diagrama de classes.
Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Classes e Objetos em Java.
Análise Orientado aos Objetos Prof. Wolley W. Silva
Programação Orientada à Objetos
Aula Prática 4 Monitoria IP/CC (~if669).
William Ivanski Curso de Programação C#. Sumário  Exercícios para Fixação  Utilizando uma IDE  Elementos da Linguagem C#  Valores  Variáveis  Tipos.
Financeiro – Boleto: Remessa e Retorno
7 - Criação de Páginas Web
Utilizando UML e Padrões Prof. Fábio Botelho, MSc Redes e Sistemas Distribuídos Recife, Março de 2010.
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,
RequisitePro Ismênia Galvão Lourenço da Silva ANÁLISE E ESPECIFICAÇÃO DE REQUISITOS CENTRO DE INFORMÁTICA UNIVERSIDADE FEDERAL DE PERNAMBUCO.
Teste de Software 14: Geração de teste baseado em modelos: MBT
Fórmula Visual RM.
O que é Domain Driven Design Especificação Design Refactor Testes Quanto tempo isso leva?
Tarciane Andrade Análise de Casos de Uso Tarciane Andrade
Passo a passo – Instrutor PeerMark – Avaliação por Pares.
PDV - Controle de Mesas.
INTRODUÇÃO AO CONSTRUTOR DE MODELOS (MODELBUILDER)
Análise e Projeto de Sistemas
Treinamento AJAX Waelson Negreiros Blog:
UCSal – Tecnologia em Análise e Desenvolvimento de Sistemas
OCLE Object Constraint Language Environment Fábio Moura CIn-UFPE.
UCSal – Tecnologia em Análise e Desenvolvimento de Sistemas Programação para Aplicações WEB Profa. Semíramis Assis
Fundamentos de Engenharia de SW Diagramas da UML Usados no Projeto de Software.
Financeiro - Boleto : Remessa e Retorno
Estrutura de Dados Prof. André Cypriano M. Costa
PROF. DR. DIVINO IGNÁCIO RIBEIRO JR DEPARTAMENTO DE BIBLIOTECONOMIA E GESTÃO DA INFORMAÇÃO - FAED EndNote X5 – Gerenciador de Referências Bibliográficas.
Análise e Design de Software Site:
Engenharia de Software Orientada a Objetos Professor: Guilherme Timóteo Aula 3: – Modelagem de Classes (parte 2)
Vamos usar um widget para montar um formulário para criação de alunos! Para isso, usaremos o TableForm. Comece importando no controllers.py (caso ainda.
Questionário (Básico) Autor: Skyup Informática. Atividade - Questionário O módulo permite criar uma série de questões, que deverão ser respondida pelos.
Testes de Unidade. 2 Pauta Testes de Unidade; Testes de Unidade; Desenvolvimento orientado a testes; Desenvolvimento orientado a testes; Testes unitários.
Design para Web 3 XHTML.
Transcrição da apresentação:

DSL Tools Lucas Mello Nancy Lyra

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

Nosso Demo Jogo: Quiz Language – Perguntas e Respostas Permitir que um desenvolvedor use a DSL criada para construir jogos de perguntas e respostas

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

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) – 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

Nosso alvo Toolbox com conceitos do domínio Conceitos com representação visual distinta Error List (Validação em alto nível) Propriedades específicas ao elemento do domínio selecionado Elementos visualizados de maneira hierárquica

Criando um Projeto DSL Designer

Minimal Language - contém os elementos básicos de uma DSL, que você pode estender para criar a sua própria

Extensão dos arquivos que vão conter os diagramas da DSL

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

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)

Instâncias poderão ter nome. Ex: Conceito Cidade Instâncias como: Recife, Olinda, etc Faz mais sentido pro nosso Demo

Conceitos e Propriedades do Demo

Criando tipos Adicionando uma enumeração Adicione uma nova propriedade ao conceito Quiz: – Type, do tipo AnswerType

Definindo Relacionamentos Relacionamento Forte Ex: Quiz e Choice Só existe Choice se existir Quiz Relacionamento Fraco Ex: Hint e Quiz Existe Quiz sem Hint Herança Ex: IllustratedQuiz herdaria de Quiz

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.

No nosso Demo

Projetando Representação Gráfica – Sintaxe Visual Nem todo conceito está associado a uma imagem. Há formas gráficas.

Adicionando Diagrama Antes de adicionar formas, criar um diagrama (um conjunto de mapeamentos entre conceitos/relacionamentos e formas gráficas.) QuizLanguageDiagram

Uma vez definido um Diagram para a DSL e o conceito da linguagem por ele representado, é hora de modelar as formas gráficas (shapes).

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 HintShape Exibir/Ocultar linhas de mapeamento

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 Associar o conceito Choice a Choices (DSL Details) Papel choice do relacionamento QuizHasChoices

Adicionando Decoradores Textuais e Gráficos Hint até agora só tem imagem – Add new Text Decorator Name: ContentDecorator Position: OuterTopCenter – Associar Hint a ContentDecorator

Text decorator ao QuizShape – Name: QuestionDecorator – VerticalOffset: 0,3 Mapear Question a Quiz Icon Decorators ao QuizShape: – indicar se um Quiz é SingleChoice ou MultiChoice – associar imagens correspondentes – Position: InnerTopRight Mapeamento Quiz-QuizShape

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 quis – Connector Name: HintLinkConnector Dash Style: Dot Thickness: 0,01 – Mapear este conector ao relacionamento HintReferencesQuizzes – Fazer a mesma coisa para o connector NextQuizConnector

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

Testando a DSL Ctrl + F5 (ou acesse a opção Debug>Start Without Debugging)

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 (:).

Adicionando Validadores Adicionar ao projeto Dsl, uma classe parcial

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)

Habilitar Validações

Testando Tudo

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

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

Geração de Código

Geração Código (QuizFramework)