Use este identificador para citar ou linkar para este item: http://hdl.handle.net/1843/ESBF-A9UPEY
Tipo: Tese de Doutorado
Título: Co-change clustering
Autor(es): Luciana Lourdes Silva
Primeiro Orientador: Marco Tulio de Oliveira Valente
Primeiro Coorientador: Marcelo de Almeida Maia
Primeiro membro da banca : Marcelo de Almeida Maia
Segundo membro da banca: Eduardo Magno Lages Figueiredo
Terceiro membro da banca: Humberto Torres Marques Neto
Quarto membro da banca: Leonardo Gresta Paulino Murta
Quinto membro da banca: 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
Idioma: Inglês
Editor: Universidade Federal de Minas Gerais
Sigla da Instituição: UFMG
Tipo de Acesso: Acesso Aberto
URI: http://hdl.handle.net/1843/ESBF-A9UPEY
Data do documento: 23-Nov-2015
Aparece nas coleções:Teses de Doutorado

Arquivos associados a este item:
Arquivo Descrição TamanhoFormato 
lucianalourdessilva.pdf5.4 MBAdobe PDFVisualizar/Abrir


Os itens no repositório estão protegidos por copyright, com todos os direitos reservados, salvo quando é indicado o contrário.