Contrato de Transformação

43
Contrato de Transformação Visão geral 1 [email protected] Contrato de Transformação

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

Page 1: Contrato de Transformação

Contrato de TransformaçãoVisão geral

[email protected] Contrato de Transformação

Page 2: 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

[email protected] Contrato de Transformação

Page 3: 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

[email protected] Contrato de Transformação

Page 4: 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

[email protected] Contrato de Transformação

Page 5: 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 [email protected] Contrato de Transformação

Page 6: 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

[email protected] Contrato de Transformação

Page 7: 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)

[email protected] Contrato de Transformação

Page 8: 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

τ

τ(......)

[email protected] Contrato de Transformação

Page 9: 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

τ

τ(......)

[email protected] Contrato de Transformação

Page 10: 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

τ

τ(......)

[email protected] Contrato de Transformação

Page 11: 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

τ

τ(......)

[email protected] Contrato de Transformação

Page 12: 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

τ

τ(......)

[email protected] Contrato de Transformação

Page 13: 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

τ

τ(......)

[email protected] Contrato de Transformação

Page 14: 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

τ

τ(......)

[email protected] Contrato de Transformação

Page 15: 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

τ

τ(......)

[email protected] Contrato de Transformação

Page 16: Contrato de Transformação

Contrato de TransformaçãoPadrão de projeto

[email protected] Contrato de Transformação

Page 17: Contrato de Transformação

Diagrama de classe

[email protected] Contrato de Transformação

Page 18: Contrato de Transformação

[email protected] Contrato de Transformação

Diagrama de seqüência

20

Page 19: Contrato de Transformação

[email protected] Contrato de Transformação

Diagrama de seqüência

21

Page 20: Contrato de Transformação

TCLibImplementação do padrão de projeto

[email protected] Contrato de Transformação

Page 21: Contrato de Transformação

23

Diagrama de classe

[email protected] Contrato de Transformação

Page 22: Contrato de Transformação

TCLib

Exemplo de uso

[email protected] Contrato de Transformação

Page 23: Contrato de Transformação

Metamodelo UML

[email protected] Contrato de Transformação

Page 24: Contrato de Transformação

Metamodelo UML

[email protected] Contrato de Transformação

Page 25: Contrato de Transformação

Código-fonte (metamodelo)

[email protected] Contrato de Transformação

Page 26: Contrato de Transformação

Invariantes

[email protected] Contrato de Transformação

Page 27: Contrato de Transformação

Parser

[email protected] Contrato de Transformação

Page 28: Contrato de Transformação

Metamodelo conjunto

[email protected] Contrato de Transformação

Page 29: Contrato de Transformação

Invariantes

[email protected] Contrato de Transformação

Page 30: Contrato de Transformação

Código Java para a transformação

[email protected] Contrato de Transformação

Page 31: Contrato de Transformação

Código Java para a transformação

[email protected] Contrato de Transformação

Page 32: Contrato de Transformação

ProjetosVisão geral

[email protected] Contrato de Transformação

Page 33: 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

[email protected] Contrato de Transformação

Page 34: Contrato de Transformação

Metamodelo UML

[email protected] Contrato de Transformação

Page 35: Contrato de Transformação

Metamodelo SQL

[email protected] Contrato de Transformação

Page 36: 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)

[email protected] Contrato de Transformação

Page 37: Contrato de Transformação

Metamodelo Java

[email protected] Contrato de Transformação

Page 38: Contrato de Transformação

ProjetosTrabalho a ser entregue

[email protected] Contrato de Transformação

Page 39: Contrato de Transformação

Trabalho a ser feito

[email protected] 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

Page 40: Contrato de Transformação

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

[email protected] Contrato de Transformação

Page 41: 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

[email protected] Contrato de Transformação

Page 42: 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”

[email protected] Contrato de Transformação

Page 43: Contrato de Transformação

Dúvidas

48

[email protected] Contrato de Transformação