• Nenhum resultado encontrado

Avaliação da recuperação arquitetural de visões modulares através de técnicas de agrupamento

N/A
N/A
Protected

Academic year: 2021

Share "Avaliação da recuperação arquitetural de visões modulares através de técnicas de agrupamento"

Copied!
10
0
0

Texto

(1)

Avaliac¸˜ao da recuperac¸˜ao arquitetural de vis˜oes modulares

atrav´es de t´ecnicas de agrupamento

Douglas Eder Uno Silva1, Roberto Almeida Bittencourt1 1UEFS - Universidade Estadual de Feira de Santana

Av. Transnordestina, s/n, Feira de Santana, BA, Brasil, 44036-900.

douglas@ecomp.uefs.br, roberto@uefs.br

Abstract. Clustering algorithms have been proposed as a semi-automated tech-nique to recover architecture module views. However, few studies have tried to evaluate the quality of clusters generated by different algorithms. This paper presents a retrospective evaluation of two algorithms by analyzing consecutive weekly versions of four systems. To this end, we used two quality metrics: autho-ritativeness and stability. Preliminary results show that the k-means algorithm performs better than the algorithm based on design structure matrices for both metrics.

Resumo. Algoritmos de agrupamento foram propostos como t´ecnica quase-autom´atica de recuperac¸˜ao arquitetural de vis˜oes modulares. Entretanto, pou-cos trabalhos se debruc¸aram sobre a avaliac¸˜ao da qualidade dos agrupamen-tos gerados pelos diferentes algoritmos. Este artigo apresenta uma avaliac¸˜ao retrospectiva de dois algoritmos atrav´es da an´alise de vers˜oes semanais e con-secutivas de quatro sistemas. Para tanto foram usadas duas m´etricas de quali-dade: autoridade e estabilidade. Resultados preliminares mostram que o algo-ritmo k-means tem melhor desempenho que o de matrizes de estrutura de design em ambas as m´etricas.

1. Introduc¸˜ao

A maioria dos sistemas de software ´uteis precisam ser alterados ao longo do tempo, tanto para adicionar novas funcionalidades como para corrigir falhas. Muitas ve-zes, os sistemas legados podem ser modificados atrav´es de medidas emergenciais para manter as aplicac¸˜oes funcionando. Neste caso, ´e comum fazer a manutenc¸˜ao dos sistemas sem o entendimento completo da estrutura e organizac¸˜ao do software. Tais modificac¸˜oes, por menores que sejam, podem alterar o funcionamento de outros componentes do soft-ware, comprometendo o seu funcionamento, resultando em reaparecimento de bugs an-tigos ou na criac¸˜ao de novos. A estrutura do sistema pode deteriorar at´e o ponto onde a organizac¸˜ao do c´odigo-fonte se torne t˜ao ca´otica que o software seja radicalmente refor-mulado ou abandonado [1].

Por´em, segundo Wiggerts, reescrever todo o sistema, na maioria das vezes, n˜ao ´e uma soluc¸˜ao vi´avel [2]. Por essa raz˜ao, os engenheiros de software dependem de notac¸˜oes e ferramentas a fim de ajud´a-los com a complexidade dos grandes sistemas de software [1]. Dependendo do tamanho do sistema, a tarefa de recuperar sua estrutura original pode ser muito ´ardua. Por isso, v´arias abordagens e t´ecnicas vˆem sendo propostas na literatura para auxiliar na recuperac¸˜ao arquitetural de software [3].

(2)

A recuperac¸˜ao arquitetural possui um papel muito importante, uma vez que busca fornecer respostas para as perguntas dos arquitetos de software de como decompor um sistema em subsistemas menores e recuperar a estrutura original de um sistema legado ou at´e comparar os modelos documentados com o c´odigo-fonte para o aperfeic¸oamento do sistema.

