1068 X Salão de Iniciação Científica PUCRS Transformação de modelos em processos de desenvolvimento de software Vinycio de Correa Lunelli 1, Profa. Dra. Ana Paula Terra Bacelo 1 1 Faculdade de Informática, PUCRS Resumo O aumento da complexidade dos sistemas faz a busca por alternativas de redução de esforços nos desenvolvimentos se tornem cada vez mais importantes. Uma dessas iniciativas é a Arquitetura Orientada a Modelos (AOM) que permite a modelagem e a aplicação de transformações sobre modelos, visando à obtenção do software de forma automatizada. A AOM tem como princípio a transformação de modelos, inicialmente gerados de forma independente de tecnologia (e.g. modelos de classes UML) em modelos para uma tecnologia específica (e.g. modelo de componentes em EJB). Este projeto visa investigar as diferentes possibilidades de transformação de modelos para obter um conjunto mais abrangente e completo.
1069 Introdução Novas tecnologias surgem a todo o momento e as empresas, cada vez mais, necessitam de sistemas complexos para melhor conduzir e controlar seus negócios. Essa busca pela tecnologia e a sua adoção tem um custo associado e os investimentos podem ser grandes. Ao longo dos anos, o desenvolvimento de sistemas passou por diversas melhorias com o objetivo de reduzir os custos e aumentar a produtividade dos desenvolvedores. Algumas das principais melhorias estão relacionadas ao aumento do nível de abstração necessário para projetar e implementar o software. Inicialmente, toda a codificação do software era realizada em linguagens muito próximas das linguagens de máquina, com pouca expressividade e de difícil manutenção. Com o aumento da complexidade dos sistemas desenvolvidos, essas linguagens foram se tornando insuficientes, o que resultou no surgimento de novas linguagens e paradigmas de programação com maior nível de abstração, como as linguagens orientadas a objeto (MELLOR et al., 2004). Paralelamente, linguagens de modelagem foram surgindo (e.g.: UML), e tornaram possível a construção de modelos de projeto do software em desenvolvimento. Esses modelos permitiram a elaboração de representações dos requisitos do software, que podem ser visualizadas e manipuladas em tempo de análise e projeto do sistema, possibilitando uma melhor avaliação destes requisitos antes mesmo do código ser implementado, quando possíveis mudanças envolvem menor esforço e custo (SOLEY,2000). Recentemente, surge a necessidade de mudar este paradigma no sentido de utilizar os modelos como artefatos centrais no desenvolvimento, a partir do qual o código é gerado. Estes modelos são então transformados, visando a aplicação dos conceitos providos pela plataforma tecnológica (middleware) escolhida. Este novo paradigma é conhecido como Arquitetura Orientada por Modelos, ou MDA (MELLOR et al., 2004). Neste cenário, o conceito chave para se obter os benefícios deste novo paradigma é a realização de transformações entre os modelos, o que possibilita uma maior automação no desenvolvimento e implementação do software, conseqüentemente, reduzindo esforço e custo. Atualmente, existem várias abordagens para a realização de transformações entre modelos (OLDEVIK, 2004; JOUAULT & KURTEV, 2005; KOZIKOWSKI, 2005; COMPUWARE, 2006; ECLIPSE, 2006; KENNEDY-CARTER, 2006). No entanto, a maioria dessas abordagens ainda apresenta limitações com relação à interoperabilidade com ambientes de desenvolvimento, apoio à definição e execução de diversos tipos de transformações e a
1070 possibilidade de expansão de suas capacidades. Estas limitações motivam este projeto de pesquisa. Sendo assim, o objetivo desta pesquisa é fazer uma análise da literatura sobre ferramentas de transformação de modelos e desenvolver mecanismos de transformação de modelos em algumas destas ferramentas, através de pontos de extensão destas ferramentas.
1071 Metodologia A Profa. Coordenadora deste projeto tem desenvolvido pesquisas na temática de transformação de modelos, juntamente com alunos de pós-graduação do PPGCCFACIN/PUCRS e também em cooperação com o Programa de Pós-Graduação em Engenharia de Sistemas e Computação da COPPE/UFRJ, mais especificamente com o grupo de reutilização de software coordenado pela Profa. Dra. Cláudia Werner. Esta cooperação vem sendo realizada desde 2003 através de um PROCAD entre a FACIN-PUCRS e o COPPE/sistemas UFRJ. Neste contexto, a Profa. coordenadora desenvolveu o seu programa de doutoramento onde uma ferramenta de transformação de modelos, denominada Odyssey- MDA foi desenvolvida (Maia et al., 2005). Esta pesquisa de iniciação científica envolveu os seguintes estudos: Tecnologias que empregam o conceito de transformação de modelos: o Como o conceito de transformação de modelos é uma preocupação recente, não existem muitas tecnologias que propõem isto. Algumas delas são: ATL, MIA, MTL e AndroMDA. o A forma encontrada para transmissão de dados de uma transformação é através da utilização de arquivos no padrão XMI. Este por sua vez é um padrão de arquivos utilizados principalmente em XML e UML e bastante utilizado por não ser um padrão proprietário o qual é empregado em várias ferramentas de transformação, incluindo o Odyssey-MDA. Estudo da Ferramenta Odyssey-MDA. o O Odyssey-MDA (Maia et al., 2005) é uma abordagem que fornece o suporte necessário para transformações de modelos em conformidade com os padrões sugeridos pelo framework MDA. Esta abordagem permite que transformações bidirecionais sejam executadas sobre modelos UML, importados através de arquivos no padrão XMI, além de suportar também transformações modelo-texto. O Odyssey-MDA utiliza a especificação JMI (Java Metadata Interface) (Dircze, 2002) para a manipulação dos modelos em um repositório MDR (Metadata Repository). Desenvolvimento de transformações na ferramenta Odyssey-MDA. o Uma transformação de modelos no Odyssey-MDA deve conter uma especificação declarativa em XML e um conjunto de mecanismos
1072 responsáveis pela execução da transformação. A especificação declarativa é responsável por definir os mapeamentos entre os elementos dos modelos de entrada e saída. Tais mapeamentos são definidos através de critérios de seleção dos elementos a serem transformados do modelo-fonte para o modelo-alvo e a seleção de um mecanismo adequado para executar a transformação. Cada mapeamento especifica o tipo de conversão desejado, baseado nos elementos do metamodelo da UML. Assim, são possíveis mapeamentos entre os seguintes elementos: Classifier: classes e interfaces; Feature: atributos e métodos. Mapeamentos de feature estão sempre inseridos no contexto de mapeamentos de classifier. Figura 1- Especificação declarativa no Odyssey-MDA Fonte: (Maia, 2006). A Figura 1 mostra, simplificadamente, cinco mapeamentos: o map1: mapeamento do tipo classifier-map que especifica que uma classe do PIM, estereotipada com Entity, gera um classe do PSM estereotipada como EJBEntityBean;
1073 o map2 : mapeamento do tipo feature-map, inserido no contexto de map1, que especifica que os atributos da classe do PIM devem ser replicados na classe do PSM; o map3: mapeamento do tio feature-map, também dentro do contexto de map1, que especifica que a classe do PSM deve conter métodos getter/setter para os atributos da classe do PIM; o map4: mapeamento do tipo classifier-feature-map, ainda no contexto de map1, que indica que a classe do PSM deve conter o método ejbcreate; o map5: mapeamento do tipo classifier-map que indica que uma interface, estereotipada com EJBHomeInterface, deve ser criada no PSM a partir da classe do PIM. A ferramenta até então faz somente transformação de modelos de classes para modelos de classes na plataforma EJB, como mostra a Figura 1. Para avaliarmos o potencial de extensão da ferramenta com o intuito de atender novas transformações, foi proposta um novo mecanismo dentro do Odyssey-MDA capaz de transformar modelos de classes em tabelas e relacionamentos de um banco de dados. o Exemplo da transformação sugerida. Nome do modelo importado Nome do modelo que sera criado Modelo de classe importado Define a ordem da transformação Nome que consta no XML de transformação Figura 2 Mostra o modelo de classes importado no lado esquerdo da imagem e abaixo o tipo de transformação
1074 o Ao final da transformação caso não seja encontrado nenhum atributo com estereótipo Primary Key (PK) é necessário defini-las como mostra a figura 2.1 Figura 2.1 Ao selecionar o atributo da classe é possível definir o tipo de atributo, estereotipo que esteja definido no perfil UML, e gerar o SQL.
1075 o Script SQL gerado a partir da transformação. Figura 2.2 SQL criado a partir da transformação anterior o Para fazer a transformação foi necessário um modelo de arquivo, mostrado na figura 2.3 Figura 2.3 Modelo de arquivo texto para a geração do script SQL. o Mapeamentos da transformação.
1076 Figura 2.4 Mapeamento de um diagrama de classe para tabelas e relacionamentos de um banco de dados. A Figura 2.4 mostra, simplificadamente, 4 mapeamentos: o map 1: mapeamento especifica que a classe se tornará uma tabela no script SQL; o map 2 : mapeamento está inserido no contexto de map1, especifica que os atributos da classe devem se tornar colunas da classe; o map 3: possui a mesma funcionalidade que o map 2. No caso da figura 2.4 podemos ver que o nome do atributo está diferente do modelo original, isto se deve ao tipo do atributo, quando é um tipo de classe o nome é alterado o nome da coluna; o map 4: mapeamento no contexto de map 1, que identifica a coluna com o estereotipo PK e cria os Alter Tables para o script SQL; Para estes mapeamentos se tornarem um script SQL foi necessário criar algumas classes no projeto do Odyssey-MDA, são elas: o CreateTXT: Recebe o diagrama importado e gera o Script SQL o SaveTextFile: Recebe o Script SQL feito pelo método create da classe CreateTXT e o salva em arquivo. Além destas foi criada uma classe gráfica para a definição de PK nos atributos (mostrada na figura 2.1). Estágio atual da ferramenta: Desenvolvimento de um mecanismo de transformação de diagramas de seqüência para classes e métodos de um modelo de classes.
1077 o Os diagramas de seqüência são constituídos de mensagens entre objetos, cada mensagem trocada entre eles podem ser mapeadas para métodos e os objetos em classes. Queremos desenvolver um mecanismo para mapear estas informações e, a partir dele, gerar um diagrama de classes agregando esta nova implementação na ferramenta Odyssey-MDA da mesma forma que fora feito com a transformação explicada no item anterior.
1078 Resultados Através desta pesquisa observamos que a ferramenta Odyssey-MDA é extensível para a criação de novos mecanismos de transformação. Uma forma de verificar e confirmar tal potencial foi através do mapeamento objeto relacional que desenvolvemos neste programa de iniciação cientifica. Outro resultado obtido foi à experiência do bolsista adquirida a respeito de conceitos que não são normalmente tratados em disciplinas do currículo do curso de sistemas de informação como: A interpretação de arquivos padrão XMI; Criação de um perfil UML para as transformações; Criação de um XML de mapeamento. Conclusão Com o uso do padrão XMI acreditamos que é possível aumentar o poder da ferramenta Odyssey-MDA incluindo novos arquivos de mapeamento e novas transformações sem a necessidade de alterar o código evitando falhas no desenvolvimento e acelerando processos. Além da experiência de estar trabalhando em um projeto grande com diversas pessoas envolvidas e trabalhando paralelamente, utilizar recursos antes desconhecidos para mim. Tudo isso aprimorou meus conhecimentos em transformação de modelos, padrões de projetos, XMI, UML e também na linguagem de programação Java.
1079 Referências COMPUWARE, 2006, "OptimalJ - Model-driven Java development tool". In: http://www.compuware.com/products/optimalj/, accessed in 20/01/2006. Dircze, R. "JSR 40: Java Metadata Interface (JMI) Specification - version 1.0", Unisys Corporation and Sun Microsystems, Java Community Process, 2002 ECLIPSE, 2006, "UMLX: A graphical transformation language for MDA". In: http://dev.eclipse.org/viewcvs/indextech.cgi/~checkout~/gmthome/subprojects/umlx/index.html, accessed in 10/02/2006. JOUAULT, F., KURTEV, I., 2005, "Transforming Models with ATL". In: Proceedings of the Model Transformations in Practice Workshop at MoDELS 2005, Montego Bay, Jamaica, October, 2005. KOZIKOWSKI, J., 2005, "A Bird s Eye view of AndroMDA". In: http://www.andromda.org/contrib/birds-eyeview.html, accessed in 20/01/2006. KENNEDY-CARTER, 2006, "xuml - Executable UML". In: http://www.kc.com/xuml.php, accessed in 20/01/2006. MAIA, N.E.N., BACELO, A.P.T., WERNER, C.M., 2005, "Odyssey-MDA: Uma Ferramenta para Transformações de Modelos UML". In: XIX Simpósio Brasileiro de Engenharia de Software, Seção de Ferramentas, Uberlândia, MG, Brasil, Outubro 2005. MAIA, N.E.N. Odyssey-MDA: Uma Abordagem Para Transformações de Modelos. Dissertação de Mestrado, Programa de Pós-Graduação de Engenharia, UFRJ, 2006. MELLOR, S.J., SCOTT, K., UHL, A., et al. MDA Distilled Principles of Model-Driven Architecture. Indianapolis, Addison-Wesley, 2004. OLDEVIK, J., 2004, "UML Model Transformation Tool - Overview and user guide documentation". In: http://umtqvt.sourceforge.net/docs/umt_documentation_v08.pdf, accessed in 10/02/2006. SOLEY, R., 2000, Model Driven Architecture, Object Management Group, OMG document omg/00-11-05.