Upload
zelenia-melton
View
27
Download
0
Embed Size (px)
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
Citation preview
Contrato de TransformaçãoVisão geral
[email protected] 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
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
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
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
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
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
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
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
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
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
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
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
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
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
Contrato de TransformaçãoPadrão de projeto
[email protected] Contrato de Transformação
Diagrama de classe
[email protected] Contrato de Transformação
TCLibImplementação do padrão de projeto
[email protected] Contrato de Transformação
Metamodelo UML
[email protected] Contrato de Transformação
Metamodelo UML
[email protected] Contrato de Transformação
Código-fonte (metamodelo)
[email protected] Contrato de Transformação
Invariantes
[email protected] Contrato de Transformação
Parser
[email protected] Contrato de Transformação
Metamodelo conjunto
[email protected] Contrato de Transformação
Invariantes
[email protected] Contrato de Transformação
Código Java para a transformação
[email protected] Contrato de Transformação
Código Java para a transformação
[email protected] Contrato de Transformação
ProjetosVisão geral
[email protected] 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
Metamodelo UML
[email protected] Contrato de Transformação
Metamodelo SQL
[email protected] 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
Metamodelo Java
[email protected] Contrato de Transformação
ProjetosTrabalho a ser entregue
[email protected] 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
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
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
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