Transformações

Esse conteúdo se aplica à versão 7.5.2, ou posterior.Uma transformação é um mecanismo que utiliza um conjunto de elementos de origem e os altera em um novo conjunto de elementos de destino.

Uma transformação é um conjunto de transfigurações que você pode configurar, especificar como público no arquivo de manifesto de plug-ins e executar utilizando uma configuração de transformação.

O relacionamento entre os elementos de origem e de destino é definido por um conjunto de regras contido em uma transformação. A aplicação dessas regras baseia-se em extratores que especificam como passar pelo conjunto de origem de elementos. A transformação pode depender de um perfil para aplicar mais informações a suas regras.

As transformações permitem a conversão de modelos UML em código, a conversão de código em modelos UML e a conversão de modelos em modelos, em um nível diferente de abstração. Há quatro categorias de transformações:

Além disso, as transformações podem implementar padrões para converter elementos de um formulário para outro.

O ponto de início mais comum de uma transformação é um modelo independente de plataforma (PIM), como um modelo de classe. Um modelo de classe contém elementos de design sem referência a características de implementação. Você pode criar, modificar e anotar modelos de classe e, em seguida, utilizar as transformações para gerar um modelo específico da plataforma (PSM), como um diagrama de tópicos ou texto em nível de código Java™.

Nota: Para obter informações adicionais sobre PIMs, uma parte essencial do processo definido do Grupo de Gerenciamento de Objetos (OMG) para arquitetura direcionada para modelos (MDA) e desenvolvimento direcionado para modelos (MDD), visite o Web site do Grupo de Gerenciamento de Objetos.

Como parte de seu pacote, os padrões também podem definir e fornecer extensões de transformação que definem regras adicionais a serem aplicadas ao cruzarem 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 código específico. Essas regras estenderiam uma transformação de código, por exemplo, uma transformação Java ou C++, para fornecer código específico do padrão para a saída gerada.

São necessárias as quatro partes de informações a seguir para aplicar uma determinada transformação:
Transformação
Uma referência à transformação específica que está sendo aplicada
Contexto da transformação
Contém os valores para todos os parâmetros da transformação
Origem
O objeto inicial, ou conjunto de objetos, transmitido para a operação de transformação
Contêiner de destino
Uma referência aos locais em que os artefatos gerados estão localizados

Um processo básico de transformação de modelo inclui as seguintes etapas, que podem ser executadas iterativamente:

  1. Aplicação de um perfil ao modelo que define estereótipos adicionais que podem ser utilizados.
  2. Aplicação desses estereótipos aos elementos de modelo existentes.
  3. Inclusão de informações, por meio de propriedades de estereótipo, que esses estereótipos fornecem, assim como informações do modelo de base que a transformação requer.
  4. Seleção de uma transformação do ambiente de trabalho e início da operação de transformação.

O resultado de uma transformação completa é o modelo de destino, ou texto, e um registro da transformação com fins de rastreabilidade. Em transformações de modelo em texto, a saída poderia ser código Java ou C++, arquivos Data Definition Language (DDL) para criação e ocupação de banco de dados, testes de unidade ou diagramas de visualização que correspondam a diagramas de modelagem. O registro de transformações 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. Para criar uma transformação que você pode configurar utilizando uma configuração de transformação, é necessário incluir a extensão com.ibm.xtools.transform.core.transformationProviders no arquivo plugin.xml no plug-in que contém a transformação. O provedor de transformação define extensões do tipo Transformação para cada transformação fornecida. A inclusão dessas extensões registra automaticamente a transformação, ou transformações, no serviço de transformação. O serviço de transformação é genérico e não faz suposiçõ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 completamente diferente. No entanto, construindo transformações no mecanismo padrão, os autores de transformações podem tirar vantagem do ambiente de depuração lógico, do mecanismo de extensibilidade e de aperfeiçoamentos futuros para essa arquitetura.

Configurações de Transformação

Uma configuração de transformação é uma instância de uma transformação que inclui informações utilizadas por todas as transformações, como um nome exclusivo, a origem e o destino da transformação; também pode incluir propriedades específicas de uma determinada transformação. Uma configuração de transformação possui .tc como uma extensão de nome de arquivo. Quando você executa uma transformação, ela utiliza as informações fornecidas na configuração de transformação.

Antes de poder executar uma transformação, você deve criar uma configuração de transformação. Quando você aplica uma configuração de transformação, uma instância da transformação é criada e executada com as propriedades definidas nessa configuração, gerando a saída esperada.

É possível compartilhar propriedades em uma configuração de transformação com outras configurações de transformação estabelecendo relacionamentos hierárquicos programaticamente. Esse recurso permite configurações de transformação para herdar seus valores de propriedade das propriedades em uma configuração de transformação padrão. Uma configuração de transformação pode ter múltiplos pais, e a ordem na qual você especifica os relacionamentos usando a API pública determina a prioridade de uma configuração quando múltiplas configurações especificam as mesmas propriedades. Portanto, se um conjunto de propriedades padrão é alterado, todas as configurações de transformação no sistema que usam esse conjunto de propriedades herdam as mudanças.


Feedback