RaQuN-Lab: Migrating RaQuN to Python for Enhanced N-Way Model Matching Experiments

Page content

Context

Model matching algorithms are used to identify common elements in input models, which is a fundamental precondition for many software engineering tasks, such as merging software variants or views. To that end, we developed a scalable n-way model matching algorithm called RaQuN, which uses multi-dimensional search trees for efficiently finding suitable match candidates through range queries.

Motivation

While RaQuN represents the state-of-the-art n-way model matcher, it also leaves room for improvement, which we started to explore in more recent works. As opposed to the original RaQuN implementation in Java, most of the improvement proposals are making use of various machine learning libraries written in Python. This technological mismatch poses a major obstacle to proper experimentation and evaluation.

Besides this technology gab, we aim to enhance and streamline RaQuN experiment endeavors. This includes, for example, introducing more intervention points in the end-to-end matching and evaluation process through well-defined interfaces and overall generic architecture. Having this in place will catalyze future experimenting without threatening the consistency in overall methodology and result interpretation.

Goal

The primary goal of this project is to migrate the original RaQuN implementation to Python, which will enable future experiments in a homogeneous ecosystem. As a follow-up work, you may then properly evaluate the improvement proposals, and potentially come up with an improved version of RaQuN that:

  • offers more intervention points using well-defined interfaces
  • boosts generic architecture
  • handles result examinations in a consistent and uniform manner

Requirements

This project is designed for highly capable students with strong technical skills, as it presents a complex and challenging opportunity. To succeed, candidates should meet the following criteria:

  • Advanced programming skills, particularly in Python but also in Java.
  • Proper knowledge in algorithms and data structures.
  • Deep understanding of software architecture and generic design principles.
  • Proven ability to work independently and apply strong problem-solving skills.
  • Proactive approach to overcoming obstacles and a desire to grow through challenging tasks.

Pointers

Contact

Roman Bögli is the contact person for this project and happy to answer questions or brainstorm ideas. Eventually, this topic will be co-supervised with Alexander Schultheiß.