PPGSC - Doutorado em Sistemas e Computação
URI Permanente para esta coleçãohttps://repositorio.ufrn.br/handle/123456789/12058
Navegar
Navegando PPGSC - Doutorado em Sistemas e Computação por Autor "Almeida, Rodrigo Bonifácio de"
Agora exibindo 1 - 6 de 6
- Resultados por página
- Opções de Ordenação
Tese Uma abordagem de apoio à extração da política de tratamento de exceções(2017-02-13) Sena, Demóstenes Santos de; Coelho, Roberta de Souza; Kulesza, Uira; http://lattes.cnpq.br/0189095897739979; http://lattes.cnpq.br/9854634275938452; http://lattes.cnpq.br/3949512835562758; Aranha, Eduardo Henrique da Silva; http://lattes.cnpq.br/9520477461031645; Barbosa, Eiji Adachi Medeiros; http://lattes.cnpq.br/8833409749475821; Medeiros Neto, Francisco Dantas de; http://lattes.cnpq.br/5525562330158282; Almeida, Rodrigo Bonifácio de; http://lattes.cnpq.br/0368311142108150Os mecanismos de tratamento de exceções são recursos fornecidos pelas principais linguagens de programação para auxiliar no desenvolvimento de sistemas robustos. A política de tratamento de exceções corresponde ao conjunto de regras de design do tratamento excepcional e definem os elementos de código (métodos, classes ou pacotes) responsáveis pela sinalização, propagação, captura das exceções e as respectivas ações de tratamento. Alguns estudos empíricos demonstraram que o tratamento inadequado de exceções, consequência da falta da política documentada, é uma possível fonte de defeitos. Por outro lado, devido à natureza implícita dos fluxos de exceções, a identificação e correção dos tratamentos de exceções tornam-se tarefas complexas. Para amenizar os problemas decorrentes do tratamento inadequado devido à falta de documentação do tratamento de exceções, algumas abordagens definiram linguagens de especificação das regras de tratamento com suporte ferramental para auxiliar na definição e checagem das regras. Entretanto, historicamente, as políticas de tratamento de exceções dos sistemas são postergadas ou ignoradas no processo de desenvolvimento. Adicionalmente, nenhuma das abordagens propostas oferece suporte à definição das regras, de forma a auxiliar o arquiteto a extrair as regras a partir da análise de código fonte pré-existente, e este é o objetivo da abordagem apresentada neste trabalho. Para apoiar a execução da abordagem proposta, foi desenvolvida uma ferramenta de análise estática que permite: (i) a coleta dos fluxos excepcionas e das respectivas ações de tratamentos; (ii) a identificação e definição dos agrupamentos, que são os elementos de código que possuem os mesmos comportamentos em relação ao tratamento de exceções; (iii) a extração das regras; e, (iv) a checagem das regras e identificação das causas das violações à política. A abordagem é demonstrada em dois estudos empíricos. No primeiro estudo empírico foram analisadas 656 bibliotecas (libs) Java do repositório central Maven com objetivo de extrair e caracterizar a política de tratamento de exceções destas libs. Este estudo revelou que 80,9% das bibliotecas possuem fluxos excepcionais que implementam pelo menos um anti-pattern do tratamento excepcional. O segundo estudo empírico teve como objetivo investigar os benefícios da extração das regras excepcionais a partir do código pré-existente no processo de definição e checagem da política de tratamento de exceções. Dois sistemas de informação Web (i.e., IProject e SIGAA) foram utilizados neste segundo estudo. Neste estudo pudemos observar que todas as regras reportadas pelos arquitetos foram extraídas pelo suporte ferramental, e que os resultados do processo de extração permitiram que novas regras fossem adicionadas pelos arquitetos. Essas regras adicionadas foram as regras não definidas pelos arquitetos e corresponderam à 57,1% (IProject) e 52,8% (SIGAA/Graduação) das regras da política dos sistemas analisados. O processo de checagem das regras definidas com o apoio da abordagem mostrou que 35,6% e 45,7% dos fluxos excepcionais do IProject e SIGAA/Graduação, respectivamente, violavam alguma das regras de tratamento de exceções.Tese 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 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.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.Tese Understanding challenges and recommendations in DevOps Education(Universidade Federal do Rio Grande do Norte, 2023-11-30) Fernandes, Marcelo Rômulo; Kulesza, Uirá; Aranha, Eduardo Henrique da Silva; http://lattes.cnpq.br/9520477461031645; http://lattes.cnpq.br/0189095897739979; http://lattes.cnpq.br/4255401883770350; Campos, André Mauricio Cunha; Barroca Filho, Itamir de Morais; Almeida, Rodrigo Bonifácio de; Garcia, Vinicius CardosoDevOps represents a set of practices that integrates software development andoperation, now widely adopted inthe software industry. It involves implementing various vital concepts, such as a culture of collaboration, continuous delivery, and infrastructure as code. The high demand for DevOps practitioners requires non-trivial adjustments in traditional software engineering courses and educational methodologies. As a new area, DevOps has brought significant challenges for the academy regarding research topics and teaching strategies. From aneducational perspective, it is essential to understand how existing courses teach fundamental DevOps concepts. In this thesis, we perform empirical studies to investigate existing challenges of DevOps courses and recommendations to overcome them. Understanding those challenges and recommendations can contribute to improving the learning of DevOps concepts and practices. Our f irst study presents a systematic literature review to identify challenges and recommendationsfor teaching DevOps. Our findingsshowatotal of73 challenges and85recommendationsorganizedintosevencategories (pedagogy, curriculum, assessment, tool, DevOps concepts, class preparation, and environment setup) from 18 papers selected. We also discuss how existing recommendations address the challenges found in the study, thus contributing to the preparation and execution of DevOps courses. Finally, we investigate if challenges and recommendations are specific to teaching DevOps. Our second study involves interviews with 14 DevOps educators from different universities and countries to identify the main challenges and recommendations for DevOps teaching. It identified 83 challenges, 185 recommendations, and several association links and conflicts between them. Our findings can help educators plan, execute, andevaluate DevOpscourses. They also highlight several opportunities for researchers to propose new methods and tools for teaching DevOps. The last study in this thesis interviews 11 DevOps educators from different universities to evaluate the usefulness of the reported challenges and recommendations for DevOpseducationwhenpreparingnewcoursesandimprovingexistingones. It identified that about 22.6% of the recommendations shown are new to the educators and they are interested in using them to improve their courses. In addition, 64.6% of the challenges shown are relevant to the educators and have useful associated recommendations to overcome the challenges.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.