To understand our complex world, scientists describe models of the reality we observe. Engineers use these models to build physical systems that solve the problem modeled in real-life practice. A model is a simplification of the "real thing" it represents (referred to as system), exhibiting only the properties of the system that are relevant to the modeler's intention or study. The model is therefore what we call an abstraction of the system. Given that today's computer technologies allow us to be more efficient from a time, size, and resource point of view, software programs are ubiquitously utilized in the solution of problems from the real physical world. In current practices, a programmer implements the solution using a programming language that can be executed virtually. A lot of work is then spent on validating the program against how it actually happens in the real world. The problem with this practice is in the mismatch between the problem domain and the solution domain. This requires tremendous cognitive effort from the programmer to map the concepts and the behavior of the real system onto the programming world—and back. This is irrevocably the hardest skill to acquire in computer science and, in particular, in software engineering which is all about processes and techniques for leveraging abstractions between the problem domain and the solution domain.
Model-Driven Engineering (MDE) is a software development approach that promotes modeling systems at higher levels of abstraction, using the most appropriate formalisms, in order to reduce the accidental complexity imposed by typical tools and technologies used in a particular domain. MDE is a promising technique that proposes to choose the most appropriate solution domain, which may not always be source code, to solve a problem from the real physical world. This means that solutions can be expressed using concepts, notations and behaviors that match directly the original domain in which the real system is typically modeled, rather than code. To a certain extent, we could let domain experts build models themselves: this is called domain-specific modeling. A domain expert is someone who wants to understand or use a system in a simplified manner with a specific intention, e.g., an electrical engineer, a biologist, a teacher, a gamer, a customer, etc. Typically, these experts create abstractions of a complex system to study in the form of models that exhibit only the properties of the system that are relevant to the modeler's intention. To design domain-specific models, appropriate modeling languages must be defined. Given that our research does not target one domain in particular, we develop generic modeling tools that allow a modeler from any domain to create his model: this is the purpose of AToMPM, our tool for multi-paradigm modeling.
The ultimate purpose of a model is concealed in the semantics (meaning) it expresses. A model is only useful if some behavior is emerged from it. Thus, we express the behavior of models and executable relations between them through transformations. Model transformation design, development, and synthesis are critical research focuses in our team. Model transformations are used to synthesize, translate, evolve, analyze, and execute models. To accomplish these tasks, a model transformation language must therefore be adapted to the domain of the models to transform.
A particular type of transformation is simulation. It is typically used to predict future states and behaviors of the system. Simulation-based Design (SBD) is a scientific approach for calibrating and optimizing a model to make sure it represents and solves the problem at hand accurately. In SBD, the system is modeled at the desired level of abstraction using MDE techniques. The simulation of the model is always performed in a controlled environment which is also modeled. Running the simulation experiments is an iterative process that ends when the analyzed outcome is satisfactory. From the optimized model of the system and environment, it is then possible to synthesize (i.e., automatically generate) applications that domain experts can work with. All our applications are automatically synthesized and deployed on different platforms, such as: over the web, mobile devices, or embedded in physical hardware devices.
Domain-Specific Modeling environments: automatic generation, DSLs for non-computer science applications, collaborative environments
Model Transformation: design of domain-specific transformation languages, analysis and verification, execution and animation, debugging, efficiency
Quality concerns in MDE: fault-tolerance, design principles and patterns, exception handling
Methodology: adapt development process to MDE and vice-versa, empirical studies
Simulation-Based Design: discrete-event simulation, modeling and simulation (M&S), applying M&S techniques to test and calibrate models and transformations
Application of MDE: synthesis on embedded platforms (Android, Arduino), domotics, robotics, automotive
Several software development projects are available on our GitHub organization .
AToMPM is the modeling tool we are developing at the University of Montreal in collaboration with McGill University, the University of Antwerp, and the University of Alabama. AToMPM is a research framework from which you can generate domain-specific modeling web-based tools that run on the cloud. Visit AToMPM.ReLiS
ReLiS stands for "Revue Littéraire Systématique" which is French for "Systematic Literature Review". When a researcher wants to address a research problem, he starts by looking at what already exists in the scientific literature (published papers) on the topic. ReLiS is a tool that helps him considerably reduce the effort to analyze the corpus of papers, typically varying between hunderds and thousands depending on the research topic. ReLiS allows the user to follow a systematic process and automate the classification of papers as much as possible during the literature study.BiBler
BiBler is a software for managing references to scientific articles using BibTeX. Not only is it a fully functional software, the tool has been entirely modeled and synthesized in Python. It is used for educational purposes in order to understand how to generate a complete application from UML models in an agile and test-driven environment.TxtME
TxtME is a stand-alone web-based customizable domain-specific textual modeling editor. It provides built-in handy IDE features, such as syntax highlighting, automatic text completion, and error detection. Download TxtME.T-Core
T-Core is a python framework for building your own domain-specific model transformation languages. Download the T-Core package.
Improving the Modernization of Legacy Applications
NSERC Engage Plus Grant
In partnership with Fresche Legacy
Oct 2016 - Mar 2017
Automating the Modernization of Legacy Applications
NSERC Engage Grant
In partnership with Fresche Legacy
Jan 2016 - Jul 2016
Collaborative Modeling Among Cross-Domain Teams
NSERC Discovery Grant
May 2015 - Apr 2020
Activities in Scientific Community
I am involved in the organization of the following events:
- MODELS general chair: ACM/IEEE International Conference on Model Driven Engineering Languages & Systems (2020)
- ICSE deputy conference chair: IEEE/ACM International Conference on Software Engineering (2019)
- MODELS steering committee member: ACM/IEEE International Conference on Model Driven Engineering Languages & Systems (2017 — 2022)
- SCSC program committee chair: Summer Simulation Multiconference (2017)
- MODELS regional publicity chair: ACM/IEEE International Conference on Model Driven Engineering Languages & Systems (2017)
- GEMOC workshop organizer: International Workshop on The Globalization of Modeling Languages (2016 — 2017)
- VOLT workshop organizer: International Workshop on Verification and Validation of Model Transformations (2012 — 2016)
- PAME workshop organizer: International Workshop on Patterns in Model Engineering (2015 — 2016)
- SCSC proceedings chair: Summer Simulation Multiconference (2014)
- MODELS workshops chair: ACM/IEEE International Conference on Model Driven Engineering Languages & Systems (2013)
- MPM workshop organizer: International Workshop on Multi-Paradigm Modeling (2012)
I have also been part of the program committee of over a 100 conferences, symposia, and workshops. I am also a regular reviewer of over 30 highly ranked journals.