Pollet et. al. [3] classificaram as t´ecnicas de recuperac¸˜ao arquitetural em trˆes: quase-manuais; semi-autom´aticas e quase-autom´aticas. Na t´ecnica quase-manual, o en-genheiro de software identifica manualmente os elementos arquiteturais com o aux´ılio de uma ferramenta. Na t´ecnica semi-autom´atica, o engenheiro de software instrui a ferra-menta com o intuito de identificar automaticamente elementos arquiteturais. Por fim, na t´ecnica quase-autom´atica, as ferramentas identificam os elementos arquiteturais, de forma autom´atica, atrav´es de algoritmos pr´oprios.

Algoritmos de agrupamento s˜ao t´ecnicas quase-autom´aticas que procuram identi-ficar grupos de entidades semelhantes a partir de suas caracter´ısticas. De maneira geral, pode-se dizer que o agrupamento de entidades em v´arios grupos, ou m´odulos, a partir de uma relac¸˜ao de semelhanc¸a entre eles ´e uma forma de modularizar o sistema. Estes agru-pamentos, formados por tais algoritmos de agrupamento, podem ser tamb´em chamados de clusters. Por´em, cada algoritmo aplicado produz diferentes resultados. De modo geral, estes resultados podem ser avaliados atrav´es de m´etricas, em especial, por m´etricas que revelem qu˜ao similares os resultados de um algoritmo s˜ao em relac¸˜ao a um agrupamento de referˆencia produzido manualmente por arquitetos de um dado sistema em an´alise. A Figura 1 ilustra um agrupamento resultante arbitr´ario.

Figura 1. Exemplo de agrupamento

Wu et. al. [4] extrairam vers˜oes mensais de alguns sistemas de c´odigo aberto e aplicaram diferentes algoritmos de agrupamento nessas vers˜oes, definindo as m´etricas de estabilidade, autoridade e extremidade. De maneira informal, a estabilidade indica que, quando um sistema sofre mudanc¸as, os agrupamentos gerados devem refletir em alto n´ıvel essas mudanc¸as. J´a autoridade avalia o quanto o agrupamento resultante se aproxima de um agrupamento criado por um arquiteto de software. Finalmente, a extremidade avalia se os agrupamentos resultantes est˜ao gerando clusters muito grandes ou muito pequenos. Neste trabalho n´os utilizamos as m´etricas de Wu et. al. [4], com excec¸˜ao da extremidade, pois entendemos que, dependendo do sistema, a gerac¸˜ao de clusters grandes ou pequenos pode ser uma caracter´ıstica intr´ınseca da aplicac¸˜ao.

(3)

Mitchell et. al. [6] utilizaram um algoritmo de agrupamento aplicado cem ve-zes a dez sistemas diferentes, a fim de avaliar quatro m´etricas de similaridade, isolando entidades especiais para melhorar a similaridade. Bittencourt e Guerrero [5] usaram as mesmas m´etricas de Wu et al. [4] para avaliar a recuperac¸˜ao arquitetural sobre a evoluc¸˜ao de diferentes vers˜oes de quatro sistemas. Entretanto, em vez de vers˜oes mensais, eles uti-lizaram releases como o intervalo entre vers˜oes e mediram autoridade a partir de vis˜oes modulares baseadas nos pacotes Java dos sistemas. Apesar de estes trabalhos avanc¸arem no processo de avaliac¸˜ao de t´ecnicas de agrupamento, eles n˜ao incluem as vis˜oes arquite-turais de referˆencia produzidas pelos pr´oprios desenvolvedores dos sistemas analisados. Este trabalho procura suprir esta lacuna, incluindo os modelos arquiteturais dispon´ıveis pelos desenvolvedores na avaliac¸˜ao dos dois algoritmos de agrupamento estudados.

2. Fundamentac¸˜ao te´orica

