Navegando por Autor "Costa, Daniel Alencar da"
Agora exibindo 1 - 9 de 9
- Resultados por página
- Opções de Ordenação
Dissertação Avaliação da contribuição de desenvolvedores para projetos de software usando mineração de repositórios de software e mineração de processos(Universidade Federal do Rio Grande do Norte, 2013-02-01) Costa, Daniel Alencar da; Kulesza, Uira; ; http://lattes.cnpq.br/0189095897739979; ; Aranha, Eduardo Henrique da Silva; ; Aquino Júnior, Gibeon Soares de; ; Figueira Filho, Fernando Marques; ; http://lattes.cnpq.br/6874649375434646; Flach, Christina Brandão Von; ; http://lattes.cnpq.br/1827829018668226Mineraçã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 desenvolvedoresTese A deep dive into continuous integration monitoring practices(Universidade Federal do Rio Grande do Norte, 2024-04-25) Santos, Jadson José dos; Kulesza, Uirá; http://lattes.cnpq.br/0189095897739979; http://lattes.cnpq.br/8131538515286176; Aranha, Eduardo Henrique da Silva; Barroca Filho, Itamir de Morais; Costa, Daniel Alencar da; Pinto, Gustavo Henrique Lima; Almeida, Rodrigo Bonifácio deUma das principais atividades no desenvolvimento de software é o monitoramento, que desempenha um papel vital na verificação da implementação adequada de processos, identificação de erros e descoberta de oportunidades de melhoria. A Integração Contínua (CI) abrange um conjunto de práticas amplamente adotadas que aprimoram o desenvolvimento de software. No entanto, há indicações de que os desenvolvedores podem não monitorar adequadamente todas as práticas de CI. Nesta tese, mergulhamos profundamente no oceano do monitoramento das práticas de CI. Nosso objetivo é descobrir como esse monitoramento é conduzido, demonstrar as vantagens do monitoramento das práticas de CI e destacar os desafios que precisam ser superados. Em nosso primeiro estudo, analisamos o impacto de práticas específicas de CI no volume de Pull Requests e Issues relacionadas a bugs. Nossos resultados revelaram uma correlação positiva entre as práticas de CI e o aumento no número de merged pull requests. Nós também identificamos uma correlação significativa com o número de Issues relacionadas a bugs. Adicionalmente, nossos resultados sugerem que valores mais elevados de práticas de CI podem indicar uma melhor qualidade no processo de desenvolvimento. Posteriormente, em nosso segundo estudo, investigamos a importância atribuída a essas práticas pelos desenvolvedores e o suporte ao monitoramento de práticas de CI fornecido pelas ferramentas de CI mais populares. Descobrimos que geralmente os desenvolvedores monitoram apenas a cobertura e os metadados básicos da build (por exemplo, duração e status da build). Os desenvolvedores expressaram interesse em monitorar práticas de CI se tivessem oportunidade. Além disso, identificamos que vários dos serviços líderes de CI ainda possuem um suporte inicial para monitorar as práticas de CI. Por fim, avaliamos o monitoramento em cenários reais, realizando um estudo de caso em três projetos de três organizações diferentes, no qual podemos verificar mais profundamente o interesse dos desenvolvedores pelo monitoramento de práticas de CI, seus benefícios, desafios e a evolução das práticas de CI durante um período de dois meses. O estudo de caso revelou que o monitoramento das práticas de CI oferece vários benefícios ao projeto e é pouco custoso de ser aplicado. Os participantes demonstraram um forte desejo de integrar dashboards de monitoramento de CI nos serviços de CI mais populares.Tese Enhancing the SZZ Algorithm to Deal with Refactoring Changes(2018-07-20) Campos Neto, Edmilson Barbalho; Kulesza, Uira; Costa, Daniel Alencar da; ; ; ; Aranha, Eduardo Henrique da Silva; ; Nunes, Ingrid Oliveira de; ; Maia, Marcelo de Almeida; ; Coelho, Roberta de Souza;SZZ was proposed by Śliwerski, Zimmermann, and Zeller (hence the SZZ abbreviation) to identify fix-inducing changes, i.e., changes that are likely to induce bugs. Despite the wide adoption of this algorithm, SZZ still faces limitations, which have been recently reported. No existing research work widely surveys how SZZ has been used, extended, and evaluated by the software engineering community. Furthermore, only a few studies have investigated the SZZ improvements. Therefore, this thesis aims to explore the existing limitations that have been documented in the SZZ literature and to enhance the state-of-the-art of SZZ by proposing solutions to some of its limitations. First, we perform a systematic mapping study to determine the current state-of-the-art of the SZZ algorithm. Our results exhibit that majority of the analyzed studies use SZZ as a foundation to conduct their empirical studies (79%), while only a few studies have proposed direct improvements to SZZ (6%) or evaluated it (4%). We further observe that SZZ exhibits several unaddressed limitations, such as the bias related to the refactoring changes. Second, we conducted an empirical study to investigate the relationship between the refactoring changes and the SZZ results. We use RefDiff — a tool that detects code refactoring with high precision — to analyze an extensive dataset, including 31,518 issues of ten systems, with 64,855 bug-fixes and 20,298 fix-inducing changes. We run RefDiff for both bug-fix and fix-inducing changes that were generated by a recent SZZ implementation, meta-change aware SZZ (MASZZ). The results indicate a refactoring ratio of 6.5% for fix-inducing changes and 19.9% for bug-fix changes. We incorporated RefDiff into MA-SZZ and proposed a refactoring aware SZZ implementation (RA-SZZ). RA-SZZ reduces the number of lines flagged as fix-inducing changes by MA-SZZ by 20.8%. These results indicate that refactoring can impact the SZZ results. Using an evaluation framework, we observe that RA-SZZ reduces the disagreement ratio compared to previous implementations; however, our results suggest the SZZ accuracy must still be improved. Finally, we evaluated the RA-SZZ accuracy using a well-accepted dataset, which we validated for evaluating SZZ implementations. Furthermore, we revisited the known RA-SZZ limitations to improve the accuracy of the algorithm by integrating a novel refactoring-detection tool, RMiner. We observed that after refining RA-SZZ, in the median, 44% of the lines that were flagged as fix-inducing are accurate, while only 29% were flagged accurately in case of the MA-SZZ-generated results. We also manually analyzed the RA-SZZ results and observed that there are still refactoring (31.17%) and equivalent changes (13.64%) to be recognized by SZZ. This result reiterates that detecting refactoring indeed increases the SZZ accuracy. Our thesis results contribute to SZZ maturation and indicate that the impact of refactoring upon SZZ may be even higher if further improvements can be made in future studies.Tese Entendendo a relação entre integração contínua e cobertura de código(Universidade Federal do Rio Grande do Norte, 2023-05-31) Silva, José Diego Saraiva da; Kulesza, Uirá; Costa, Daniel Alencar da; http://lattes.cnpq.br/0189095897739979; https://orcid.org/0000-0002-2512-6692; http://lattes.cnpq.br/2222003891382006; Aranha, Eduardo Henrique da Silva; http://lattes.cnpq.br/9520477461031645; Coelho, Roberta de Souza; Pinto, Gustavo Henrique Lima; Almeida, Rodrigo Bonifácio deIntegração contínua, em inglês Continuous Integration (CI), é uma prática amplamente adotada na engenharia de software que enfatiza a integração frequente do software por meio de um processo de builds automatizado. Embora tenha sido demonstrado que a CI detecta erros mais cedo no ciclo de vida do software, a relação entre CI e cobertura de código ainda precisa ser esclarecida. Nosso trabalho tem como objetivo preencher essa lacuna investigando os aspectos quantitativos e qualitativos dessa relação. No estudo quantitativo, comparamos 30 projetos com CI e 30 projetos que nunca adotaram CI (projetos NOCI) para investigar se a CI está associada a maiores taxas de cobertura de código. Analisamos 1.440 versões de diferentes projetos para identificar tendências na cobertura de código. Nossas descobertas revelam uma associação positiva entre a CI e maiores taxas de cobertura de código. Nosso estudo qualitativo consistiu em um survey e uma análise de documentos. A pesquisa revelou várias descobertas significativas, incluindo uma associação positiva entre a integração contínua (CI) e maiores taxas de cobertura de código, indicando o valor da CI na promoção de práticas de teste. Ademais, nossa pesquisa enfatizou a relevância do uso de cobertura de código durante o processo de autoria e revisão, pois isso pode auxiliar na detecção precoce de possíveis problemas ao longo do ciclo de desenvolvimento. A análise de documentos se concentrou em temas relacionados à cobertura nas discussões dos Pull Requests de projetos que adotam CI. A partir dessa análise, identificamos os principais tópicos associados ao uso da cobertura durante os Pull Requests, o que pode fornecer informações valiosas sobre como os desenvolvedores utilizam a cobertura para aprimorar a qualidade do código. Essas informações são capazes de orientar o desenvolvimento de melhores práticas para o uso da cobertura em projetos que adotam CI, contribuindo para aprimorar a qualidade e a confiabilidade dos produtos de software. O nosso trabalho permitiu encontrar percepções sobre a evolução da cobertura de código em projetos que adotam CI, as quais podem auxiliar pesquisadores e profissionais a adotarem ferramentas e práticas para monitorar, manter e, inclusive, aprimorar a cobertura de código.Dissertação Investigating the relationship between continuous integration and software quality metrics: an empirical study(Universidade Federal do Rio Grande do Norte, 2020-03-26) Freitas, Guilherme Dutra Diniz de; Kulesza, Uirá; Costa, Daniel Alencar da; ; http://lattes.cnpq.br/4134189443162798; ; http://lattes.cnpq.br/0189095897739979; ; http://lattes.cnpq.br/3174379330826051; Aranha, Eduardo Henrique da Silva; ; http://lattes.cnpq.br/9520477461031645; Almeida, Rodrigo Bonifácio de; ; http://lattes.cnpq.br/0368311142108150A qualidade do software é um atributo essencial para o sucesso de todo projeto de software, sendo uma das principais responsáveis pela competitividade na indústria de software. Integração contínua é uma prática de desenvolvimento de software bastante disseminada na indústria e na literatura por melhorar a qualidade do software. Nesta dissertação, realizamos uma série de estudos para investigar a relação entre integração contínua e métricas de qualidade de código que não foram exploradas por estudos já realizados. Para isso, analisamos se a adoção ou a maturidade de adoção de integração contínua estão relacionadas com melhores métricas de qualidade de código. Como resultado, encontramos que não existem evidências estatísticas que a adoção e a maturidade de integração contínua se relacione com tais métricas de qualidade de código. Por outro lado, descobrimos que a cobertura dos testes é a prática de integração contínua que mais afeta parte das métricas investigadas. A integração de builds com mais frequência não está relacionada a nenhuma das métricas estudadas. Além disso, descobrimos que projetos com builds mais rápidos tendem a ter melhor estruturação entre classes e pacotes, mas tendem a ter maior acoplamento. Também observamos que projetos com correções rápidas de builds tendem a ter menores hierarquias de herança e uma melhor estruturação das classes. Em relação à cobertura de teste, os projetos com maior cobertura de teste tendem a ter uma menor complexidade intrínseca de operações, mas uma estrutura de operação pior se comparada aos projetos com uma menor cobertura de teste.Tese The effects of continuous integration on software development: a causal investigation(Universidade Federal do Rio Grande do Norte, 2023-09-19) Sousa Neto, Eliezio Soares de; Kulesza, Uirá; Costa, Daniel Alencar da; http://lattes.cnpq.br/0189095897739979; http://lattes.cnpq.br/4774223109614503; Aranha, Eduardo Henrique da Silva; http://lattes.cnpq.br/9520477461031645; Maia, Marcelo de Almeida; Almeida, Rodrigo Bonifácio de; Medeiros, Sérgio Queiroz deIntegração Contínua (Continuous Integration—CI) é uma técnica de engenharia de software comumente mencionada como um dos pilares das metodologias ágeis. CI tem como principal objetivo reduzir o custo e o risco da integração de código entre times de desenvolvimento. Para tal se preconiza a realização de commits frequentes para integrar o trabalho dos desenvolvedores em um repositório de código e a frequente verificação de qualidade através de builds e testes automatizados. Através do uso de CI espera-se que os times de desenvolvimento possam detectar e corrigir erros rapidamente, melhorando a produtividade dos times e a qualidade dos produtos de software desenvolvidos entre outros benefícios apontados por pesquisadores e praticantes. Estudos anteriores sobre o uso de CI apontam diversos benefícios em diversos aspectos do desenvolvimento de software, entretanto tais associações não estão mapeadas como um todo e também não são suficientes para concluir que CI seja de fato a causa de tais resultados. Portanto, este trabalho tem como objetivo investigar empiricamente tais efeitos da adoção de CI no desenvolvimento de software sob uma perspectiva causal. Primeiro, nós realizamos uma revisão sistemática de literatura para catalogar os achados de estudos que avaliaram empiricamente os efeitos da adoção de CI. Após explorar o conhecimento já documentado conduzimos dois estudos com o objetivo de aprofundar a compreensão a respeito de dois desses aspectos supostamente afetados pela adoção de CI: qualidade de software e a produtividade dos times de desenvolvimento. Nós pretendemos responder se há uma relação causal entre a adoção de CI e os efeitos reportados na literatura. Para isso utilizamos causal Direct Acyclic Graphs (causal DAGs) combinado a duas outras estratégias: revisão de literatura e um estudo de mineração de repositório de software (Mining Software Repository—MSR). Nossos resultados mostram um panorama dos efeitos de CI reportados na literatura e apontam que há de fato uma relação causal entre CI e qualidade de software.Dissertação The impact of adopting continuous integration on the delivery time of merged pull requests: an empirical study(2017-07-31) Bernardo, João Helis Júnior de Azevedo; Kulesza, Uira; Costa, Daniel Alencar da; http://lattes.cnpq.br/4134189443162798; http://lattes.cnpq.br/0189095897739979; http://lattes.cnpq.br/0189095897739979; http://lattes.cnpq.br/7977641264944574; Aranha, Eduardo Henrique da Silva; http://lattes.cnpq.br/9520477461031645; Maia, Marcelo de Almeida; http://lattes.cnpq.br/4915659948263445; Coelho, Roberta de Souza; http://lattes.cnpq.br/9854634275938452A Integração Contínua (IC) é uma prática de desenvolvimento de software que leva os desenvolvedores a integrarem seu código-fonte mais frequentemente. Projetos de software têm adotado amplamente a IC com o intuito de melhorar a integração de código e lançar novas releases mais rapidamente para os seus usuários. A adoção da IC é usualmente motivada pela atração de entregar novas funcionalidades do software de forma mais rápida e frequente. Todavia, há poucas evidências empíricas para justificar tais alegações. Ao longo dos últimos anos, muitos projetos de software disponíveis em ambientes de codificação social, como o GitHub, tem adotado a prática da IC usando serviços que podem ser facilmente integrados nesses ambientes (por exemplo, Travis-CI). Esta dissertação investiga empiricamente o impacto da adoção da IC no tempo de entrega de pull requests (PRs), através da análise de 167.037 PRs de 90 projetos do GitHub que são implementados em 5 linguagens de programação diferentes. Ao analisar a porcentagem de merged PRs por projeto que perderam pelo menos uma release antes de serem entregues aos usuários finais, os resultados mostraram que antes da adoção da IC, em mediana 13.8% dos merged PRs tem sua entrega adiada por pelo menos um release, enquanto que após a adoção da IC, em mediana 24% dos merged PRs tem sua entrega adiada para futuras releases. Ao contrário do que se pode especular, observou-se que PRs tendem a esperar mais tempo para serem entregues após a adoção da IC na maioria (53%) dos projetos investigados. O grande aumento das submissões de PRs após a IC é uma razão fundamental para que projetos demorem mais tempo para entregar PRs depois da adoção da IC. 77,8% dos projetos aumentam a taxa de submissões de PRs após a adoção da IC. Com o propósito de investigar os fatores relacionados ao tempo de entrega de merged PRs, treinou-se modelos de regressão linear e logística, os quais obtiveram R-Quadrado mediano de 0.72-0.74 e bons valores medianos de AUC de 0.85-0.90. Análises mais profundas de nossos modelos sugerem que, antes e depois da adoção da IC, a intensidade das contribuições de código para uma release pode aumentar o tempo de entrega de PRs devido a uma maior carga de integração (em termos de commits integrados) da equipe de desenvolvimento. Finalmente, apresentamos heurísticas capazes de identificar com precisão os PRs que possuem um tempo de entrega prolongado. Nossos modelos de regressão obtiveram valores de AUC mediano de 0.92 a 0.97.Tese Understanding the delivery delay of addressed issues in large software projects(2017-02-08) Costa, Daniel Alencar da; Kulesza, Uira; Hassan, Ahmed; ; ; http://lattes.cnpq.br/0189095897739979; ; http://lattes.cnpq.br/4134189443162798; Aranha, Eduardo Henrique da Silva; ; http://lattes.cnpq.br/9520477461031645; Figueira Filho, Fernando Marques; ; http://lattes.cnpq.br/6874649375434646; Maia, Marcelo de Almeida; ; http://lattes.cnpq.br/4915659948263445; Valente, Marco Tulio de Oliveira; ; http://lattes.cnpq.br/2147157840592913The timely delivery of addressed software issues (i.e., bug fixes, enhancements, and new features) is what drives software development. Previous research has investigated what impacts the time to triage and address (or fix) issues. Nevertheless, even though an issue is addressed, i.e., a solution is coded and tested, such an issue may still suffer delay before being delivered to end users. Such delays are frustrating, since end users care most about when an addressed issue is available in the software system (i.e, released). In this matter, there is a lack of empirical studies that investigate why addressed issues take longer to be delivered compared to other issues. In this thesis, we perform empirical studies to understand which factors are associated with the delayed delivery of addressed issues. In our studies, we find that 34% to 98% of the addressed issues of the ArgoUML, Eclipse and Firefox projects have their integration delayed by at least one release. Our explanatory models achieve ROC areas above 0.74 when explaining delivery delay.We also find that the workload of integrators and the moment at which an issue is addressed are the factors with the strongest association with delivery delay.We also investigate the impact of rapid release cycles on the delivery delay of addressed issues. Interestingly, we find that rapid release cycles of Firefox are not related to faster delivery of addressed issues. Indeed, although rapid release cycles address issues faster than traditional ones, such addressed issues take longer to be delivered.Moreover, we find that rapid releases deliver addressed issues more consistently than traditional ones. Finally, we survey 37 developers of the ArgoUML, Eclipse, and Firefox projects to understand why delivery delays occur. We find that the allure of delivering addressed issues more quickly to users is the most recurrent motivator of switching to a rapid release cycle.Moreover, the possibility of improving the flexibility and quality of addressed issues is another advantage that are perceived by our participants. Additionally, the perceived reasons for the delivery delay of addressed issues are related to decision making, team collaboration, and risk management activities. Moreover, delivery delay likely leads to user/developer frustration according to our participants. Our thesis is the first work to study such an important topic in modern software development. Our studies highlight the complexity of delivering issues in a timely fashion (for instance, simply switching to a rapid release cycle is not a silver bullet that would guarantee the quicker delivery of addressed issues).Tese Understanding the relationship between continuous integration and its effects on software quality outcomes(Universidade Federal do Rio Grande do Norte, 2020-02-27) Nery, Gustavo Sizílio; Kulesza, Uirá; ; ; Costa, Daniel Alencar da; ; Aranha, Eduardo Henrique da Silva; ; Pinto, Gustavo Henrique Lima; ; Almeida, Rodrigo Bonifácio de;Continuous Integration (CI) is the practice of automating and improving the frequency of code integration (e.g., daily builds). CI is often considered one of the key elements involved to support agile software teams. It helps to reduce the risks in software development by automatically building and testing a project codebase, which allows the team to fix broken builds immediately. The adoption of CI can help development teams to assess the quality of software systems. The potential benefits of adopting CI have brought the attention of researchers to study its advantages empirically. Previous research has studied the impact of adopting CI on diverse aspects of software development. Despite the valuable advancements, there are still many assumptions in the community that remains empirically unexplored. Our work empirically investigates the software quality outcomes and their relationship with the adoption of CI. This thesis provides a systematic literature mapping that presents a broad knowledge of how practitioners and researchers recognize the CI practice to affect software product-related aspects. Additionally, we improve some assumptions by performing two empirical studies that aim to answer the following open questions: (i) Does the adoption of CI share a relationship with the evolution of test code? (ii) The adherence to CI best practices is related to the degree of code quality? Finally, we present a pioneering study that goes beyond the correlation tests to investigate the estimated causal effect of CI adoption and its impact on automated tests. Thereby, we apply a causal inference using directed acyclic graphs and probabilistic methods to determine the causal effect of CI in automated tests. Our results suggest that, despite the CI adoption trade-offs, it is likely to be associated with improvements in software quality. Additionally, it employs a considerable positive causal effect on the volume of automated tests.