transformações de C++ em UML

A transformação de C++ em UML transforma código C++ em elementos de modelo UML.

Origens de Transformação Válidas

A origem especificada na configuração de transformação deve ser criada utilizando-se o C/C++ Development Tools (CDT).

A tabela a seguir lista os objetos de origem C++ que a transformação pode converter em elementos UML, dependendo do design contract management protocol (DCMP) que você especificar na configuração de transformação:
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++:
  • Pasta de origem C++ em um projeto
  • arquivo de origem C++
Desenvolvimento de Unidade de Modelos Conceituais
Modelagem Reconciliada É possível selecionar os seguintes itens:
  • Um projeto C++
  • Uma ou mais pastas ou arquivos de origens de um único projeto C++

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.

Destinos de Transformação Válidos

Um destino de transformação válido é um modelo UML, arquivo de modelo UML ou pacote de nível-raiz em um modelo UML.

Nomes de Arquivos Alternativos para Saída de Transformação Reversa

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.

Suporte para Diversos Projetos e suas Interdependências

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.

Cada associação especifica o local de um elemento C++ e um elemento UML. É possível especificar qualquer elemento C++ em uma associação e é possível especificar os seguintes elementos UML em uma associação:
  • Projeto modelo
  • Modelo
  • Pacote
Por exemplo, examine os seguintes projetos e elementos:
  • Um projeto C++ chamado ProjectA, que contém a ClassA, que contém um atributo do tipo ClassB
  • Um projeto C++ chamado ProjectB, que contém uma classe chamada ClassB
  • Um modelo UML chamado ModelB que corresponde ao projeto ProjectB
Nesse exemplo, suponha uma configuração de transformação que especifique as seguintes informações:
  • O projeto C++ chamado ProjectA é a origem da transformação
  • Um novo modelo UML chamado ModelA é o destino da transformação
  • Uma associação entre o projeto C++ chamada ProjectB e o modelo UML chamado ModelB
Quando a transformação C++ para UML é executada, pelo fato de uma associação ser definida entre o ProjectB e o ModelB, a transformação cria uma referência para a UML tipo ClassB, ao invés de criar uma referência visual para o tipo ClassB.

Sincronização de Código C++ e Elementos de Modelo UML

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:

Comparando e Fundindo Saída de Transformação com Modelos UML de Destino

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.

Integração com a Equipe de Suporte

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.


Feedback