I'm a post-doctoral researcher at HASLab, INESC TEC's unit focused on high-assurance software development, at the University of Minho, Portugal, studying and developing formal techniques for software engineering.

I've completed my joint PhD degree on computer science from the Universities of Minho, Aveiro and Porto, on a "Relational Approach to Bidirectional Transformation" under the supervision of Professor Alcino Cunha. Previously I've completed the Master degree on computer engineering, at the University of Minho.

My main research interest lies in trustworthy software design, particularly in the application of lightweight formal methods to Software Engineering. Electrum and its Analyzer, an extension to the Alloy specification language, have been designed precisely for this goal. Checkout the answer to the ABZ18 call for case study contributions to have an idea of its power. We've also applied such techniques in consultancy projects, like the PTCRIS project commissioned by the Portuguese Foundation for Science and Technology.

Current projects

SAFER - Safety Verification for Robotic Software, a COMPETE2020 project that aims to develop techniques to promote the verification of safety critical properties for robotic software controllers.
ScalABLE4.0 - Scalable Automation for Flexible Production Systems, an H2020 project that aims to develop an open scalable production system framework that can be used efficiently and effectively to visualize, virtualize, construct, control, maintain and optimize production lines.
TRUST - Trustworthy Software Design with Alloy, a COMPETE2020 project that aims to develop a methodology for trustworthy software design that is both formal, unified, and lightweight around Alloy.
PTCRIS - An ORCID-based Synchronization Framework for the Portuguese CRIS, a project commissioned by FCT that aims to develop a synchronization framework for information exchange between the various national systems and international systems.  

Past projects

NanoSTIMA RL1.3 - High-Assurance Medical Cyber-physical Systems, a NORTE2020 project that aims to contribute to safer medical cyber-physical systems through the development of such design and analysis techniques.
FATBIT - Foundations, Applications and Tools for Bidirectional Transformation, a COMPETE project that aimed to propose effective bidirectional transformation frameworks for model-driven engineering, spreadsheet validation and transformation, and language-based editors defined with attribute grammars.
BEST CASE RL8 - Languages and Tools for Critical Real-Time Systems, an ON.2 project that aimed to contribute to a change to the current paradigm of secure ITC infrastructure, according to which the deployment and operation of a critical system implies security enforcement as a reactive process.

Selected publications

N. Macedo, T. Jorge and A. Cunha. A Feature-based Classification of Model Repair Approaches. IEEE Transactions on Software Engineering, 2017.
A. Santos, A. Cunha, N. Macedo and C. Lourenço. A Framework for Quality Assessment of ROS Repositories. 2016 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS 2016). IEEE/RSJ, 2016.
N. Macedo, J. Brunel, D. Chemouil, A. Cunha and D. Kuperberg. Lightweight Specification and Analysis of Dynamic Systems with Rich Configurations. 24th ACM SIGSOFT International Symposium on the Foundations of Software Engineering (FSE 2016). ACM, 2016.
N. Macedo and A. Cunha. Least-change Bidirectional Model Transformation with QVT-R and ATL. Software and System Modeling, 2016.

The full list of publications is best consulted at DBLP or Google Scholar (or here, where the companion artefacts are also indexed).

Software

Electrum Analyzer is an extension of the Alloy Analyzer for the bounded and unbounded model checking of Electrum models.
Pardinus is an extension of Kodkod with support for target-oriented, temporal and decomposed model finding with symbolic bounds.
PTCRISync is an ORCID-based synchronization framework for CRIS's developed following formal methodologies.
Echo is an Eclipse plug-in to operationalize QVT-R bidirectional model transformations using Alloy.

Current students

André Santos - Co-supervision of the PhD thesis on “High-assurance Robotics Software”.
Chong Liu - Co-supervision of the PhD thesis on “Lightweight Trustworthy High-level Software Design”.

Past students

Eduardo Pessoa - Supervision of the MSc thesis on “Parallel Verification of Dynamic Systems with Rich Configurations”
José Pereira - Co-supervision of the MSc thesis on “A Web-based Social Environment for Alloy”.
André Santos - Co-supervision of the MSc thesis on “Applying Coding Standards to the Robot Operating System”.
Miguel Costa - Co-supervision of the MSc thesis on “Software Quality for the Robot Operating System”.

Teaching

Imperative Programming (PI) - Spring 2018 (MIEI@UM, BSc)
Computer Labs I (LI1) - Fall 2009, 2011, 2012, 2015 - 2017 (MIEI@UM, BSc)
Functional Programming (PF) - Fall 2016 (LCC+MIEFis@UM), 2017 (MIEI@UM, BSc)
Specification and Modelling (EM) - Spring 2015 (MIEI+MCC@UM, MSc)
Applied Informatics (LAD) - Spring 2017 (LLA@UM, BSc)