Hi,
On 16 Jun 2010, at 02:27, Ross Boylan wrote:
On Wed, 2010-06-16 at 02:17 +0200, Tudor Girba
wrote:
I do not know SAS, but you should check to see if the concepts
present
in FAMIX are of use to you. If yes, you can directly instantiate
them
from your parser. If not, then you will want to code a new
meta-model,
or extend the current ones to accommodate your needs. You can then
describe this new meta-model using FM3 (this is achieved via
Smalltalk
pragmas) and you get a browser and import-export in the MSE format
for
free.
Once you have your Smalltalk objects as instances of the meta-model,
you can then use Mondrian and Glamour for building visual tools, or
the MooseAlgos to express graph-specific algorithms.
Does this help?
Well, I was hoping that I would need to specify the meta-model or
the
meta-meta-model, but not both. That is, I was hoping the tools could
build one out of the other. It sounds as if you're telling me I
need to
do both.
You do not define the meta-meta-model, you use the existing one (FM3)
by just describing in your meta-model elements (classes and
attributes) using pragmas. That is, the meta-model holds the Smalltalk
implementation, while the pragmas provide a higher level description
for other kinds of manipulations.
I hope I'm misunderstanding :)
I think you are :)
Also, is there a guide to what the pragmas are?
We do not have much of a guide for the moment, but we have plenty of
examples. For a class named "C" with one attribute
"interestingAttribute" of type String, you have to define the
followings:
- On the class size:
annotation
<MSEClass: 'X'>
- On the instance side:
interestingAttribute
<MSEProperty: #interestingAttribute type: #String>
^ interestingAttribute
Cheers,
Doru
So, rephrasing the question slightly, is there a way to generate the
smalltalk implementation directly from the pragmas? Or, even better, a
graphical tool that allows you to specify the model and produces
everything else from it?
On the pragmas, at least some of them are "documented" by the methods
FMPragmaProcessor>>processCompiledMethod:
MSEPragmaProcessor>>processClass:
There are some huge strings that are (meta-)*model specifications, e.g.,
FAMIXSpecifications>>famixCore30mse and their use by
FAMIXSpecifications>>generateFamixCore30. What role do they play in the
system?
Ross