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 am on the Board of Porto Digital.
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).
Here I list my latest publications. The full list is available here. You can also check my publication lists at DBLP, Google Scholar, and Semantic Scholar.
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.
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:
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.
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:
Here is a yet very preliminary list of students I have supervised: