como se pode ver na Figura 3.11. No entanto esta informa¸c˜ao n˜ao ´e utilizada na representa¸c˜ao da informa¸c˜ao. Este comportamento da aplica¸c˜ao mostra que n˜ao foi colocada relevˆancia no processo de engenharia reversa e inferˆencia de informa¸c˜ao, mas sim na produ¸c˜ao de software.
Figura 3.11: Parte do c´odigo da classe Main, visualizado no editor do jGRASP.
3.4.3
Outras funcionalidades
`
A semelhan¸ca do ArgoUML esta ferramenta tamb´em tem a capacidade de gerar c´odigo. Adicionalmente permite criar, compilar e executar c´odigo, bem como fazer opera¸c˜oes de depura¸c˜ao. Quanto ao processo de engenharia reversa, a forma como esta ferramenta gera c´odigo ´e com base no c´odigo inferido, que ´e guardado aquando da an´alise dos ficheiros. J´a no que diz respeito a diagramas, os diagramas de classes s˜ao os ´unicos elementos que podem ser gerados a partir do c´odigo fonte.
Esta ferramenta n˜ao ´e definitivamente centrada em engenharia reversa. O seu foco parece estar no desenvolvimento de software, com a funcionalidade adicional de mostrar diagramas de classes. Esta ferramenta parece adequada para uso acad´emico uma vez que fornece um ambiente de desenvolvimento com auxilio de UML. A principal funcionalidade que poder´a vir a ter interesse para a ferramenta proposta ´e a edi¸c˜ao de c´odigo que a ferramenta oferece. N˜ao existindo quaisquer tipos de opera¸c˜oes com modelos ou padr˜oes.
3.5
Ptidej
Esta ferramenta ´e neste momento desenvolvida com a coopera¸c˜ao de v´arios in- vestigadores que contribuem com c´odigo e ideias que a v˜ao melhorando [35]. As vers˜oes dispon´ıveis no site (tool suite e black-box) encontram-se desactualizadas. A vers˜aotool suite respons´avel por identificar padr˜oes n˜ao foi capaz de reproduzir qualquer resultado no exemplo proposto.
A vers˜ao mais actual est´a presente nos reposit´orios do Ptidej. O acesso aos reposit´orios ´e limitado, e apenas atribu´ıdo para fins de investiga¸c˜ao. Assim, esta
ferramenta n˜ao encaixa no ramo das ferramentas open-source por n˜ao ser de c´odigo aberto e acesso p´ublico. Por outro lado n˜ao ´e uma ferramenta comercial por permitir o acesso ao c´odigo fonte e n˜ao ter custos associados.
A obten¸c˜ao e coloca¸c˜ao da ferramenta em execu¸c˜ao ´e um processo algo complicado, uma vez que as informa¸c˜oes de instala¸c˜ao fornecidas pelo autor n˜ao s˜ao muito completas. At´e conseguir executar esta ferramenta foi um processo algo custoso e trabalhoso, conseguindo apenas executar o standalone. Estes factos fazem com que a utiliza¸c˜ao da ferramenta n˜ao seja f´acil nem trivial.
3.5.1
An´alise de c´odigo
Esta ferramenta analisa o c´odigo na forma de bytecode. Para iniciar o processo ´e necess´ario indicar o arquivoJava a analisar. A ferramenta inicia ent˜ao o processo de an´alise do ficheiro e extrai as informa¸c˜oes, mostrando de seguida um diagrama de classes UML.
A ferramenta em quest˜ao foi capaz de analisar um arquivo Java (jar) e reco- nheceu todos os elementos (classes e interfaces). As entidades s˜ao correctamente identificadas e listadas, como se pode ver na Figura 3.12. Um diagrama de classes UML ´e mostrado assim que o processo de an´alise termina.
Figura 3.12: Listagem de entidades reconhecidas pelo Ptidej.
3.5.2
Reconhecimento dos elementos
Todos os elementos presentes no projecto em an´alise s˜ao identificados e repre- sentados com nota¸c˜ao UML como evidencia a Figura 3.13. Apenas as rela¸c˜oes de implementa¸c˜ao e heran¸ca est˜ao presentes no diagrama. Quanto `as rela¸c˜oes de agrega¸c˜ao, composi¸c˜ao e associa¸c˜ao apenas algumas representa¸c˜oes s˜ao mos- tradas, concluindo portanto que n˜ao foram inferidas.
A ferramenta apresenta sobretudo funcionalidades de identifica¸c˜ao e an´alise de padr˜oes e “micro-arquitecturas”. O m´odulo de detec¸c˜ao de padr˜oes possui um cat´alogo pr´e-definido de padr˜oes de concep¸c˜ao, correspondentes ao cat´alogo de Gamma. Para al´em disso possui ainda um conjunto de padr˜oes chamados
3.5. PTIDEJ 47
Figura 3.13: Diagrama de classes inferido pelo Ptidej.
“micro-padr˜oes” que podem ser identificados. A ferramenta conta ainda com um conjunto de outros m´odulos de an´alise de c´odigo embutidos. Foi ent˜ao analisado o projectoAgenda nesta ferramenta. Foi importado o c´odigo e utilizadas algumas das suas funcionalidades. Contudo, n˜ao foi poss´ıvel chegar a qualquer conclus˜ao. O programa n˜ao produziu qualquer resultado quando utilizadas as funcionalida- des de an´alise de padr˜oes e “micro-arquitecturas”. Quando utilizadas, algumas an´alises davam um erro como output, outras mostravam mensagens que pouca informa¸c˜ao davam mas nunca produziam resultados espec´ıficos. Desta forma n˜ao ´e poss´ıvel concluir quanto `a eficiˆencia da ferramenta e dos seus diferentes m´odulos. Apenas foi poss´ıvel concluir quanto `a funcionalidade de representa¸c˜ao de diagramas de classes UML, interface e tipo de funcionalidades dispon´ıveis.
3.5.3
Outras funcionalidades
Para al´em da identifica¸c˜ao de padr˜oes que ´e a funcionalidade mais relevante, existem outras funcionalidades. Todas as outras funcionalidades s˜ao em volta da an´alise do c´odigo e padr˜oes. N˜ao s˜ao existem quaisquer funcionalidades de edi¸c˜ao ou visualiza¸c˜ao do c´odigo, bem como de recompila¸c˜ao (na vers˜ao testada). Esta corresponde `a vers˜ao standalone. Mais uma vez estas funcionalidades n˜ao produziram resultados vis´ıveis que permitam concluir. Os diagramas apresen- tados s˜ao est´aticos e n˜ao permitem interac¸c˜ao nem altera¸c˜ao da sua disposi¸c˜ao gr´afica.