mirror of https://github.com/dspinellis/UMLGraph
158 lines
6.5 KiB
HTML
158 lines
6.5 KiB
HTML
<?xml version="1.0" encoding="us-ascii"?>
|
|
<!DOCTYPE html
|
|
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
|
<!-- No not edit this page in the web directory. -->
|
|
<!-- $Id$ -->
|
|
<head>
|
|
<title>UMLGraph - Declarative Drawing of UML Diagrams</title>
|
|
<meta name="AUTHOR" content="Diomidis Spinellis" />
|
|
</head>
|
|
<body>
|
|
<h2>UMLGraph - Declarative Drawing of UML Diagrams</h2>
|
|
<img align="left" alt="UMLGraph banner" hspace="12" border='0' src="umlgraph-banner.png">
|
|
<!-- Introduction {{{1 -->
|
|
UMLGraph allows the declarative specification and drawing of
|
|
UML class and sequence diagrams.
|
|
The current features
|
|
are part of an ongoing effort aiming to provide support for
|
|
all types UML diagrams.
|
|
An <em>IEEE Software</em> article titled
|
|
<a href="http://www.spinellis.gr/pubs/jrnl/2003-IEEESW-umlgraph/html/article.html">On the declarative specification of models</a>
|
|
explains the rationale behind this approach.
|
|
The tehnology behind UMLGraph was used to draw many of the diagrams
|
|
appearing in the books
|
|
<a href="http://www.spinellis.gr/codequality">Code Quality: The Open Source Perspective</a> (Addison Wesley, 2006) and
|
|
<a href="http://www.spinellis.gr/codereading">Code Reading: The Open Source Perspective</a> (Addison Wesley, 2003).
|
|
In addition,
|
|
the <em>UMLGraphDoc</em> doclet included in this distribution automatically
|
|
adds UML diagrams to javadoc documentation.
|
|
|
|
<p />
|
|
Many programs build on UMLGraph; follow <a href="doc/deriv.html">this link</a>
|
|
for more details.
|
|
In addition,
|
|
<a href="http://martinfowler.com">Martin Fowler</a>, the author of
|
|
<a href="http://www.amazon.com/exec/obidos/ASIN/020165783X/dds-20">UML Distilled</a>, writes:
|
|
<blockquote>
|
|
I thought I'd send you a note saying how much I enjoyed discovering UML Graph. I've long fancied a text based way of describing UML diagrams, but never felt sufficiently time-rich to develop anything.
|
|
</blockquote>
|
|
Martin has created a
|
|
<a href="http://martinfowler.com/bliki/UmlSketchingTools.html">bliki entry</a>
|
|
describing his ideas of what an ideal textual language might look like.
|
|
|
|
<h3>Class Diagrams</h3> <!-- {{{1 -->
|
|
One specifies a class diagram using the Java syntax complemented by
|
|
<a href="http://java.sun.com/j2se/javadoc/"><em>javadoc</em></a>
|
|
tags.
|
|
Running the UmlGraph doclet on the specification will generate
|
|
a
|
|
<a href="http://www.research.att.com/sw/tools/graphviz/">Graphviz</a>
|
|
diagram specification that can be automatically processed to
|
|
create Postscript, GIF, SVG, JPEG, fig, or Framemaker drawings.
|
|
<p />
|
|
The following is an example of a class diagram specification and the resulting UML
|
|
diagram:
|
|
<table>
|
|
<tr><td>
|
|
<pre>
|
|
class Person {
|
|
String Name;
|
|
}
|
|
|
|
class Employee extends Person {}
|
|
|
|
class Client extends Person {}
|
|
</pre>
|
|
</td><td>
|
|
<img src="doc/class-eg.gif" alt="Simple UML class diagram" />
|
|
</td></tr></table>
|
|
|
|
<h3>Sequence Diagrams</h3> <!-- {{{1 -->
|
|
One specifies a sequence diagram using <em>pic</em> macros to define
|
|
objects and method invocations.
|
|
The <a href="http://www.gnu.org/software/plotutils/plotutils.html">GNU plotutils</a>
|
|
<em>pic2plot</em> program can then process the sequence diagram to create a
|
|
PNG, PNM, (pseudo)GIF, SVG, AI, Postscript, CGM, FIG, PCL, HPGL, Regis, or TEK
|
|
drawing.
|
|
<p />
|
|
The following is an example of a sequence diagram specification and the
|
|
resulting UML diagram:
|
|
<table>
|
|
<tr><td>
|
|
<pre>
|
|
# Define the objects
|
|
object(O,"o:Toolkit");
|
|
placeholder_object(P);
|
|
step();
|
|
|
|
# Activation and messages
|
|
active(O);
|
|
message(O,O,"callbackLoop()");
|
|
create_message(O,P,"p:Peer");
|
|
message(O,P,"handleExpose()");
|
|
active(P);
|
|
return_message(P,O,"");
|
|
inactive(P);
|
|
destroy_message(O,P);
|
|
inactive(O);
|
|
|
|
# Complete the lifeline of O
|
|
step();
|
|
complete(O);
|
|
</pre>
|
|
</td><td>
|
|
<img src="doc/seq-eg.gif" alt="Simple UML sequence diagram" />
|
|
</td></tr></table>
|
|
|
|
<h3>Download and Links</h3> <!-- {{{1 -->
|
|
UMLGraph is hereby made freely available as Open Source Software.
|
|
The current version of UMLGraph is VERSION.
|
|
You can download UMLGraph and its documentation from the following links:
|
|
<ul>
|
|
<li> <a href="UMLGraph-VERSION.tar.gz">UmlGraph package version VERSION - .tar.gz</a>
|
|
(compressed tar file containing the source code, the compiled doclet,
|
|
and the complete documentation in HTML format).
|
|
</li>
|
|
<li> <a href="UMLGraph-VERSION.zip">UmlGraph package version VERSION - .zip</a>
|
|
(zip file containing the source code, the compiled doclet,
|
|
and the complete documentation in HTML format).
|
|
</li>
|
|
<li> <a href="doc/index.html">User documentation</a>
|
|
(table of contents - suitable for web browsing).
|
|
</li>
|
|
<li> <a href="doc/indexw.html">Printable user documentation</a>
|
|
(the above as a single printable page).
|
|
</li>
|
|
<li> <a href="javadoc/index.html">Doclet technical documentation</a>
|
|
(javadoc table of contents).
|
|
</li>
|
|
<li> <a href="doc/ver.html">Version history</a> </li>
|
|
<li> <a href="http://freshmeat.net/projects/umlgraph/">freshmeat.net page</a> (use it to subscribe and post comments).</li>
|
|
<li> <a href="jars/UmlGraph-VERSION.jar">UmlGraph binary - UmlGraph-VERSION.jar</a>
|
|
(jar file containing only the UmlGraph classes;
|
|
please use this only for pulling UmlGraph into other projects).
|
|
</li>
|
|
<li> <a href="CHECKSUM.MD5">MD5 checksums</a> for each of the above .zip, .tar.gz, and jar archives.
|
|
<li> <a href="oldversion.html">Older UMLGraph versions</a> (useful if you run
|
|
an older JRE).
|
|
</li>
|
|
<li> <a href="doc/faq.html">Frequently asked questions</a> </li>
|
|
</ul>
|
|
|
|
<!-- End matter {{{1 -->
|
|
<p />
|
|
<a href="http://www.spinellis.gr">Diomidis Spinellis home page</a>
|
|
<hr />
|
|
<font size="-2">
|
|
<a href="http://validator.w3.org/check/referer"><img hspace="4" align="left" src="valid-xhtml10.png" border="0" alt="Valid XHTML 1.0!" height="31" width="88" /></a>
|
|
<a href="http://www.w3.org/WAI/WCAG1AAA-Conformance" title="Explanation of Level Triple-A Conformance"><img hspace="4" align="left" border="0" height="32" width="88" src="wcag1AAA.gif" alt="Level Triple-A conformance icon, W3C-WAI Web Content Accessibility Guidelines 1.0" /></a>
|
|
<!--Creative Commons License--><a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/gr/deed.en"><img hspace="4" align="left" alt="Creative Commons License" style="border-width: 0" src="http://creativecommons.org/images/public/somerights20.png"/></a>
|
|
Unless otherwise expressly stated, all original material on this page created by Diomidis Spinellis is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/gr/deed.en">Creative Commons Attribution-Share Alike 3.0 Greece License</a>.
|
|
<br />
|
|
Last modified: $Date$
|
|
</font>
|
|
</body>
|
|
</html>
|