Configurando Transformações UML-para-C++

Esse conteúdo se aplica à versão 7.5.1, ou posterior. Para especificar as informações que a transformação utiliza para gerar a saída que você espera, utilize o Novo assistente de configuração de transformação e o editor de configuração de transformação, que o orientará através da configuração.
Por Que e Quando Desempenhar Esta Tarefa

Uma configuração de transformação possui .tc como uma extensão de nome de arquivo e contém as informações que a transformação utiliza para gerar a saída esperada. Uma configuração de transformação também contém informações específicas para um determinado tipo de transformação. Para editar uma configuração de transformação existente, em uma visualização que mostra os recursos da área de trabalho, dê um clique duplo no arquivo de configuração da transformação, que abre o editor de configuração de transformação.

Para simplificar o trabalho com o arquivo de configuração de transformação, salve o arquivo de configuração no projeto que contém os elementos para transformar.

  1. Dependendo da visualização na qual está trabalhando, execute uma das seguintes etapas:
    • Na visualização Pattern Explorer, clique com o botão direito do mouse em uma transformação; em seguida, clique em Nova Configuração.
    • Em outras visualizações, clique em Arquivo > Novo > Configuração da Transformação. Se Configuração da Transformação não for um item de menu, clique em Arquivo > Novo > Outro > Transformações > Configuração da Transformação.
  2. Especifique os detalhes da configuração. No Novo Assistente de Configuração de Transformação , na página Especifique um Nome e uma Transformação de Configuração, conclua as seguintes etapas:
    1. No campo Nome, especifique um nome para a configuração.
    2. No campo Destino do arquivo de configuração, especifique o destino do arquivo de configuração da transformação. O destino é um caminho relativo em seu espaço de trabalho atual. É possível especificar um nome de projeto ou nome de pasta completo. Se você especificar uma pasta em um projeto, deverá iniciar o nome da pasta com uma barra (/).
    3. A partir da lista Transformação , selecione uma transformação.
      Nota: Para exibir as transformações que estão instaladas, mas não ativadas, clique em Mostrar todas as transformações. Uma transformação deve ser ligada a um recurso para aparecer nesta lista.
  3. Na seção Protocolo, especifique o protocolo de modelagem, que também é chamado de design contract management protocol (DCMP). O valor selecionado determina se a origem e o destino da transformação devem ser sincronizados.
    • Se o modelo de origem for o artefato de engenharia primária, selecione Conceitual. Quaisquer alterações no modelo de origem são propagadas para o modelo de destino.
    • Se o modelo de destino for o artefato de engenharia primária, clique em Combinado. A transformação converte os artefatos de origem para representações visuais que estão conectadas diretamente ao artefato de destino. Selecione essa opção para trabalhar no domínio de destino em vez de com o modelo de origem ou para reter os artefatos para análise. A saída da transformação torna-se o artefato de engenharia primário.
    • Se a arquitetura que os artefatos de origem representam evoluir independentemente do destino, selecione Reconciliada. Selecionar essa opção possibilita a transformação reversa, que você pode utilizar para comprara a origem e o destino e reconciliar alterações. Você também pode selecionar essa opção se diferentes equipes implementarem, desenvolverem ou mantiverem a arquitetura.
      Nota: Ao selecionar essa opção, propriedades adicionais se tornam disponíveis na seção "Transformação reversa" da páginaPrincipal. Para algumas transformações, páginas adicionais se tornam disponíveis noeditor de configuração de transformação. Para obter informações sobre como configurar a transformação reversa, consulte o link relacionado a seguir.
  4. Clique em Avançar.
  5. Especifique os elementos de origem e destino para a transformação. Para obter uma lista de elementos de origem e destino válidos, consulte o tópico de conceito relacionado para essa transformação. Na página Origem e Destino, complete as seguintes etapas:
    1. No painel Origem selecionada, selecione o elemento de origem para a transformação ser realizada.
    2. No painel Destino selecionado, selecione o destino da saída da transformação. Para criar um novo destino para a saída, clique em Criar contêiner de destino.
  6. Clique em Avançar.
  7. Opcional: Especifique as opções de sobrescrita para a saída da transformação. Você também pode especificar se a transformação excluirá arquivos obsoletos, o que pode ocorrer como resultado da renomeação de classes no modelo UML de origem. Na página Propriedades de UML para C++, em Sobrescrever arquivos existentes, execute uma das seguintes etapas:
    • Para receber um aviso antes que a transformação sobrescreva um arquivo, clique em Perguntar.
    • Para sobrescrever arquivos automaticamente, clique em Sempre.
    • Para nunca sobrescrever arquivos, clique em Nunca.
    • Para excluir a saída da transformação obsoleta, selecione a caixa de opção Excluir Arquivos Obsoletos.
      Nota: Se você selecionar essa caixa de opção, também deverá selecionar a opção Criar Relacionamentos de Rastreio na página Principal do editor de configuração de transformação.
    Quando você reexecuta a transformação UML-para-C++, a transformação exclui arquivos que não contêm conteúdo de linguagem C++.
  8. Opcional: Especifique como a transformação gera operações padrão. Na página Propriedades de UML para C++, em Gerar Operações, execute uma das seguintes etapas:
    • Para gerar construtores, selecione a caixa de opção Construtor.
    • Para gerar construtores de cópia, selecione a caixa de opção Construtor de Cópia.
    • Para gerar operadores de designação, selecione a caixa de opção Designação.
    • Para gerar destrutores, selecione a caixa de opção Destrutor.
    • Para gerar destrutores virtuais nas classes de destino, selecione a caixa de opção Destrutor Virtual.
    • Para gerar métodos getter e setter para os atributos das classes, estruturas ou uniões geradas, selecione a caixa de opção Getters e Setters.
    • Para gerar métodos getter e setter seqüenciais, selecione a caixa de opção Seqüencial.
    • Para gerar métodos getter e setter que transmitem parâmetros e retornam valores utilizando referências, selecione a caixa de opção Por Referência.
  9. Opcional: Especifique as preferências para a geração de saída da transformação. Na página Propriedades de UML para C++, em Propriedades de geração de código, execute uma das seguintes etapas:
    • Para especificar que a transformação gere arquivos de cabeçalho e arquivos de origem em pastas diferentes no projeto de destino, selecione a caixa de opção Criar pastas separadas para arquivos de cabeçalho e de origem e especifique os nomes das pastas nos campos Pasta para arquivos de cabeçalho e Pasta para arquivos de origem. Se você especificar pastas que não existam no projeto de destino, a transformação criará essas pastas na próxima vez em que a transformação for executada.
      Nota: Se você selecionar a caixa de opção Criar pastas separadas para arquivos de cabeçalho e de origem, a transformação suprimirá as informações de caminho nas diretivas de inclusão geradas.
    • Para gerar nomes de arquivos em minúsculas, selecione a caixa de opção Gerar nomes de arquivos em minúsculas para arquivos de cabeçalho e de origem.

    Se você selecionar a caixa de opção Criar pastas separadas para arquivos de cabeçalho e de origem, na pasta do arquivo de origem especificada, a transformação gerará os arquivos na mesma hierarquia que o modelo UML de origem. A transformação não preserva a hierarquia do modelo de origem para arquivos de cabeçalho. Por exemplo, suponha que um modelo UML contenha um pacote chamado Package1, que contenha uma classe chamada Class1. Se você especificar HeaderFolder e SourceFolder como os nomes de pastas para os arquivos de cabeçalho e de origem gerados, a transformação gerará um arquivo chamado Class1.h na estrutura de pasta HeaderFolder do projeto de destino e um arquivo chamado Class1.cpp na estrutura de pasta SourceFolder/Package1 do projeto de destino.

  10. Opcional: Especifique como a transformação gera diretivas de inclusão. Por padrão, as diretivas de inclusão geradas especificam o caminho relativo do arquivo importado.

    Na página Propriedades de UML para C++, em Inclusão Interna, selecione uma opção na tabela a seguir. Se a classe importada fizer parte da origem de transformação e não tiver o estereótipo «cpp_internal_inclusion» aplicado a ela, a transformação gerará diretivas de inclusão utilizando o valor que você especificar.

    Em Inclusão Externa, selecione uma opção na tabela a seguir. Se a classe importada não fizer parte da origem de transformação e não tiver o estereótipo «cpp_external_inclusion» aplicado a ela, a transformação gerará diretivas de inclusão utilizando o valor que você especificar.

    Opção Descrição
    Nenhuma Essa opção suprime a geração de diretivas de inclusão.
    Suprima nomes de caminho para incluir diretivas Esse opção suprime o nome do caminho completo de arquivos de cabeçalho no código gerado. O nome do caminho especificado na opção include do makefile está implícito na diretiva de inclusão.

    Por exemplo, se o nome do caminho completo do arquivo de cabeçalho for Package1/header1.h e você clicar nessa opção, a diretiva de inclusão gerada será #include "header1.h".

    Gere diretivas de inclusão que contenham o nome de caminho relativo para o arquivo de inclusão Essa opção gera diretivas de inclusão que especificam o caminho relativo do arquivo importado.
    Gere uma diretiva de inclusão que contenha o seguinte nome de arquivo Para essa opção, especifique um caminho relativo ou absoluto de um nome de arquivo a ser importado.

    Por exemplo, se você especficar "..\includefile.h" nesse campo, a diretiva de inclusão gerada será #include "..\includefile.h".

    Gere diretivas de inclusão que sejam relativas a essa pasta Essa opção gera diretivas de inclusão que especificam o caminho da classe importada relativa à pasta especificada. A pasta que você especifica deve existir no espaço de trabalho atual.
  11. Opcional: Para substituir a transformação JET padrão que gera o código C++, no campo Utilizar a seguinte transformação JET para gerar código C++, especifique o identificador da transformação JET de substituição.

    Por exemplo, você poderia substituir a transformação JET padrão para customizar os comentários no código. O identificador da transformação JET segue geralmente um esquema de nomenclatura de domínio invertido, como neste exemplo: my.company.my.jet.project. Para obter mais informações sobre essa funcionalidade, consulte o tópico de conceito relacionado para essa transformação.

  12. Clique em Avançar.
  13. Opcional: Se a transformação configurada suporta mapeamento, é possível especificar nomes alternativos para os artefatos que a transformação gera criando um modelo de mapeamento. Para utilizar um modelo de mapeamento novo ou existente, conclua as seguintes etapas:
    1. Na página Mapeamento, selecione a caixa de opção Ativar a funcionalidade de mapeamento para essa configuração.
    2. No campo Nome do arquivo de modelo de mapeamento, especifique o nome de um modelo de mapeamento novo ou existente.
  14. Clique em Concluir. O editor de configuração de transformação é aberto, e o conteúdo da configuração é exibido.
  15. Opcional: Para gerar informações sobre depuração, na página Principal, selecione a caixa de opção Gerar um log de depuração. Na próxima vez em que você executar a transformação, o arquivo de log será gerado como um arquivo XML na pasta em que você especificar nas preferências de transformações. Se você não especificar um local para os arquivos de log, a transformação gera o arquivo de log na pasta .metadata em sua área de trabalho.
    Dica: Para configurar as preferências para as transformações, clique em Janela > Preferências; em seguida, expanda Modelagem e clique em Transformações.

    O arquivo de log fornece informações sobre os elementos de origem, os elementos de destino e as regras que a transformação aplica para transformar os elementos de origem. Se a transformação transformar vários elementos, poderá ocorrer uma redução no desempenho enquanto a transformação gerar o arquivo de log; portanto, você só deverá gerar um arquivo de log para propósitos de depuração.

  16. Opcional: Para evitar que novas caixas de diálogo sejam abertas enquanto uma transformação é executada, na página Principal, selecione a caixa de opção Executar a transformação de encaminhamento silenciosamente.

    A execução de uma transformação no modo silencioso suprime todas as caixas de diálogo geradas pela transformação. A transformação aplica regras e comportamento padrão, o que pode gerar uma saída de transformação inesperada ou incorreta. Você só deve executar uma transformação no modo silencioso para validar a execução da transformação, em vez de validar a saída da transformação. Por exemplo, você poderia executar uma transformação no modo silencioso como parte de um conjunto de tarefas automatizadas ou testes automatizados.

    A configuração da transformação para executar em modo silencioso substitui as opções de substituição de arquivo que você especifica, e então sobrescreve os arquivos se necessário.

    Se a transformação C++-para-UML estiver disponível, você poderá selecionar a caixa de opção Executar a transformação reversa silenciosamente. Especificar que a transformação C++-para-UML, ou reversa, seja executada no modo silencioso suprime o editor de mesclagem. Se ocorrer um conflito durante a fusão, a transformação pára e você deve executar novamente a transformação com as opções de silenciosa desmarcadas.

  17. Para criar um relacionamento rastreável entre a origem e o destino de transformação, na página Principal, selecione a caixa de opção Criar relacionamentos de rastreio. Essa caixa de opção será ativada somente se você selecionar os protocolos Modelos Concretos de Valores Iniciais de Modelos Conceituais e Desenvolvimento de Unidade de Modelos Conceituais ou Modelagem Reconciliada.

    Você pode utilizar os relacionamentos de rastreio e as ferramentas de desenvolvimento visual para entender os relacionamentos entre os elementos de modelo de origem e a saída da transformação. Essa função é útil em projetos grandes que podem conter vários modelos e configurações de transformação. A transformação não altera o modelo de origem.

  18. Opcional: Para exibir os erros que ocorreram quando a transformação foi executada, na página Principal, selecione a caixa de opção Abrir a caixa de diálogo Relatório quando a transformação estiver concluída. A seleção dessa caixa de opção exibe apenas os erros gerados. As mesmas informações também são gravadas no log de erros, que você pode visualizar clicando em Janela > Mostrar Visualização > Log de Erros.

    Para exibir os avisos que ocorreram quando a transformação foi executada, selecione a caixa de opção Mostrar avisos na caixa de diálogo Relatório.

  19. Opcional: Especifique a documentação sobre a configuração de transformação. Esse campo é útil para comunicar informações sobre uma configuração compartilhada por vários usuários. Na página Principal, no campo Documentação , especifique as informações adicionais sobre a configuração da transformação.
  20. Clique em Arquivo > Salvar.
Resultados
As opções serão aplicadas na próxima vez em que você executar a transformação.

Feedback