P6: Preparation for Bootstrapping
Due: Wednesday, Oct 23th,
this project, you will integrate your tool of P5 with MDELite.
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 --
You have used MDELite
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:
"object" in this category is a class. Each arrow a->b
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:
- use Violet to draw a FSM
violet will store in file xxx.state.violet).
- run Conform
(which you will
write) to check FSM model constraints
java FSMLite.Conform xxx
- run Convert (which you will write) to translate a (correct)
model to a textual output using one of (any number) of VM2T mappings:
java FSMLite.Convert xxx -1class // give run-time parameters for vm2t selection (-1class, -nclass)
Your task in Part 1 is
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
is creating code templates (eventually VM2T templates) that can stamp
out customized instances. You are to study the methods of
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.
java FSMLite.Convert1class xxx // same as java FSMLite.Convert xxx -1class
java FSMLite.ConvertnClass xxx // same as java FSMLite.Convert xxx -nclass
are using Violet, as is. It would be great to find a way to
Violet so that constraint error messages could be displayed in a pop-up
window whenever a Violet (state) file is saved. It would also
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
result is usable and well-documented) extra credit for the course
- alert me (so that I know that you are doing this)
- you might work with other groups if they are interested
- separating/conditioning Violet so that its other diagrams
(besides state machines) can be separated and
integrated-with-MDELite-by-hacking can be done as well.
What to Submit
a single zip file that unzips into
submissions that do not satisfy this constraint)
your netbeans (or eclipse) project
an idiot-proof bash run shell script
your FSMLite tool (as in P5).
a short document that provides any
information I need to understand what you have done. I
welcome comments on what was hard, what was not.
critical part of any design is clarity and
understandability. Hence, you will be graded on the
of your project and its ability to work correctly. Sloppy
documentation, or anything that makes grading or understanding your
program difficult will cost you points. Beware, some of these
"beauty" points are subjective.
late assignments/submissions will be accepted.