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

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

Transcript of Contrato de Transformação Visão geral 1 [email protected] de Transformação.

Page 1: Contrato de Transformação Visão geral 1 robertowm@gmail.comContrato de Transformação.

Contrato de TransformaçãoVisão geral

[email protected] Contrato de Transformação

Page 2: Contrato de Transformação Visão geral 1 robertowm@gmail.comContrato 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

[email protected] Contrato de Transformação

Page 3: Contrato de Transformação Visão geral 1 robertowm@gmail.comContrato 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 Visão geral 1 robertowm@gmail.comContrato 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 Visão geral 1 robertowm@gmail.comContrato 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 Visão geral 1 robertowm@gmail.comContrato 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 Visão geral 1 robertowm@gmail.comContrato 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 Visão geral 1 robertowm@gmail.comContrato 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 Visão geral 1 robertowm@gmail.comContrato 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 Visão geral 1 robertowm@gmail.comContrato 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 Visão geral 1 robertowm@gmail.comContrato 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 Visão geral 1 robertowm@gmail.comContrato 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 Visão geral 1 robertowm@gmail.comContrato 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 Visão geral 1 robertowm@gmail.comContrato 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 Visão geral 1 robertowm@gmail.comContrato 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 Visão geral 1 robertowm@gmail.comContrato de Transformação.

Contrato de TransformaçãoPadrão de projeto

[email protected] Contrato de Transformação

Page 17: Contrato de Transformação Visão geral 1 robertowm@gmail.comContrato de Transformação.

Diagrama de classe

[email protected] Contrato de Transformação

Page 18: Contrato de Transformação Visão geral 1 robertowm@gmail.comContrato de Transformação.

[email protected] Contrato de Transformação

Diagrama de seqüência

20

Page 19: Contrato de Transformação Visão geral 1 robertowm@gmail.comContrato de Transformação.

[email protected] Contrato de Transformação

Diagrama de seqüência

21

Page 20: Contrato de Transformação Visão geral 1 robertowm@gmail.comContrato de Transformação.

TCLibImplementação do padrão de projeto

[email protected] Contrato de Transformação

Page 21: Contrato de Transformação Visão geral 1 robertowm@gmail.comContrato de Transformação.

23

Diagrama de classe

[email protected] Contrato de Transformação

Page 22: Contrato de Transformação Visão geral 1 robertowm@gmail.comContrato de Transformação.

TCLib

Exemplo de uso

[email protected] Contrato de Transformação

Page 23: Contrato de Transformação Visão geral 1 robertowm@gmail.comContrato de Transformação.

Metamodelo UML

[email protected] Contrato de Transformação

Page 24: Contrato de Transformação Visão geral 1 robertowm@gmail.comContrato de Transformação.

Metamodelo UML

[email protected] Contrato de Transformação

Page 25: Contrato de Transformação Visão geral 1 robertowm@gmail.comContrato de Transformação.

Código-fonte (metamodelo)

[email protected] Contrato de Transformação

Page 26: Contrato de Transformação Visão geral 1 robertowm@gmail.comContrato de Transformação.

Invariantes

[email protected] Contrato de Transformação

Page 27: Contrato de Transformação Visão geral 1 robertowm@gmail.comContrato de Transformação.

Parser

[email protected] Contrato de Transformação

Page 28: Contrato de Transformação Visão geral 1 robertowm@gmail.comContrato de Transformação.

Metamodelo conjunto

[email protected] Contrato de Transformação

Page 29: Contrato de Transformação Visão geral 1 robertowm@gmail.comContrato de Transformação.

Invariantes

[email protected] Contrato de Transformação

Page 30: Contrato de Transformação Visão geral 1 robertowm@gmail.comContrato de Transformação.

Código Java para a transformação

[email protected] Contrato de Transformação

Page 31: Contrato de Transformação Visão geral 1 robertowm@gmail.comContrato de Transformação.

Código Java para a transformação

[email protected] Contrato de Transformação

Page 32: Contrato de Transformação Visão geral 1 robertowm@gmail.comContrato de Transformação.

ProjetosVisão geral

[email protected] Contrato de Transformação

Page 33: Contrato de Transformação Visão geral 1 robertowm@gmail.comContrato 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 Visão geral 1 robertowm@gmail.comContrato de Transformação.

Metamodelo UML

[email protected] Contrato de Transformação

Page 35: Contrato de Transformação Visão geral 1 robertowm@gmail.comContrato de Transformação.

Metamodelo SQL

[email protected] Contrato de Transformação

Page 36: Contrato de Transformação Visão geral 1 robertowm@gmail.comContrato 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 Visão geral 1 robertowm@gmail.comContrato de Transformação.

Metamodelo Java

[email protected] Contrato de Transformação

Page 38: Contrato de Transformação Visão geral 1 robertowm@gmail.comContrato de Transformação.

ProjetosTrabalho a ser entregue

[email protected] Contrato de Transformação

Page 39: Contrato de Transformação Visão geral 1 robertowm@gmail.comContrato 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 Visão geral 1 robertowm@gmail.comContrato 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 Visão geral 1 robertowm@gmail.comContrato 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 Visão geral 1 robertowm@gmail.comContrato 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 Visão geral 1 robertowm@gmail.comContrato de Transformação.

Dúvidas

48

[email protected] Contrato de Transformação