• Nenhum resultado encontrado

Uma vez que vocˆe especifique um modelo EMF, o gerador de c´odigo cria um conjunto de classes de implementa¸c˜ao Java correspondentes ao modelo. E poss´ıvel editar as classes geradas para adicionar m´etodos e vari´aveis de instˆancia, e caso seja necess´ario regerar o c´odigo ´e poss´ıvel preservar o c´odigo adicionado. Outro fator importante ´e a qualidade do c´odigo gerado, pois o EMF utiliza diversos padr˜oes de projeto, o resultado ´e um c´odigo bem organizado.

Outro recurso importante do framework EMF e a interoperabilidade com outras fer- ramentas e aplicativos baseados em EMF. O framework oferece recursos para persistir as classes geradas, como todas as classes s˜ao serializ´aveis ´e poss´ıvel persistir o resultado gerando outro modelo XMI. O framework tamb´em oferece recursos para fazer a opera¸c˜ao inversa, instanciar as classes persistidas a partir do modelo XMI.

Graphviz: oferece um conjunto de ferramentas de c´odigo aberto utilizadas para dese- nhar e visualizar grafos. A ferramenta Graphviz1 ´e capaz de interpretar uma descri¸c˜ao

textual de um grafo e gerar uma imagem gr´afica correspondente. A descri¸c˜ao textual do grafo obedece a uma linguagem de constru¸c˜ao chamada DOT [Gans 00], utilizada para construir grafos hier´arquicos direcionados. O algoritmo de layout do Graphviz tenta oti- mizar a disposi¸c˜ao dos n´os e arestas para para facilitar a sua visualiza¸c˜ao, tentando reduzir o tamanho dos arcos e evitar o cruzamento dos mesmos. Embora o Graphviz funcione como um sistema autˆonomo, seus programas e bibliotecas foram concebidos para serem incorporados por outras aplica¸c˜oes.

6.3

Funcionalidades

Nesta se¸c˜ao iremos apresentar a interface gr´afica e as funcionalidades implementadas na ferramenta ADEX. A ferramenta continua em desenvolvimento, para este trabalho foram implementadas as funcionalidades m´ınimas da interface gr´afica, somente o essencial para apoiar o processo de valida¸c˜ao do fluxo excepcional.

A Figura 6.1 mostra a barra de ferramentas que fica na parte superior da tela, onde est˜ao os bot˜oes de a¸c˜ao . A seguir apresentamos cada um desses bot˜oes descrevendo a a¸c˜ao associada:

ˆ Open XMI: exibe uma caixa de di´alogo para selecionar o arquivo XMI que ser´a aberto. Ap´os a sele¸c˜ao do arquivo o conte´udo do mesmo ´e mostrado em um editor localizado no canto superior direito da aba XMI (Figura 6.1).

ˆ Generate Graphs: est´a ´e a principal a¸c˜ao da ferramenta, o conte´udo do arquivo XMI mostrado no editor e passado como entrada para o algoritmo que utiliza os recursos 1Graphviz:http://www.graphviz.org/

Figura 6.1: Ferramenta ADEX - Aba XMI - Model Statistics

do framework EMF para instanciar os objetos persistidos no arquivo XMI. O resul- tado ´e uma instˆancia de um objeto Java que cont´em o modelo UML completo. Este modelo ´e utilizado como entrada nos algoritmos de transforma¸c˜ao, dando origem a todos os grafos apresentados neste trabalho (GA, GFC, GFCI e GRI). A partir desse momento ´e poss´ıvel navegar pelas abas do aplicativo para visualizar os grafos e consultar as informa¸c˜oes sobre n´os, exce¸c˜oes e tratadores de exce¸c˜ao.

ˆ Export XMI: exibe uma caixa de di´alogo para o usu´ario indicar o diret´orio e o nome do arquivo XMI que ser´a gerado atrav´es da persistˆencia do resultado da an´alise. Como todos os grafos utilizados pela ferramenta tamb´em foram modelados atrav´es do framework EMF, ´e poss´ıvel export´a-los para o formato XMI. Assim, podemos obter como sa´ıda da ferramenta um modelo, que serve como um contˆeiner para todos os grafos gerados durante as transforma¸c˜oes, contendo todas as informa¸c˜oes de fluxo de dados e de propaga¸c˜ao de exce¸c˜oes.

