Spelling suggestions: "subject:"5oftware repository"" "subject:"1software repository""
1 |
Mining energy – aware commits: exploring changes performed by open – source developers to impact the energy consumption of software systemsMOURA, Irineu Martins de Lima 24 August 2015 (has links)
Submitted by Irene Nascimento (irene.kessia@ufpe.br) on 2016-09-06T17:39:17Z
No. of bitstreams: 2
license_rdf: 1232 bytes, checksum: 66e71c371cc565284e70f40736c94386 (MD5)
DissertacaoDeMestrado-IrineuMoura-imlm2.pdf: 1240260 bytes, checksum: 4bbaf8839fa3d5be7fca586e1f290f68 (MD5) / Made available in DSpace on 2016-09-06T17:39:17Z (GMT). No. of bitstreams: 2
license_rdf: 1232 bytes, checksum: 66e71c371cc565284e70f40736c94386 (MD5)
DissertacaoDeMestrado-IrineuMoura-imlm2.pdf: 1240260 bytes, checksum: 4bbaf8839fa3d5be7fca586e1f290f68 (MD5)
Previous issue date: 2015-08-24 / Energy consumption has been gaining traction as yet another major concern that mainstream software developers must be aware of. It used to be mainly the focus of hardware designers and low level software developers, e.g., device driver developers. Nowadays, however, mostly due to the ubiquity of battery-powered devices, any developer in the software stack must be prepared to deal with this concern. Thus, to be able to properly assist them and to provide guidance in future research it is crucial to understand how they have been handling this matter. This thesis aims to aid in this regard by exploring a set of software changes, i.e., commits, to obtain insights into actual solutions implemented by open source developers when dealing with energy consumption. We use as our main data source GITHUB, a source code hosting platform for collaborative development, and extract a sample of the available commits across several different projects. From this sample, we manually curate a set of energy-aware commits, that is, any commit that refers to a source code change where developers intentionally modify, or aim to modify, the energy consumption (or power dissipation) of a system or make it easier for other developers or end users to do so. We then apply a qualitative research method to extract recurring patterns of information and to group the commits that intend to save energy into categories. A small survey was also conducted to assess the quality of our analysis and to further expand our understanding of the changes. During our analysis we also cover different aspects of the commits. We observe that the majority of the changes (~47%) still target lower levels of the software stack, i.e., kernels, drivers and OS-related services, while application level changes encompass ~34% of them. We notice that developers may not always be certain of the energy consumption impact of their changes before actually performing them, among our dataset we identify several instances (~12%) of commits where developers show signs of uncertainty towards their change’s effectiveness. We also highlight the possible software quality attributes that may be favored over energy efficiency. Notably, we spot a few instances of commits where developers performed a change that would negatively impact the energy consumption of the system in order to fix a bug. It is also worth noting, we draw attention to a specific group of changes which we call "energy-aware interfaces". They add tuning knobs that can be used by developers or end users to control the energy consumption of an underlying component. / O controle do consumo de energia tem ganhado cada vez mais atenção como outro tipo de interesse ao qual desenvolvedores de software devem estar atentos. Antes esse tipo de preocupação era principalmente o foco de designers de hardware e desenvolvedores de baixonível, como por exemplo, desenvolvedores de drivers de dispositivos. Entretanto, devido à ubiquidade de dispositivos dependentes de bateria, qualquer desenvolvedor deve estar preparado para enfrentar essa questão. Logo, entender como eles estão lidando com o consumo de energia é crucial para estarmos aptos a auxiliá-los e para prover uma direção adequada para pesquisas futuras. Com o intuito de ajudar nesse sentido, essa tese explora um conjunto de mudanças de software, isto é, commits, para entender melhor sobre os tipos de soluções que são implementadas de fato por desenvolvedores de código aberto quando os mesmos devem lidar com o consumo de energia. Nós utilizamos o GITHUB como nossa principal fonte de dados, uma plataforma de hospedagem de código fonte para o desenvolvimento colaborativo de projetos de software, e extraímos uma amostra dos commits disponíveis entre vários projetos diferentes. Dessa amostra, nós manualmente selecionamos um conjunto de commits "energy-aware", isto é, qualquer commit que se refere a uma modificação de código onde o desenvolvedor propositalmente modifica, ou intenciona modificar, o consumo de energia (ou a dissipação de potência) de um sistema ou torna mais fácil para que outros desenvolvedores ou usuários finais possam fazê-lo. Nós então aplicamos sobre esses commits um método de análise qualitativa para extrair padrões recorrentes de informação e para agrupar os commits que intencionam reduzir o consumo energético em categorias. Uma pequena pesquisa também foi realizada com os autores dos commits para avaliar a qualidade da nossa análise e para expandir nosso entendimento sobre as modificações. Nós também consideramos diferentes aspectos dos commits durante a análise. Observamos que a maioria das modificações (~47%) ainda se aplicam às mais baixas camadas de software, isto é, kernels e drivers, enquanto que mudanças a nível de aplicação compreendem ~34% do nosso conjunto de dados. Nós notamos que os desenvolvedores nem sempre estão seguros do impacto de suas modificações no consumo de energia antes de realizá-las, em nosso conjunto de dados identificamos várias instâncias de modificações (~12%) em que os desenvolvedores demonstram sinais de incerteza em relação à eficácia de suas mudanças. Também apontamos alguns dos possíveis atributos de qualidade de software que são favorecidos em detrimento do consumo de energia. Entre essas, destacamos alguns commits onde os desenvolvedores realizaram uma modificação que impactaria negativamente no consumo de energia com o intuito de consertar algum problema existente no software. Também achamos interessante ressaltar um grupo específico de modificações que chamamos de “interfaces energy-aware”. Elas adicionam controles no software em questão que possibilitam outros desenvolvedores ou usuários finais a ajustar o consumo de energia de algum componente subjacente.
|
2 |
AR-MINE: Tool for Automating AUTOSAR software repository miningSoni, Vaishnavi January 2024 (has links)
Background: Rewriting the approach to automotive software development, AU-TOSAR introduces a standardized structure that enhances adaptability, facilitatescollaboration among multiple stakeholders, and optimizes the development process. However, the complexity introduced by AUTOSAR's modular structure also presentschallenges, particularly in understanding the evolution of the software over time. Asautomotive software projects evolve, tracking changes in software repositories basedon AUTOSAR becomes crucial for comprehending the impact on various systemfeatures and ensuring the overall integrity of the software. In response to these chal-lenges, there is a need to provide a systematic and efficient technique for analyzingthe evolution of the software based on AUTOSAR, offering insights into code modi-fications, and their impact on both software and repository evolution. Objectives: The primary objective of this thesis is to develop and evaluate AR-MINE, a specialized tool for automating the mining of software repositories basedon AUTOSAR. By doing so, the thesis aims to provide a comprehensive solution forunderstanding the evolution of automotive software built on the AUTOSAR archi-tecture. Methods: The research employs a design science research methodology, involv-ing the design, development, and evaluation of the AR-MINE tool. The iterativeprocess includes understanding the challenges faced in software repository miningbuilt on AUTOSAR architecture, designing a solution to address these challenges, implementing the tool, and evaluating its effectiveness in a real-world context. Results: The results of this research showcase the effectiveness and utility of AR-MINE in understanding evolution of software built upon AUTOSAR and how it could potentially benefit various people involved in the software development life-cycle. The feedback survey provided valuable insights into the tool's usefulness andfeasibility. Conclusions: The findings and insights derived from the development and eval-uation of AR-MINE, showcase the challenges and opportunities in understandingthe evolution of automotive software built upon the AUTOSAR architecture. By analyzing ARXML files and offering an intuitive interface, the tool could be an ef-fective sidekick in reducing the complexities involved in understanding the softwarebased on AUTOSAR. The tool's industrial validation confirmed its capabilities andpracticality, making the tool a valuable asset. Enhancing AR-MINE by adding morefeatures that are relevant and applicable to a much larger scale and improving itsefficiency by incorporating third party plugins in extracting and analyzing data fromsoftware repositories, are key steps towards its refinement.
|
3 |
軟體典藏庫資料分析:以GitHub為例 / Data Analysis for Software Repository: A Case Study of GitHub劉耀文, Liu, Yao Wen Unknown Date (has links)
GitHub是2008年開始發展,提供線上源碼託管服務的網路平台。除了提供使用者建立組織、專案和存取軟體庫之外,更提供一些網站社交功能,包括允許使用者追蹤其他用戶、加入專案組織與關注軟體庫的動態,並且對於軟體源碼的修改和針對程式錯誤(bug)提出評論等,使用者或組織成員透過平台上版本控管服務來共同開發軟體專案,並透過GitHub提供的社交服務來完成溝通與協調。
本研究針對GitHub資料集進行整體性的觀察與分析,透過不同的社群網絡指標與分析方法,發現GitHub平台上的協同合作與社交活動。舉例來說,為了找出GitHub上網路的彈性,我們使用度分布,還有近距中間度及參與中間度的值。同時,我們針對使用者或專案之間的互動情形來分析關聯性,並以平台上不同的操作事件來觀察使用者是否偏好某些行為,抑或是某些事件之間是否會互相影響。
研究目標希望能透過GitHub平台所取得的部分資料,來推論GitHub上的真實情況。希望透過專案之間的關聯性,來找出平台上最具影響力的專案或使用者;也將針對程式語言與公司組織的關聯性,觀察技術之間的可替代性,與公司之間的相互合作的情況。同時以GitHub平台上不同操作事件之間的相關性,觀察出何種操作行為會影響使用者進行貢獻(提交源碼)。
另一方面,本研究將以專案的吸引力與黏著度等角度,來針對GitHub平台上的專案進行分析。針對這兩種維度進行觀察,期望進一步得知專案的貢獻程度,與專案隨著時間的所產生的變化。換言之,本研究方法將針對資料集中所有專案進行演進的推論,區分出專案演進的四個階段(活躍期、流動期、穩定期、衰退期),並分析出目前GitHub上專案所處於的階段,最後研究出各階段轉換所可能的機率為何,進一步推論出專案未來演進的趨勢。最後,本研究提出了其他延伸之議題,例如重新定義專案演進階段、選擇適合的專案成員與專案的推薦等,以提供未來可行的研究方向。 / GitHub began to develop in 2008, providing an online open source hosting platform. In addition to providing user-created organizations, projects and software repositories, it also provides more social features, including allowing users to track other users, join the dynamic project or organization, watch software repositories, modify the source code for the software, and make comments for the program error (bug).
In this study, we analyze of GitHub data sets; by using different network indicators and analysis methods in order to find collaboration and social activities on GitHub plat-form. For example, in order to find flexibility of networks on GitHub, we analyze degree distributions and values of closeness centrality as well as betweenness centrality. At the same time, we investigate the interaction between GitHub users and projects in order to analyze the correlation between them.
On the other hand, we analyze attraction and adhesion of the projects on GitHub platform. By using these two indicators, we can get the degree of contribution of the pro-jects, and the changes of the projects over time. We consider the four stages of evolution (active, flow period, stable, recession) of the projects on GitHub. Finally, we study the probability of transition of the all stages, and further we infer the trend of the future evo-lution of the projects on GitHub.
Finally, this study could be extended and used to support other studies. For example, we can redefine the evolution stage of a project, select members for the project, and rec-ommend the project.
|
4 |
Multi-version software quality analysis through mining software repositoriesKriukov, Illia January 2018 (has links)
The main objective of this thesis is to identify how the software repository features influence software quality during software evolution. To do that the mining software repository area was used. This field analyzes the rich data from software repositories to extract interesting and actionable information about software systems, projects and software engineering. The ability to measure code quality and analyze the impact of software repository features on software quality allows us to better understand project history, project quality state, development processes and conduct future project analysis. Existing work in the area of software quality describes software quality analysis without a connection to the software repository features. Thus they lose important information that can be used for preventing bugs, decision-making and optimizing development processes. To conduct the analysis specific tool was developed, which cover quality measurement and repository features extraction. During the research general procedure of the software quality analysis was defined, described and applied in practice. It was found that there is no most influential repository feature and the correlation between software quality and software repository features exist, but it is too small to make a real influence.
|
5 |
Avalia??o da contribui??o de desenvolvedores para projetos de software usando minera??o de reposit?rios de software e minera??o de processosCosta, Daniel Alencar da 01 February 2013 (has links)
Made available in DSpace on 2014-12-17T15:48:07Z (GMT). No. of bitstreams: 1
DanielAC_DISSERT.pdf: 1379221 bytes, checksum: 4e8ab78d03e452eecd9c3eaa6906e4ee (MD5)
Previous issue date: 2013-02-01 / Coordena??o de Aperfei?oamento de Pessoal de N?vel Superior / Software Repository Mining (MSR) is a research area that analyses software repositories in
order to derive relevant information for the research and practice of software engineering. The
main goal of repository mining is to extract static information from repositories (e.g. code
repository or change requisition system) into valuable information providing a way to support
the decision making of software projects. On the other hand, another research area called
Process Mining (PM) aims to find the characteristics of the underlying process of business
organizations, supporting the process improvement and documentation. Recent works have
been doing several analyses through MSR and PM techniques: (i) to investigate the evolution
of software projects; (ii) to understand the real underlying process of a project; and (iii) create
defect prediction models. However, few research works have been focusing on analyzing the
contributions of software developers by means of MSR and PM techniques. In this context,
this dissertation proposes the development of two empirical studies of assessment of the
contribution of software developers to an open-source and a commercial project using those
techniques. The contributions of developers are assessed through three different perspectives:
(i) buggy commits; (ii) the size of commits; and (iii) the most important bugs. For the opensource
project 12.827 commits and 8.410 bugs have been analyzed while 4.663 commits and
1.898 bugs have been analyzed for the commercial project. Our results indicate that, for the
open source project, the developers classified as core developers have contributed with more
buggy commits (although they have contributed with the majority of commits), more code to
the project (commit size) and more important bugs solved while the results could not indicate
differences with statistical significance between developer groups for the commercial project / Minera??o de Reposit?rios de Software (MSR) ? uma ?rea que procura analisar
reposit?rios de software em busca de informa??es relevantes para a pesquisa e para a pr?tica
na engenharia de software. As minera??es buscam transformar informa??es est?ticas de
reposit?rios de software (sistemas de ger?ncia de configura??o e mudan?as) em informa??es
relevantes que auxiliam a tomada de decis?o dentro do contexto de projetos de software. Por
outro lado, a ?rea de Minera??o de Processos (MP) busca descobrir caracter?sticas dos
processos que s?o utilizados em organiza??es para auxiliar na melhoria e documenta??o
destes processos. Trabalhos recentes t?m buscado utilizar as t?cnicas de MSR e de MP para
realizar diversas an?lises na ?rea de Engenharia de Software, tais como: (i) estudar a evolu??o
dos projetos de software (ii) entender o processo de software real utilizado em um
determinado projeto; e (iii) criar modelos de predi??es de defeitos. Contudo, poucos destes
trabalhos buscam utilizar as t?cnicas de MP e MSR com o objetivo de analisar a contribui??o
de desenvolvedores na implementa??o de sistemas de software. Esta disserta??o de mestrado
prop?e a condu??o de estudos experimentais que buscam avaliar a contribui??o de
desenvolvedores de software para projetos, atrav?s da utiliza??o das t?cnicas de MSR e MP.
A contribui??o dos desenvolvedores ? avaliada sob tr?s diferentes perspectivas: (i) commits
defeituosos; (ii) tamanho dos commits; e (iii) resolu??o de bugs priorit?rios. Dois projetos de
software (um open-source e outro privado) foram analisados sob estas tr?s perspectivas. Para
o projeto open-souce, 12.827 commits e 8.410 bugs foram avaliados, enquanto que para o
projeto privado, 4.663 commits e 1.898 bugs foram avaliados. Os resultados obtidos indicam
que para o projeto open-source os desenvolvedores classificados como desenvolvedores core,
s?o os que mais produzem commits defeituosos (embora tamb?m sejam os que mais produzem
commits), s?o os que contribuem com commits de maior tamanho de c?digo e tamb?m
contribuem com mais bugs priorit?rios solucionados. J? para o projeto privado, os resultados
n?o indicaram uma diferen?a estatisticamente significativa entre os grupos de
desenvolvedores
|
6 |
[en] ON THE RELATION BETWEEN REFACTORING AND CRITICAL INTERNAL ATTRIBUTES WHEN EVOLVING SOFTWARE FEATURES / [pt] SOBRE A RELAÇÃO ENTRE REFATORAÇÃO E ATRIBUTOS INTERNOS CRÍTICOS AO EVOLUIR FUNCIONALIDADES DE SOFTWAREEDUARDO MOREIRA FERNANDES 07 June 2021 (has links)
[pt] Contexto: Várias mudanças de código aplicadas ao evoluir funcionalidades visam melhorar atributos internos de qualidade como coesão. Tais mudanças são as refatorações. Refatorações não dirigidas podem piorar, e não melhorar, atributos internos. Porém, o saber atual é insuficiente para gerir atributos internos durante a evolução do sistema. Objetivo: Nosso primeiro objetivo é entender como refatorações afetam atributos internos ao evoluir sistemas, mitigando limitações de escopo de estudos anteriores. Nosso segundo objetivo é atender uma carência por evidência quantitativa sobre como gerir atributos internos críticos via refatorações ao evoluir sistemas. Um atributo interno é crítico se sua medição assume valores anômalos. Baixa coesão é um exemplo de atributo crítico. Método: O primeiro estudo
estende uma avaliação quantitativa da relação entre refatorações e cinco atributos internos: acoplamento, coesão, complexidade, herança e tamanho. Incluímos novas análises e resolvemos ameaças à validade da literatura. O segundo estudo contém estudos de caso qualitativos baseados em grupo focal.
Em dois casos industriais, promovemos discussões sobre o quanto (e por que) atributos críticos são relevante ao evoluir funcionalidades. Por fim, cruzamos os achados dos dois estudos para discutir como gerir atributos críticos via refatoração ao evoluir funcionalidades. Resultados: Aproximadamente
64 por cento das refatorações melhoram ou não afetam os atributos internos. Desenvolvedores parecem refatorar até melhorar os atributos mais relevantes, ignorando outros atributos internos possivelmente críticos. Baixa coesão e alta complexidade são percebidos como relevantes e tornam mais difícil evoluir
funcionalidades. Alto acoplamento, herança larga e tamanho largo são percebidos como irrelevantes ao implementar funcionalidades especialmente complexas, por exemplo. Ao cruzar dados entre estudos, discutimos como refatorações podem melhorar atributos internos, inclusive atributos críticos. Conclusões: Os achados dos nossos estudos podem apoiar a gestão de atributos críticos relevantes aos desenvolvedores, mas também preservar outros atributos que podem se tornar críticos. / [en] Context: Several software changes applied while evolving software features aim at improving internal quality attributes, e.g. cohesion. These changes are the refactorings. Non-assisted refactorings might worsen, rather than improve, internal attributes. However, current knowledge is insufficient for managing internal attributes during software evolution. Objective: Our first objective is assessing how refactorings affect internal attributes during software evolution by filling gaps of past work on study scope.
Our second objective is filling gaps of qualitative evidence on how to manage critical internal attributes via refactorings while evolving features. An internal attribute is critical when its measurement has anomalous
values. Low cohesion is an example of critical attribute. Method: Our first study extends a large quantitative assessment of the relationship between refactorings and five internal attributes: cohesion, complexity, coupling, inheritance, and size. We include a more detailed statistical analysis and address major threats to validity of past work. Our second study is a qualitative case study based on focus group. We selected two industry cases to promote discussions on how much (and why) critical attributes are relevant while evolving features. Finally, we crossed the findings from both conducted studies aimed at discussing how critical attributes can be addressed via refactoring when evolving features. Results: About 64 per cent of refactorings either improve or keep the internal attributes unaffected. Developers seem to perform refactorings until the most relevant internal attributes are improved, thereby neglecting other internal attributes that may be critical. Low cohesion and high complexity are perceived as relevant because they often make evolving features harder than usual. High coupling, large inheritance, and large size are perceived as irrelevant when developers implement especially complex features. By crossing the
findings from both studies, we discuss how refactorings can improve internal attributes, especially the critical ones. Conclusions: The findings of our studies can support managing critical attributes that developers typically find relevant, while preserving other attributes that may become critical.
|
7 |
Predição de mudanças conjuntas de artefatos de software com base em informações contextuais / Predicting co-changes of software artifacts based on contextual informationWiese, Igor Scaliante 18 March 2016 (has links)
O uso de abordagens de predição de mudanças conjuntas auxilia os desenvolvedores a encontrar artefatos que mudam conjuntamente em uma tarefa. No passado, pesquisadores utilizaram análise estrutural para construir modelos de predição. Mais recentemente, têm sido propostas abordagens que utilizam informações históricas e análise textual do código fonte. Apesar dos avanços obtidos, os desenvolvedores de software ainda não usam essas abordagens amplamente, presumidamente por conta do número de falsos positivos. A hipótese desta tese é que informações contextuais obtidas das tarefas, da comunicação dos desenvolvedores e das mudanças dos artefatos descrevem as circunstâncias e condições em que as mudanças conjuntas ocorrem e podem ser utilizadas para realizar a predição de mudanças conjuntas. O objetivo desta tese consiste em avaliar se o uso de informações contextuais melhora a predição de mudanças conjuntas entre dois arquivos em relação às regras de associação, que é uma estratégia frequentemente usada na literatura. Foram construídos modelos de predição específicos para cada par de arquivos, utilizando as informações contextuais em conjunto com o algoritmo de aprendizagem de máquina random forest. Os modelos de predição foram avaliados em 129 versões de 10 projetos de código aberto da Apache Software Foundation. Os resultados obtidos foram comparados com um modelo baseado em regras de associação. Além de avaliar o desempenho dos modelos de predição também foram investigadas a influência do modo de agrupamento dos dados para construção dos conjuntos de treinamento e teste e a relevância das informações contextuais. Os resultados indicam que os modelos baseados em informações contextuais predizem 88% das mudanças corretamente, contra 19% do modelo de regras de associação, indicando uma precisão 3 vezes maior. Os modelos criados com informações contextuais coletadas em cada versão do software apresentaram maior precisão que modelos construídos a partir de um conjunto arbitrário de tarefas. As informações contextuais mais relevantes foram: o número de linhas adicionadas ou modificadas, número de linhas removidas, code churn, que representa a soma das linhas adicionadas, modificadas e removidas durante um commit, número de palavras na descrição da tarefa, número de comentários e papel dos desenvolvedores na discussão, medido pelo valor do índice de intermediação (betweenness) da rede social de comunicação. Os desenvolvedores dos projetos foram consultados para avaliar a importância dos modelos de predição baseados em informações contextuais. Segundo esses desenvolvedores, os resultados obtidos ajudam desenvolvedores novatos no projeto, pois não têm conhecimento da arquitetura e normalmente não estão familiarizados com as mudanças dos artefatos durante a evolução do projeto. Modelos de predição baseados em informações contextuais a partir de mudanças de software são relativamente precisos e, consequentemente, podem ser usados para apoiar os desenvolvedores durante a realização de atividades de manutenção e evolução de software / Co-change prediction aims to make developers aware of which artifacts may change together with the artifact they are working on. In the past, researchers relied on structural analysis to build prediction models. More recently, hybrid approaches relying on historical information and textual analysis have been proposed. Despite the advances in the area, software developers still do not use these approaches widely, presumably because of the number of false recommendations. The hypothesis of this thesis is that contextual information of software changes collected from issues, developers\' communication, and commit metadata describe the circumstances and conditions under which a co-change occurs and this is useful to predict co-changes. The aim of this thesis is to use contextual information to build co-change prediction models improving the overall accuracy, especially decreasing the amount of false recommendations. We built predictive models specific for each pair of files using contextual information and the Random Forest machine learning algorithm. The approach was evaluated in 129 versions of 10 open source projects from the Apache Software Foundation. We compared our approach to a baseline model based on association rules, which is often used in the literature. We evaluated the performance of the prediction models, investigating the influence of data aggregation to build training and test sets, as well as the identification of the most relevant contextual information. The results indicate that models based on contextual information can correctly predict 88% of co-change instances, against 19% achieved by the association rules model. This indicates that models based on contextual information can be 3 times more accurate. Models created with contextual information collected in each software version were more accurate than models built from an arbitrary amount of contextual information collected from more than one version. The most important pieces of contextual information to build the prediction models were: number of lines of code added or modified, number of lines of code removed, code churn, number of words in the discussion and description of a task, number of comments, and role of developers in the discussion (measured by the closeness value obtained from the communication social network). We asked project developers about the relevance of the results obtained by the prediction models based on contextual information. According to them, the results can help new developers to the project, since these developers have no knowledge about the architecture and are usually not familiar with the artifacts history. Thus, our results indicate that prediction models based on the contextual information are useful to support developers during the maintenance and evolution activities
|
8 |
Predição de mudanças conjuntas de artefatos de software com base em informações contextuais / Predicting co-changes of software artifacts based on contextual informationIgor Scaliante Wiese 18 March 2016 (has links)
O uso de abordagens de predição de mudanças conjuntas auxilia os desenvolvedores a encontrar artefatos que mudam conjuntamente em uma tarefa. No passado, pesquisadores utilizaram análise estrutural para construir modelos de predição. Mais recentemente, têm sido propostas abordagens que utilizam informações históricas e análise textual do código fonte. Apesar dos avanços obtidos, os desenvolvedores de software ainda não usam essas abordagens amplamente, presumidamente por conta do número de falsos positivos. A hipótese desta tese é que informações contextuais obtidas das tarefas, da comunicação dos desenvolvedores e das mudanças dos artefatos descrevem as circunstâncias e condições em que as mudanças conjuntas ocorrem e podem ser utilizadas para realizar a predição de mudanças conjuntas. O objetivo desta tese consiste em avaliar se o uso de informações contextuais melhora a predição de mudanças conjuntas entre dois arquivos em relação às regras de associação, que é uma estratégia frequentemente usada na literatura. Foram construídos modelos de predição específicos para cada par de arquivos, utilizando as informações contextuais em conjunto com o algoritmo de aprendizagem de máquina random forest. Os modelos de predição foram avaliados em 129 versões de 10 projetos de código aberto da Apache Software Foundation. Os resultados obtidos foram comparados com um modelo baseado em regras de associação. Além de avaliar o desempenho dos modelos de predição também foram investigadas a influência do modo de agrupamento dos dados para construção dos conjuntos de treinamento e teste e a relevância das informações contextuais. Os resultados indicam que os modelos baseados em informações contextuais predizem 88% das mudanças corretamente, contra 19% do modelo de regras de associação, indicando uma precisão 3 vezes maior. Os modelos criados com informações contextuais coletadas em cada versão do software apresentaram maior precisão que modelos construídos a partir de um conjunto arbitrário de tarefas. As informações contextuais mais relevantes foram: o número de linhas adicionadas ou modificadas, número de linhas removidas, code churn, que representa a soma das linhas adicionadas, modificadas e removidas durante um commit, número de palavras na descrição da tarefa, número de comentários e papel dos desenvolvedores na discussão, medido pelo valor do índice de intermediação (betweenness) da rede social de comunicação. Os desenvolvedores dos projetos foram consultados para avaliar a importância dos modelos de predição baseados em informações contextuais. Segundo esses desenvolvedores, os resultados obtidos ajudam desenvolvedores novatos no projeto, pois não têm conhecimento da arquitetura e normalmente não estão familiarizados com as mudanças dos artefatos durante a evolução do projeto. Modelos de predição baseados em informações contextuais a partir de mudanças de software são relativamente precisos e, consequentemente, podem ser usados para apoiar os desenvolvedores durante a realização de atividades de manutenção e evolução de software / Co-change prediction aims to make developers aware of which artifacts may change together with the artifact they are working on. In the past, researchers relied on structural analysis to build prediction models. More recently, hybrid approaches relying on historical information and textual analysis have been proposed. Despite the advances in the area, software developers still do not use these approaches widely, presumably because of the number of false recommendations. The hypothesis of this thesis is that contextual information of software changes collected from issues, developers\' communication, and commit metadata describe the circumstances and conditions under which a co-change occurs and this is useful to predict co-changes. The aim of this thesis is to use contextual information to build co-change prediction models improving the overall accuracy, especially decreasing the amount of false recommendations. We built predictive models specific for each pair of files using contextual information and the Random Forest machine learning algorithm. The approach was evaluated in 129 versions of 10 open source projects from the Apache Software Foundation. We compared our approach to a baseline model based on association rules, which is often used in the literature. We evaluated the performance of the prediction models, investigating the influence of data aggregation to build training and test sets, as well as the identification of the most relevant contextual information. The results indicate that models based on contextual information can correctly predict 88% of co-change instances, against 19% achieved by the association rules model. This indicates that models based on contextual information can be 3 times more accurate. Models created with contextual information collected in each software version were more accurate than models built from an arbitrary amount of contextual information collected from more than one version. The most important pieces of contextual information to build the prediction models were: number of lines of code added or modified, number of lines of code removed, code churn, number of words in the discussion and description of a task, number of comments, and role of developers in the discussion (measured by the closeness value obtained from the communication social network). We asked project developers about the relevance of the results obtained by the prediction models based on contextual information. According to them, the results can help new developers to the project, since these developers have no knowledge about the architecture and are usually not familiar with the artifacts history. Thus, our results indicate that prediction models based on the contextual information are useful to support developers during the maintenance and evolution activities
|
Page generated in 0.0852 seconds