As opções na configuração de transformação possibilitam especificar o tipo de relacionamento que a transformação gera entre um elemento de modelo e a saída da transformação. Por padrão, a transformação não cria relacionamentos rastreáveis.
Para entender como os elementos de um modelo de origem estão relacionados aos elementos em um projeto de destino, você pode permitir que uma transformação crie relacionamentos de rastreio dos elementos de modelo de origem com os elementos gerados no projeto de destino. Depois, você pode visualizar os relacionamentos de rastreio em um diagrama de tópicos, criando e executado consultas do modelo.
A criação de relacionamentos de rastreio é útil em projetos grandes que podem conter vários modelos e várias configurações de transformação. Você também pode criar e executar consultas de rastreabilidade que exibem como a saída da transformação está relacionada às especificações de software e aos elementos de modelo.
Quando você reexecutar a transformação, se necessário, a transformação utilizará o identificador no código-fonte para combinar os elementos correspondentes e, em seguida, alterará o código para refletir as alterações no modelo. Por exemplo, se você renomear uma operação UML no modelo de origem e reexecutar a transformação, a transformação renomeará o método Java™ gerado anteriormente e preservará o corpo do método, em vez de excluir o método gerado anteriormente e incluir um novo método.
A transformação Java–para-UML, ou reversa, também pode utilizar os identificadores para combinar elementos correspondentes entre o projeto Java e o modelo UML. Se aplicáveis, as alterações nos elementos do código-fonte Java serão tratadas como modificações ou como refatoração de código em vez de inclusões e exclusões no código gerado.
| Elemento UML | Saída da Transformação | Relacionamento de Rastreio em um Diagrama de Classes |
|---|---|---|
![]() |
/**
*
*/
package Package1;
import java.util.Collection;
/**
* <!-- iniciar-doc-UML -->
* <!-- encerrar-doc-UML -->
* @uml.annotations
* derived_abstraction="platform:/resource/UMLProject/Model.emx#_9YlH8CpPEdyn7_VFIWTp4A"
* @generated "sourceid:platform:/resource/UMLProject/Model.emx#_9YlH8CpPEdyn7_VFIWTp4A"
*/
public class Class1 {
/**
* <!-- iniciar-doc-UML -->
* <!-- encerrar-doc-UML -->
* @generated "sourceid:platform:/resource/UMLProject/Model.emx#__8ptgOSnEdyXH8PWExuX2g"
*/
private Integer attribute1;
/**
* @return the attribute1
* @generated "sourceid:platform:/resource/UMLProject/Model.emx#__8ptgOSnEdyXH8PWExuX2g?GETTER"
*/
public Integer getAttribute1() {
// iniciar-código-do-usuário
return attribute1;
// encerrar-código-do-usuário
}
/**
* @param theAttribute1 o attribute1 a ser configurado
* @generated "sourceid:platform:/resource/UMLProject/Model.emx#__8ptgOSnEdyXH8PWExuX2g?SETTER"
*/
public void setAttribute1(Integer theAttribute1) {
// iniciar-código-do-usuário
attribute1 = theAttribute1;
// encerrar-código-do-usuário
}
/**
* <!-- iniciar-doc-UML -->
* <!-- encerrar-doc-UML -->
* @generated "sourceid:platform:/resource/UMLProject/Model.emx#_RDsjcOSnEdyXH8PWExuX2g"
*/
public void Operation1() {
// iniciar-código-do-usuário
// TAREFA A FAZER Stub de método gerado automaticamente
// encerrar-código-do-usuário
}
/**
* <!-- iniciar-doc-UML -->
* <!-- encerrar-doc-UML -->
* @generated "sourceid:platform:/resource/UMLProject/Model.emx#_R04v0OSnEdyXH8PWExuX2g"
*/
public void Operation2() {
// iniciar-código-do-usuário
// TAREFA A FAZER Stub de método gerado automaticamente
// encerrar-código-do-usuário
}
}
|
![]() |
A transformação não altera o modelo de origem quando você especifica para a transformação gerar relacionamentos de rastreio.
Você pode orientar uma transformação para criar referências diretas entre os elementos de modelo de origem e a saída da transformação. A transformação substitui os elementos de modelo de origem por ponteiros para a saída da transformação. O código-fonte gerado pela transformação torna-se o artefato de engenharia primária e os elementos no modelo tornam-se representações visuais do código. Essa prática será útil se você desejar trabalhar no domínio de destino em vez de trabalhar com o modelo UML. As alterações feitas nas representações visuais dos objetos no modelo ficam imediatamente visíveis no código.
A execução de uma transformação que cria referências diretas entre os elementos de modelo e a saída da transformação altera o modelo de origem. Para evitar possíveis problemas, você deve colocar o modelo de origem sob o controle de versão.
Para obter os benefícios de trabalho no domínio de destino, é necessário criar referências diretas ao fazer alterações incrementais em um modelo UML e, então, converter o modelo em representações visuais de código. Se a transformação não puder transformar elementos UML, tais como elementos aninhados, ela moverá esses elementos para o pacote mais próximo. Se a transformação não puder mover um elemento de modelo para o pacote mais próximo, ela excluirá o elemento.
Para aprender a criar referências diretas entre os elementos de modelo e a saída da transformação, consulte o tutorial relacionado a esse tópico.