Co-change clustering

dc.creatorLuciana Lourdes Silva
dc.date.accessioned2019-08-12T02:26:23Z
dc.date.accessioned2025-09-09T00:03:32Z
dc.date.available2019-08-12T02:26:23Z
dc.date.issued2015-11-23
dc.description.abstractModularity 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.
dc.identifier.urihttps://hdl.handle.net/1843/ESBF-A9UPEY
dc.languageInglês
dc.publisherUniversidade Federal de Minas Gerais
dc.rightsAcesso Aberto
dc.subjectComputação
dc.subjectEngenharia de software
dc.subjectProgramação modular
dc.subject.otherModularidade
dc.subject.otherSistemas de controle de versões
dc.subject.otherGrafos de co-mudança
dc.subject.otherMudança de código
dc.subject.otherConjuntos de co-mudança
dc.titleCo-change clustering
dc.typeTese de doutorado
local.contributor.advisor-co1Marcelo de Almeida Maia
local.contributor.advisor1Marco Tulio de Oliveira Valente
local.contributor.referee1Marcelo de Almeida Maia
local.contributor.referee1Eduardo Magno Lages Figueiredo
local.contributor.referee1Humberto Torres Marques Neto
local.contributor.referee1Leonardo Gresta Paulino Murta
local.contributor.referee1Marco Aurelio Gerosa
local.description.resumoModularidade é 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.
local.publisher.initialsUFMG

Arquivos

Pacote original

Agora exibindo 1 - 1 de 1
Carregando...
Imagem de Miniatura
Nome:
lucianalourdessilva.pdf
Tamanho:
5.28 MB
Formato:
Adobe Portable Document Format