O Visual Paradigm ´e uma ferramenta comercial com excelente reputa¸c˜ao. ´E um IDE de modelos com funcionalidades de edi¸c˜ao, engenharia reversa e produ¸c˜ao de c´odigo. Permite criar e inferir um largo n´umero de diagramas (classes, estado, use case entre muitos outros). A sua interface ´e bastante complexa e disponibi- liza um grande conjunto de opera¸c˜oes. Funciona n˜ao s´o para programas criados de base mas tamb´em para programas inferidos.
Tamb´em esta ferramenta disponibiliza funcionalidades de round-trip. Gera n˜ao s´o c´odigoJava, mas tamb´em C++, C, C#, PHP entre muitas outras lingua- gens. O c´odigo analisado e gerado n˜ao tem de ser necessariamente orientado a objectos. Permite ainda analisar c´odigo nas mesmas linguagens que gera. Esta ´e uma ferramenta muito completa o que faz com que o seu pre¸co seja relativamente elevado.
3.6.1
An´alise de c´odigo
Sendo esta uma ferramenta comercial ´e compreens´ıvel que tenha os melhores resultados, e de facto ´e o que acontece [68]. Com o c´odigo gerado por esta ferramenta para o modelo proposto na Figura 3.1, ela ´e capaz de inferir o seu diagrama de classes, que ´e apresentado na Figura 3.14. Este diagrama inferido ´e o mais completo de todos os gerados pelas ferramentas analisadas. Sendo que esta ferramenta n˜ao ´e open-source, n˜ao ´e poss´ıvel obter informa¸c˜oes sobre detalhes de implementa¸c˜ao da mesma. Contudo serve este diagrama como base de compara¸c˜ao para o que seria esperado por parte das outras ferramentas.
3.7. RESUMO 49
3.6.2
Reconhecimento dos elementos
Como se pode ver pela Figura 3.14 esta ferramenta inferiu correctamente todos as classes, interfaces, m´etodos e atributos, bem como as rela¸c˜oes entre classes e interfaces. Apesar de n˜ao inferir um diagrama exactamente igual ao que gerou, infere um diagrama correcto e completo.
3.6.3
Outras funcionalidades
Esta ferramenta possui muitas outras funcionalidades, contudo n˜ao s˜ao relevan- tes para o problema em quest˜ao uma vez que esta ´e uma ferramenta comercial. As funcionalidades mais relevantes s˜ao as de constru¸c˜ao e edi¸c˜ao de modelos, gera¸c˜ao de c´odigo e engenharia reversa e todas as funcionalidades que se en- contram em torno dessas. Importa referir por exemplo a edi¸c˜ao avan¸cada de modelos, gera¸c˜ao de outros tipos de modelos com base em diagramas de classes entre outras funcionalidades relacionadas.
3.7
Resumo
Ap´os o estudo das ferramentas feito durante este cap´ıtulo foi poss´ıvel tirar algu- mas conclus˜oes que ser˜ao apresentadas de seguida.
Em geral as ferramentas dispon´ıveis fornecem muitas funcionalidades ´uteis. A funcionalidade de inferˆencia de diagramas de classes UML existe em v´arias ferramentas, contudo em poucas ´e bem conseguida. Este ser´a uma quest˜ao a abordar na ferramenta em quest˜ao, tentando maximizar a qualidade dos diagra- mas inferidos.
A execu¸c˜ao de opera¸c˜oes em modelos mostrou-se bastante limitada, muitas vezes possibilitando apenas a gera¸c˜ao de c´odigo ou altera¸c˜ao dos dados dos dia- gramas. Apenas uma ferramenta das analisadas permitiu inferˆencia de padr˜oes, e nenhuma delas permitiu n´ıveis superiores de abstrac¸c˜ao (PIM).
Tamb´em os interfaces das aplica¸c˜oes nem sempre se mostraram os melho- res. Existiram dificuldades em perceber o funcionamento de algumas ferramen- tas, por vezes por serem muito simplistas, outras vezes por serem demasiado complexos. Aconteceu tamb´em faltar uma resposta por parte do programa: por vezes os programas n˜ao mostravam qualquer reac¸c˜ao positiva nem negativa ap´os alguma ac¸c˜ao, outras vezes paravam a execu¸c˜ao devido a uma excep¸c˜ao sem qualquer explica¸c˜ao. Houve ainda casos em que as integra¸c˜oes em outras ferramentas foram relativamente limitadas.
A ferramenta proposta passa um pouco pela jun¸c˜ao das funcionalidades que estas ferramentas apresentam de forma distribu´ıda. Algumas das funcionalidades ser˜ao alvo de maior importˆancia (como a inferˆencia de padr˜oes), outras melho- radas (como os interfaces e interac¸c˜ao). Tamb´em funcionalidades novas ser˜ao inclu´ıdas. ´E importante distinguir quais as funcionalidades que merecem mais
aten¸c˜ao por serem um maior contributo. Por exemplo a inferˆencia de diagramas de classes `a algo “trivial” encontrado num grande conjunto de ferramentas.
Cap´ıtulo 4
Desafios e cen´arios de utiliza¸c˜ao
4.1
Introdu¸c˜ao
Ser´a ao longo deste cap´ıtulo apresentado e aprofundado o problema em causa. Ir´a ser feita uma an´alise mais detalhada dos problemas espec´ıficos que se con- cretizam em problemas que s˜ao de esperar encontrar ao longo do processo de desenvolvimento da ferramenta proposta. Este cap´ıtulo resume os problemas que a ferramenta se prop˜oe solucionar e serve de base para a fase de implementa¸c˜ao. Para cada um dos problemas que se pretende abordar ser´a feita uma an´alise mais detalhada dos problemas subjacentes. Esta an´alise ser´a mais concreta e detalhada, servindo j´a de orienta¸c˜ao ao processo de implementa¸c˜ao.
Outro ponto abordado ser˜ao os cen´arios espec´ıficos em que esta ferramenta se tornar´a ´util. Ser´a feita uma descri¸c˜ao detalhada de cen´arios existentes em geral, e que subconjunto desses cen´arios ser˜ao solucionados, bem como o motivo para tal se verificar. Ser˜ao assim apresentadas as condi¸c˜oes necess´arias para o programa funcionar correctamente.
Neste cap´ıtulo ficar˜ao especificados os detalhes para cada um dos problemas em quest˜ao. S´o desta forma ´e poss´ıvel pensar sobre a fase de implementa¸c˜ao e alcan¸car resultados satisfat´orios. Apresentam-se ainda poss´ıveis cen´arios de uti- liza¸c˜ao que ser˜ao tamb´em indica¸c˜oes importantes para a fase de implementa¸c˜ao.