Graphical State Machine Editor
Sponsor Information:

Dave Swanson <daveswan@us.ibm.com>
Phil Dudas <pdudas@us.ibm.com>
Magstar Microcode Development
IBM Tucson


Project Overview:

In our work, we utilize a number of different models of state machines, which need to be updated and changed from time to time. The task for you is to produce a program which allows easy graphical manipulation of state machines as they are represented in source code. The requirements for this program are:
- Extremely modular design -- complete and true OO implementation
- Open existing source files
- Intelligently place states and route transitions for visual clarity
- Allow user to change layout (drag and drop)
- Graphically create and delete states and transitions
- Display and edit code content of any state
- Print state machine diagrams
- View file change history as stored in source code comments
- Save files with embedded layout information


There is additional functionality that we want to have:
- Gracefully handle badly-formed data files
- Configuration file to define representation of state machines in source code
- Ability to create new state machine source files, starting from scratch


Knowledge, skills, and expertise required for this project:

Knowledge of parsing, object-oriented design, graphics programming (simple line drawing, drag and drop, etc.).


Equipment Requirements:

The software produced must run on UNIX (AIX in particular) and under Windows. In holding with the first requirement, abstracting out the window/line/text drawing specifics is required, so the bulk of the source code can be compiled for multiple environments. Using the boxes in the Sun lab, or personal Linux and/or Windows machines for development is acceptable.


Deliverables:

Fully commented source code, functional software, final document describing architecture as implemented (programmer's guide / interface documentation).