Please use this identifier to cite or link to this item: http://hdl.handle.net/1843/ESBF-A9UPEY
Full metadata record
DC FieldValueLanguage
dc.contributor.advisor1Marco Tulio de Oliveira Valentept_BR
dc.contributor.advisor-co1Marcelo de Almeida Maiapt_BR
dc.contributor.referee1Marcelo de Almeida Maiapt_BR
dc.contributor.referee2Eduardo Magno Lages Figueiredopt_BR
dc.contributor.referee3Humberto Torres Marques Netopt_BR
dc.contributor.referee4Leonardo Gresta Paulino Murtapt_BR
dc.contributor.referee5Marco Aurelio Gerosapt_BR
dc.creatorLuciana Lourdes Silvapt_BR
dc.date.accessioned2019-08-12T02:26:23Z-
dc.date.available2019-08-12T02:26:23Z-
dc.date.issued2015-11-23pt_BR
dc.identifier.urihttp://hdl.handle.net/1843/ESBF-A9UPEY-
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.pt_BR
dc.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.pt_BR
dc.languageInglêspt_BR
dc.publisherUniversidade Federal de Minas Geraispt_BR
dc.publisher.initialsUFMGpt_BR
dc.rightsAcesso Abertopt_BR
dc.subjectModularidadept_BR
dc.subjectSistemas de controle de versõespt_BR
dc.subjectGrafos de co-mudançapt_BR
dc.subjectMudança de códigopt_BR
dc.subjectConjuntos de co-mudançapt_BR
dc.subject.otherComputaçãopt_BR
dc.subject.otherEngenharia de softwarept_BR
dc.subject.otherProgramação modularpt_BR
dc.titleCo-change clusteringpt_BR
dc.typeTese de Doutoradopt_BR
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.