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.
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.
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.
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.