Você está na página 1de 41

Jamby Pina Marcus Paulo da Silva Souza Michel Vasconcelos Nascimento

Um Estudo Comparativo de Ferramentas e suas Tcnicas de Mapeamento de Concerns em Cdigo Fonte

Jamby Pina Marcus Paulo da Silva Souza Michel Vasconcelos Nascimento

Um Estudo Comparativo de Ferramentas e suas Tcnicas de Mapeamento de Concerns em Cdigo Fonte

Monografia

RESUMO

Apesar de haver ferramentas que auxiliam na minerao de aspectos, ainda no existia um estudo comparativo para que os engenheiros de software pudessem ter uma noo da diferena entre as ferramentas e a que mais facilitaria a manuteno do cdigo fonte. O presente trabalho tem como objetivo o estudo comparativo, utilizando o mtodo de minerao de aspectos, entre as ferramentas Fint, Flat e CIDE+, que tratam de identificar crosscutting concerns e selecionar, em um cdigo fonte, diferentes concerns. Os testes dessas ferramentas foram realizados no cdigo do MobileMedia01, um programa para gerenciar fotos em um aparelho celular, e os resultados foram comparados com um mapeamento manual feito do mesmo. Esses testes foram feitos para analisar as caractersticas de cada uma das trs ferramentas e como so feitas as buscas por concerns no cdigo fonte.

Palavras chave: croosscutting concerns, features, interesses transversais, mapeamento de interesses, localizao de features.

Sumrio
1. INTRODUO ....................................................................................................................... 7 2. MINERAO DE ASPECTOS ............................................................................................ 10 3. FEATURE LOCATION ........................................................................................................ 13 3.1. Tcnica Esttica ...................................................................................................................... 13 3.2. Tcnica Dinmica ................................................................................................................... 14 4. FERRAMENTAS UTILIZADAS .......................................................................................... 15 4.1. FINT ....................................................................................................................................... 15 4.2. FLAT3 ..................................................................................................................................... 16 4.3. CIDE+..................................................................................................................................... 16 4.4. TESTE DAS FERRAMENTAS ............................................................................................. 17 4.4.1. FINT .................................................................................................................................... 17 4.4.2. FLAT3 .................................................................................................................................. 21 4.4.3. CIDE+ (Cideplus) ................................................................................................................ 24 4.5. Comparativo Entre as Ferramentas......................................................................................... 26 5. ANLISE DO MAPEAMENTO PELAS FERRAMENTAS E TECNICAS SUBJACENTE .................................................................................................................................................28 5.1. Praticidade de instalao ........................................................................................................ 28 5.2. Procedimento da Minerao de Concerns .............................................................................. 28 5.3. Quanto aos resultados apresentados ....................................................................................... 29 5.3.1. Fint ....................................................................................................................................... 29 5.3.2. Flat3...................................................................................................................................... 30 5.3.3. Cide+ ................................................................................................................................... 34 CONCLUSO ............................................................................................................................... 39 REFERNCIAS ............................................................................................................................ 40

Lista de Figuras
Figura 1 - Mtodo "Fan-in" .......................................................................................................... 18 Figura 2 - Mtodo "Redirectionview............................................................................................ 19 Figura 3 - Cloned Calls View ........................................................................................................ 20 Figura 4 - Processo "Save" ............................................................................................................ 22 Figura 5 - Processo "Trace com MUTT"....................................................................................... 21 Figura 6 - Criao da feature saving .......................................................................................... 23 Figura 7 - Features selecionadas para serem extradas ................................................................. 24 Figura 8 - Colorao das features .................................................................................................. 25 Figura 9 - Fint lancs.mobilemedia.core.ui.controller ............................................................. 29 Figura 10 - Exemplo Mapeamento Manual - Controller............................................................... 30 Figura 11 - Exemplo Flat - Controller ......................................................................................... 31 Figura 12 - Exemplo Mapeamento Manual Controller .......................................................... 31 Figura 13 - Exemplo Flat3 Controller .................................................................................... 32 Figura 14 - Exemplo Mapeamento Manual Controller ........................................................... 33 Figura 15 - Exemplo Flat3 Controller .................................................................................... 33 Figura 16 - Exemplo Cide+ Controller ................................................................................... 34 Figura 17 - Exemplo Mapeamento Manual Controller .......................................................... 35 Figura 18 - Exemplo Cide+ Exceptions .................................................................................. 35 Figura 19 - Exemplo Cide+ Exceptions Mapeamento manual ............................................ 36

Lista de Tabelas
Tabela 1 - Features e sementes ..................................................................................................... 25 Tabela 2 - Caractersticas das ferramentas .................................................................................... 27 Tabela 3 - Comparao de FP e FN ............................................................................................... 37