A arquitetura de software de um programa ou sistema de computac¸˜ao ´e a estru-tura ou estruestru-turas de um sistema, e compreende elementos de software, as propriedades vis´ıveis exteriormente dos referidos elementos, e as relac¸˜oes entre eles [7]. Partindo desse conceito amplo de arquitetura de software, Bass [7] afirma que assim tamb´em o neuro-logista, o ortopedista, o hematologista e o dermatoneuro-logista, todos tem diferentes vis˜oes ao analisar a estrutura do corpo humano, abordando a importˆancia da junc¸˜ao de todos os sistemas, formando a anatomia humana. Assim tamb´em s˜ao os sistemas de software, no qual, v´arias vis˜oes juntas caracterizam a arquitetura do software. A vis˜ao modular ´e uma destas vis˜oes, onde os componentes s˜ao elementos de c´odigo do sistema (e.g., arquivos, classes, pacotes, m´etodos) e as relac¸˜oes s˜ao as dependˆencias estruturais est´aticas entre estes elementos (e.g., uso, chamada, heranc¸a).

Em c´odigo-fonte, entidades e suas relac¸˜oes podem ser extra´ıdas atrav´es de t´ecnicas de an´alise est´atica. As entidades podem ser atributos, m´etodos, classes ou arquivos, con-tudo, essas entidades possuem dependˆencias que podem ser expressas de v´arias formas, como de uso, chamada ou heranc¸a. Wiggerts [2] aborda o uso de grafos compostos por camadas onde cada uma representaria um n´ıvel de abstrac¸˜ao do sistema, assim, a camada mais baixa constituiria no n´ıvel mais baixo de c´odigo, e, ao subir na hierarquia, subsis-temas seriam compostos por elementos de camadas mais abaixo. Desta maneira, a vis˜ao arquitetural modular se daria a partir de um grande grafo contendo v´arios subgrafos, e as arestas representariam as dependˆencias entres entre os n´os e os subgrafos.

Agrupar entidades de um sistema de software ´e organiz´a-las de tal forma que pos-sam formar grupos coesos e relativamente independentes. Por´em, esta tarefa n˜ao ´e simples e, por isso, ´e grande o desafio da engenharia reversa. Para resolvˆe-lo, a comunidade da ´area propˆos utilizar t´ecnicas bem-sucedidas na ´area de reconhecimento de padr˜oes, como algoritmos de agrupamento, para prover soluc¸˜oes quase-autom´aticas ao problema. 2.1. Algoritmos de agrupamento

Na literatura, existem diversos algoritmos de agrupamento. Inicialmente, foca-mos em usar dois deles: K-Means e o outro sobre matrizes de estrutura de design (DSM). A seguir, ser˜ao descritos brevemente o K-Means e o DSM.

(4)

2.1.1. K-Means

A vers˜ao utilizada do algoritmo K-Means foi uma vers˜ao mais eficiente proposta por Hartigan e Wong [11]. O objetivo do algoritmo K-Means ´e dividir M pontos em N dimens˜oes em K agrupamentos, minimizando a distˆancia intra-clusters e maximizando a distˆancia inter-clusters. O algoritmo precisa de uma matriz de M pontos com N di-mens˜oes e outra matriz com os centroides dos K clusters iniciais em N didi-mens˜oes [11]. A tarefa principal ´e particionar o sistema em K agrupamentos atrav´es de K centroides iniciais, representando os centros dos K agrupamentos. Desta forma, cada elemento do sistema ´e associado ao centroide da classe mais pr´oximo. Logo ap´os, os centroides tem seus valores atualizados a partir dos elementos que passaram a pertencer aos agrupamen-tos correspondentes. Esse processo se repete at´e algum crit´erio de parada seja satisfeito.

2.1.2. DSM

Uma matriz de estrutura de design (DSM) mostra a relac¸˜ao entre os componentes de um sistema num formato compacto, visual e analiticamente vantajoso [12]. Uma DSM ´e uma matriz quadrada com r´otulo de linha e coluna idˆenticos, onde cada linha e coluna representam um elemento do sistema. Cada marca, fora da diagonal principal, indica uma dependˆencia entre dois elementos. A figura 2 ilustra uma matriz de estrutura de design e a diagonal principal representando os elementos.

