Spelling suggestions: "subject:"mineração dde repositório"" "subject:"mineração dee repositório""
1 |
An Exploratory Study on Exception Handling Bugs in Java ProgramsEbert, Felipe 02 August 2013 (has links)
Several studies argue that exception handling code is usually of poor quality and that it
is commonly neglected by developers. Moreover, it is said to be the least understood,
documented, and tested part of the implementation of a system. In spite of this scenario,
there are very few studies that analyze the actual exception handling bugs that occur in
real software systems and no study that attempts to understand developers’ perceptions
about these bugs.
In this work we present an exploratory study on exception handling bugs that employs
two complementary approaches: a survey of 154 developers and an analysis of
220 bugs from the repositories of Eclipse and Tomcat. Respondents of our survey believe
that exception handling bugs are more easily fixed than other kinds of bugs. There
is also a significant difference in the opinion of the respondents pertaining to the quality
of the exception handling code: more experienced developers tend to believe that it is
worse.
Analysis of the repositories of Eclipse and Tomcat revealed conflicting results. The
fix time for exception handling bugs in Eclipse is significantly shorter than for other
bugs. However, exception handling bugs have a significantly greater number of discussion
messages than non-exception handling bugs. On the other hand, for Tomcat, we
could not find a significant difference for fix time and exception handling bugs have
significantly less discussion messages than other bugs.
Moreover, we discovered that bug reports describing bugs stemming from overly
general catch blocks, a well-known bad smell in programs that use exceptions, are
rare, even though there are many opportunities for them to occur. In addition, empty
catch blocks are not only prevalent, as previously reported in literature, but they are
also commonly used as part of bug fixes, which includes fixes for exception handling
bugs. Furthermore, we found very few bug reports whose causes are empty catch
blocks, although developers often mention them as causes of bugs they have fixed in the
past. And lastly, we present a proposal of the classification of exception handling bugs
based on the data we collected. / Submitted by João Arthur Martins (joao.arthur@ufpe.br) on 2015-03-10T18:18:46Z
No. of bitstreams: 2
Dissertaçao Felipe Ebert.pdf: 1326280 bytes, checksum: b28c0a4b3a4f5a5d84483b41a94a7a48 (MD5)
license_rdf: 1232 bytes, checksum: 66e71c371cc565284e70f40736c94386 (MD5) / Made available in DSpace on 2015-03-11T17:40:09Z (GMT). No. of bitstreams: 2
Dissertaçao Felipe Ebert.pdf: 1326280 bytes, checksum: b28c0a4b3a4f5a5d84483b41a94a7a48 (MD5)
license_rdf: 1232 bytes, checksum: 66e71c371cc565284e70f40736c94386 (MD5)
Previous issue date: 2013-08-02 / FACEPE e CNPq / Vários estudos afirmam que o código de tratamento de exceções em geral tem baixa qualidade
e que é geralmente negligenciado por desenvolvedores. Além disso, acredita-se
que essa parte da implementação de um sistema é a menos compreendida, documentada
e testada. Apesar desse cenário, existem poucos estudos que analisam bugs de tratamento
de exceções que ocorrem em sistemas de software reais e nenhum estudo que
tente entender a percepção dos desenvolvedores sobre esses bugs.
Neste trabalho, apresentamos um estudo exploratório sobre bugs de tratamento de
exceções baseado em duas abordagens complementares: uma pesquisa com 154 desenvolvedores
e uma análise de 220 bugs dos repositórios do Eclipse e Tomcat. Os
desenvolvedores de nossa pesquisa acreditam que bugs de tratamento de exceções são
mais facilmente corrigidos do que outros tipos de bugs. Há também uma diferença significativa
na opinião dos desenvolvedores sobre a qualidade do código de tratamento de
exceções: os desenvolvedores mais experientes tendem a acreditar que é pior.
A análise dos repositórios do Eclipse e Tomcat revelou resultados conflitantes. O
tempo de correção dos bugs de tratamento de exceções do Eclipse é significativamente
menor do que o de outros tipos de bugs. Entretanto, os bugs de tratamento de exceções
têm um número significativamente maior de comentários do que os bugs que não são
de tratamento de exceções. Por outro lado, para o Tomcat, não conseguimos achar uma
diferença significativa para o tempo de correção dos bugs e os bugs de tratamento de
exceções tem um número significativamente menor de comentários do que os outros
tipos de bugs.
Além disso, descobrimos que os bugs decorrentes de blocos catch genéricos, um
defeito bem conhecido em programas que usam exceções, são raros, embora existam
várias oportunidades para que eles ocorram. Descobrimos também que blocos catch
vazios não são só prevalentes, como previamente relatado na literatura, mas também
geralmente usados como correções dos bugs, inclusive para bugs de tratamento de exceções.
Também achamos poucos bugs reportados em que as causas deles são blocos
catch vazios, embora desenvolvedores frequentemente mencionem eles como causas
de bugs que já corrigiram no passado. E por fim, apresentamos uma proposta de classificação
dos bugs de tratamento de exceções.
|
2 |
Caracterização da Complexidade Estrutural em Sistemas de SoftwareAzevedo Terceiro, Antonio Soares de 25 January 2013 (has links)
Submitted by Santos Davilene (davilenes@ufba.br) on 2013-01-25T12:17:33Z
No. of bitstreams: 1
Tese - Antonio Terceiro.pdf: 2349378 bytes, checksum: 0242ae36220a231a40a42d851ee9142c (MD5) / Made available in DSpace on 2013-01-25T12:17:33Z (GMT). No. of bitstreams: 1
Tese - Antonio Terceiro.pdf: 2349378 bytes, checksum: 0242ae36220a231a40a42d851ee9142c (MD5) / Esta tese propõe uma teoria para caracterizar a complexidade estrutural em sistemas de software. Esta teoria busca identificar (i) a contribuição de diversos fatores para a variação da complexidade estrutural e (ii) os efeitos da complexidade estrutural sobre projetos de software. Possíveis fatores na variação da complexidade estrutural incluem: fatores humanos, como experiência geral dos desenvolvedores e a sua familiaridade com as diferentes partes do sistema; fatores relacionados às mudanças realizadas no sistema, como variação no tamanho, espalhamento das mudanças; e fatores organizacionais, como maturidade do processo de desenvolvimento e a estrutura de comunicação do projeto. Efeitos da complexidade estrutural incluem maior esforço, e consequentemente maior custo, em atividades de compreensão e manutenção de software.
Para testar a validade da teoria proposta, foram realizados quatro estudos experimentais, utilizando mineração de dados em repositórios de projetos de software livre. Foram analisados dados históricos de mudanças realizadas em 13 sistemas de diferentes domínios de aplicação e escritos em diferentes linguagens de programação.
Os resultados destes estudos indicaram que todos os fatores estudados influenciaram significativamente a variação da complexidade estrutural em pelo menos um dos projetos, mas projetos diferentes foram influenciados por conjuntos diferentes de fatores. Modelos construídos foram capazes de descrever até 93% da variação na complexidade estrutural nos projetos estudados. / Salvador
|
3 |
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
|
4 |
Identificação e visualização de dependências em sistemas de software orientados a objetos / Identification and Visualization of Dependencies in Object-Oriented Software SystemsOliva, Gustavo Ansaldi 22 September 2011 (has links)
Degradação do design é um problema central investigado na área de evolução de software. A densa rede de interdependências que emerge entre classes e módulos ao longo do tempo resulta em código difícil de mudar, não reutilizável e que não comunica por si só sua intenção. Dentre outros motivos, designs degradam porque requisitos mudam de maneiras não antecipadas pelo design inicial, ou seja, as modificações no código introduzem dependências novas e não planejadas entre classes e módulos do sistema. A gerência de dependências visa reduzir a degradação do design por meio de uma série de mecanismos que auxiliam na administração da complexidade estrutural inerente de sistemas orientados a objetos. Neste trabalho, investigamos as técnicas de identificação de dependências estruturais e lógicas. Em particular, por meio de um estudo de larga escala, comparamos os conjuntos desses dois tipos de dependências. Em seguida, conduzimos um estudo de caso a fim de identificar as origens de dependências lógicas. Por fim, fazemos um levantamento das técnicas de visualização de dependências e mostramos a ferramenta XFlow. / Design degradation is a central problem investigated in the area of software evolution. The dense web of interdependencies that emerges among classes and modules over time results in code that is hard to change, not reusable and that does not communicate its intention. Among other reasons, designs degrade because requirements changes in ways that were not anticipated by the initial design, i.e. the changes in code introduce new and unplanned dependencies among classes and modules of the system. Dependency management aims to reduce design degradation by means of a series of mechanisms that helps in the management of the inherent structural complexity of object oriented systems. In this work, we investigate structural and logical dependencies identification techniques. In particular, by means of a large scale study, we compare the sets of these two kinds of dependencies. Afterwards, we conduct a case study in order to uncover the origins of logical dependencies. Finally, we survey dependency visualization techniques and present the XFlow tool.
|
5 |
Identificação e análise de clones de códigos heterogêneos em um ambiente corporativo de desenvolvimento de softwareTorres, José Jorge Barreto 31 August 2016 (has links)
The demand for speeding up software development inside
corporations triggers a series of issues related to coding organization.
Software development teams have to achieve business deadlines, so
they adopt the bad practice to copy-and-paste code. In this way, clones
populate software repositories and hinder the improvement or
maintenance of systems. Programming languages with object-oriented
paradigm characteristics tend to make easy coding abstraction and
reuse processes. However, a question arises: the same team working
with several kinds of programming languages are influenced by their
paradigms regarding the decrease of cloning incidence? This work
proposed an approach to identify, analyze and compare clones inside
heterogeneous software repositories without consider the development
team profile. The experimental evaluation of the approach was possible
thru two controlled experiments which aimed to detect and evaluate
clones, using and adapting tools available on market. This evaluation
was executed inside an organizational environment, which owned
several applications with closed-source code but available to analysis.
The final results showed no relationship to the amount of application
code lines. Procedural language systems had a lower clone incidence
and, when conflicting open and closed source systems, both had similar
results regarding to the manifestation of source-code clones. / A exigência por acelerar o desenvolvimento de software nas
empresas desencadeia uma série de problemas relacionados à
organização do código. As equipes de desenvolvimento, pressionadas a
cumprir prazos ditados pela área de negócio, adotam a prática ruim de
copiar e colar código. Assim, os clones são criados e povoam os
repositórios de software dessas companhias, tornando o aprimoramento
e manutenção dos sistemas cada vez mais dificultado. Linguagens de
programação que possuem características do paradigma de orientação a
objetos tendem a facilitar ainda mais o processo de abstração de código
e de reaproveitamento. No entanto, uma questão pode ser feita: uma
mesma equipe, trabalhando com diversos tipos de linguagens, sofre
influência destes tipos, no que diz respeito à diminuição da incidência
de clones? Este trabalho propôs uma abordagem para identificar,
analisar e comparar clones em repositórios heterogêneos de software,
com uma análise tênue do perfil da equipe envolvida. A avaliação
experimental da abordagem foi realizada por meio de dois
experimentos controlados, os quais visaram a detecção e a avaliação de
clones, utilizando e adaptando o ferramental disponível no mercado.
Esta avaliação foi executada in-vivo, em um ambiente organizacional
real, o qual possuía uma grande quantidade de aplicações e linhas de
código fechado disponíveis para análise. Os resultados finais não
apresentaram relação direta com a quantidade de linhas de código das
aplicações. Sistemas de linguagem procedural apresentaram menor
incidência de clones e, no conflito entre sistemas de código aberto e
fechado, ambos tiveram resultados similares no que diz respeito à
manifestação de clones de código-fonte.
|
6 |
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
|
7 |
Identificação e visualização de dependências em sistemas de software orientados a objetos / Identification and Visualization of Dependencies in Object-Oriented Software SystemsGustavo Ansaldi Oliva 22 September 2011 (has links)
Degradação do design é um problema central investigado na área de evolução de software. A densa rede de interdependências que emerge entre classes e módulos ao longo do tempo resulta em código difícil de mudar, não reutilizável e que não comunica por si só sua intenção. Dentre outros motivos, designs degradam porque requisitos mudam de maneiras não antecipadas pelo design inicial, ou seja, as modificações no código introduzem dependências novas e não planejadas entre classes e módulos do sistema. A gerência de dependências visa reduzir a degradação do design por meio de uma série de mecanismos que auxiliam na administração da complexidade estrutural inerente de sistemas orientados a objetos. Neste trabalho, investigamos as técnicas de identificação de dependências estruturais e lógicas. Em particular, por meio de um estudo de larga escala, comparamos os conjuntos desses dois tipos de dependências. Em seguida, conduzimos um estudo de caso a fim de identificar as origens de dependências lógicas. Por fim, fazemos um levantamento das técnicas de visualização de dependências e mostramos a ferramenta XFlow. / Design degradation is a central problem investigated in the area of software evolution. The dense web of interdependencies that emerges among classes and modules over time results in code that is hard to change, not reusable and that does not communicate its intention. Among other reasons, designs degrade because requirements changes in ways that were not anticipated by the initial design, i.e. the changes in code introduce new and unplanned dependencies among classes and modules of the system. Dependency management aims to reduce design degradation by means of a series of mechanisms that helps in the management of the inherent structural complexity of object oriented systems. In this work, we investigate structural and logical dependencies identification techniques. In particular, by means of a large scale study, we compare the sets of these two kinds of dependencies. Afterwards, we conduct a case study in order to uncover the origins of logical dependencies. Finally, we survey dependency visualization techniques and present the XFlow tool.
|
Page generated in 0.0913 seconds