Contrato de Transformação

Post on 15-Mar-2016

22 views 0 download

description

Visão geral. Contrato de Transformação. Origens. Design by Contract Definição e especificação formal, precisa e verificável dos componentes do sistema Baseado na idéia de obrigações e benefícios Obrigações Pré-condições antes de executar uma rotina Garantir pós-condições após uma rotina - PowerPoint PPT Presentation

Transcript of Contrato de Transformação

Contrato de TransformaçãoVisão geral

1robertowm@gmail.com Contrato de Transformação

Origens

• Design by Contract• Definição e especificação formal, precisa e

verificável dos componentes do sistema• Baseado na idéia de obrigações e benefícios• Obrigações

• Pré-condições antes de executar uma rotina• Garantir pós-condições após uma rotina• Manter uma propriedade durante toda a rotina

(invariante)• Benefício

• Não é necessário efetuar verificações internas a rotina

2robertowm@gmail.com Contrato de Transformação

Origens

• Design by Contract• Formalização das obrigações e benefícios• Obrigações devem ser definidas na fase de

Design• Algumas linguagens dão suporte a assertivas

para garantir o contrato

3robertowm@gmail.com Contrato de Transformação

Subindo o nível

Contrato de transformação =

Design by Contract no nível de modelos

4

Modelo de entrada

Modelo de saídaTransformação

Pré condições

Pós condições

Condições da transformação

robertowm@gmail.com Contrato de Transformação

O que é?

• Uma especificação sobre o que uma transformação de modelo deve fazer

• Deve existir uma relação entre o metamodelo de entrada e de saída, que é definido como o metamodelo de transformação• União disjunta entre os metamodelo de

entrada, metamodelo de saída e relações entre eles

• Para validar a transformação, um conjunto de invariantes são aplicados sobre o modelo de transformação, que devem ser respeitados 6robertowm@gmail.com Contrato de Transformação

Passos para a transformação

• Passos• Carregar o modelo de entrada• Validar o modelo de entrada carregado• Transformar do modelo de entrada para o

modelo de saída• Validar o modelo de transformação e de saída• Gerar a sintaxe concreta do modelo de saída

8robertowm@gmail.com Contrato de Transformação

Passos para a transformação

• Benefícios• Padronização de como deve ocorrer a

transformação• Garantia que os invariantes são respeitados

(passos de validação)

9robertowm@gmail.com Contrato de Transformação

Uso dos invariantes

• Maior garantia de qualidade

10

Designer da linguagem de modelagem

Desenvolvedor da transformação de modelos

Usuário do transformador de modelos

Define sintaxe e semântica da linguagem de modelagem

Define a relação entre duas ou mais linguagens de modelagem

Modela a aplicação e aplica o transformador ao modelo

τ

τ(......)

robertowm@gmail.com Contrato de Transformação

Uso dos invariantes

• Maior garantia de qualidade

11

Designer da linguagem de modelagem

Desenvolvedor da transformação de modelos

Usuário do transformador de modelos

Define sintaxe e semântica da linguagem de modelagem

Define a relação entre duas ou mais linguagens de modelagem

Modela a aplicação e aplica o transformador ao modelo

τ

τ(......)

robertowm@gmail.com Contrato de Transformação

Uso dos invariantes

• Maior garantia de qualidade

12

Designer da linguagem de modelagem

Desenvolvedor da transformação de modelos

Usuário do transformador de modelos

Define sintaxe e semântica da linguagem de modelagem

Define a relação entre duas ou mais linguagens de modelagem

Modela a aplicação e aplica o transformador ao modelo

τ

τ(......)

robertowm@gmail.com Contrato de Transformação

Uso dos invariantes

• Maior garantia de qualidade

13

Designer da linguagem de modelagem

Desenvolvedor da transformação de modelos

Usuário do transformador de modelos

Define sintaxe e semântica da linguagem de modelagem

Define a relação entre duas ou mais linguagens de modelagem

Modela a aplicação e aplica o transformador ao modelo

τ

τ(......)

robertowm@gmail.com Contrato de Transformação

Uso dos invariantes

• Maior garantia de qualidade

14

Designer da linguagem de modelagem

Desenvolvedor da transformação de modelos

Usuário do transformador de modelos

Define sintaxe e semântica da linguagem de modelagem

Define a relação entre duas ou mais linguagens de modelagem

Modela a aplicação e aplica o transformador ao modelo

τ

τ(......)

robertowm@gmail.com Contrato de Transformação

Uso dos invariantes

• Maior garantia de qualidade

15

Designer da linguagem de modelagem

Desenvolvedor da transformação de modelos

Usuário do transformador de modelos