Figura 2. Matriz de Estrutura de Design (Adaptado de [12])

Segundo Browning [12], as DSMs s˜ao divididas em duas categorias: est´atica e baseada no tempo. DSMs est´aticas s˜ao geralmente utilizadas com algoritmos de agru-pamento. DSMs baseadas no tempo levam em considerac¸˜ao a ordenac¸˜ao das linhas e colunas, a partir de algoritmos de sequenciamento, fugindo do escopo desse trabalho.

Dentre as DSMs est´aticas, tem-se as baseada em pessoas e as baseadas em compo-nentes. Uma DSM baseada em pessoas ´e usada para modelar estruturas organizacionais a partir de pessoas, grupos e suas interac¸˜oes [12]. Uma DSM baseada em componen-tes documenta interac¸˜oes entre elementos em uma arquitetura de sistema. Uma DSM, assim como o K-Means, minimiza a distˆancia intra-clusters e maximiza a distˆancia inter-clusters. E, para isso, o algoritmo busca a DSM que otimize uma func¸˜ao objetivo.

(5)

2.2. M´etricas de avaliac¸˜ao de agrupamento

Tzerpos e Holt [8] definiram uma m´etrica de dessimilaridade entre duas partic¸˜oes arquiteturais chamada de MoJo, que ´e um c´alculo baseado nas operac¸˜oes para transformar uma decomposic¸˜ao na outra. MoJo permite basicamente duas operac¸˜oes: move e join [8]. Moveimplica retirar a entidade de um cluster, alocando em outro, e join implica unir dois clustersexistentes, decrementado o n´umero de clusters em uma unidade. Assim, o valor de MoJo entre duas partic¸˜oes A e B pode ser calculado atrav´es da seguinte equac¸˜ao:

M oJ o(A, B) = min(mno(A, B), mno(B, A))

onde mno(A, B) significa o n´umero m´ınimo de moves e joins para transformar a partic¸˜ao A em B.

Por´em, MoJo mede dessimilaridade. Para medir similaridade, define-se MoJoSim como:

M oJ oSim(A, B) = 1 −M oJ o(A, B) n Onde n ´e o n´umero de entidades a serem agrupadas.

A partir de uma medida de similaridade como MoJoSim, ´e poss´ıvel definir m´etricas de avaliac¸˜ao dos agrupamentos gerados pelos algoritmos. Como mencionado na sec¸˜ao 1, Wu et al. [4] definiram trˆes m´etricas de avaliac¸˜ao de decomposic¸˜oes arquiteturais. Neste trabalho, n´os usamos apenas as m´etricas de autoridade e estabilidade, ambas baseadas em MoJoSim.

Uma heur´ıstica para uma medida de autoridade sugere que os agrupamentos ge-rados por um algoritmo devem ser similares a uma decomposic¸˜ao feita por arquitetos do sistema. Assim, pode-se definir autoridade, segundo Bittencourt e Guerrero [5] como: M ojoSim(C, CA), onde C ´e uma partic¸˜ao gerada por um algoritmo de agrupamento e CA ´e uma partic¸˜ao gerada pelos arquitetos do sistema.

