Co-change clustering

Carregando...
Imagem de Miniatura

Título da Revista

ISSN da Revista

Título de Volume

Editor

Universidade Federal de Minas Gerais

Descrição

Tipo

Tese de doutorado

Título alternativo

Membros da banca

Marcelo de Almeida Maia
Eduardo Magno Lages Figueiredo
Humberto Torres Marques Neto
Leonardo Gresta Paulino Murta
Marco Aurelio Gerosa

Resumo

Modularidade é um conceito chave em projeto de sistemas de software complexos. No entanto, decomposição modular ainda é um desafio após décadas de pesquisas para prover novas formas de modularização de sistemas de software. Uma razão é que modularização pode não ser vista com uma única perspectiva devido às múltiplas facetas que um software tem que lidar. Pesquisas em linguagens de programação ainda tentam definir novos mecanismos de modularização que sejam capazes de lidar com essas diferentes facetas, tal como aspectos e features. Adicionalmente, a estrutura modular tradicional definida pela hierarquia de pacotes sofre do problema de decomposição dominante e sabe-se que alternativas de modularização são necessárias para aumentar a produtividade dos desenvolvedores. Para contribuir com uma solução para esse problema, nesta tese nós propusemos um visão modular alternativa para compreender e avaliar modularidade em pacotes baseada em co-change clusters, que são arquivos de código inter-relacionados considerando relações de co-change. Os co-change clusters são classificados em seis padrões considerando suas projeções sobre a estrutura de pacotes: Encapsulated, Well-Confined, Crosscutting, Black-Sheep, Octopus e Squid. A abordagem foi avaliada em três estágios diferentes: (i) uma análise quantitativa em três sistemas do mundo real, (ii) uma análise qualitativa em seis sistemas, implementados em duas linguagens, para revelar a percepção dos desenvolvedores em relação aos co-change clusters, (iii) um estudo em larga escala em uma base de 133 projetos hospedados no GitHub implementados em seis linguagens de programação. Por meio dessas análises pode-se concluir que Encapsulated Clusters são geralmente vistos como bons módulos e Crosscutting Clusters tendem a ter associação com anomalias de projeto quando eles representam interesses entrelaçados. Octopus Clusters tem uma associação estatística significante com efeito em cascata (ripple effect), que de acordo com desenvolvedores, não são fáceis de implementar de maneira encapsulada.

Abstract

Modularity is a key concept to embrace when designing complex software systems. Nonetheless, modular decomposition is still a challenge after decades of research on new techniques for software modularization. One reason is that modularization might not be viewed with single lens due to the multiple facets that a software must dealwith. Research in programming languages still tries to define new modularization mechanisms to deal with these different facets, such as aspects and features. Additionally, the traditional modular structure defined by the package hierarchy suffers from the dominant decomposition problem and it is widely accepted that alternative formsof modularization are necessary to increase developers productivity. In order to contribute with a solution to this problem, in this thesis we propose a novel technique to assess package modularity based on co-change clusters, which are highly inter-related source code files considering co-change relations. The co-change clusters are classifiedin six patterns regarding their projection to the package structure: Encapsulated, Well- Confined, Crosscutting, Black-Sheep, Octopus, and Squid. We evaluated our technique in three different fronts: (i) a quantitative analysis on four real-world systems, (ii) a qualitative analysis on six systems implemented in two languages to reveal developersperception of co-change clusters, (iii) a large scale study in a corpus of 133 GitHub projects implemented in six programming languages. We concluded that Encapsulated Clusters are often viewed as healthy designs and that Crosscutting Clusters tend to be associated to design anomalies when they represent tangled concerns. Octopus Clusters have a significant statistical association with ripple effect but they are normally associated to expected class distributions, which are not easy to implement in an encapsulated way.

Assunto

Computação, Engenharia de software, Programação modular

Palavras-chave

Modularidade, Sistemas de controle de versões, Grafos de co-mudança, Mudança de código, Conjuntos de co-mudança

Citação

Departamento

Curso

Endereço externo

Avaliação

Revisão

Suplementado Por

Referenciado Por