Neste documento foi apresentada uma ferramenta de suporte ao processo MDA. Esta proposta tem em vista permitir que sejam feitos os passos inversos ao que o processo MDA prop˜oe. Desta forma ´e proposto o processo de gerar informa¸c˜ao de alto n´ıvel partindo da informa¸c˜ao mais espec´ıfica dispon´ıvel que ´e o c´odigo fonte. O objectivo foi ter uma ferramenta que permitisse automatizar todo o processo MDA de forma inversa, ao mesmo tempo que fornece a possibilidade do utilizador ter trˆes pontos de vista diferentes sobre o seu software: mode- los espec´ıficos, modelos independentes da plataforma e por fim organiza¸c˜ao do projecto enquanto conjunto de padr˜oes de concep¸c˜ao.
A utiliza¸c˜ao desta ferramenta num contexto de desenvolvimento auxilia um utilizador, sobretudo quando este tiver necessidade de ter uma abstrac¸c˜ao do seu software permitindo:
• Analisar o c´odigo fonte de um projecto de software Java, produzindo uma representa¸c˜ao interm´edia dessa informa¸c˜ao analisada. Desta forma o c´o- digo fonte ´e analisado e representado internamente de uma forma abstracta e mais flex´ıvel, que permitir´a efectuar opera¸c˜oes sobre ele.
• Representar de forma visual essa informa¸c˜ao interm´edia inferida com base no c´odigo fonte. Ser´a assim ent˜ao poss´ıvel criar uma representa¸c˜ao visual, nomeadamente um PSM que mostrar´a essa informa¸c˜ao ao utilizador. Este PSM ser´a concretizado na forma de um diagrama de classes UML.
• Inferir padr˜oes de concep¸c˜ao nessa representa¸c˜ao. Esta funcionalidade permite obter uma an´alise de mais alto n´ıvel ao software, uma vez que n˜ao est´a a fazer uma an´alise concreta ao n´ıvel do c´odigo fonte, mas sim uma an´alise ao projecto em global. ´E uma an´alise que tem em conta aspectos estruturais e funcionais, n˜ao ´e uma an´alise ao n´ıvel do c´odigo fonte que pouca informa¸c˜ao abstracta poder´a fornecer.
• Abstrair diagramas concretos a diagramas mais abstractos. Os diagra- mas PSM s˜ao diagramas que abstraem alguns detalhes de implementa¸c˜ao, contudo s˜ao diagramas espec´ıficos de uma plataforma. Apesar disso, a informa¸c˜ao que cont´em ´e ainda espec´ıfica do contexto onde nos encontra- mos. O que ´e proposto ´e ent˜ao uma forma de abstrair estes modelos a outros modelos de mais alto n´ıvel, neste caso modelos independentes da plataforma: PIM. Esta ´e outra forma de disponibilizar informa¸c˜ao de alto n´ıvel ao utilizador.
• Disponibilizar estas funcionalidades num ambiente de produ¸c˜ao, onde o utilizador possa facilmente come¸car a utilizar a ferramenta. Esta funcio- nalidade ´e importante para permitir que o utilizador possa tirar partido destas funcionalidades sem ter de alterar o ambiente onde desenvolve o software. Para tal ´e disponibilizado sob a forma de plugin para um IDE.
7.2. AVALIA ¸C ˜AO DO TRABALHO REALIZADO 123 Estas s˜ao as principais contribui¸c˜oes da ferramenta proposta para o pro- cesso MDA. O enquadramento da ferramenta ´e poss´ıvel em cen´arios distintos e poder˜ao ser v´arias fases do processo de desenvolvimento. No suporte ao pro- cesso de desenvolvimento por modelos esta ferramenta pode ser utilizada em dois principais contextos. O primeiro corresponde `a an´alise de sistemas antigos num contexto de manuten¸c˜ao de c´odigo j´a existente, sem documenta¸c˜ao ´util. O segundo contexto refere-se a ferramentas que necessitem de ser migradas e inte- grados em sistemas desenvolvidos de forma orientada a modelos. J´a no processo de desenvolvimento tradicional tamb´em esta ferramenta ´e uma mais valia uma vez que permite auxiliar este processo. Permite ter diferentes vis˜oes do software que est´a a ser desenvolvido, mesmo que este seja desenvolvido de forma tradi- cional. Permite tamb´em a an´alise da qualidade do processo de desenvolvimento por an´alise dos padr˜oes contidos nesse software.
´
E importante ainda comparar o resultado obtido n˜ao s´o face ao proposto, mas tamb´em face a outras ferramentas existentes. Fazendo esta compara¸c˜ao obt´em-se uma an´alise sobre a parte mais pr´atica desta ferramenta.
• A integra¸c˜ao com o IDE destino foi um detalhe relevante. Outras ferra- mentas n˜ao conseguiram ter uma boa integra¸c˜ao, sendo dif´ıceis de utilizar ou demonstrando que n˜ao houve um esfor¸co por parte dos autores. Na ferramenta desenvolvida esta integra¸c˜ao foi feita de modo a disponibili- zar uma utiliza¸c˜ao intuitiva. Considera-se que a sua integra¸c˜ao foi bem conseguida, funcionando de forma similar a outras funcionalidades do IDE. • A qualidade dos modelos UML produzidos por algumas ferramentas foi apontado como sendo de baixa qualidade. Em muitos casos faltavam in- forma¸c˜oes essenciais como m´etodos e atributos, em outras rela¸c˜oes entre elementos. Na ferramenta desenvolvida as representa¸c˜oes s˜ao superiores `
as de muitas ferramentas e corrigem os problemas apontados nelas. Nos modelos obtidos ´e inferida muita da informa¸c˜ao contida no c´odigo e cor- rectamente representada em UML. Relativamente `a representa¸c˜ao visual dos mesmos, a qualidade visual n˜ao est´a ao n´ıvel de outras ferramentas (como da ferramentaVisual Paradigm, por exemplo). O facto dos modelos gerados serem manipul´aveis ´e algo importante que n˜ao ´e disponibilizado por todas as ferramentas.
• A abordagem escolhida para a funcionalidade de abstrac¸c˜ao de modelos permite que este processo seja parametriz´avel. Estas transforma¸c˜oes per- mitem diferentes n´ıveis de abstrac¸c˜ao e diferentes resultados, o que se torna bastante ´util e faz com que esta funcionalidade permita obter resultados pr´aticos.
• A inferˆencia de padr˜oes destaca-se de outras ferramentas, por utilizar uma outra ferramenta e permitir a especifica¸c˜ao f´acil de padr˜oes. A sua iden- tifica¸c˜ao permite obter uma grande amplitude de resultados dependendo
da especificidade do cat´alogo. Em outras ferramentas os cat´alogos s˜ao est´aticos, em outras n˜ao s˜ao parametriz´aveis. A inferˆencia de padr˜oes ´e contudo limitada `a informa¸c˜ao obtida na fase anterior, enquanto que ou- tras ferramentas permitem a an´alise de outro tipo de informa¸c˜oes, como micro-arquitecturas.