Uma outra heur´ıstica sugere que uma medida de estabilidade deve variar propor-cionalmente `as mudanc¸as que s˜ao feitas no sistema alvo. Logo, pequenas mudanc¸as de c´odigo resultam em pequenas mudanc¸as no agrupamento e grandes mudanc¸as de c´odigo resultam em grandes mudanc¸as no agrupamento. Assim, a estabilidade pode ser definida, segundo Bittencourt e Guerrero [5], como: M oJ oSim(Ai, Ai+1), onde Ai representa o agrupamento para a vers˜ao i e Ai+1 representa o agrupamento para a vers˜ao seguinte, portanto, sempre duas vers˜oes consecutivas s˜ao analisadas.

3. Avaliac¸˜ao da recuperac¸˜ao arquitetural de vis˜oes modulares

´

E de relevˆancia para a comunidade acadˆemica poder medir a efic´acia dos algo-ritmos de agrupamento para a recuperac¸˜ao arquitetural de software. O uso das m´etricas definidas acima permite este tipo de avaliac¸˜ao.

Trabalhos pr´evios analisaram seus agrupamentos resultantes atrav´es de m´etricas de avaliac¸˜ao. Wu et. al. [4] analisaram vers˜oes mensais com seis algoritmos, usando as vis˜oes arquiteturais extra´ıdas a partir da estrutura de diret´orios. Bittencourt e Guerrero [5] analisaram vers˜oes usando as vis˜oes arquiteturais retiradas da hierarquia de pacotes Java. Mitchell e Mancoridis [6] analisaram um algoritmo de agrupamento a partir de v´arias

(6)

m´etricas de similaridade. Por´em, esses trabalhos n˜ao usaram vis˜oes arquiteturais reais providas por desenvolvedores.

Neste trabalho s˜ao avaliados os algoritmos DSM e K-Means usando vis˜oes arqui-teturais fornecidas pelos desenvolvedores dos sistemas alvo, a partir de vers˜oes semanais extra´ıdas dos reposit´orios de quatros sistemas.

3.1. Ferramental

Todas as rotinas de extrac¸˜ao, agrupamento e m´etricas de similaridade est˜ao im-plementados em um conjunto de aplicativos chamado Design Suite [10], viabilizando a realizac¸˜ao desta an´alise.

Para obtenc¸˜ao de resultados, foi necess´ario realizar algumas modificac¸˜oes na fer-ramenta. Apesar das funcionalidades essenciais existirem, scripts foram criados com o intuito de automatizar mais as tarefas. A ferramenta implementa m´etricas como MojoSim. Por´em, foi necess´ario implementar as m´etricas para calcular autoridade e estabilidade, al´em de automatizar o processo ao longo de um conjunto de vers˜oes semanais.

4. Metodologia

4.1. Design Experimental

Figura 3. Design experimental do estudo

A figura 3 ilustra o design experimental deste trabalho. Primeiramente, vers˜oes sucessivas e semanais foram extra´ıdas de reposit´orios, aqui chamadas de V1 at´e Vn. Em seguida, essas vers˜oes foram compiladas para que a Design Suite, possa extrair os grafos de design das vers˜oes dos sistemas. Com os grafos das vers˜oes, aplicamos os algoritmos de agrupamento K-Means e Matrizes de Estrutura de Design (DSM), gerando agrupamen-tos (ou clusters), aqui chamados de A1 at´e An. Finalmente, empregamos as m´etricas de autoridade e estabilidade nessas vers˜oes para cada sistema, geramos alguns gr´aficos re-sultantes dessas m´etricas e os analisamos. Como visto na sec¸˜ao 2, o algoritmo K-means

(7)

precisa do n´umero de clusters como entrada. Por isso, decidimos utilizar 10% da quanti-dade de classes dos sistemas alvo como padr˜ao.

4.2. Sujeitos

Definindo como o estudo seria realizado, foram escolhidos quatro sistemas reais e de c´odigo aberto para facilitar a reproducibilidade deste estudo. Chamaremos estas aplicac¸˜oes de sistemas alvo. S˜ao eles:

• Lucene: Biblioteca de recuperac¸˜ao de informac¸˜ao totalmente escrita em Java.1 • SweetHome3D: aplicativo de design de interiores que permite a colocac¸˜ao de

m´oveis em plantas 2D com visualizac¸˜ao 3D.2

• Ant: Ferramenta popular de construc¸˜ao autom´atica baseada em Java.3 • Argouml: Ferramenta de modelagem UML tamb´em de c´odigo aberto. 4

Com os sistemas alvo definidos, foi necess´ario adquirir as vis˜oes arquiteturais dos desenvolvedores. Para tanto, usamos as vis˜oes arquiteturais disponibilizadas por Bitten-court [9]. Desta forma, a vis˜ao arquitetural est´a definida e utilizada para a m´etrica de autoridade.

4.3. Extrac¸˜ao de m´etricas de vers˜oes

Esse estudo tem como base a extrac¸˜ao de vers˜oes semanais de quatro sistemas de softwarereais ao longo de um ano (1º passo), totalizando cinquenta e duas vers˜oes para cada sistema. Ap´os extrair as vers˜oes foi necess´ario compilar cada uma (2º passo) para que, atrav´es do Design Suite [10], obtiv´essemos os grafos representando cada vers˜ao.

Com os grafos dispon´ıveis, aplicamos os algoritmos de agrupamento K-Means e DSM em todas as vers˜oes dos quatro sistemas alvo (3º passo). Com os grafos gerados pelos dois agrupamentos, calculamos as m´etricas de autoridade (4º passo) e estabilidade (5º passo) e, por fim, analisamos os resultados obtidos(6º passo).

Para cada vers˜ao de um algoritmo de agrupamento, uma vers˜ao correspondente dos desenvolvedores est´a dispon´ıvel para a extrac¸˜ao do valor de similaridade, estabele-cendo a m´etrica de autoridade. Dessa forma, foram produzidos 52 valores entre 0 e 1, constatando que quanto maior o valor, maior a similaridade. Por´em somente a autoridade pode n˜ao ser suficiente para avaliar de forma completa um algoritmo de agrupamento. Portanto, cada vers˜ao gerada pelo algoritmo foi comparada com a pr´oxima vers˜ao gerada do mesmo algoritmo. Assim, foram gerados 51 valores de estabilidade entre 0 e 1.

5. Resultados obtidos

Esta sec¸˜ao trata dos resultados obtidos at´e ent˜ao durante este estudo. A figura 4 apresenta os resultados da autoridade do Argouml com os dois algoritmos.

1http://lucene.apache.org/

2http://www.sweethome3d.com/index.jsp 3http://ant.apache.org/

(8)

(a) Autoridade do K-Means para o Argouml (b) Autoridade do DSM para o Argouml

Figura 4. Medidas de autoridade para dois sistemas

A figura 5 apresenta os resultados da estabilidade do sistema Lucene com os dois algoritmos.

(a) Estabilidade do K-Means para o Lucene (b) Estabilidade do DSM para o Lucene

Figura 5. Medidas de estabilidade para dois sistemas

6. Discuss˜ao

Observou-se que o algoritmo de agrupamento K-Means apresentou melhores re-sultados de autoridade com relac¸˜ao ao DSM. Como os valores de similaridade no K-Means s˜ao mais pr´oximos de 1, isso mostra que os agrupamentos gerados s˜ao mais fi´eis aos mo-delos correspondentes disponibilizados pelos desenvolvedores. Dessa forma, a m´etrica de autoridade ´e melhor satisfeita pelo K-Means.

Nota-se que a estabilidade do agrupamento DSM apresentou tamb´em um desem-penho inferior com relac¸˜ao ao K-Means devido a dois fatores. Primeiro, os valores de estabilidade com K-Means s˜ao mais pr´oximos de 1 e, segundo, a variac¸˜ao entre uma vers˜ao e outra no K-Means ´e menor, ao contr´ario do DSM. Outra observac¸˜ao importante ´e notar que o agrupamento K-Means resulta em muitos valores praticamente constantes, o que, quando olhado mais de perto, pode apontar resultados ruins, falta de adaptabilidade. De todo modo, esta hip´otese merece ser melhor averiguada.

V´arios trabalhos realizados, como o de Bittencourt e Guerrero [5], Mitchell e Mancoridis [6] e Wu et. al. [4] avaliaram a similaridade dos agrupamentos a partir do MoJoSim. Isso ocorre devido, principalmente, a sua simplicidade. Por´em, esta medida de

(9)

similaridade, como n˜ao considera as arestas entre as entidades, ao realizar uma operac¸˜ao de move ou join, decomposic¸˜oes arquiteturais razoavelmente diferentes resultam em va-lores altos de MoJoSim. Apesar de necessitar de uma quantidade baixa de operac¸˜oes, uma decomposic¸˜ao pode ser muito diferente da outra. Por isso, s˜ao necess´ario estudos adicionais com outras m´etricas de similaridade, como EdgeSim e MeCl, apresentados por Mitchell e Mancoridis [6].

7. Conclus˜oes e trabalhos futuros

Este trabalho avaliou vers˜oes semanais e consecutivas de quatro sistemas e com-parou dois algoritmos de agrupamento. Duas m´etricas de qualidade chamadas de autori-dade e estabiliautori-dade foram utilizadas, baseadas na m´etrica de similariautori-dade MoJoSim.

At´e o momento, a partir dos dados experimentais, pode-se concluir que o K-Means possui um melhor desempenho para gerac¸˜ao de agrupamentos mais corretos na relac¸˜ao com o DSM, tanto para o crit´erio de estabilidade, quanto para autoridade. Entretanto, novos estudos com outras m´etricas avaliac¸˜ao devem ser realizados.

Num desenvolvimento posterior nessa linha de estudo, pretende-se adicionar os algoritmos aglomerativos e outras m´etricas de similaridade, como o EdgeSim e o MeCl apresentados por Mitchell e Mancoridis [6]. Essas duas m´etricas avaliam outras formas de se identificar similaridade entre agrupamentos e, assim, melhor avaliar os algoritmos de agrupamento.

In´umeros trabalhos usando algoritmos de agrupamento para recuperac¸˜ao arqui-tetural j´a foram produzidos pela comunidade acadˆemica. Entretanto, faz-se necess´aria uma an´alise mais apurada destas t´ecnicas atrav´es de trabalhos de avaliac¸˜ao experimen-tal. Esse trabalho pretende contribuir para a ´area de recuperac¸˜ao arquitetural, atrav´es da avaliac¸˜ao de t´ecnicas de agrupamento de software, caracterizando melhor a qualidade das t´ecnicas de agrupamento. Este trabalho ´e um passo nesta direc¸˜ao e, com os trabalhos fu-turos planejados, pretende-se avanc¸ar o conhecimento sobre o potencial de algoritmos de agrupamento para recuperac¸˜ao arquitetural.

8. Agradecimentos

Este trabalho ´e apoiado pela FAPESB - Fundac¸˜ao de Amparo `a Pesquisa do Es-tado da Bahia.

