Transformação de UML 2.0 em Java


A transformação de UML para Java transforma as especificações UML 2.0 em classes Java. É possível utilizar a transformação para iniciar um projeto Java a partir das especificações de UML 2.0. Também é possível aplicar a transformação depois da inicialização para mesclar os modelos UML atualizados com o código Java existente.
 

1. Introdução

Antes de utilizar a transformação de UML 2.0 em Java, você deve estar familiarizado com a criação e edição dos modelos de UML 2.0 e projetos Java.

O seguinte procedimento mostra a utilização mais simples da transformação Java.

Para transformar um modelo UML em Java:
1. Alterne para a perspectiva Modelagem.
2. Na visualização Explorador de Modelos, clique com o botão direito do mouse em uma classe UML (por exemplo, Class1).
3. Clique em Transformar > Executar Transformação > UML2 em Java.
4. O diálogo Executar Transformação é aberto. Clique no botão Criar Conteiner de Destino.
5. O diálogo Novo Projeto Java é aberto. Digite simples no campo Nome do Projeto e clique em Concluir.
6. No diálogo Executar Transformação, clique em Concluir.

O novo projeto Java contém um pacote padrão que contém a nova classe Java: Class1.

A transformação também pode executar várias outras funções, mais complexas, como substituir nomes sem modificar o modelo de origem, substituindo o objeto UML com uma visualização, mesclando alterações no modelo UML e na origem Java e validando o modelo UML para potenciais problemas de transformação.
 

2. Detalhes da Transformação

2.1 Origem da transformação

É possível selecionar modelos, pacotes, classes não aninhadas e interfaces não aninhadas de UML 2.0 como a origem para a transformação. A transformação continua se você selecionar outros itens como a origem, mas não transformar esses itens. Quando a transformação transforma um modelo, pacote, classe ou interface, também transforma todos os itens que esses objetos contêm. Por exemplo, quando a transformação transforma uma classe, também transforma todas as operações e propriedades dessa classe.
 

2.2 Destino da transformação

É possível selecionar qualquer projeto Java que tenha, pelo menos, uma pasta de origem como um destino de transformação.
 

2.3 Interpretação dos Objetos de Origem UML

UML Java 
Pacote Pacote Java com o mesmo nome*
Pacote estereotipado como <<perspectiva>> Ignorado
Pacote com a palavra-chave <<Análise>> ou <<análise>> Ignorado
Classe Classe Java com o mesmo nome* e visibilidade
(Classe) isLeaf  propriedade A classe Java é "final" se for true
(Classe) isAbstract propriedade A classe Java é "abstract" se for true
(Classe) Generalização A classe Java "estende" a superclasse especificada
Implementação A classe Java "implementa" a interface especificada
Interface Interface Java com o mesmo nome* e visibilidade 
(Interface) Generalização A interface Java "estende" a interface especificada
Operação Método Java com o mesmo nome* e visibilidade
(Operação) isStatic propriedade O método Java é "static" se for true
(Operação) propriedade isAbstract O método Java é "abstract" se for true
(Operação) propriedade isLeaf O método Java é "final" se for true
(Operação) como o mesmo nome de sua classe Construtor Java
(Operação) estereotipada <<criar>> Construtor Java
Parâmetro Parâmetro Java com o mesmo nome*
(Parâmetro) Digitar propriedade O parâmetro Java tem o tipo especificado que pode ser outra classe ou um tipo primitivo
(Parâmetro) Propriedade de direção O método Java tem o tipo "retornar <param>" se configurado para "retornar"; caso contrário, inclui o "tipo de <param> <nome de param>" para a assinatura do método
(Parâmetro) Propriedade de multiplicidade  Consulte a seguinte tabela que contém informações sobre multiplicidade
Propriedade  O campo Java com o mesmo nome* e visibilidade
(Propriedade) propriedade isStatic O campo Java é "static" se for true
(Propriedade) propriedade isLeaf O campo Java é "final" se for true
(Propriedade) Digitar propriedade O campo Java tem o tipo especificado que pode ser outra classe ou um tipo primitivo
(Propriedade) Propriedade de multiplicidade  Consulte a seguinte tabela que contém informações sobre multiplicidade

*  Alguns caracteres não são válidos nos identificadores Java (como um espaço). A transformação Java substitui automaticamente os caracteres inválidos com um underscore (_) para criar um identificador válido. Esta substituição pode causar conflitos de nome que evitam que a transformação gere classes e interfaces duplicadas. É possível utilizar o recurso de validação para detectar esses problemas. Para evitar esses problemas de substituição, renomeie os elementos ou utilize o recurso de mapeamento para especificar um nome alternativo que não modifica o modelo de origem.

Tipos java para propriedades e parâmetros
Multiplicidade UML Tipo Java Gerado
0..1 Atributo, ponteiro ou referência (por exemplo, String)
1 Atributo (por exemplo, String)
N (N > 1)  Matriz (por exemplo, String[])
1..*, * ou x..y  Coleta, consulte a seguinte tabela

