Transformações Reversas

Ao criar uma configuração de transformação UML-para-C#, você pode ativar uma transformação C#-para-UML, ou reversa. Por exemplo, se estiver criando uma configuração de transformação UML-para-C# para transformar um modelo UML em código-fonte C#, você poderá ativar a transformação C#-para-UML, ou reversa, que transforma o código-fonte C# em um modelo UML.

Você pode utilizar transformações reversas para recuperar alterações no modelo ou recuperar alterações no código-fonte. Esse processo é útil quando o modelo e o código são desenvolvidos simultaneamente. Por exemplo, um arquiteto pode criar um modelo UML e transformar o modelo em código-fonte. Os desenvolvedores podem fazer alterações no código gerado e o arquiteto pode executar a transformação reversa para recuperar as alterações no código. A transformação determina as diferenças entre o código-fonte e o modelo UML e o arquiteto pode selecionar quais alterações no código-fonte serão aplicadas ao modelo.

Para recuperar as alterações em um modelo ou no código, você deve criar uma configuração de transformação única e ativar o Modelagem Reconciliada DCMP, em vez de criar configurações para cada transformação. Se você seguir esse processo, todas as informações sobre o modelo UML e o código aplicáveis estarão contidas em uma única configuração; as regras de validação para ambas as transformações são aplicadas à configuração para assegurar que o modelo ou código gerado seja o mais exato possível. A execução de transformações que possuem configurações separadas pode gerar resultados inesperados.

Para simplificar o trabalho com o arquivo de configuração de transformação, salve o arquivo de configuração no projeto que você especificar como a origem da transformação UML-para-C#. Por exemplo, se você especificar um modelo UML como a origem da transformação, salve o arquivo de configuração no mesmo projeto que o modelo UML.

Para evitar possíveis problemas, não altere a origem ou o destino no arquivo de configuração de transformação. Para especificar origens ou destinos diferentes para a transformação, crie uma nova configuração de transformação.

Referências de Projeto Cruzado Entre Projetos e Modelos em Transformações Reversas

Se você trabalhar com projetos específicos de domínio, como C#, C++, Java™, SOA e etc, e transformar os projetos em modelos UML, é possível criar um arquivo de associação que define referências de projeto cruzado entre os elementos de origem e de destino quando os elementos podem estar fora do escopo de uma configuração de transformação.

Um arquivo de associação para a referência de projeto cruzado tem .xmi como uma extensão de nome de arquivo, e esse arquivo pode ser compartilhado por várias configurações de transformação.

É possível especificar os seguintes elementos UML em uma associação:
  • Modelo
  • Pacote
  • Projetos
  • Módulos

Por padrão, se a transformação de C# em UML não puder criar uma referência a um elemento de destino UML concreto, ela cria uma referência visual a um elemento C# correspondente. Se você definir uma associação entre os elementos, a transformação cria uma referência a um elemento de destino UML concreto e não cria uma referência visual.

Considere um espaço de trabalho que contém os seguintes itens:
  • Projetos C# nomeados Projeto A e Projeto B
    • O Projeto A tem uma classe nomeada ClassA e o Projeto B tem uma classe nomeada ClassB
    • O Projeto A depende do Projeto B, porque ClassA referencia um atributo do tipo ClassB
  • Modelos UML nomeados Modelo A e Modelo B
  • Uma configuração de transformação que especifica Projeto A como a origem de transformação e Modelo A como o destino de transformação
  • Uma configuração de transformação que especifica Projeto B como a origem de transformação e Modelo B como o destino de transformação

Quando Projeto A é transformado em Modelo A, ClassA ainda referencia Projeto B por meio de uma referência cruzada.

Porém, uma solução mais apropriada seria a referência cruzada referenciar o tipo UML ClassB sob Modelo B. É possível definir essa referência cruzada usando uma associação, que você define na configuração de transformação.


Feedback