Referˆencias

[1] Mancoridis, S.; Mitchell, B.S.; Rorres, C.; Chen, Y.; Gansner, E.R.; , ”Using automatic clustering to produce high-level system organizations of source code,”Program Comprehension, 1998. IWPC ’98. Proceedings., 6th International Workshop on, vol., no., pp.45-52, 24-26 Jun 1998.

[2] Wiggerts, T.A.; , ”Using clustering algorithms in legacy systems remodulariza-tion,”Reverse Engineering, 1997. Proceedings of the Fourth Working Conference on, vol., no., pp.33-43, 6-8 Oct 1997.

[3] Pollet, Damien; Ducasse, Stephane; Poyet, Loic; Alloui, Ilham; Cimpan, Sorana; Verjus, Herve; , ”Towards A Process-Oriented Software Architecture Reconstruc-tion Taxonomy,”Software Maintenance and Reengineering, 2007. CSMR ’07. 11th European Conference on, vol., no., pp.137-148, 21-23 March 2007.

(10)

[4] Wu, J.; Hassan, A.E.; Holt, R.C.; , ”Comparison of clustering algorithms in the context of software evolution,”Software Maintenance, 2005. ICSM’05. Proceedings of the 21st IEEE International Conference on, vol., no., pp. 525- 535, 26-29 Sept. 2005.

