Posts by Collection


Concern-Oriented Reuse

Concern-oriented Reuse (CORE) is an new software development paradigm introduced by my research team in 2013 that combines the ideas of Model-Driven Engineering (MDE), advanced modularization techniques (aspects), and software product lines, to address the challenge of how to enable broad-scale, model-based reuse.
To demonstrate the effectiveness of CORE, we developped a tool called TouchCORE, which runs on Mac, Windows and Linux and ships with a library of reusable software development concerns encapsulating reusable models (feature models, goal models, class diagrams, sequence diagrams and state diagrams) and implementations.

Check out the TouchCORE page to download our concern-oriented modelling tool.

Dependablity-focused Requirements Engineering

At the requirements level, discovering and documenting all possible abnormal situations and irregular user behavior that can interrupt normal system interaction is of tremendous importance in the context of dependable system development. We defined a Dependability-focused Requirements Engineering Process (DREP) based on use cases that leads a developer to discover and then specify the required level of system reliability and safety at an early stage. Our “exceptional use cases” can be probabilistically analyzed to get feedback on the achievable safety and reliability of the system, if it were to be built with a given set of (potentially failing) components.

Open Multithreaded Transactions

Open Multithreaded Transactions (OMTT) are an advanced transaction model that provides features for controlling and structuring not only access to objects, as usual in transaction systems, but also threads taking part in transactions. Due to the isolation property and disciplined exception handling, OMTTs constitute ideal units of fault tolerance for structuring the execution of loosely coupled cooperative and competitive concurrent systems.


Mammoth is a massively multiplayer game research framework. The goal of Mammoth is to provide an environment for experimentation in areas such as distributed systems, fault tolerance, databases, modeling and simulation, artificial intelligence and aspect-orientation. Our industrial partners are Quazal, Electronic Arts Montreal, and EJ-Technologies.


Published in , 1900



COMP-361 Software Engineering Project

Undergraduate course, School of Computer Science, McGill University, 2023

This 1-year course gives students the opportunity to develop a considerable software system following a rigorous software development process. Over two semesters, students develop a strategic, turn-based, distributed, 2D game following a model-driven engineering approach in groups. The project takes the students through all the phases of a software’s life‐cycle, from requirements elicitation and specification, to architecture design and detailed design, to implementation, deployment and maintenance. Throughout the project, students follow a model-driven engineering approach, where models of the software that is being developed are built at different levels of abstraction using different modelling formalisms. The final implementation is done by the students using an object-oriented programming language of their choice.

COMP-533 Model-Driven Software Engineering

Graduate course, School of Computer Science, McGill University, 2023

This is a graduate course that targets both advanced undergraduates and graduate students that want to explore the concepts of Abstraction, Modularity, Separation of Concerns and Reuse. I will cover standard Model-Driven Engineering (MDE) techniques and methodologies applied in industry, but also more advanced topics in MDE focussing on improving modularity, separation of concerns and reuse, such as aspect-orientation and concern-oriented reuse.