Monday, 24 October 2016

Having a look at OCL

Latest Progress

Things have been going rather slow the last two weeks. I'm still trying to figure out the best way to store the data and query that model. My approach was a more SQL-like one: have a selector method which can take a list of arbitrary attribute names and return only these attributes, provide means for conditional selection (similar to WHERE in SQL), and maybe in a further iteration even implement something like joins. However, there's one problem with that approach: it's very complicated and most likely absolute overkill. Sure, the data model will change over time and the DSL will have to adapt to such changes, but it's still not going to be a completely generalized database, capable of storing any arbitrary type of data. I'll need a simpler meta-model.

Last week, Oscar suggested going for an OCL-like approach: expressing the meta-model as a UML diagram and expressing queries as navigations that chase through the meta-model graph. I think if the initial UML model is well designed, it'll be open for expansion of the data model without breaking anything, which is pretty much what I need. I've been working on some drafts for a UML diagram and on a corresponding implementation, but I'm not yet sure if I'm going in the right direction. So far, I don't yet fully understand how to express queries on such a model. I'm meeting with Oscar tomorrow, to discuss his suggestion, so I hope to be making some more progress this week.

Next Steps

I'm meeting with Oscar tomorrow, to discuss the OCL approach and will pursue that during the next weeks. Also, I'm giving a first presentation of my project (what have I done so far, where is it going) on Tuesday, November 1st, so I'm also going to be working on that.

Likely Challenges

I spent quite a lot of time on my first approach without really achieving something useful. Although I've learned some things that might be helpful later, I really want to get ahead with my project. It's important for me to find out if the OCL approach is the way to, and, if yes, really think it through and implement it well.

No comments:

Post a Comment