[5] Bittencourt, R.A.; Guerrero, D.; , ”Comparison of Graph Clustering Algorithms for Recovering Software Architecture Module Views,”Software Maintenance and Reengineering, 2009. CSMR ’09. 13th European Conference on, vol., no., pp.251-254, 24-27 March 2009.

[6] Mitchell, B.S.; Mancoridis, S.; , ”Comparing the decompositions produced by soft-ware clustering algorithms using similarity measurements,”Softsoft-ware Maintenance, 2001. Proceedings. IEEE International Conference on, vol., no., pp.744-753, 2001. [7] Bass, Len.; Clements, Paul,; Kazman, Rick. Software architecture in practice. 2. ed

Boston: Addison-Wesley, c2003.

[8] Tzerpos, V.; Holt, R.C.; , ”MoJo: a distance metric for software clusterings,”Reverse Engineering, 1999. Proceedings. Sixth Working Conference on , vol., no., pp.187-193, 6-8 Oct 1999 doi: 10.1109/WCRE.1999.806959.

[9] Bittencourt, R. A. Habilitando a Checagem Est´atica de Conformidade Arquitetural de Software em Evoluc¸˜ao. 2012. 208 f. Tese (Doutorado em Ciˆencia da Computac¸˜ao) - Centro de Engenharia El´etrica e Inform´atica, Universidade Federal de Campina Grande, Campina Grande. 2012.