Coletas Java para 1..*, * ou multiplicidades x..y
Propriedade isOrdered Propriedade isUnique Tipo Java Gerado
Verdadeiro Verdadeiro java.util.SortedSet
Verdadeiro Falso java.util.List
Falso Verdadeiro java.util.Set
Falso Falso java.util.Collection

3. Suporte para Tecnologias de Transformação Comuns

3.1 Integração com o Suporte de Equipe

A transformação Java fornece integração com o Suporte de Equipe, permitindo registros automáticos de saída e inclusão de novos arquivos nos sistemas de controle de origem.
 

3.2 Mapeamento de transformação

É possível especificar nomes alternativos para os elementos de destino da transformação se você não deseja modificar um modelo de origem para uma transformação. Você também pode desejar especificar nomes alternativos se desejar incluir detalhes específicos para Java (como restrições de nomenclatura) nos modelos independentes da plataforma ou se a organização lógica do modelo de origem não estiver apropriada como o pacote de destino. Para suportar os nomes de destino alternativo sem modificar o modelo de origem, utilize o recurso de mapeamento de transformação.
Para utilizar o recurso de mapeamento de transformação:
1. Alterne para a perspectiva Modelagem.
2. Na visualização Explorador de Modelos, clique em um modelo UML.
3. Na barra de menu, clique em Modelagem > Transformações > Configurar Transformações.
4. Crie um novo UML2 para a Transformação Java (por exemplo, nomeie a transformação Criar mapeamento.)
5. Na página Mapeamento, clique em Criar somente modelo de mapeamento (sem transformação).
6. Especifique um nome de arquivo e clique em Executar.

Ao clicar em Criar Modelo de Mapeamento, a transformação Java cria um modelo de mapeamento que é  um modelo separado que tem um artefato para cada elemento transformável. O artefato se refere a tem o mesmo nome do elemento transformável original. Para especificar um nome alternativo para o elemento original, digite um novo nome na propriedade do nome do arquivo do artefato. Se você não alterar a propriedade do nome do arquivo do artefato, a transformação gera o elemento com o nome padrão do artefato. Se você especificar nomes alternativos para os pacotes, os nomes alternativos afetam todos os classificadores nesse pacote (a menos que o classificador especifique um nome completo). A seguinte tabela lista exemplos de nomes alternativos.
 
Origem UML Nome do arquivo do artefato de mapeamento Java Gerado
"Package1" ""  "Package1"
"Package2" "com.ibm.test" "com.ibm.test"
"Class1" em Package1  "" Package1.Class1
"Interface1" em Package2 "ITestable" com.ibm.test.ITestable
"Class2" em Package2 "com.ibm.test.Testable" com.ibm.test.Testable

Para utilizar um modelo de mapeamento, complete as seguintes etapas:
1. Alterne para a perspectiva Modelagem.
2. Na visualização Explorador de Modelos, clique em um modelo UML.
3. Na barra de menu, clique em Modelagem > Transformações > Configurar Transformações.
4. Crie uma nova Transformação UML2 para Java (por exemplo, nomeie a transformação Utilizar mapeamento.)
5. Na página Mapeamento, clique em Utilizar Modelo de Mapeamento.
6. Clique no modelo de mapeamento criado anteriormente e clique em Executar.
Quando a transformação é executada, utiliza nomes alternativos especificados no modelo de mapeamento.
 

3.3 Suporte de Visualização No Local

Se não desejar manter o modelo UML original, é posível utilizar os recursos de visualização da transformação para excluir os elementos UML e substituí-los com atalhos para elementos Java gerados. Para configurar a transformação para excluir os elementos de modelo UML, na janela configurar Transformações, na página Comum, clique em Substituir Elementos UML. A transformação não substitui elementos se a subsituição causar uma perda de dados. Por exemplo, se os elementos UML contêm diagramas, a transformação exclui os diagramas, então ela não substitui esses elementos.
 

3.4 Reaplicar

A transformação Java mescla alterações para o modelo de origem e o código de origem modificado utilizando tags "@generated" em javadocs gerados. A transformação possui elementos Java que são marcados com "@generated" e os substitui durante uma retransformação ou os exclui se forem removidos do modelo de origem. É possível reclamar a "propriedade" dos elementos, removendo a tag "@generated" que evita que a transformação sobrescreva ou excua os elementos.
 

3.5 Validação

O plug-in de transformação Java fornece um perfil UML que você pode utilizar para validar modelos para potenciais problemas de transformação. Por exemplo, herança múltipla, generalizações circulares e conflitos de nomenclatura causam erros de compilação no código Java gerado. Para consultar uma lista de potenciais problemas que podem ocorrer no código gerado, aplique o perfil no modelo de origem e execute o recurso de validação.
 

3.6 Rastreabilidade

A transformação Java pode criar relacionamentos derivados a partir de elementos Java gerados para sua origem UML. Para criar relacionamentos derivados, na janela Configurar Transformações, na página Comum, clique em Criar origem para relacionamentos de destino. Quando o sistema visualiza o elemento Java gerado, o elemento tem um relacionamento derivado para seu elemento de origem.
 
Termos de uso | Feedback
(C) Copyright IBM Corporation 2004. Todos os Direitos Reservados.