Contrato de Transformação

Propaganda
Visão geral
Contrato de Transformação
[email protected]
Contrato de Transformação
1
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
2
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
3
Subindo o nível
Contrato de transformação
=
Design by Contract no nível de modelos
Modelo de
entrada
Transformação
Modelo de
saída
Pré
condições
Condições da
transformação
Pós
condições
[email protected]
Contrato de Transformação
4
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
6
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
8
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
9
Uso dos invariantes
• Maior garantia de qualidade
Designer da
linguagem de
modelagem
Define sintaxe e
semântica da linguagem
de modelagem
Desenvolvedor
da transformação
de modelos

Define a relação entre
duas ou mais linguagens
de modelagem
(......)
Modela a aplicação e
aplica o transformador ao
modelo
Usuário do
transformador de
modelos
[email protected]

Contrato de Transformação
10
Uso dos invariantes
• Maior garantia de qualidade
Designer da
linguagem de
modelagem
Define sintaxe e
semântica da linguagem
de modelagem
Desenvolvedor
da transformação
de modelos

Define a relação entre
duas ou mais linguagens
de modelagem
(......)
Modela a aplicação e
aplica o transformador ao
modelo
Usuário do
transformador de
modelos
[email protected]

Contrato de Transformação
11
Uso dos invariantes
• Maior garantia de qualidade
Designer da
linguagem de
modelagem
Define sintaxe e
semântica da linguagem
de modelagem
Desenvolvedor
da transformação
de modelos

Define a relação entre
duas ou mais linguagens
de modelagem
(......)
Modela a aplicação e
aplica o transformador ao
modelo
Usuário do
transformador de
modelos
[email protected]

Contrato de Transformação
12
Uso dos invariantes
• Maior garantia de qualidade
Designer da
linguagem de
modelagem
Define sintaxe e
semântica da linguagem
de modelagem
Desenvolvedor
da transformação
de modelos

Define a relação entre
duas ou mais linguagens
de modelagem
(......)
Modela a aplicação e
aplica o transformador ao
modelo
Usuário do
transformador de
modelos
[email protected]

Contrato de Transformação
13
Uso dos invariantes
• Maior garantia de qualidade
Designer da
linguagem de
modelagem
Define sintaxe e
semântica da linguagem
de modelagem
Desenvolvedor
da transformação
de modelos

Define a relação entre
duas ou mais linguagens
de modelagem
(......)
Modela a aplicação e
aplica o transformador ao
modelo
Usuário do
transformador de
modelos
[email protected]

Contrato de Transformação
14
Uso dos invariantes
• Maior garantia de qualidade
Designer da
linguagem de
modelagem
Define sintaxe e
semântica da linguagem
de modelagem
Desenvolvedor
da transformação
de modelos

Define a relação entre
duas ou mais linguagens
de modelagem
(......)
Modela a aplicação e
aplica o transformador ao
modelo
Usuário do
transformador de
modelos
[email protected]

Contrato de Transformação
15
Uso dos invariantes
• Maior garantia de qualidade
Designer da
linguagem de
modelagem
Define sintaxe e
semântica da linguagem
de modelagem
Desenvolvedor
da transformação
de modelos

Define a relação entre
duas ou mais linguagens
de modelagem
(......)
Modela a aplicação e
aplica o transformador ao
modelo
Usuário do
transformador de
modelos
[email protected]

Contrato de Transformação
16
Uso dos invariantes
• Maior garantia de qualidade
Designer da
linguagem de
modelagem
Define sintaxe e
semântica da linguagem
de modelagem
Desenvolvedor
da transformação
de modelos

Define a relação entre
duas ou mais linguagens
de modelagem
(......)
Modela a aplicação e
aplica o transformador ao
modelo
Usuário do
transformador de
modelos
[email protected]

Contrato de Transformação
17
Padrão de projeto
Contrato de Transformação
[email protected]
Contrato de Transformação
18
Diagrama de classe
[email protected]
Contrato de Transformação
19
Diagrama de seqüência
[email protected]
Contrato de Transformação
20
Diagrama de seqüência
[email protected]
Contrato de Transformação
21
Implementação do padrão de projeto
TCLib
[email protected]
Contrato de Transformação
22
Diagrama de classe
[email protected]
Contrato de Transformação
23
Exemplo de uso
TCLib
[email protected]
Contrato de Transformação
27
Metamodelo UML
[email protected]
Contrato de Transformação
28
Metamodelo UML
[email protected]
Contrato de Transformação
29
Código-fonte (metamodelo)
[email protected]
Contrato de Transformação
30
Invariantes
[email protected]
Contrato de Transformação
31
Parser
[email protected]
Contrato de Transformação
32
Metamodelo conjunto
[email protected]
Contrato de Transformação
33
Invariantes
[email protected]
Contrato de Transformação
34
Código Java para a transformação
[email protected]
Contrato de Transformação
35
Código Java para a transformação
[email protected]
Contrato de Transformação
36
Visão geral
Projetos
[email protected]
Contrato de Transformação
37
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
38
Metamodelo UML
[email protected]
Contrato de Transformação
39
Metamodelo SQL
[email protected]
Contrato de Transformação
40
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
41
Metamodelo Java
[email protected]
Contrato de Transformação
42
Trabalho a ser entregue
Projetos
[email protected]
Contrato de Transformação
43
Trabalho a ser feito
• 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
[email protected]
Contrato de Transformação
44
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
45
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
46
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
47
Dúvidas
[email protected]
Contrato de Transformação
48
Download