ˆ Preferences: exibe todas as propriedades que o usu´ario poder´a customizar para a gera¸c˜ao das imagens dos grafos. Como por exemplo, o formato do n´o (c´ırculo, elipse ou retˆangulo), a cor, a fonte, as informa¸c˜oes que ser˜ao exibidas no interior

6.3. Funcionalidades 81

do n´o (defini¸c˜oes, usos, condi¸c˜oes de guarda). Esta funcionalidade ainda est´a em desenvolvimento.

ˆ Exit: sa´ıda do aplicativo.

Figura 6.2: Ferramenta ADEX - Aba XMI - Problems

A Figura 6.1 tamb´em mostra a aba XMI, a qual est´a divida em trˆes regi˜oes. A primeira regi˜ao ´e mostrada no canto superior esquerdo da tela, onde ´e exibida uma ´arvore que mostra a hierarquia do modelo UML. O n´o raiz representa o pr´oprio modelo UML, os diagramas de atividade e as atividades estruturadas s˜ao apresentados como n´os internos da ´arvore. As a¸c˜oes e n´os de atividades contidas nos diagramas s˜ao apresentadas como folhas. A segunda regi˜ao ´e a ´area do editor, onde o usu´ario pode consultar o conte´udo do arquivo XMI. A terceira regi˜ao fica na parte inferior da tela onde s˜ao apresentadas mais trˆes abas:

ˆ Model Statistics: apresenta uma estat´ıstica sobre o modelo UML, com as seguintes informa¸c˜oes: i) Activities: n´umero de diagramas de atividade contidos no modelo; ii) ActivityNodes: n´umero total de n´os de atividades ou a¸c˜oes contidas no modelo; iii) UML Actions: n´umero de a¸c˜oes UML contidas no modelo; iv) Classifiers: n´umero

de classes definidas pelos diagramas de classe; v) Operations: n´umero de opera¸c˜oes definidas nas classes; vi) Formal Parameters: n´umero de parˆametros formais con- tidos nas defini¸c˜oes das opera¸c˜oes; vii) Actual Parameters: n´umero de parˆametros atuais contidos nas chamadas das opera¸c˜oes.

Figura 6.3: Ferramenta ADEX - Aba XMI - Console

ˆ Problems: apresenta uma tabela contendo os problemas encontrados durante a gera¸c˜ao dos grafos (Figura 6.2). O objetivo desta tabela ´e guiar o usu´ario na solu¸c˜ao de erros ou inconsistˆencias inseridas no modelo UML. As informa¸c˜oes apresentadas s˜ao as seguintes: i) Problem: identifica o tipo do problema, que pode ser um erro ou uma advertˆencia. Somente no caso da ocorrˆencia de um erro a gera¸c˜ao dos grafos ´e abortada; ii) Activity: identifica o nome do diagrama de atividades onde ocorreu o problema; iii) Element Type: identifica o tipo do elemento do diagrama onde o problema ocorreu, por exemplo: pino de entrada, pino de sa´ıda, tipo de a¸c˜ao; iv) Element Name: identifica o nome do elemento; v) Owner: identifica o nome do contˆeiner onde o elemento est´a inserido. Esta informa¸c˜ao ´e ´util para identificar uma a¸c˜ao aninhada dentro de um atividade estruturada, neste caso o nome da atividade estruturada ´e exibido neste campo; vi) Message: informa a mensagem de erro ou

6.3. Funcionalidades 83

advertˆencia.

ˆ Console: apresenta um log das opera¸c˜oes realizadas ap´os o bot˜ao Generate Graphs ser pressionado(Figura 6.3). Toda a sa´ıda de tela ´e direcionada para esta aba. Caso ocorra algum erro durante a execu¸c˜ao dos algoritmos ele pode ser consultado aqui.

Figura 6.4: Ferramenta ADEX - Aba CFG

