NintenJoe/zol — pull request #18 by jhalstead85 (2014-03-30 02:54:28+00:00)
Title: Task 0.5 complete. Added UML generation

UML generation is accomplished via `make uml`. It uses `pyreverse`, which is included in `pylint` and depends on graphviz (both have been added to .requirements.txt), to generate the diagrams. To facilitate editing the diagram, we convert the `classes_Zol.dot` file that `pyreverse` produces into a `classes_Zol.graphml` file using a script called [`dottoxml.py`](http://dl9obn.darc.de/programming/python/dottoxml/), which is located in the new `tool` directory. The resulting graphml file can be edited in a program called [`yEd`](http://www.yworks.com/en/products_yed_about.html), which has cross-platform support and works quite well.

Some things to note when opening the graphml file in `yEd` for the first time:
* The classes will be centered and overlapping. Select them and choose `Layout -> Hierarchical -> OK` to reorganize them.
* Resize the classes to view their attributes and functions by dragging their corners or sides.
* Edit a class' name by right-clicking on it and choosing `Edit Label`
* Edit a class' attributes and functions by right-clicking on it and choosing `Properties -> UML`.

Note: We can output the class diagram as any other image type that graphviz supports (e.g. png, svg, jpg, eps, etc.) by changing the `UML_DIAG_FILETYPE` variable in `Makefile`, but then we cannot easily edit the resulting image.