Relacionamentos entre os Elementos de Modelo UML e a Saída da Transformação

As opções de rastreabilidade possibilitam criar relacionamentos entre um modelo de origem e a saída da transformação.

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.

Relacionamentos de Rastreio entre os Elementos de Modelo de Origem e a Saída da Transformação

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.

Quando você executa uma transformação configurada para gerar relacionamentos de rastreio entre o modelo de origem e a saída da transformação, para cada elemento UML que suporta a tag @generated, a transformação inclui um comentário do código-fonte na saída da transformação. O comentário começa com //@uml.annotations e contém um identificador exclusivo para o elemento de modelo.Se você renomear os elementos no modelo UML de origem, esse identificador exclusivo ativará a funcionalidade de mesclagem para refatorar e mesclar os elementos apropriados.
Nota: Se mover um elemento UML fora do escopo de sua classe de nível mais alto, quando você reexecutar a transformação, o algoritmo de mesclagem não refatorará ou mesclará o elemento renomeado porque o escopo do elemento foi alterado.

Para visualizar os relacionamentos entre os elementos de modelo de origem e a saída da transformação, você pode visualizar o elemento de modelo de origem em um diagrama e arrastar o elemento de código gerado pela transformação para esse diagrama. A tabela a seguir lista o seguinte: a representação UML para um elemento de modelo de origem nomeado Class1, que contém um atributo de número inteiro nomeado attribute1 e duas operações nomeadas Operation1 e Operation2, que não possuem nenhum parâmetro; o código gerado pela transformação; o diagrama de classes que mostra o relacionamento de rastreio entre os elementos.

A transformação não altera o modelo de origem quando você especifica para a transformação gerar relacionamentos de rastreio.

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.

Referências Diretas entre os Elementos de Modelo e a Saída da Transformação

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.


Feedback