A Figura 6.4 mostra a aba CFG, esta aba est´a divida em quatro regi˜oes. A primeira regi˜ao ´e mostrada no canto superior esquerdo da tela, onde ´e exibida uma lista com todas as opera¸c˜oes contidas no modelo. A medida que o usu´ario, seleciona uma das opera¸c˜oes a imagem do GFC ´e exibida. A segunda regi˜ao ´e a ´area de visualiza¸c˜ao do GFC, o usu´ario pode aumentar ou diminuir a imagem atrav´es do bot˜ao Zoom. A terceira regi˜ao da tela fica na parte inferior esquerda, sempre que um GFC ´e selecionado, uma lista contendo os n´os do GFC ´e apresentada. Quando o usu´ario seleciona um dos n´os as informa¸c˜oes sobre o n´o s˜ao exibidas. A quarta regi˜ao da tela apresenta uma tabela contendo as informa¸c˜oes sobre o n´o selecionado. Nesta tabela s˜ao apresentadas as seguintes informa¸c˜oes: i) Activities: apresenta o conjunto de n´os do GA contidos no GFC; ii) Definitions: apresenta o conjunto de defini¸c˜oes do n´o; iii) Global Definitions: apresenta o conjunto de defini¸c˜oes globais do

n´o; iv) Uses: apresenta o conjunto de usos do n´o; v) Global Uses: apresenta o conjunto de usos globais do n´o; vi) Guard Conditions: apresenta as condi¸c˜oes de guarda do n´o, caso ele seja condicional.

Figura 6.5: Ferramenta ADEX - Aba ICFG

A Figura 6.5 mostra a aba ICFG, esta aba est´a divida em duas regi˜oes. A primeira regi˜ao ´e mostrada na parter superior da tela, onde ´e exibido o GFCI do modelo. O usu´ario pode aumentar ou diminuir a imagem do GFCI atrav´es do bot˜ao Zoom. A segunda regi˜ao fica na parte inferior da tela, onde ´e apresentada uma tabela contendo as informa¸c˜oes sobre quais exce¸c˜oes s˜ao lan¸cadas e qual ´e o tratador de exce¸c˜ao respons´avel por capturar cada exce¸c˜ao. Nesta tabela s˜ao apresentadas as seguintes informa¸c˜oes: i) Operation: mostra o nome da opera¸c˜ao onde ocorre uma exce¸c˜ao; ii) Raised Exception Type: apresenta o tipo de exce¸c˜ao lan¸cada na opera¸c˜ao; iii) Handler: mostra o nome da opera¸c˜ao que possui o tratador de exce¸c˜ao; iv) Handler Exception Type: mostra o tipo de exce¸c˜ao definida no tratador de exce¸c˜oes. Esta an´alise ´e ´util para identificar exce¸c˜oes que n˜ao possuem um tratador de exce¸c˜ao capaz de trat´a-las, ou ent˜ao identificar um tratador de exce¸c˜oes que n˜ao ´e compat´ıvel com nenhuma exce¸c˜ao lan¸cada. Pode tamb´em identificar aqueles tratadores de exce¸c˜ao muito gen´ericos que acabam capturando muitos tipos de exce¸c˜ao.

6.3. Funcionalidades 85

Figura 6.6: Ferramenta ADEX - Aba ISG

regi˜ao ´e mostrada na parte superior da tela, onde ´e exibido o GRI do modelo. O usu´ario pode aumentar ou diminuir a imagem do GRI atrav´es do bot˜ao Zoom. A segunda regi˜ao da tela fica na parte inferior esquerda da tela onde ´e mostrada uma lista contendo os n´os pertencentes ao GRI. Quando o usu´ario seleciona um desses n´os, as suas informa¸c˜oes s˜ao exibidas em uma tabela. A terceira regi˜ao da tela apresenta uma tabela contendo as informa¸c˜oes sobre o n´o selecionado. Nesta tabela s˜ao apresentadas as informa¸c˜oes de acordo com o tipo do n´os selecionado, no exemplo da Figura 6.6, o n´o selecionado ´e do tipo ExceptionalReturnNode. Para este tipo de n´o s˜ao apresentadas as seguintes informa¸c˜oes: i) CFG: mostra o nome da opera¸c˜ao que o n´o pertence; ii) In: apresenta o conjunto de defini¸c˜oes que alcan¸cam o n´o de retorno excepcional, estas defini¸c˜oes foram propagadas pela opera¸c˜ao chamada; iii) Definitions: apresenta o conjunto de defini¸c˜oes do n´o; iv) Caught Definitions: mostra quais as defini¸c˜oes de objetos de exce¸c˜ao s˜ao capturadas dentro da opera¸c˜ao; v) Handlers: apresenta o conjunto de tipos de exce¸c˜oes tratadas pela opera¸c˜ao; vi) RethrowDefinitions: apresenta o conjunto de defini¸c˜oes que foram relan¸cadas pela opera¸c˜ao.