In my thesis, I explored issues and solutions of creating a distributed approach to pattern matching and model transformations applicable in cloud systems, or any other distributed system. Model transformations and model-driven engineering are slowly making their way to mainstream software development. However at the same time models are getting larger and larger, making it hard to reason about them and to work with them. Similarly, model transformations with high computation requirements are getting more and more common. For example, model based refactoring of a huge codebase or facial recognition in a social network can easily exceed the capabilities of a single machine. A distributed can set us free form some of the scalability constraints that the computation power of a single machine imposes.
My distributed approach has two main steps: partitioning and pattern matching. Partitioning divides up the model into smaller ones, making it easier to process. Smaller chunks of the model are then sent out to worker nodes for pattern matching.
As part of my thesis, I explain the basic concepts of modelling, pattern matching and model transformations. I describe some of the existing algorithms for graph partitioning, particularly focusing on a multilevel approach that combines three existing algorithms. I have created three different strategies for pattern matching: a local-only matcher, a proxy-based matcher and a distributed pattern matcher. The distributed matcher can find partial matches in different partitions and combine the results.
Designing and building a proof of concept implementation is also part of my thesis. I elaborate the architecture of the application in detail. I explain the most important architectural decisions and how these affect the implementation of the system.
During implementation I encountered some unexpected results and revelations. Finally, I close my thesis by summarizing the results, giving a summary of my work and mentioning some of the main directions for future work.