Pesquisa em engenharia de software
Minha trajetória de pesquisa conecta problemas reais de desenvolvimento a evidências e ferramentas que ajudam engenheiros a construir sistemas melhores. Hoje, meu foco está na liderança de engenharia, mas o acervo de trabalhos continua disponível aqui.
Manutenção e evolução de software
Como tornar o código mais fácil de entender, refatorar e evoluir? Minha pesquisa considera o contexto das arquiteturas para identificar os trechos que tornam sistemas web e mobile difíceis de manter.
Search-Based Software Re-Modularization: A Case Study at Adyen
Decidir o que constitui um único módulo, quais classes pertencem a qual módulo ou o conjunto certo de módulos para um sistema de software específico sempre foi uma tarefa d...
Ver publicação : Search-Based Software Re-Modularization: A Case Study at AdyenWhen Testing Meets Code Review: Why and How Developers Review Tests
O teste automatizado é considerado um processo essencial para garantir a qualidade do software. No entanto, escrever e manter código de teste de alta qualidade é desafiador...
Ver publicação : When Testing Meets Code Review: Why and How Developers Review TestsThe Adoption of JavaScript Linters in Practice: A Case Study on ESLint
Um linter é uma ferramenta de análise estática que alerta os desenvolvedores de software sobre possíveis erros de código ou violações dos padrões de codificação. Ao usar es...
Ver publicação : The Adoption of JavaScript Linters in Practice: A Case Study on ESLintCode smells for Model-View-Controller architectures
Estudos anteriores mostraram os efeitos negativos que o código de baixa qualidade pode ter nos proxies de manutenção, como a propensão a alterações de código e a defeitos. ...
Ver publicação : Code smells for Model-View-Controller architecturesTestes de software
Testes também são código. Investiguei como ajudar desenvolvedores a criar casos de teste eficazes e manter grandes suítes de testes automatizados.
Seleção de testes na Adyen: economizando tempo e recursos
Se você trabalha em um sistema de software de grande escala, é provável que uma parte significativa de sua construção seja destinada à execução de testes. Muitas vezes acon...
Conhecer artigo : Seleção de testes na Adyen: economizando tempo e recursosHow Developers Engineer Test Cases: An Observational Study
Um dos principais desafios que os desenvolvedores enfrentam ao testar seus sistemas reside em casos de testes de engenharia que sejam bons o suficiente para revelar bugs. E...
Ver publicação : How Developers Engineer Test Cases: An Observational StudyComprehending Test Code: An Empirical Study
Os desenvolvedores gastam grande parte de seu tempo e esforço na compreensão do código-fonte. Embora muitos estudos tenham investigado como os desenvolvedores abordam essas...
Ver publicação : Comprehending Test Code: An Empirical StudyMock objects for testing java systems: Why and how developers use them, and how they evolve
Ao testar artefatos de software que possuem diversas dependências, tem-se a possibilidade de instanciar essas dependências ou usar objetos simulados para simular o comporta...
Ver publicação : Mock objects for testing java systems: Why and how developers use them, and how they evolveSearch-Based Test Data Generation for SQL Queries
Os sistemas centrados em banco de dados dependem fortemente de consultas SQL para gerenciar e manipular seus dados. Esses comandos SQL podem variar desde seleções muito sim...
Ver publicação : Search-Based Test Data Generation for SQL QueriesAprendizado de máquina para engenharia de software
Modelos de aprendizado de máquina podem apoiar tarefas de manutenção que são difíceis de modelar manualmente. Essa linha de pesquisa explora como usar esses modelos no trabalho de desenvolvimento.
Data-Driven Extract Method Recommendations: A Study at ING
A identificação sólida de oportunidades de refatoração ainda é um problema em aberto na engenharia de software. Estudos recentes têm demonstrado a eficácia dos modelos de a...
Ver publicação : Data-Driven Extract Method Recommendations: A Study at INGLearning Off-By-One Mistakes: An Empirical Study
Erros em condições binárias são uma fonte de erros em muitos sistemas de software. Eles acontecem quando os desenvolvedores usam, por exemplo, < or > em vez de <= ...
Ver publicação : Learning Off-By-One Mistakes: An Empirical StudyThe Effectiveness of Supervised Machine Learning Algorithms in Predicting Software Refactoring
Refatoração é o processo de alteração da estrutura interna do software para melhorar sua qualidade sem modificar seu comportamento externo. Antes de realizar atividades de ...
Ver publicação : The Effectiveness of Supervised Machine Learning Algorithms in Predicting Software RefactoringMonitoramento e análise de logs
Em sistemas complexos, os testes precisam ser complementados pelo monitoramento. Pesquisei ferramentas que ajudam desenvolvedores a entender o comportamento dos sistemas em produção a partir dos logs.
An Exploratory Study of Log Placement Recommendation in an Enterprise System
O registro em log é uma prática de desenvolvimento que desempenha um papel importante nas operações e no monitoramento de sistemas complexos. Os desenvolvedores colocam ins...
Ver publicação : An Exploratory Study of Log Placement Recommendation in an Enterprise SystemMonitoring-Aware IDEs
A engenharia de software moderno em grande escala exige que os desenvolvedores de software não se concentrem apenas em escrever código, mas também examinem continuamente os...
Ver publicação : Monitoring-Aware IDEsAn Exploratory Study on Faults in Web API Integration in a Large-Scale Payment Company
As arquiteturas orientadas a serviços são mais populares do que nunca e cada vez mais empresas e organizações dependem de serviços oferecidos por meio de APIs Web. Os recur...
Ver publicação : An Exploratory Study on Faults in Web API Integration in a Large-Scale Payment Company