Um Processo Baseado em MDA
para a Especialização de
Mecanismos de Persistência
Fabio Seixas Marques
[email protected]
Seminário LES – 7 de abril de 2006
www.les.inf.puc-rio.br
www.teccomm.les.inf.puc-rio.br
Agenda
• Motivação;
• Objetivo;
• Tecnologias;
• Trabalhos Relacionados;
• Processo;
• Ferramenta de Apoio;
• Casos de Estudo;
• Trabalhos Futuros;
• Bibliografia.
Laboratório de Engenharia de Software – PUC-Rio
Motivação
• Constantes mudanças nos requisitos funcionais e não-funcionais do
domínio das aplicações, resultam em possíveis mudanças nos
sistemas;
• Sistemas refeitos ou parcialmente refeitos, ao invés de adaptados;
• Grande parte do trabalho manual também necessitará ser refeito;
• O MDA (Model Driven Architecture) foi criado com o intuito de
resolver esse tipo de problema. Os sistemas são desenvolvidos de
maneira a esperar possíveis mudanças;
Laboratório de Engenharia de Software – PUC-Rio
Objetivo
• Criação de um processo cujo objetivo será ajudar na adaptação dos
sistemas a essas possíveis mudanças;
• Automatizar algumas etapas do desenvolvimento, normalmente
feitas de forma manual;
• As etapas do processo proposto estão diretamente ligadas, as
etapas abordadas pelo MDA;
• O processo foi desenvolvido para mapear mecanismos de
persistência, ficando as demais camadas para trabalhos futuros.
Laboratório de Engenharia de Software – PUC-Rio
OMG Model Driven Architecture (MDA)
•Criação de um modelo
independentemente de
plataforma (PIM);
•“Configuração” do modelo PIM
através de marcações;
•Transformação do modelo PIM
em um modelo específico para
uma plataforma (PSM).
PIM – Platform Independent Model
PSM – Platform Specifc Model
Laboratório de Engenharia de Software – PUC-Rio
Marcações
RDL (Reuse Description Language)
• A linguagem RDL foi criada para mapear os diversos casos
possíveis à instanciação de um Framework;
• Ela funciona na forma de scripts contendo regras para a
manipulação de modelos orientados a objetos (criação de classes,
atributos, métodos, etc…);
• Através de uma máquina virtual RDL é possível gerar o resultado
desses scripts no formato de tags XMI.
Laboratório de Engenharia de Software – PUC-Rio
Por que utilizar RDL?
• É uma linguagem clara e de fácil entendimento;
• As transformações utilizadas no processo são bem definidas;
• Elas ocorrem a nível de modelos (alteração de classes, atributos,
métodos, etc…);
• A forma de obter e alterar essas informações nos modelos é feita
através de tags XMI;
• Utilizando uma máquina virtual RDL é possível transformar as
regras da linguagem RDL em tags XMI.
Laboratório de Engenharia de Software – PUC-Rio
Mecanismos de Persistência
• O processo proposto tem como objetivo adaptar mecanismos de
persistência;
• Podendo ser os mesmos, Frameworks de Persistência. (Hibernate,
Castor, entre outros);
• E Patterns. (DAO, Facade, entre outros);
Laboratório de Engenharia de Software – PUC-Rio
Base de Conhecimento
• A base de conhecimento é um repositório que possui algumas
informações necessárias para o mapeamento das transformações
entre os modelos.
• Ela é composta por:
– Camadas: Divisões lógicas dentro do modelo. As camadas são as
responsáveis por mapear as configurações do modelo.
– Tags: Identificam as tecnologias disponíveis para cada Camada.
– Arquivos RDL: Contêm as regras de transformações de cada Tag, ou
seja, o que será adaptado ao modelo quando uma Tag for escolhida.
Laboratório de Engenharia de Software – PUC-Rio
Base de Conhecimento
Persistência,
Interface,
Negócio, etc...
Hibernate.rdl,
DAO.rdl, JSP.rdl,
etc...
Laboratório de Engenharia de Software – PUC-Rio
Framework
Hibernate, Pattern
DAO, JSP, etc...
Trabalhos Relacionados
• Odyssey-MDA: Ferramenta para execução de transformações
sobre modelos UML;
• UML Model Transformation Tool (UMT): Ferramenta que
oferece suporte a transformações de modelos e geração de código,
baseados em modelos UML no formato XMI.
Laboratório de Engenharia de Software – PUC-Rio
Odyssey x UMT x Processo Proposto
• Todas efetuam transformações no modelo PIM, com o intuito de
gerar modelos PSM;
• Todas trabalham com arquivos no formato XMI, sendo que a UMT
trabalha internamente com o formato XMI Light;
• A ferramenta Odyssey armazena as transformações no formato
XML, a UMT utiliza o formato XSLT, e o Processo Proposto utiliza o
formato RDL.
• Apesar do XML ser o formato mais conhecido, a linguagem RDL é
muito mais fácil de se entender e trabalhar, pois suas regras estão
em linguagem natural;
• A ferramenta Odyssey e a UMT utilizam marcações de baixo nível,
enquanto o Processo Proposto utiliza marcações de alto nível.
Laboratório de Engenharia de Software – PUC-Rio
Passos do Processo
Cria o Modelo PIM
Laboratório de Engenharia de Software – PUC-Rio
Exemplo de um Modelo PIM
Laboratório de Engenharia de Software – PUC-Rio
Passos do Processo
Cria o Modelo PIM
Adiciona as Marcações
Laboratório de Engenharia de Software – PUC-Rio
Modelo PIM Configurado
Classes Persistentes
Laboratório de Engenharia de Software – PUC-Rio
Passos do Processo
Cria o Modelo PIM
Adiciona as Marcações
Exporta o
Modelo PIM
Laboratório de Engenharia de Software – PUC-Rio
Modelo PIM Exportado Como um Arquivo XMI
<UML:Class xmi.id = 'I1bc2e06m1060e5e7e0cmm7f51' name = 'Comprador' visibility = 'public‘
isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false‘ isActive = 'false'>
<UML:ModelElement.stereotype>
<UML:Stereotype xmi.idref = 'I1bc2e06m1060e5e7e0cmm7dbd'/>
</UML:ModelElement.stereotype>
<UML:Classifier.feature>
<UML:Attribute xmi.id = 'I1bc2e06m1060e5e7e0cmm7f04' name = 'nome' visibility = 'private‘
isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'>
<UML:StructuralFeature.type>
<UML:Class xmi.idref = 'I1bc2e06m1060e5e7e0cmm7f16'/>
</UML:StructuralFeature.type>
</UML:Attribute>
<UML:Attribute xmi.id = 'I1bc2e06m1060e5e7e0cmm7e77' name = 'email' visibility = 'private‘
isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'>
<UML:StructuralFeature.type>
<UML:Class xmi.idref = 'I1bc2e06m1060e5e7e0cmm7f16'/>
</UML:StructuralFeature.type>
</UML:Attribute>
</UML:Classifier.feature>
</UML:Class>
<UML:Stereotype xmi.id = 'I1bc2e06m1060e5e7e0cmm7dbd' name = 'Persistencia‘ visibility = 'public'
isSpecification = 'false' isRoot = 'false' isLeaf = 'false‘ isAbstract = 'false'>
<UML:Stereotype.baseClass>Class</UML:Stereotype.baseClass>
</UML:Stereotype>
Laboratório de Engenharia de Software – PUC-Rio
Passos do Processo
Cria o Modelo PIM
Adiciona as Marcações
Exporta o
Modelo PIM
Importa o
Modelo PIM
Ferramenta
Laboratório de Engenharia de Software – PUC-Rio
Ferramenta Importa o Modelo PIM
• A ferramenta importa o modelo PIM em forma de um arquivo XMI;
• Ela irá armazenar algumas informações do mesmo, como:
–
–
–
–
–
–
Esteriótipos;
Nome;
Atributos;
Métodos;
Relacionamentos;
Heranças.
Laboratório de Engenharia de Software – PUC-Rio
Passos do Processo
Cria o Modelo PIM
Adiciona as Marcações
Exporta o
Modelo PIM
Perguntas
Respostas
Importa o
Modelo PIM
Transformação
Ferramenta
Laboratório de Engenharia de Software – PUC-Rio
Transformação
• É neste ponto que a ferramenta começa a interação com o
desenvolvedor;
• O mesmo deve informar qual o Framework de Persistência ele
deseja utilizar;
• Quais Padrões devem ser adicionados;
• Caso necessário, ele deverá informar os nomes de novas classes;
• Entre outras perguntas que podem variar de acordo com as
escolhas feitas pelo mesmo.
Laboratório de Engenharia de Software – PUC-Rio
Exemplo de um Arquivo RDL
COOBOOK FachadaPersistencia
?: Significa que a informação será
RECIPE main
passada durante
a execução do
classeFachadaPersistencia = NEW_CLASS
(FachadaPersistencia);
arquivo. Caso a ferramenta não
NEW_METHOD (classeFachadaPersistencia,
abrirConexaoBanco);
passe essa informação
para a
NEW_METHOD (classeFachadaPersistencia,
fecharConexaoBanco);
máquina virtual
RDL, a mesma irá
pedir para que o desenvolvedor
informe.
LOOP
nomeClassePersistente = ?;
NEW_METHOD (classeFachadaPersistencia,
nomeClassePersistente);
NEW_METHOD (classeFachadaPersistencia,
NEW_METHOD (classeFachadaPersistencia,
NEW_METHOD (classeFachadaPersistencia,
END_LOOP;
END_RECIPE;
END_COOKBOOK
Laboratório de Engenharia de Software – PUC-Rio
“selecionar” +
“inserir” + nomeClassePersistente);
“alterar” + nomeClassePersistente);
“deletar” + nomeClassePersistente);
Desenvolvedor
Informa nomes
para novas classes
Informa os dados
necessários
Arquivo(s) RDL,
Arquivo XMI
Ferramenta
Arquivo XMI
Atualizado
Camada(s)
Tag(s)
Tag(s)
Arquivo(s) RDL
Base de
Conhecimento
Laboratório de Engenharia de Software – PUC-Rio
Máquina
Virtual RDL
Passos do Processo
Cria o Modelo PIM
Adiciona as Marcações
Exporta o
Modelo PIM
Perguntas
Respostas
Importa o
Modelo PIM
Exporta o
Modelo PSM
Transformação
Ferramenta
Laboratório de Engenharia de Software – PUC-Rio
Modelo PSM Exportado Como um Arquivo XMI
• Arquivo XMI com novas classes, atributos e outras características
relacionadas as configurações feitas pelo desenvolvedor;
• Esse modelo não contêm mais as configurações antes adicionadas
pelo desenvolvedor.
Laboratório de Engenharia de Software – PUC-Rio
Passos do Processo
Modelo PSM
Gerado!
Cria o Modelo PIM
Adiciona as Marcações
Exporta o
Modelo PIM
Perguntas
Respostas
Importa o
Modelo PIM
Exporta o
Modelo PSM
Transformação
Ferramenta
Laboratório de Engenharia de Software – PUC-Rio
Importa o
Modelo PSM
PSM Gerado
Classe gerada pelo
arquivo RDL
correspondente a
Fachada de
Persistência
Classes geradas pelo
arquivo RDL
correspondente ao
Framework Hibernate
Laboratório de Engenharia de Software – PUC-Rio
Caso de Estudo 1
• Sistema de Sincronização dos Dados Acadêmicos do SAU e
do AulaNet: Sincroniza a base de dados do AulaNet com os dados
acadêmicos da base de dados do SAU (Sistema de Administração
Universitária).
• O que foi feito? O sistema foi desenvolvimento utilizando o
processo proposto.
• Resultado: Comparação do modelo PSM gerado pelo processo,
com o modelo final do sistema.
Laboratório de Engenharia de Software – PUC-Rio
Caso de Estudo 2
• Leilão Virtual: Site de leilão virtual, contendo venda e compra de
produtos, sistema de lances automáticos, controle de usuários.
• O que foi feito? Foi adaptado ao sistema um Mecanismo de
Persistência, nesse caso um Framework de Persistência.
• Resultado: Mostra os passos necessários para se adaptar, através
do processo proposto, um mecanismo de persistência em um
sistema existente.
Laboratório de Engenharia de Software – PUC-Rio
Trabalhos Futuros
• Ampliação do foco do processo para outras camadas (interface,
negócio, entre outras);
• Adição de uma nova etapa no processo, responsável pela extração
de modelos PIM de um modelo já existente;
• Criação de um módulo gráfico para a criação e edição das regras de
transformações.
Laboratório de Engenharia de Software – PUC-Rio
Dúvidas, sugestões e críticas
?
Laboratório de Engenharia de Software – PUC-Rio
Download

Media:fMarques - (LES) da PUC-Rio