Due: Wed, Oct 16th, 12noon
In this assignment, you will take another step toward building an FSM tool.
Violet is a stand-alone graphical tool, written in Java, that allows its users to draw different UML diagrams. Here is a link to the Violet Jar file, which you can invoke by:
> java -jar violet.jar
Each diagram (use case, class, object, state, activity, and sequence) is hard-coded, meaning that there are separate subtools buried within Violet for each diagram type. So mixing and matching icons to produce customized palettes - as one might expect in a more general tool like Visio, does not seem possible with Violet.
Never-the-less, Violet provides a decent palette to draw FSMs having:
draw start states (whose name is not customizable)
draw states whose names are specified by a user
draw end states (whose name is not customizable)
draw transitions (that can be given names)**
and other icons (notes, linked diagrams, note connectors) that we won't use.
As an example, I've drawn a simple FSM below in Violet:
I saved this file in xxx (which violet saves as xxx.state.violet). It is an XML file that you can view by clicking the above image.
Your project is to use an XML parser to:
Hint: here is the .zip file for the Netbeans source of MDELite. In its source directory, you'll find a parser for violet class diagrams and other xml parsers/translators (e.g. src/xformPrograms). Look at them to get you started. I will give you the login/password to access this source code in class.
your vm2t result of programming assignment P1
your FSM metamodel constraints of programming assignment P2
your result of the above Part 1 (where you may need to write a M2M transformation to match the database you output from translating state.violet files)
You now have all the major parts to implement the FSM tool discussed in class. Your task is to implement this tool. Verify that you tool works with the following state.violet files.
and at least 2 other FSMs (drawn in Violet) of your choosing.
a single zip file that unzips into
<yourName>/<yourFilesAndDirectories> (I will return
submissions that do not satisfy this constraint)
a jar file of your FSM executable
an idiot-proof bash run shell script that runs your FSM tool.
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.
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.