A origem especificada na configuração de transformação deve ser criada utilizando-se o C/C++ Development Tools (CDT).
| DCMP | objetos de origem C++ |
|---|---|
| Modelos Concretos de Valor Inicial de Modelos Conceituais | É possível selecionar um ou mais dos seguintes itens em um ou
mais projetos C++:
|
| Desenvolvimento de Unidade de Modelos Conceituais | |
| Modelagem Reconciliada | É possível selecionar os seguintes itens:
Se você selecionar um item que não seja um projeto C++, a transformação reversa, ou UML em C++, determina o projeto C++ do primeiro item que ela processa. A transformação reversa gera sua saída nesse projeto C++. |
Se você selecionar elementos C++ na visualização Explorador de Projetos em vez de usar o editor de Configuração de Transformação, os elementos de origem que você selecionar substituem o projeto de origem ou os elementos que são especificados na configuração de transformação. A configuração de transformação não é afetada e a origem especificada na página Origem e Destino do editor de configuração de transformação ou no assistente de Nova Configuração de Transformação não é alterada.
Um destino de transformação válido é um modelo UML, arquivo de modelo UML ou pacote de nível-raiz em um modelo UML.
Não é possível criar modelos de mapeamento para a transformação de C++ em UML. No entanto, se a configuração de transformação implementar o Modelagem Reconciliada DCMP, você poderá configurar a transformação reversa, ou de UML em C++, para criar modelos de mapeamento que possibilitem a especificação de nomes de arquivos alternativos para a saída gerada.
A transformação de C++ em UML utiliza os modelos de mapeamento para determinar o nome apropriado dos elementos UML gerados. Por exemplo, um modelo UML contém um pacote chamado PackageA e PackageA contém uma classe chamada Class1. Ao criar um modelo de mapeamento para a transformação de UML em C++, é possível especificar que Class1 tenha um nome de arquivo alternativo MappedClass1. Ao executar a transformação de UML em C++, ela gera arquivos C++ chamados PackageA.MappedClass1.cpp e PackageA.MappedClass1.h. Ao executar a transformação de C++ em UML, a transformação determina que o caminho de UML original para o elemento C++ é PackageA.Class1 e gera uma classe UML chamada Class1 em um pacote UML chamado PackageA.
Se o nome do arquivo de artefato especificado no modelo de mapeamento não for um nome de arquivo válido C++, a transformação modifica o nome do arquivo ao criar o elemento de código C++. Por exemplo, se o modelo de mapeamento especificar um nome de arquivo alternativo "Mapped Class1", em vez de MappedClass1, a transformação gerará um arquivo C++ chamado Mapped_Class1.cpp. A transformação não mantém um registro dessas modificações, portanto, a transformação de C++ em UML não pode mapear o arquivo Mapped_Class1 para o elemento UML original. Nesse exemplo, a transformação de C++ em UML transforma o objeto de origem C++ Mapped_Class1 em uma classe UML chamada Mapped_Class1, em vez de Class1.
Em arquivos de configuração de transformação C++ para UML, uma associação define um link entre um elemento C++ e um elemento UML. Se você trabalhar com múltiplos projetos C++ ou modelos UML, é possível criar um arquivo de associação que define associações entre elementos de origem C++ e elementos de destino UML em diferentes projetos.
Normalmente se define associações entre elementos C++ na origem da transformação e elementos UML que estão contidos em modelos que estão fora do escopo do elemento de destino da transformação. Por padrão, se a transformação C++ para UML não puder criar uma referência para um elemento de destino UML concreto e nenhuma associação for definida, a transformação cria uma referência visual para o 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.
Um arquivo de associação C++ em UML tem .xmi como extensão do nome do arquivo. Diversas configurações de transformação podem compartilhar um arquivo de associação.
Para facilitar a sincronização de código C++ e elementos de modelo UML, é possível especificar que a transformação define um tipo de link chamado de relacionamento rastreável entre os elementos UML e os elementos de código C++. É possível especificar esta opção ao configurar uma transformação C++ em UML ou UML-para-C++ para usar o Protocolo de Gerenciamento de Contrato de Design (DCMP) do Modelagem Reconciliada ou Conceitual. Ao executar a transformação, ela cria relacionamentos rastreáveis incluindo anotações e identificadores nos elementos gerados. A geração de relacionamentos rastreáveis impede que a transformação UML-para-C++ gere elementos de código duplicados no código de origem C++.
A transformação gera relacionamentos rastreáveis para os seguintes elementos:
A transformação de C++ em UML utiliza a funcionalidade de comparação e mesclagem para determinar as diferenças entre o modelo de destino e o modelo temporário geradas pela transformação. Ao executar a transformação de C++ em UML, o editor de mesclagem exibe as diferenças entre os dois modelos. Na caixa de diálogo do editor de mesclagem, você pode selecionar as mudanças mescladas pela transformação no modelo de destino.
A transformação fornece funcionalidade de integração com os sistemas de controle de versão IBM® Rational Team Concert, CVS, Rational ClearCase, e Rational ClearCase LT, que possibilita efetuar o registro de saída dos arquivos automaticamente ou incluir novos arquivos. É necessário ativar os recursos de equipe para trabalhar com os sistemas de gerenciamento de configuração.