I am Professor of Software Engineering at the Informatics Center (manifest video, historical roots video) of the Federal University of Pernambuco, where I lead the Software Productivity Group (video). I am currently the Director of the Informatics Center.

I investigate and develop tools and techniques for improving software development quality and productivity levels, especially by reducing unnecessary effort and frustration in software developers work activities. I pursue a mix of academic excellence with societal relevance.

My main research interests are in the following topics and their integration: advanced (semi-structured, structured, semantic) code merging tools, code integration conflicts, continuous integration and deployment, software modularity, software product lines, and refactoring.

I am Associate Editor of IEEE Transactions on Software Engineering. I am a member of the ACM and of the Brazilian Computer Society.

I co-founded Qualiti Software Processes, a spin-off of the Informatics Center and C.E.S.A.R., specialized on software development tools and processes. This was one of the first companies to join Porto Digital, now one of the major information technology hubs in Brazil.

I have a D.Phil. in Computing from Oxford University, and an M.Sc. and a B.Sc. in Computer Science from Federal University of Pernambuco. I was Fulbright Visiting Faculty Scholar at CMU’s Institute for Software Research (currently the Software and Societal Systems Department).

Projects

Semantic Merge Tools

We investigate static and dynamic analysis techniques to develop semantic merge tools that detect conflicts missed by current tools.

Semistructured Merge Tools

We investigate and develop semistructured merge tools that improve code integration accuracy without compromising performance.

Publications

Posts and Guidelines

Participando de um painel

Leia How to Kick Butt on a Panel, de Guy Kawasaki. Essa é basicamente a referência que tenho seguido desde a minha primeira …

Escrevendo cartas de recomendação ou referência

Antes de tudo, leia Advice to Graduate School Recommendation Letter Writers, de Shriram Krishnamurthi. Você só deve escrever cartas …

Começando uma carreira acadêmica

Leia How to live in paradise, de David Evans. Esse texto traz muitas dicas interessantes para resumir aqui, mas tirar férias, reservar …

Courses

Introduction to Software and Systems Engineering

2020-1, 2020-3, 2019-2, …, 2014-2 (please email or chat for class code)

An undergraduate level course introducing basic software engineering concepts, activities (requirements management, configuration management, project management, testing, design and implementation, refactoring), techniques, and tools. This is a very practical hands-on course exploring in detail a single technique and tool for each activity, instead of overviewing a number of techniques and tools for each activity. The techniques and tools are applied in the context of software as a service, using Typescript, Angular, and Node.js. As learning these technologies is not the main focus of the course, we simply overview them.

You can find here the playlists (with videos in Portuguese) for each of the topics covered in the course:

Slides and study guidelines (including exercises) are available in the course repository.

Software Engineering

2020-1 (please email or chat for class material beyond the videos below)

An advanced undergraduate, basic graduate level course covering a larger range of software engineering concepts, activities, techniques, and tools. The previous course is a prerequisite to this one, where we cover more advanced topics and discuss a number of research papers.

You can find here the playlists (with videos in Portuguese) for each of the topics covered in the course:

Code Integration Tools and Techniques

2019-2 (please email or chat for class code)

An advanced undergraduate and graduate level course discussing code integration tools and techniques, including different kinds of merge tools (textual, syntactic, semantic), continuous integration and deployment, and integration conflict prediction. We discuss a number of research papers and technical blog posts, and students carry on an empirical study to either replicate one of the discussed studies or answer related research questions.

OTHER COURSES >

Talks and Outreach Activities

Modularidade, Componentes, Arquitetura e Reuso de Software: de Parnas aos LLMs

Nesta palestra discutiremos a motivação, o surgimento, a evolução e as diferentes interpretações dos conceitos de Modularidade, …

Research and Publication Practices and Strategies

In this talk we discuss a number of research and publication practices and strategies, giving both general advice on different research …

Desmistificando a IA na Medicina

Introduzimos, com foco no público médico, os princípios básicos de Inteligência Artificial e Aprendizagem de Máquina, e ilustramos como …

Students and Collaborators

Here are the students I currently supervise, with their expected graduation dates:

I often have opportunities for supervising dedicated students and software developers interested in the topics I study. Please contact me for further detail.

Here are former students with whom I currently more closely collaborate:

  • Gabriela Sampaio (Meta, UK)
  • Guilherme Cavalcanti (IFPE)
  • Klissiomara Dias (UFRA)
  • Léuson da Silva (Polytechnique Montreal)
  • Paola Accioly (UFCA)
  • Rodrigo Bonifácio (UnB)
  • Thaís Burity (UFAPE)

Here is a yet very preliminary list of students I have supervised:

  • Marcela Bandeira Cunha (MSc 2023)

Contact