Forschungsthemen
[KP/FP] Model-Based Testing, Benchmarking and Optimisation of an Abstract Persistence Layer
Modelling and managing complex entity structures at runtime requires abstract yet powerful metamodels describing the building-blocks of such models and instances. The developed modicio framework/tool-suite aims to provide all means required for abstract entity modelling and instantiation at runtime. Although the approach solves all requirements on the topmost level, the implemented abstract persistence layer is an identified bottleneck. The current version of the framework uses a naive "always write and read everything" approach. This ensures integrity, but leads to highly redundant operations, especially because the system already has knowledge about model parts that are invariant (can not change) and such that are highly volatile.
Requirements:
- Basic SQL Knowledge (We do not write SQL directly, but query mechanisms should be familiar)
- The small framework is implemented in Scala. In consequence, Scala knowledge is beneficial. If not, good Java skills can help to learn Scala quickly in the course of this work.
- We work open-source. You should have no problem to commit code under the apache 2 license (In case of a successful implementation)
Tasks:
You will work on one of the following tasks. A detailled task description is prepared after an initial meeting. It is possible for a small group of students to work in parallel on different tasks.
- Add a persistence layer based on an SQL mapper (slick 3) to the existing case study application using the existent persistence interface. Monitor how much read/write operations happen on the database. Investigate, how buffering of invariant model parts can achieve better performance in default usecases.
- Find a suitable setup for unit and integration-testing with focus on the persistence/registry layer. Cooperate with Task 1 to directly test new functionality. Investigate weaknesses of the current implementation, document them and propose fixes for smaller issues on your own.
- Apart from just buffering elements as in Task 1, it is also possible to apply the proposed model-instantiation (see own related work) virtually to some extend. This means once stored invariant data does not need to be stored twice, instead a symlink can be created pointing to the common model. Find cases were this approach is applicable and create a prototypical realisation as a framework fork framework.
Please contact karl.kegel@tu-dresden.de if interested
Betreuer: Karl Kegel