UMLSpeed
===========================

About:
=======

UMLSpeed is a compiler for a simple, abstract language that allows 
declaration of UML entities and diagrams. Diagrams can be compiled
into SVG and the entities to XMI for use with other tools.

For more information on the language syntax, see the samples folder
and documentation (HTML format) in doc/reference/

Why?
========

1. Graphical UML tools in general suck - why should we, as programmers have
   to drag and drop stupid graphical things and use a mouse when we could 
   express what we want 10 times faster with a text editor and a simple 
   notation? More importantly, why should we have to lay everything out
   when the computer could do it for us?

2. Graphical UML tools are bloated, huge, memory and disk-hogging 
   monsters.

3. Graphical UML tools use either a binary data format or XML,
   which is not particularly friendly to source code control systems.

4. Because I can :-)


Advantages of UMLSpeed:
========================

1. Written in GCJ-portable java and compiled natively. It's extremely
   fast even when dealing with thousands of entities and diagrams.

2. Purely command-line driven and takes miniscule resources.

3. Flexible enough with file imports that large UML projects can be broken
   up into separate files and only individual bits built at a time 
   as required.

4. C-style syntax means that the source language integrates well with
   source code control and diff tools.

5. Standards compliant - produces interoperable SVG and XMI.

6. Can integrate with automated build tools for regular diagram/xmi
   compilation.

Installation (Linux/BSD systems):
==================================

(if you are using a *nix system with a strange file system layout, edit the 
Makefile and change the installation target paths. Defaults are 
/usr/local/bin for binaries and /usr/local/share/man/man1 for the 
manpage).

Compile with "make", followed by (as root) "make install".

You will need GNU make installed, as well as gcj

Trying it out:
====================

Some samples are included in the samples folder.

Build the example diagrams from the sample source with:

cd samples
umlspeed umlspeed.diagrams.ums

SVG files will be created in the current working directory. View them
with Inkscape for best rendering quality, but Firefox and other
SVG renderers work equally well.

Further Reading:
========================

Check out the docs folder for more detail. A man page is also supplied
and installed by the Makefile.

VIM:
========================

If you use vim, you can install syntax highlighting for UMLSpeed by
running "make vim" as your normal user.

Regular Java:
========================

It should work equally well with plain java (as opposed to native 
compilation). Some scripts are supplied in the scripts directory to compile
the code to java classes and a shell script around the classes to run it
at the command line.

I haven't bothered with Windows batch files, since ... well, I don't use
Windows.

Status:
=========================

This is still alpha software. Don't hold me responsible if it kills your
pets and blows your house up.

Implemented so far:

*. Compiler/parser
*. Namespaces, Class diagrams and related entities
*. Use case diagrams and related entities
*. Auto-link pathfinding
*. XMI 1.3 output
*. VIM syntax highlighting
*. Code generation (Java and Python)

Still to do:

*. Documentation output
*. Code generation (Ruby, PHP, Perl, C++, C#)

*. Diagram packages
*. Diagram notes
*. Alternative diagram layout managers

*. Deployment diagrams
*. Sequence diagrams
*. Activity diagrams


