Você está na página 1de 3

2010 VII Conferncia Internacional sobre a Qualidade da Tecnologia da Informao e Comunicaes

Estudar o efeito de refatoraes: uma Perspectiva de metricas complexas.


Quinten David Soetens e Serge Demeyer Departamento de Matemtica e Cincias da Computao Universidade de Anturpia- Blgica Abstract Refactoring amplamente reconhecido como uma forma de melhorar a estrutura interna de um sistema de software a fim de assegurar a sua manuteno a longo prazo. Conseqentemente, projetos de software que adotam prticas de refatorao deve ver redues no complexidade da sua base de cdigo. Ns avaliamos essa hiptese em uma fonte de sistema aberto, ou seja PMD, um cdigo-fonte Java analisador e descobriu que os perodos de refatorizao no afetam a complexidade ciclomtica. Este artigo investiga este fenmeno intuitivo atravs de uma anlise detalhada de manipulaes do cdigo fonte real aplicado sobre o sistema em estudo.

Introduo J no incio dos anos 70, Manny Lehman e Les Belady percebida a natureza catica inerente ao ciclo de vida de qualquer vida real de sistema de software. Com base em seu trabalho com a IBM, eles formularam as "leis da evoluo do software" as duas primeiras dessas leis se tornaram grampos em muitos livros de engenharia softwares. Mudana de continuar: Um programa que usado em um mundo real ambiente deve mudar, ou tornam-se progressivamente menos til nesse ambiente. Crescente de complexidade: Como um programa evolui, torna-se recursos mais complexos, e extras so necessrias para preservar e simplificar a sua estrutura. A lei da "mudana contnua" fornece uma vista sobre o ciclo de vida de um sistema de software, basicamente, afirmando que um sistema de software deve se adaptar ao seu ambiente, a fim de sobreviver.

A lei da "complexidade crescente", por outro lado assemelha-se a lei da entropia em termodinmica, expressando que um sistema se esfora em direo a um estado mximo de desordem menos energia extra adicionado. Refatorizao amplamente reconhecido como um dos principais tcnicas para moderar os efeitos da "complexidade crescente". A idia-chave

a variveis de instncia redistribuir e mtodos em toda a hierarquia de classe, a fim de simplificar o estrutura de um sistema de software ao mesmo tempo preservando o comportamento do sistema e, consequentemente, preparar o software para futuras extenses. Se bem aplicados, refatorao dito para
melhorar o design de software, tornando o software mais fcil de se compreender, ajudando a encontrar bugs, e ajudar a programar mais rpido. Como tal, refatorao tem recebido ateno generalizada dentro dos crculos acadmicos e industriais, e mencionado como uma prtica recomendada no corpo de conhecimento de engenharia de software (SWEBOK). Dada a lei da "complexidade crescente", e sabendo que a refatorao feito para simplificar a estrutura de um software sistema, de se supor que projetos de software que adotam prticas de refatorao deve ver redues na complexidade de sua base de cdigo. Isto , aps um perodo de refatorao seria esperar cair na complexidade total de um sistema de software. Na verdade, Demeyer et. al. ter usado a diminuir as medidas de tamanho para a identificao de refactorings na histria de um projeto [5], por isso provvel que cai nas medies complexidade so indicaes da atividade de refatorao tambm. O inverso no verdade no entanto. Refactorings-mais muitos nomeadamente os refactorings-move no afetar a complexidade, mas apenas mant-lo mesmo nvel. No entanto, como refactorings atmicos so combinadas em cadeias de mais complexas, ainda esperamos uma reduo geral complexidade. Este artigo relata um estudo de caso-piloto para testar a hiptese refactorings que de fato reduzir a complexidade. para medir a complexidade de um programa, optou-se pela bem conhecida complexidade ciclomtica de McCabe, que mede a complexidade da lgica de deciso de um pedao de cdigo. baseado em uma anlise matemtica, primeiro deduzir o esperado efeito de uma refatorao dada a complexidade ciclomtica mtrica, uma de aumento - diminuio - equalize (Seo II). Em seguida, descrevemos o set-up experimental, onde analisamos revises subsequentes de um sistema de cdigo aberto, ou seja PMD, um analisador de cdigo-fonte Java para buscar revises do sistema em que a complexidade diminui. Como um crossvalidation, compararmos estas revises contra os marcados nas mensagens de commit-como refactorings (Seo III). Contamos com as

revises onde os efeitos da medida refactorings correspondeu ao efeito documentado e onde no o fez. Alm disso, ns interpretamos os jogos e os desajustes fornecendo exemplos concretos da refactorings como ns observou-los neste caso em particular (Seo IV). finalmente,
discute-se a ameaas validade de trabalho (Seo V), relacionados (Seo VI), trabalho e futuro (Seo VII), antes de concluir o papel com um resumo dos nossos resultados (Seo VIII).