P6: Preparation for Bootstrapping

Due: Wednesday, Oct 23th, 12noon

In this project, you will integrate your tool of P5 with MDELite.  Or rather, take the CoreMDELite and create your own FSMLite tool.
You may have already done so, but if you haven't now is your chance.

It is important that you follow the coding style of MDELite classes -- exactly.  

Part 1

You have used MDELite already, and should have read the MDELite paper by now.  Now I want you to read the MDELite users guide to see how MDELite works.  MDELite implements the category shown below:


Each "object" in this category is a class.  Each arrow a->b is a method that translates a file of type a to a file of type b.  (Each conformance test is also a method -- it too could be represented in the above category as a mapping from each PL domain to the Boolean domain.  I chose not to add it, to avoid cluttering an already complicated graph). Because you only have one representation, violet FSMs, your category will be much simpler.
This should have been part of  P5. Using the MDELite framework, I want you to create a package FSMLite that implements and orchestrates your transformations.  A typical scenario of your tool will be:
java FSMLite.Conform xxx
java FSMLite.Convert xxx -1class // give run-time parameters for vm2t selection (-1class, -nclass)
java FSMLite.Convert1class xxx // same as java FSMLite.Convert xxx -1class
java FSMLite.ConvertnClass xxx // same as java FSMLite.Convert xxx -nclass

Your task in Part 1 is to mimic the coding structure of the MDELite package to build FSMLite.  Think it through before you proceed.  This will save you a lot of time.  By standardizing the actions of methods, what you are doing is creating code templates (eventually VM2T templates) that can stamp out customized instances.  You are to study the methods of MDELite and FSMLite, and make them similar so that VM2T could produce them given an external diagram specification of a category the tool is to use.  This next big leap will be P7.

Part 2 (Optional)

We are using Violet, as is.  It would be great to find a way to hack Violet so that constraint error messages could be displayed in a pop-up window whenever a Violet (state) file is saved.  It would also be great to be able to invoke the chain of calls to MDELite within Violet itself (eg. Generate Code button).  This would give the impression that Violet and FSMLite are integrated "seamlessly", although we know full-well that it is not.

If you are interested in such a task, you must:
I will consider doing so (if the result is usable and well-documented) extra credit for the course

What to Submit

A critical part of any design is clarity and understandability.   Hence, you will be graded on the clarity of your project and its ability to work correctly.  Sloppy code, documentation, or anything that makes grading or understanding your program difficult will cost you points.  Beware, some of these "beauty" points are subjective. 

Remember: No late assignments/submissions will be accepted.