O relacionamento entre os elementos de origem e de destino é definido por um conjunto de regras contido em uma transformação. A execução dessas regras é baseada nos conjuntos de regras que entendem como cruzar o conjunto de elementos de origem. A transformação pode depender de um perfil para aplicar as informações adicionais a suas regras.
Os serviços de transformação (e os padrões) preenchem a folga entre os modelos UML e o código, bem como entre os modelos nos diferentes níveis de abstração. As transformações podem ser, entre outras:
Além disso, as transformações podem implementar padrões para converter os elementos de um formulário a outro. As transformações instaladas com o produto estão disponíveis por meio de comandos em Rational Software Architect.
Um ponto inicial mais comum para uma transformação é um modelo Plataform Independent Model (PIM), como um modelo de classe. Um modelo de classe contém elementos de design sem referência às especificações de implementação. Você pode criar, modificar e anotar os modelos de classe e, em seguida, utilizar as transformações para gerar um Platform Specific Model (PSM), como um diagrama de tópicos Java ou texto em nível de código.
Como parte de seus pacotes, os padrões também podem definir e fornecer extensões de transformação que definem as regras adicionais a serem executadas ao cruzar níveis específicos de abstração ou metamodelos específicos. Uma implementação comum desse conceito é um padrão de design que fornece regras de transformação para gerar o código específico. Essas regras devem estender uma transformação de código (por exemplo, um Java ou transformação C++) para fornecer um código específico de padrão para a saída gerada.
Você precisa das quatros partes de informações a seguir para aplicar uma transformação específica:
Um processo muito básico de transformação de modelo inclui as seguintes etapas:
O resultado de uma transformação concluída é o modelo de destino ou o texto e o registro da transformação para fins de rastreabilidade. Em transformações de modelos para o texto, a saída poderia ser código Java ou C++, arquivos DDL para criação e ocupação do banco de dados, testes de unidade ou diagramas de visualização que combinam com os diagramas do modelo correspondente. O registro de transformação inclui um mapa do elemento no modelo de origem para os elementos correspondentes do destino e mostra quais partes do mapeamento foram utilizadas para cada parte da transformação.
Você pode criar novas transformações utilizando a API de transformação. O serviço de
transformação é genérico e não possui menções sobre o modelo de origem, o modelo de
destino ou a implementação da própria transformação. Embora o serviço de
transformação contenha um mecanismo de transformação padrão, um autor de
transformação poderia utilizar um mecanismo que é completamente diferente.
No entanto, construindo transformações no mecanismo padrão, os criadores de transformações
podem tirar vantagem do ambiente de depuração lógico, do mecanismo de extensibilidade
e de aperfeiçoamentos futuros nessa arquitetura.