Please use this identifier to cite or link to this item: http://hdl.handle.net/1843/ESBF-A9UPEY
Type: Tese de Doutorado
Title: Co-change clustering
Authors: Luciana Lourdes Silva
First Advisor: Marco Tulio de Oliveira Valente
First Co-advisor: Marcelo de Almeida Maia
First Referee: Marcelo de Almeida Maia
Second Referee: Eduardo Magno Lages Figueiredo
Third Referee: Humberto Torres Marques Neto
metadata.dc.contributor.referee4: Leonardo Gresta Paulino Murta
metadata.dc.contributor.referee5: Marco Aurelio Gerosa
Abstract: 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.
Subject: Computação
Engenharia de software
Programação modular
language: Inglês
Publisher: Universidade Federal de Minas Gerais
Publisher Initials: UFMG
Rights: Acesso Aberto
URI: http://hdl.handle.net/1843/ESBF-A9UPEY
Issue Date: 23-Nov-2015
Appears in Collections:Teses de Doutorado

Files in This Item:
File Description SizeFormat 
lucianalourdessilva.pdf5.4 MBAdobe PDFView/Open


Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.