I am Professor of Software Engineering at the Informatics Center of the Federal University of Pernambuco, where I lead the Software Productivity Group.

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 industrial 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 a member of the ACM and of the Brazilian Computer Society.

I was co-founder of Qualiti Software Processes, a spin-off of the Informatics Center and C.E.S.A.R., specialized on software development tools and processes.

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.


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.

Recent Publications

Here I list my latest publications. The full list is available here. You can also check my publication lists at DBLP, Google Scholar, and Microsoft Academic.

(2019). Improving the prediction of files changed by programming tasks. XIII Brazilian Symposium on Software Components, Architectures, and Reuse (SBCARS 2019).


(2019). Semistructured Merge in JavaScript Systems. 34th IEEE/ACM International Conference on Automated Software Engineering (ASE 2019).

PDF Replication package

Posts and Guidelines

Academic rankings

I do not like academic rankings. Academic Rankings Considered Harmful! clearly summarises ideas I believe in: “An academic …


Introduction to Software and Systems Engineering

2014-2, …, 2019-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.

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 execute an empirical study to either replicate the discussed studies or answer related research questions.