[10] R. A. Bittencourt, J. F. Dam´asio, G. J. S. Santos, A. T. de Almeida Filho, J. M. F. da N´obrega, J. C. A.de Figueiredo, and D. D. S. Guerrero. Design suite: Towards an open scientific investigation environment for software architecture recovery. In SBQS 2009: Anais do VIII Simp´osio Brasileiro de Qualidade de Software, 2009. [11] Hartigan J. A.; Wong M. A.; , “A K-Means Clustering Algorithm,” Applied

Statis-tics, 1979. Blackwell Publishing for the Royal Statistical Society on , vol. 28, no., 1, pp.100-108.

[12] Browning, T.R.; , ”Applying the design structure matrix to system decomposi-tion and integradecomposi-tion problems: a review and new direcdecomposi-tions,”Engineering Ma-nagement, IEEE Transactions on , vol.48, no.3, pp.292-306, Aug 2001 doi: 10.1109/17.946528.

[13] Anquetil, N.; Lethbridge, T.C.; , ”Experiments with clustering as a software remo-dularization method ,”Reverse Engineering, 1999. Proceedings. Sixth Working Con-ference on , vol., no., pp.235-255, 6-8 Oct 1999 doi: 10.1109/WCRE.1999.806964.

Referências

Documentos relacionados

Para disciplinar o processo de desenvolvimento, a Engenharia de Usabilidade, também conceituada e descrita neste capítulo, descreve os métodos estruturados, a

A Lei nº 2/2007 de 15 de janeiro, na alínea c) do Artigo 10º e Artigo 15º consagram que constitui receita do Município o produto da cobrança das taxas

3 O presente artigo tem como objetivo expor as melhorias nas praticas e ferramentas de recrutamento e seleção, visando explorar o capital intelectual para

Mediante o impacto do paciente com o ambiente do centro cirúrgico, a equipe de enfermagem deve estar voltada para o aspecto humano do atendimento, centrando suas

grandiflora por estaquia, foram avaliados dois ambientes (viveiro e ambiente / condições de ocorrência natural), assim como o efeito do hormônio de enraizamento, o ácido

Verificada a efetividade da proposta, a Comissão de Licitações declarou vencedor o licitante Francisco Souza Lima Helm, sendo o total do item 14 licitado o valor de

A participação foi observada durante todas as fases do roadmap (Alinhamento, Prova de Conceito, Piloto e Expansão), promovendo a utilização do sistema implementado e a

Effects of the bite splint 15-day treatment termination in patients with temporomandibular disorder with a clinical history of sleep bruxism: a longitudinal single-cohort