Define sintaxe e semântica da linguagem de modelagem

Define a relação entre duas ou mais linguagens de modelagem

Modela a aplicação e aplica o transformador ao modelo

τ

τ(......)

robertowm@gmail.com Contrato de Transformação

Uso dos invariantes

• Maior garantia de qualidade

16

Designer da linguagem de modelagem

Desenvolvedor da transformação de modelos

Usuário do transformador de modelos

Define sintaxe e semântica da linguagem de modelagem

Define a relação entre duas ou mais linguagens de modelagem

Modela a aplicação e aplica o transformador ao modelo

τ

τ(......)

robertowm@gmail.com Contrato de Transformação

Uso dos invariantes

• Maior garantia de qualidade

17

Designer da linguagem de modelagem

Desenvolvedor da transformação de modelos

Usuário do transformador de modelos

Define sintaxe e semântica da linguagem de modelagem

Define a relação entre duas ou mais linguagens de modelagem

Modela a aplicação e aplica o transformador ao modelo

τ

τ(......)

robertowm@gmail.com Contrato de Transformação

Contrato de TransformaçãoPadrão de projeto

18robertowm@gmail.com Contrato de Transformação

Diagrama de classe

19robertowm@gmail.com Contrato de Transformação

robertowm@gmail.com Contrato de Transformação

Diagrama de seqüência

20

robertowm@gmail.com Contrato de Transformação

Diagrama de seqüência

21

TCLibImplementação do padrão de projeto

22robertowm@gmail.com Contrato de Transformação

23

Diagrama de classe

robertowm@gmail.com Contrato de Transformação

TCLib

Exemplo de uso

27robertowm@gmail.com Contrato de Transformação

Metamodelo UML

28robertowm@gmail.com Contrato de Transformação

Metamodelo UML

29robertowm@gmail.com Contrato de Transformação

Código-fonte (metamodelo)

30robertowm@gmail.com Contrato de Transformação

Invariantes

31robertowm@gmail.com Contrato de Transformação

Parser

32robertowm@gmail.com Contrato de Transformação

Metamodelo conjunto

33robertowm@gmail.com Contrato de Transformação

Invariantes

34robertowm@gmail.com Contrato de Transformação

Código Java para a transformação

35robertowm@gmail.com Contrato de Transformação

Código Java para a transformação

36robertowm@gmail.com Contrato de Transformação

ProjetosVisão geral

37robertowm@gmail.com Contrato de Transformação

UMLtoSQL

• Transformador de diagramas de classe UML para SQL

• Transformação baseada no livro “MDA Explained”

• Validação por invariantes nos três domínios

• Geração de comandos em SQL para criação de tabelas

38robertowm@gmail.com Contrato de Transformação

Metamodelo UML

39robertowm@gmail.com Contrato de Transformação

Metamodelo SQL

40robertowm@gmail.com Contrato de Transformação

UMLtoJava

• Transformador de diagramas de classe UML para código-fonte em Java

• Validação por invariantes nos três domínios

• Geração de código-fonte em Java (classes com atributos e seus getters/setters)

41robertowm@gmail.com Contrato de Transformação

Metamodelo Java

42robertowm@gmail.com Contrato de Transformação

ProjetosTrabalho a ser entregue

43robertowm@gmail.com Contrato de Transformação

Trabalho a ser feito

44robertowm@gmail.com Contrato de Transformação

• Consertar alguns problemas no transformador

• Melhorar alguns aspectos do transformador

• Implementar um elemento de modelagem não suportado

• O trabalho deve compilar em três diagramas de classe• Blog.xmi• Meeting.xmi• Breakfast.xmi

Erro/Melhoria no UMLtoSQL

• Permitir que o código resultante funcione um um banco de dados relacional

• Adicionar as “constraints” de foreign key no pretty-print• MySQL:

... FOREIGN KEY (fk_id) REFERENCES OtherTable(column_id) ...

• Consertar os invariantes inválidos

45robertowm@gmail.com Contrato de Transformação

Erro/Melhoria no UMLtoJava

• Permitir que o código resultante seja compilável• Falta adicionar o código referente aos setters

gerados• Adicionar código nos getters gerados• Consertar os invariantes inválidos

46robertowm@gmail.com Contrato de Transformação

Implementação de um novo elemento

• Adicionar suporte a classes associativas• Requer mudanças em todo o processo de

transformação• Criação de invariantes nos três domínios• Carregar esses elementos durante “parse”• Criar a regra de transformação e implementá-la• Atualizar o “pretty-print”

47robertowm@gmail.com Contrato de Transformação

Dúvidas

48

?robertowm@gmail.com Contrato de Transformação