On Jul 25, 2012, at 3:42 PM, Andrea Caracciolo wrote:
Hi Stef,
I read your replies in the mailing list and i wanted to clarify some doubts. As I understand, your points are the following:
- extend the FAMIX meta-model adding new meta-data to make the concept of "project version" and "project" explicit.
not necessarily. First the moose infrastructure.
- supporting the exchange of partial models
Yes.
To me it seems that both of the mentioned ideas contradict the purpose of the MSE format. MSE is good for packaging structural information about one single project snapshot. If you want to represent a project and all of its versions as a whole, you need to come up with a new representation format.
no :) mse is a format to exchange data.
Also shrinking models looks quite hard. You end up with a lot of broken dependencies and you need to generate a file which fits your personal analysis requirements.
Not really. Have a look at MooseImportingContext it is there to manage that you always save and load a coherent model. In fact I use it to import coherent Smalltalk models. So loading is the same. You look at the graph dependencies and pay attention that if you remove attributes you do not use something that requires it. This is the job of the ImportingContext to manage that for you. We should ask cyrille because I think that I remember that he worked on partial loading. Now at the end some graph dependencies where expressed in FAME and I lost track.
In my opinion, the best option would be to transition to relational database as an intermediate representation medium.
Give a try and let us know but I have some doubts.
Instead of exchanging models through mse files, you replicate a certain set of DB entires.
Saving to relational databases graphs is not easy and simple. For the moment imagine that we want to build a dashboard where we monitor some metrics. you can write a script that checkout source code launch verveineJ generate a new version in use then you load the use file (filtering information if you can = make sense) compute your metrics save a strip down version of your model that fit the purpose of your analysis now since you want to do a trend analysis you load following the strategies developed by andre all the stripped versions, or just 10 of them and the latest…. and you compute your dashboard data.
To me a project: an entity managing files and sources, versions on a disk or whatever it is stored . After a project could have different loading strategies but well encapsulated.
Parsing of MSE is replaced by recursively exploring the newly created database entries. This would also allow to have different strategies for loading famix objects in memory.
Cheers _____________________________ Andrea Caracciolo -- caracciolo@iam.unibe.ch Software Composition Group University of Bern