1. INTRODUO
Na computao, o desenvolvimento de software o ato de elaborar e implementar um sistema computacional, isto , transformar a necessidade de um utilizador ou de um mercado em um produto de software (Pfleeger; LAUWRENCE L. Engenharia de Software: Teoria e Prtica. 2. ed. PRENTICE HALL (PERSON), 2004). medida que os sistemas tornam-se mais complexos, novas tecnologias precisam ser estudadas para melhor adequar e identificar os problemas e relaes existentes no cdigo. Existem diversas tcnicas e abordagens de engenharia de software que procuram lidar com os desafios atuais desta rea. O Desenvolvimento de Software Orientado a Aspectos (DSOA), e dentro dele a Programao Orientada a Aspectos (POA), surgiu como uma abordagem para lidar com o problema da modularizao de interesses transversais (crosscutting concerns). Sistemas de software consistem de um conjunto de "reas de interesse" ou responsabilidades distintas como, por exemplo, responsabilidades funcionais (lgica de negcio) e no-funcionais (performance, persistncia de dados, etc) ). Um concern , portanto, qualquer propriedade de interesse que seja importante para um ou mais stakeholders. Regras de negcio, distribuio, persistncia, segurana, caching e padres de projeto so exemplos de concerns encontrados em muitos sistemas de software (Robillard, M. and Murphy, G. Representing concerns in source code, in ACM Trans. Softw. Eng. Methodol. 16, 1, Article 3 (February), 2007.). Em sistemas complexos, sempre existem responsabilidades de interesse comum que so utilizadas por vrios mdulos. As responsabilidades no-funcionais geralmente tm esta caracterstica, mas tambm algumas funcionais. Estas responsabilidades so difceis de isolar porque so necessrias em vrios pontos do cdigo. Na programao orientada a objetos, uma classe oferece uma boa maneira de se separar a maioria das responsabilidades funcionais, mas bastante limitada quando se trata de responsabilidades transversais. Os crosscutting concerns ficam espalhados por vrios mdulos em pequenos trechos de cdigo que so, em geral, repetitivos, resultando em sistemas difceis de projetar, entender, implementar, manter e evoluir. (ENTENDENDO a Programao Orientado a Aspectos. (So Paulo). Disponvel em: <http://www.dextra.com.br/empresa/artigos/aspectprog.htm>). Os aspectos podem ser inseridos, alterados ou removidos em tempo de compilao. Por estar em um nico bloco de cdigo, sua manuteno mais simples, diminuindo a complexidade 7

do sistema e facilitando o seu entendimento. Alm disso, o cdigo das classes fica livre do cdigo relacionado s responsabilidades transversais, o que facilita sua reutilizao em diferentes contextos, combinando diferentes aspectos dependendo das necessidades da aplicao. A adoo de aspectos reduz a complexidade, aumenta a legibilidade e melhora a modularizao, tornando o cdigo mais malevel para futuras evolues.

(http://www.cassao.eti.br/_download/aplicacaoProgramacaoOAspecto.pdf). De acordo com os nossos estudos em programao orientada a aspecto, atravs de artigos disponibilizados nos sites das ferramentas utilizadas para testes e buscas pela internet sobre o assunto, uma possvel opo para melhorar a modularidade de sistemas orientados a objetos seria a programao voltada a aspectos. Para isso necessrio realizar uma anlise para a identificao de trechos de cdigos a serem convertidos em aspectos. Essa anlise de forma manual uma tarefa bastante complicada e a tendncia de que se ocorra diversos erros, alm de ser subjetiva e consumidora de tempo. Diante da dificuldade de se explorar vrias classes de um sistema, tendo cada classe um tamanho varivel em termos de atributos, mtodos e linhas de cdigos, surgiu a necessidade de automao do processo de minerao de concern no cdigo fonte. Para automatizar esse processo, existem diversos mtodos e ferramentas de minerao de aspectos 1. Apesar de existirem diversos mtodos e ferramentas para minerao de aspectos, faltam trabalhos comparativos que possam confrontar as diversas caractersticas dos mesmos e assim possam guiar desenvolvedores na escolha de um mtodo/ferramenta ou at mesmo guiar pesquisadores na elaborao de novas tcnicas. Como a busca por conhecimentos dessa nova rea de pesquisa tem aumentado significativamente, perante esse contexto, este trabalho tem como objetivo apresentar uma anlise comparativa entre trs ferramentas (FINT, Flat3 e Cide+) selecionadas, bem como suas tcnicas subjacentes, que apresentam algum nvel de automao do processo de explorao do cdigo fonte, fornecendo uma viso especfica de cada uma delas e como a busca realizada no cdigo j existente. Esse estudo comparativo passa pela anlise em separado das ferramentas, levantando os seus pontos positivos e negativos, considerando suas tcnicas de minerao subjacentes. Alm disso, realizamos um estudo comparativo das tcnicas e ferramentas sobre um sistema selecionado.

Os termos minerao de aspectos e localizao de features sero usados ao longo do texto como minerao de concerns.

O trabalho est organizado por: captulo 2 explica o que a minerao de aspectos, o captulo 3 aborda sobre a Feature Location e suas tcnicas, o captulo 4 explica a abordagem das ferramentas e como funciona cada uma delas, testes feitos em cdigos para comprovar os mtodos de busca usados por cada ferramenta, avaliando os resultados apresentados, o captulo 5 faz uma anlise de mapeamentos de corcerns no cdigo MobileMedia01 em relao a cada ferramenta, comparando com o mapeamento manual e por fim a concluso.

2. MINERAO DE ASPECTOS
De acordo com (KELLENS A.et al, 2007), minerao de aspecto a atividade de descobrir concern transversais que potencialmente poderiam ser transformados em aspectos, a partir do cdigo-fonte. Ainda de acordo com KELLENS A. et al, 2007, o Desenvolvimento de Software Orientado a Aspectos tenta resolver o problema de separar as funcionalidades bsicas de um sistema de software. O paradigma fornece uma nova linguagem para construes de cdigos, como advice e pointcuts, que permitem separar interesses transversais a serem escritos em um novo tipo de mdulo chamado aspecto. So vrias as razes para querer migrar um sistema legado para um sistema orientado a aspectos. Devido presena de interesses transversais, os sistemas legados tendem a conter muitos cdigos duplicados. Usando a tecnologia orientada a aspectos, esses interesses transversais podem ser claramente separadas a partir do cdigo base, isto , tornando o sistema mais fcil de entender, manter e evoluir. Existem trs tipos principais de abordagens de descoberta de aspecto pode ser distinguidos: Early aspect discovery techniques: Tradicionalmente, AOSD concentrou principalmente na fase do software no seu ciclo de vida de implementao. Pesquisa sobre aspectos tenta descobrir aspectos nas fases anteriores do software no ciclo de vida, como os requisitos e anlise de domnio ou projeto de arquitetura. Identificar e gerenciar os aspectos iniciais no s ajuda a melhorar a modularidade de requisitos e o projeto arquitetnico, mas muitos aspectos iniciais acabar por encontrar o seu caminho para o cdigo como aspectos de implementao. No contexto de sistemas legados, onde os requisitos e documentos da arquitetura so muitas vezes desatualizados, obsoletos ou no esto mais disponveis, as tcnicas de descoberta dos aspectos iniciais no podem ser aplicadas e as abordagens que se concentram em cdigo-fonte so, portanto, potencialmente mais promissores. Dedicated Browsers: A segunda classe de abordagens so os navegadores avanados de cdigo com o propsito especial de ajudar o desenvolvedor a navegar manualmente o cdigo-fonte de um sistema para explorar preocupaes transversais. Embora o objetivo principal dessas abordagens no 10

explicitamente migrar para os aspectos, mas sim para documentar e localizar interesses transversais, afim de manter e evoluir para um sistema. Estes navegadores dedicados podem ser usados para identificar aspectos no sistema. Normalmente, um usurio de tal abordagem comea com uma "semente" de um interesse transversal, um ponto de partida no cdigo, e usa o browser para explorar ainda mais essa preocupao. Para faz-lo, o navegador pode propor outros hotspots no cdigo que esto relacionados com o interesse ou fornecer ao usurio uma linguagem de consulta manualmente para atravessar a preocupao. Exemplos de tais abordagens so Concern Graphs, Intensional Views, Aspect Browser, (Extended) Aspect Mining Tool and Prism. Aspect mining techniques (Tcnicas de minerao de aspecto): Automatiza o processo de descoberta de aspectos e prope aos seus usurios um ou mais candidatos para aspecto. Todas as tcnicas parecem ter, pelo menos, em comum o fato de buscar candidatos a interesses transversais, usando tcnicas de anlise de dados de minerao ou tcnicas de anlise mais clssica como corte mtricas de software e heursticas, deteco de clone e tcnicas de correspondncia de padres, anlise dinmica, e assim por diante. Ento, como explicado anteriormente, solicitaes de mudana de software so muitas vezes formulados como solicitaes para modificar ou acrescentar uma funcionalidade especfica ou conceito. Para implementar essas mudanas, as caractersticas ou conceitos devem ser localizados no cdigo. A rea de minerao de aspectos est diretamente relacionada com o advento do novo paradigma de programao chamado de programao orientada a aspectos. Programao Orientada a Aspectos: em cincia da computao, programao orientada a aspectos ou POA, um paradigma de programao de computadores que permite aos desenvolvedores de software separar e organizar o cdigo de acordo com a sua importncia para a aplicao (separation of concerns). Todo o programa escrito no paradigma orientado a objetos possui cdigo que alheio a implementao do comportamento do objeto. Este cdigo todo aquele utilizado para implementar funcionalidades secundrias e que encontra-se espalhado por toda a aplicao (crosscutting concern). A POA permite que esse cdigo seja encapsulado e modularizado.

11

O conceito de POA foi criado por Gregor Kiczales e a sua equipe na Xerox PARC, que a diviso de pesquisa da Xerox. Eles desenvolveram o AspectJ, a primeira e mais popular linguagem de POA. De um modo geral, a minerao de aspectos visa descobrir uma lgica entrelaada em grandes bases de cdigos com ou sem a interveno do usurio. A minerao de aspectos tambm pode ser vista como um processo de anlise de cdigos existentes, com o propsito de identificar alguns crosscutting concerns que podiam ser extrados ou reimplementados como um aspecto. A minerao de aspectos visa identificar trechos de cdigo candidatos a aspetos presentes em um cdigo fonte mantido para o funcionamento e evoluo do sistema e, com a interao de um usurio (desenvolvedor), elicitar os aspectos que realmente refletem a sua inteno. A identificao de aspectos considerada a fase inicial para a transformao de sistemas OO em sistemas orientados a aspectos. Os principais motivos da busca pela transformao de sistemas orientados a objetos para orientados a aspectos que com a adoo de POA se ganha uma reduo da complexidade, aumento da legibilidade e modularidade (Shepherd et al. 2004). Minerao de aspectos est dividida em alguns mtodos. Sendo os principais:

(http://www.cin.ufpe.br/~lma3/AlmeidaPadilhaEncoinfo04.pdf) 1. baseado em texto: procura um aspecto a partir de uma conveno de nomes para tipos, mtodos, variveis e classes (Hanneman and Kiczales 2001); 2. baseado em tipo: procura um aspecto a partir dos tipos de dados utilizados no cdigofonte [Hannemann and Kiczales 2001]; 3. multi-modal: uma combinao de vrios tipos de mtodos. Um exemplo de mtodo multi-modal a unio do mtodo baseado em texto e baseado em tipo. Dessa maneira, a anlise feita sob dois parmetros: texto e tipo; 4. baseado em comparao e filtragem: um mtodo automtico que no necessita da interao do usurio. Esse mtodo procura clones presentes no sistema e, por fim, ao usurio so apresentados trechos de cdigos candidatos reformulao em aspectos (Shepherd et al. 2004).

12

3. FEATURE LOCATION
Feature Location visa localizar pedaos de cdigo que implementam um determinado conjunto de caractersticas (features) e ser apresentado em duas tcnicas: a Esttica e a Dinmica. Minerao de aspecto e feature location apesar de serem propostas com nomes distintos, elas tem em comum o objetivo de procurar e localizar concerns no cdigo fonte do sistema. No nosso trabalho, concern representa features e aspectos. 3.1. Tcnica Esttica Chen e Rajlich (In IWPC 2000, IEEE Press.) propem um mtodo que permite que um usurio possa navegar no grfico de dependncia de componentes do sistema em estudo com um resumo do sistema esttico, calculado atravs de uma anlise esttica do cdigo-fonte de um sistema. A ferramenta suporta a navegao em cdigo fonte para buscar features. Essa tcnica funciona bem se o analista est familiarizado com o sistema. Caso contrrio, o analista no sabe por onde comear e continuar. Marcus e Maletic (May 2003, IEEE Press, pp. 125134.), apresentaram a tcnica para localizar os pontos onde comear por meio de indexao semntica latente, que uma tcnica de recuperao de informao que identifica as correspondncias entre os termos usados em uma especificao de requisitos e identificadores no cdigo. Uma Abordagem semelhante foi proposto anteriormente por Antoniol e demais. (Antoniol, G., Canfora, G., Casazza, G., Lucia, A. D., and Merlo, E. Recovering traceability links between code and documentation. IEEE TSE 28, 10 (Oct. 2002), 970983.) onde estabelecem ligaes de rastreabilidade entre os documentos de requisitos e cdigo-fonte. Zhao e demais propuseram uma tcnica que combina Chen e a idia de Rajlich com as tcnicas de recuperao de informao para orientar a navegao (In ICSE (2004), IEEE Press, pp. 293303.).

13

3.2. Tcnica Dinmica uma tcnica que tenta identificar partes do cdigo fonte que implementam funcionalidades atravs da execuo do programa. Wilde e Scully ((Jan. 1995), 4962.) categorizaram as unidades de execuo de uma determinada funo. Dada uma funo F as unidades de execuo so categorizadas assim: As unidades comumente envolvidas (cdigo executado em todos os casos testes,

independentemente da funo F); As unidades potencialmente envolvidas na funo F (cdigo executado dentro de pelo

menos um caso de teste que chama F); As unidades envolvidas indispensavelmente em F (cdigo que executado em todos os

casos de teste que invocam F) e; As unidades envolvidas exclusivamente em F (cdigo executado exatamente nos casos em

que F invocada). Portanto, essa abordagem requer que se tenham casos teste implementados. Isso pode ser uma limitao, j que nem sempre os sistemas possuem casos de teste implementados. Outra abordagem com base na informao dinmica levado por Wong e colegas ((Richardson, TX, USA, Mar. 1999), IEEE Press, pp. 194203.). Eles analisam as fatias de execuo de casos de teste de execuo de uma funcionalidade especfica. Dada uma funo F, funciona da seguinte maneira: A entrada (ou seja, um conjunto de casos de teste - ou em outra terminologia - um

conjunto de cenrios) identificada e vai chamar a funo F; A entrada identificada excluindo um conjunto que no invoca uma funo F. O programa executado duas vezes com as entradas e os conjuntos excludos,

separadamente. Pela comparao das duas fatias de execuo resultante, as unidades podem ser

identificadas quando implementam a feature. Em ambas as abordagens, a idia construir a diferena entre os conjuntos de unidades executadas. Zhao e demais propuseram um conjunto de algoritmos para computar mais simples as informaes do que recuperar a partir do conceito de rede (In ICSM (2004), IEEE Press, p. 528.). 14

4. FERRAMENTAS UTILIZADAS
A seguir ser apresentado as ferramentas que foram utilizadas no estudo comparativo, mostrando seus pontos positivos e negativos. 4.1. FINT Fint (http://swerl.tudelft.nl/bin/view/AMR/FINT) um plugin para a ferramenta Eclipse. Serve para identificao de concerns entrelaados no cdigo fonte. Interesses transversais so particularmente difceis de reconhecer e compreender no cdigo fonte, como a sua implementao est espalhada por vrias unidades de modularizao (tais como, classes ou mtodos). Primeiro preciso que o engenheiro de software identifique os concerns. Para tornarse consciente do mesmo, quando o programador realizar operaes de mudana de software em um sistema pouco conhecido, e, mais adiante, para entender a sua aplicao e, possivelmente, refator-los usando programao orientada a aspectos. A identificao de interesses transversais tambm chamado de minerao aspecto. Assim, Fint uma ferramenta de minerao de aspecto. A implementao atual do Fint inclui trs tcnicas de anlise de cdigo fonte para identificar interesses transversais: Fan-in, que verifica as chamadas a mtodos; GroupedCall, que verifica tambm as chamadas de mtodos, mas analisa chamadas em grupos identificando por exemplo, dois ou mais mtodos que so chamados pelo mesmo chamador; e RedirectionsFinder, que busca por classes cujos mtodos redirecionam as chamadas para outros mtodos da mesma ou de outras classe. A anlise de Fan-in remove mtodos como gets e sets e classes de utilidades como, por exemplo, colees. Permite a aplicao de filtros para eliminar falsos participantes, que no devem participar da contagem do valor de Fan-in, por exemplo, chamadas de Test Cases (JUnit). Essas trs tcnicas auxiliam na identificao de classes e mtodos com alto grau de entrelaamento de concern. Uma caracterstica interessante da ferramenta a possibilidade de combinar os resultados das tcnicas. Dessa forma, possvel, por exemplo, combinar resultados de Fan-in com RedirectionsFinder. Por outro lado no possvel realizar buscas, no cdigo fonte, de um concern especfico, pois esta ferramenta no baseada em consultas, com isso no possvel identificar automaticamente os concerns. 15

4.2. FLAT3 FLAT3 um plugin do Eclipse, que integra tcnicas de localizao esttica e dinmica com um recurso de anotao de funo, fornecendo um conjunto completo de ferramentas para permitir que desenvolvedores possam localizar o cdigo que implementa um recurso e depois salvar esses mapeamentos. FLAT3 fornece dois mtodos para recurso de localizao que podem ser usados juntos. O primeiro usa a tcnica da biblioteca Lucene (http://lucene.apache.org/java/docs/index.html), que a busca de informaes no cdigo para localizar palavras semelhantes consulta do usurio. O segundo mtodo usa o Mutt (http://sourceforge.net/projects/muttracer/), uma ferramenta JPDA (Java Platform DebuggerArchitecture, podendo ser acessado em:

http://java.sun.com/javase/technologies/core/toolsapis/jpda/) baseada em rastreamento, que pode ser usada para capturar todos os mtodos que so chamados durante a execuo de uma determinada feature. O recurso de busca Lucene pode ser utilizado para filtrar os resultados. Finalmente, as funcionalidades do recurso de mapeamento com base em

ConcernTaggerConcernMapper, pode ser facilmente utilizado para guardar os resultados encontrados com o Lucene e ferramentas de base MUTT, combinando seus conhecimentos. Esse recurso de mapeamento ser ento uma ligao entre os conceitos abstratos implementados em um projeto e o cdigo que realmente implementa esses conceitos.

4.3. CIDE+ CIDE (Colored IDE) baseada em uma extenso para Eclipse. Estende o ambiente Eclipse com a possibilidade de se associar cores de fundo a trechos de cdigo que implementam features. Com isso os desenvolvedores podem deixar de usar anotaes textuais e passar a utilizar de visualizaes para delimitar as linhas de cdigo pertencentes a uma feature. Alm disso, permite tambm a gerao de projees de um sistema nas quais todo cdigo em determinada cor removido. O CIDE trabalha com o sistema semi-automtico, ou seja, os desenvolvedores devem manualmente localizar e mudar a cor de fundo de todos os trechos de cdigo responsveis pela implementao de uma feature que desejam incluir. J com o CIDE+ as tarefas so automatizadas. Inicialmente preciso fornecer como entrada um conjunto de elementos sintticos 16

por exemplo, classes, pacotes, mtodos (todos chamados de sementes) responsveis pela implementao de uma feature. Em seguida a ferramenta trata de colorir todos os elementos do cdigo que referenciam direta ou indiretamente os elementos definidos como sementes, baseando-se em uma busca no cdigo a partir de uma feature pr-definida pelo usurio. Por fim, resta ao engenheiro responsvel pela extrao das duas tarefas. Primeiro, ele deve detectar e corrigir eventuais marcaes no cdigo, observando se apresenta falsos positivos e/ou falsos negativos. Em seguida, o engenheiro deve avaliar a cobertura das anotaes visuais inseridas no cdigo, isto , se todas as linhas de cdigo dedicadas a implementao da feature foram de fato coloridas. Para isso, recomenda-se que ele gere uma projeo do sistema sem a feature em questo e que execute o produto gerado, de forma a se certificar de que a feature realmente no se encontra mais presente no sistema. Nessa execuo, ele pode perceber que ainda existe parte da funcionalidade provida pela feature no produto gerado. Nesse caso, ele deve refinar as sementes inicialmente escolhidas e iniciar um novo ciclo do processo de extrao. 4.4. TESTE DAS FERRAMENTAS 4.4.1. FINT Para o teste dessa ferramenta foi utilizado o cdigo do sistema MobileMedia verso 01. O Mobile Media um sistema de software que realiza o gerenciamento de fotos em um aparelho celular (Figueiredo, E. et al. 2008. Evolving Software Product Lines with Aspects: An Empirical Study on Design Stability. In Proc. of the 30th International Conference on Software Engineering (ICSE), pp. 261- 270. Leipzig, Germany.). Para este teste, foi utilizado o ambiente Linux Ubuntu 9.04 e JDK 1.5. Como podemos notar na interface Fan-in analysis view (explicado no captulo quatro) da figura 1, o mtodo lancs.mobilemedia.lib.Exceptions.InvalidImageDataException.

InvalidImageDataException chamado em quatro mtodos diferentes. Essa view lista todos os mtodos das classes de um pacote que so chamados por outros mtodos da mesma ou de outras classes. Na figura 2 podemos ver uma outra funcionalidade da ferramenta FINT, que a redirectionview que mostra a busca por classes cujos mtodos redirecionam as chamadas para outros mtodos da mesma ou de outras classes.

17

Figura 1 - Mtodo "Fan-in"

figura

ilustra

redirectionview

com

exemplo

do

mtodo

invalidImageDataException que possui trs redirecionamentos, nesse caso referente aos trs construtores que fazem automaticamente chamadas ao construtor da super classe.

18

Figura 2 - Mtodo "Redirectionview

Na figura 3 podemos ver mais uma funcionalidade da ferramenta FINT, que a Cloned Calls View que mostra grupos de mtodos que possuem chamadores em comum. As chamadas aos mtodos so apresentadas na tela para o desenvolvedor como uma hierarquia de rvore com cada grupo de mtodos na raiz da lista de quem faz as chamadas comuns. Explicar o exemplo que a seta vermelha indica na figura 3. 19

Figura 3 - Cloned Calls View

O ponto positivo da ferramenta FINT so as diferentes views dos resultados que so. Porm, como ponto negativo, essa ferramenta depende da linguagem utilizada e no apresenta um grupo dos participantes de um interesse, deixando a cargo do desenvolvedor interpretar as informaes das views para agrupar elementos de um determinado concern.

20

4.4.2. FLAT3

Para a avaliao dessa ferramenta foi utilizado Ubuntu 9.04 e Java JDK 1.6 verso 20. Iniciando com a busca no cdigo fonte necessrio primeiro determinar uma anlise esttica atravs de um query que ir chamar os mtodos referentes anlise inicial. No nosso, exemplo iremos analisar primeiro a funcionalidade de salvar no sistema JEdit (http://www.jedit.org/), que um editor de texto e cdigo fonte implementado em Java. A figura 4 ilustra como feita a entrada da string para anlise do cdigo.

Figura 4 - Processo "Trace com MUTT"

21

J na busca dinmica a execuo dessa query ir abrir o JEdit e ser oferecido para salvar o arquivo. A prxima etapa coletar a execuo do rastreamento e ser necessrio selecionar a classe principal onde contm o mtodo. Com a classe selecionada usaremos a opo Trace with MUTT (Trace com o MUTT) como ilustrado na figura 5, com isso ser mostrado a janela do programa juntamente com a opo de comear/parar do MUTT que o controle de rastreamento.

Figura 5 - Processo "Save"

Todos os mtodos que foram executados entre o intervalo, incio e fim, so coletados no rastreamento. Retornando para a Flat3 poderemos visualizar a listagem dos mtodos executados e as pontuaes no similares apresentadas tambm. Isso facilita a identificao no cdigo dos mtodos sem a necessidade de percorrer o cdigo todo. Para concluir pode-se criar uma nova feature, como na figura 6, e ligar mtodos a essa feature criada.

22

Figura 6 - Criao da feature saving

Ao final pode-se salvar os resultados para que no seja preciso fazer o intervalo de execuo novamente. A Flat tem como ponto positivo um sistema de busca que permite procurar no cdigo por um interesse especfico, alm de permitir localizao textual e localizao dinmica de recursos. Por fim, pode-se salvar um log para eventual consulta. Porm, essa ferramenta no oferece ndices de probabilidade para grandes cdigos fontes, nesses cdigos a probabilidade exibida 0 ao invs de seu real ndice, tambm h dificuldade no rastreamento dos concerns nesses mesmos cdigos grandes, e no possvel atualizar os logs salvos, pois esses logs no podem ser editados.

23

4.4.3. CIDE+ (Cideplus) Essa ferramenta foi testada no Ubuntu 9.04 e Java JDK 1.6 verso 20. Utilizamos como teste o prprio cdigo da ferramenta Cide+ (classe Stack). A figura 7 mostra as features do cdigo escolhidas como sementes para a anlise, sendo que essas features sero usadas como referncia para essa anlise.

Figura 7 - Features selecionadas para serem extradas

Como mostrado na figura 7, cada feature recebe uma cor referente escolhida pelo usurio, ento o cdigo marcado baseado na cor de cada feature (como mostra a figura 8).

24

Figura 8 - Colorao das features

A tabela 1 resume as features e as sementes escolhidas como entrada para a ferramenta CIDE+.
Tabela 1 - Features e sementes Features Multithreading Logging Replication Snapshot Sementes Classe Lock Classe Log Classe Replication Mtodo snapshot

No exemplo da figura 8, a chamada de log realizada no interior do primeiro if do mtodo push est ligada tanto featureMutithreading quanto Logging, portanto recebe as duas cores referentes s features, resultando na mistura visual das duas cores (exemplo: vermelho + verde = amarelo). A CIDE+ possui como pontos positivos uma anotao semi-automtica de cdigo relativo s features, pois cabe ao usurio entrar com uma semente (feature) inicial, automatizao de 25

tarefas, no requer passo preliminar de preparao do cdigo fonte, possui uma fcil visualizao, com colorao do cdigo para diferenciar os concern, assim a participao e envolvimento dos responsveis pela extrao reduzida. J como pontos negativos essa ferramenta requer uma reviso da colorao no cdigo fonte, pela ferramenta, e cabe ao usurio corrigir os erros encontrados, o usurio tem que gerar uma projeo do sistema sem a feature em questo e executar o produto gerado, de forma a se certificar de que a feature realmente no se encontra mais presente no sistema. 4.5. Comparativo Entre as Ferramentas Os aspectos so muito difceis de serem identificados em uma aplicao (cdigo fonte), pois exige muita ateno e interao do usurio para decidir se um mtodo faz parte de um determinado interesse. Essa tarefa suscetvel a erros, subjetiva e demorada. Para isso o usurio pode utilizar de ferramentas para a identificao de mtodos ou atributos que fazem parte de concerns. As ferramentas que possuem um ambiente de fcil navegabilidade ajudam na compreenso e evita que o usurio se confunda no resultado final da identificao de concerns entrelaados. Apesar do fato de as ferramentas apresentarem algumas falhas na identificao dos concerns, mais importante a no apresentao de falsos negativos, pois diante destes, indicar ao usurio que no existem mais participantes de um determinado concern. Isso pode levar a problemas para o desenvolvimento. As ferramentas devem utilizar diferentes tcnicas e permitir uma combinao entre as mesmas para que se possa filtrar com mais eficcia, levando a um melhor resultado. A abordagem individual pode ser melhor em alguns casos, mas a juno permitir um resultado mais expressivo. Alm de permitirem abordagens automticas, seria interessante permitir a abordagem baseada em consultas, pois a automatizao sozinha pode no identificar completamente o concern. Ento uma combinao de consultas com a automatizao melhoraria a avaliao dos resultados finais. A tabela 2 resume as caractersticas levantadas em cada ferramenta.

26

Tabela 2 - Caractersticas das ferramentas

FERRAMENTAS FINT FLAT3 CIDE+ Permite combinar as tcnicas usadas pela ferramenta X Aplicar filtros nos resultados X Facilidade na navegao X X X Dependncia de outras ferramentas X X Permite localizao textual e dinmica de concerns X Possui um sistema de busca de concerns X X Visualizar a localizao de elementos de cdigo X X Semi automtico X X X Iterativo X Colorao em cdigo X CARACTERSTICAS

Fint permite combinar os resultados apresentados ao final de cada etapa. Pode-se optar pela remoo de recursos pelo mtodo Fan-in. Permite a aplicao de filtros para eliminar possveis falsos positivos, que no deveriam fazer parte do mtodo Fan in. J a Flat3 baseado em vrias ferramentas existentes. A biblioteca Lucene fornece pesquisas de texto completas, MUTT recolhe rastros de execuo e tambm permite salvar o mapeamento no ConcernMapper ou ConcernTagger, que um plug-in do eclipse que auxilia na atribuio manual dos concerns do cdigo na linguagem Java. Esses dois plug-ins do a capacidade de anotar e salvar os mapeamentos. Estas funcionalidades so integradas na FLAT3. A Cideplus (ou Cide+) semi-automtica, pois requer a definio das sementes das features extradas e a aprovao de determinadas expanses de cores. iterativa, pois pode requerer mais de um ciclo de execuo, at obter uma cobertura de todo o cdigo responsvel pela feature. O grau de cobertura obtido e o nmero de iteraes requeridas depende basicamente de sementes que incluam todos os elementos do programa que respondem pela implementao da feature sob extrao.

27

5. ANLISE DO MAPEAMENTO PELAS FERRAMENTAS E TECNICAS SUBJACENTES


Os teste foram feitos sobre o cdigo do MobileMedia01 para as 3 ferramentas, e a partir dos teste realizados foram feitas comparaes para avaliar a praticidade de instalao, os

procedimentos da minerao dos concerns (buscar os concens espalhados no cdigo fonte e fazer a localizao ou indicao dos concerns) e facilidade na visualizao dos resultados apresentados.

5.1. Praticidade de instalao Para a ferramenta Fint necessrio somente a cpia do arquivo .jar, baixado no site da prpria ferramenta, dentro da pasta plugin do software Eclipse. O mesmo procedimento usado para a ferramenta Flat3 e para a CIDE+, sendo que cada uma delas, necessrio o download dos seus respectivos arquivos .jar nos sites das ferramentas. Normalmente este um dos procedimentos mais comuns para a instalao de plug-ins no Eclipse.

5.2. Procedimento da Minerao de Concerns Na Fint complicado fazer uma anlise mais especfica de concerns no cdigo fonte, pois sua anlise no cdigo feita em cima de cada pacote do projeto sem uma referncia inicial. Com isso a busca e localizao dos concerns ficam mais difceis de serem detalhadas, no mostrando os resultados de cada concern especfico. J a Flat3 a busca textual e a procura no cdigo feita em cima do nome da string, entrada pelo usurio. Com isso o resultado apresentado em cima da procura textual, sem a distino dos concerns no cdigo. Sendo que sem essa distino, o usurio poder ter uma noo da probabilidade de uma classe ou mtodo ser chamado, pois no resultado da busca apresentado ao usurio uma referncia a porcentagem desses atributos serem selecionados, tambm mostrado, no resultado, as classes pertencentes busca da feature e os pacotes das mesmas. Na CIDE+ a busca no cdigo fonte feita interativamente, pois a principio necessrio o usurio entrar com uma semente inicial (mtodos, classes, pacotes ou variveis). Sendo assim, a 28

sua busca atravs das chamadas dos mtodos no cdigo fonte. E o usurio precisa revisar e ou refinar os resultados. A cada reviso a localizao revisada novamente, refinando a minerao.

5.3. Quanto aos resultados apresentados Para essa comparao foi levado em considerao um mapeamento manual realizado previamente por desenvolvedores de software do MobileMedia. Esse mapeamento j foi utilizado em estudos prvios, como em (FIGUEIREDO, 2008).

5.3.1. Fint Diferente do mapeamento manual do MobileMedia01 (vide anexo 1), a ferramenta Fint no exibe as features separadamente, pois essa ferramenta no possui uma busca de um interesse especfico, ao invs disso, ela anlisa todos os mtodos de um pacote escolhido e exibe todas as chamadas de cada mtodo fora do pacote.

Figura 9 - Fint lancs.mobilemedia.core.ui.controller

29

A figura 9 mostra um exemplo de anlise feita pela ferramenta no pacote lancs.mobilemedia.core.ui.controller. Como mostra a figura 9, ao fazer a anlise de um pacote, ferramenta apresenta ao usurio tanto os mtodos dos pacotes da API do Java quanto os mtodos de cada pacote do prprio projeto que so chamados nos mtodos do prprio pacote analisado. Esse tipo de anlise pode ser ruim para o usurio, pois sero includos na pesquisa mtodos que no fazem parte do projeto e sim da API que so descartveis para esse tipo de anlise. Alm disso, o desenvolvedor ter um esforo adicional para juntar todas as informaes dos resultados das trs view da Fint para ento analisar mais detalhadamente o que faz parte de um determinado concern. 5.3.2. Flat3 Os mapeamentos resultantes da ferramenta Flat diferem do mapeamento manual, pois suas chamadas atravs da busca textual no cdigo fonte obtm como resultado um mapeamento onde todos os elementos de cdigo que so apresentados contenham a palavra referida. J no mapeamento manual, a busca feita a partir da escolha dos concerns proposto pelo usurio, que observa cada linha de cdigo e seleciona mtodos que estiverem concerns relacionados. Como a pesquisa foi realizada a partir do estudo do mapeamento manual, utilizamos strings que se igualavam aos caracteres das classes que foram utilizadas na mesma para fazer as buscas desta ferramenta. Exemplo, quando no mapeamento manual a busca era baseada no concern Controller, fazamos pesquisas escrevendo a palavra Controller para busca. As figuras 10 a 15 mostram exemplos de pesquisas feita pela ferramenta sendo comparada com um mapeamento feito manualmente.

Figura 10 - Exemplo Mapeamento Manual - Controller

30

Figura 11 - Exemplo Flat - Controller

Como podemos ver nas figuras 10 e 11 a ferramenta se iguala com o mapeamento manual nas partes do interesse quem tem a palavra referida. Entretanto as figuras 12 e 13, mostram uma diferena de marcao entra a ferramenta e o mapeamento manual.

Figura 12 - Exemplo Mapeamento Manual Controller

31

Figura 13 - Exemplo Flat3 Controller

Essa diferena chamada de falso positivo, que quando a ferramenta marca no cdigo algo que no deveria ser marcado. J as figuras 14 e 15 mostram outra diferena, chamada de falso negativo, que o oposto do falso positivo, ou seja, a ferramenta deixa de marcar no cdigo algo que deveria ser marcado. Nesse caso, o mapeamento manual considera a declarao da classe e um atributo como fazendo parte do concern Controller. Entretanto, apesar desses elementos de cdigo possurem a string Controller, a ferramenta busca apenas por mtodos, deixando de fora atributos e declaraes de assinatura da classe.

32

Figura 14 - Exemplo Mapeamento Manual Controller

Figura 15 - Exemplo Flat3 Controller

33

5.3.3. Cide+ Aps selecionar as sementes a serem buscadas, no caso do Cide+ preciso o usurio selecionar a classe ou pacote a qual ele quer que seja analisada. Com relao s outras ferramentas testadas, esta foi a que mais se aproximou do mapeamento manual, mas ainda assim contendo algumas falha em algumas buscas em relao s features escolhidas pelo usurio. Para o nosso estudo foram escolhidos os pacotes, classes e mtodos se baseando no mapeamento manual.

Figura 16 - Exemplo Cide+ Controller

34

Figura 17 - Exemplo Mapeamento Manual Controller

Como mostrado nas figuras 16 e 17, feito uma comparao onde ocorre falso negativo na busca da feature do Cide+ com relao ao mapeamento manual, pois na busca do interesse Controller a ferramenta deixa de marcar as chamadas aos mtodos relacionados ao Controller. Em outros casos o mesmo acontece onde o Cide+ s marca as chamadas em concern e no todo o trecho de cdigo que faz condio para a chamada do concern. Sendo esse outro exemplo de falso negativo.

Figura 18 - Exemplo Cide+ Exceptions

35

Figura 19 - Exemplo Cide+ Exceptions Mapeamento manual

Podemos ver nas figuras 18 e 19 que no mapeamento manual est includo que todas as excees, inclusive as da API do Java, como excees da declarao Try/Catch, so consideradas como excees e que na ferramenta apresenta falsos positivos e falsos negativos j que considera as excees somente as chamadas que estiverem includas nos concerns selecionados pelo usurio no momento em que feita escolhida da feature. A cobertura do cdigo colorido depender da escolha das sementes e da aceitao das expanses semi-automticas. preciso repetir o processo refinando as sementes de entrada, at que a cobertura seja satisfatria. Se, aps o refinamento das sementes, as diferenas entre o mapeamento manual e o "semi-automtico" persistirem, preciso averiguar para saber se uma deficincia da abordagem proposta ou se foi uma falha humana. Em todo caso, a ferramenta Cide+ foi a que mais se aproximou dos resultados buscados em comparao ao mapeamento manual e de mais visibilidade nas apresentaes dos concerns buscados, baseando-se nos resultados da tabela 3.

36

Tabela 3 - Comparao de FP e FN

Flat3 FP Controller Exception Persistence Photo PhotoLabel 6 4 0 7 12 FN 2 16 62 117 13 FP 1 4 10 3 5

Cide+ FN 3 48 14 9 30

Legenda: FP = Falso Positivo FN = Falso Negativo

As linhas da tabela 3 representam os concerns utilizados nos testes. Cinco concerns foram buscados. Como pode-se notar na tabela 3, em algumas analises a Flat teve um numero muito elevado de falso negativo em comparao com a CIDE+, com exceo dos concerns Controller, Exception e PhotoLabel. Isso deve-se ao fato de ele procurar apenas por mtodos, deixando de marcar diversos atributos, imports e declaraes de classes. J na analise de falso positivo, a CIDE+ obteve um resultado com um ndice menos elevado em comparao a Flat, exceto no concern Persistence. Como o falso positivo pode levar o desenvolvedor a erros, j que exibe concerns que no esto devidamente relacionados semente escolhida, sua analise se torna mais crtica. Levando isso em considerao, a CIDE+ teve uma ligeira vantagem sobre a Flat nessa analise. Ao analisar a tabela 3, podemos concluir que, apesar de alguns resultados da CIDE+ ser superior ao da Flat, no geral ela obteve um resultado mais satisfatrio, ambas sendo analisadas no cdigo MobileMedia01. Como a Fint no possui uma busca por concern especfico, no pde fazer parte dessa comparao, por este motivo ela no apresentada na tabela 3.

37

Esta comparao de falso positivo e falso negativo pode conter uma margem de erros, pois ela foi feita analisando visualmente o mapeamento manual fornecido e os resultados apresentados pelas ferramentas.

38

CONCLUSO
Com a ascenso da Programao Orientada a Aspecto que vem com o desafio de lidar com problemas de modularizao de crosscutting concerns, vrias ferramentas foram desenvolvidas para auxilio na minerao de aspectos. Com isso o mapeamento de concerns facilitar, ao desenvolvedor na otimizao da manuteno de sistemas, ganhando na reduo da complexidade, aumento da legibilidade e modularidade. Para anlise de mapeamento de concerns existem dois tipos de abordagem que foram tratadas nesse estudo. So elas minerao de aspectos e feature location. O objetivo deste trabalho apreciar, descrever, verificar e comparar ferramentas no contexto de minerao de aspectos. As trs ferramentas aqui aplicadas mostram que cada vez mais os desenvolvedores iro buscar a minerao de aspectos. Foi tambm possvel verificar que as ferramentas tem uso abrangente e que envolve mtodos no s tecnolgicos, mais tambm humanos, por isso necessrio o refinamento dos seus resultados. Aps o trmino da varredura e do estudo feito, identificaram-se inmeras falhas, em referencia a um mapeamento manual, conforme a tabela 3, presentes no mapeamento feito em duas ferramentas. Com isso, gostaramos de lembrar que minerao de aspectos um processo contnuo. Este estudo poder ser usado como base para futuras pesquisas no contexto de minerao de aspecto e ferramentas usadas para essa tcnica.

39

REFERNCIAS
FLAT3: Feature Location and Textual Tracing Tool. Disponvel em: <www.cs.wm.edu/~denys/pubs/flat3-tool-demo-camera-ready.pdf>. Acesso em: 10 de fev. 2011 CIDE+: A Semi-automatic Approach for Extracting Software Product Lines. Disponvel em: <http://www.dcc.ufmg.br/~mtov/cideplus>. Acesso em: 16 de maio 2011. NOVAIS, Renato. Uma arquitetura para ferramentas de Aspect Mining. Disponvel em: <http://im.ufba.br/pub/MATA23/TrabalhoRenatoNovais/Arquitetura_para_AspectMiningTools_ RenatoNovais.pdf>. Acesso em: 12 de fev. 2011. FLAT3: Feature Location and Textual Tracing Tool. Disponvel em: <http://www.cs.wm.edu/semeru/flat3/index.html>. Acesso em: 10 de fev. 2011. FINT - Tool support for aspect mining. Disponvel em: <http://swerl.tudelft.nl/bin/view/AMR/FINT>. Acesso em: 8 de fev. de 2011. ALMEIDA, L. M.; PADILHA, T. P. P. Anlise de Ferramentas de Minerao de Aspectos. Disponvel em: <http://wiki.dcc.ufba.br/pub/WASP04/AcceptedPosters/leandroResumoWASP04.pdf>. Acesso em: 16 de fev. 2011. ALMEIDA, L. M.; PADILHA T. P. P. Minerao de Aspectos: Conceitos, Mtodos e Ferramentas. Disponvel em: <http://www.cin.ufpe.br/~lma3/AlmeidaPadilhaEncoinfo04.pdf>. Acesso em: 17 de fev. 2011 KOSCHKE, R.; QUANTE, J. On Dynamic Feature Location. Disponvel em: <http://ftp.informatik.uni-stuttgart.de/iste/ps/bauhaus/papers/dfl-ase05.pdf >. Acesso em: 14 fev. 2011 OLIVEIRA, V. B.; GARCIA, R.; VALENTE M. T. CIDE+: Uma Ferramenta para Extrao Semi-automtica de Linhas de Produtos de Software Usando Colorao de Cdigo. Disponvel em: www.dcc.ufmg.br/~mtov/pub/2010_cbsoft_tool_cideplus.pdf acessado em: 16 de maio 2011. Apache Lucene. Disponvel em: <http://lucene.apache.org/java/docs/index.html>. Acesso em: 15 de fev. 2011. MUTT. Disponvel em: <http://sourceforge.net/projects/muttracer/>. Acesso em: 15 de fev. 2011. JEdit Programmers Text Editor. Disponvel em: <http://www.jedit.org/>. Acesso em: 16 fev. 2011.

40

Entendendo a Programao Orientada a Aspectos. Disponvel em: <http://www.dextra.com.br/empresa/artigos/aspectprog.htm>. Acesso em: 09 de jul. 2011. Techniques for Feature Location and Mapping. Disponvel em: < http://www.inf.pucrio.br/~inf2921/docs/aulas/INF2921_Aula13_I.pdf>. Acesso em: 09 de jul. 2011. Andy Kellens, Kim Mens, and Paolo Tonella. A Survey of Automated Code-Level Aspect Mining Techniques. Disponvel em: <biblio.info.ucl.ac.be/2007/381386.pdf >. Acesso em: 15 de ago. 2011. Figueiredo, E. et al. 2008. Evolving Software Product Lines with Aspects: An Empirical Study on Design Stability. In Proc. of the 30th International Conference on Software Engineering (ICSE), pp. 261- 270. Leipzig, Germany.

41

Você também pode gostar