- Project tools
- Nightly builds of docs
- The ArgoUML Project
- Using ArgoUML
- How do I...
|Over 500 more tools...
Why ArgoUML is Different
In the introduction, we listed the four key things that
make ArgoUML different: i) it makes use of ideas from cognitive
psychology, ii) it is based on open standards; iii) it is 100%
pure Java; and iv) it is an open source project.
ArgoUML is particularly inspired by three theories
within cognitive psychology: i) reflection-in-action, ii)
opportunistic design iii) and comprehension and problem
This theory observes that designers of complex systems do not
conceive a design fully-formed. Instead,
they must construct a partial design, evaluate, reflect
on, and revise it, until they are ready to extend it further.
As developers work hands-on with the design, their mental model
of the problem situation improves, hence improving their design.
A theory within cognitive psychology suggesting that although
designers plan and describe their work in an ordered, hierarchical
fashion, in reality, they choose successive tasks based on the
criteria of cognitive cost.
Simply stated, designers do not follow even their own plans in
order, but choose steps that are mentally least expensive among
Comprehension and Problem Solving
A design visualization theory within cognitive psychology.
The theory notes that designers must bridge a gap between their
mental model of the problem or situation and the formal model of
a solution or system.
This theory suggests that programmers will benefit from:
Multiple representations such as program syntactic
decomposition, state transitions, control flow, and data flow.
These allow the programmer to better identify elements and
relationships in the problem and solution and thus more
readily create a mapping between their situation models and
working system models.
Familiar aspects of a situation model, which improve
designers' abilities to formulate solutions.
Practical Application in ArgoUML
ArgoUML implements these theories using a number of techniques.
The design of a user interface which allows the
user to view the design from a number of different
perspectives, and allows the user to achieve goals
through a number of alternative routes.
The the use of processes running in parallel with
the design tool, evaluating the current design against
models of how “best practice” design might
work. These processes are known as design
The use of to-do lists to
convey suggestions from the design critics to the user,
as well as allowing the user to record areas for future
The use of checklists, to guide the user through
a complex process.
UML is itself an open standard. ArgoUML throughout has
tried to use open standards for all its interfaces.
The key advantage of adherence to open standards is that it
permits easy inter-working between applications, and the ability
to move from one application to another as necessary.
XML Metadata Interchange (XMI)
XML Metadata Interchange (XMI)
is the standard for saving the meta-data that make up a
particular UML model. In principle this will allow you to
take the model you have created in ArgoUML and import it
into another tool.
This clearly has advantages in allowing UML to meet
its goal of being a standard for communication between
The reality is not quite this good.
Prior to UML 2.0 the XMI file includes no information about the
graphical representation of the models, so diagram layout is lost.
ArgoUML gets round this by saving graphical information separate
from the model
(see Section 22.214.171.124, “
Loading and Saving
Graphics Formats - EPS, GIF, PGML, PNG, PS, SVG
PostScript (EPS) file is a
PostScript file which satisfies additional restrictions.
These restrictions are intended to make it easier for software
to embed an EPS file within another PostScript document.
Interchange Format (GIF) uses lossless compression,
and preserves sharp edges well, which makes it well-suited for ArgoUML.
The GIF format used to be a patent encumbered format,
but all the patents have currently expired.
Precision Graphics Markup Language (PGML)
is an XML-based
language for representing vector graphics.
It was a W3C draft, but was not adopted as a recommendation.
PGML and VML, another XML-based vector graphics language, were
later joined and improved upon to create SVG (see below).
Portable Network Graphics (PNG) is an
ISO/IEC standard (15948:2004) and is also a W3C recommendation.
PNG is a bitmap image format that employs lossless data
compression. PNG was created to both improve upon and replace
the GIF format with an image file format that does not require
a patent license to use.
PNG is officially pronounced "ping" but it is often just
spelled out - probably to avoid confusion with the
network tool ping.
PNG is supported by the libpng reference library,
a platform-independent library that contains C functions for
handling PNG images.
is a page description language and
programming language used primarily in the electronic and
desktop publishing areas.
Scalable Vector Graphics (SVG)
is an XML markup language for describing two-dimensional
vector graphics, both static and animated, and either declarative
It is an open standard created by the World Wide Web Consortium.
The use of SVG on the web is in its infancy.
There is a great deal of inertia due to the long-time use of pure
raster formats and other formats like Macromedia Flash or Java
applets, but also browser support is still uneven, with native
support in Opera, Safari and Firefox, but Internet Explorer
requires a plugin.
See PGML above.
Object Constraint Language (OCL)
Object Constraint Language (OCL)
is a declarative language for describing rules that apply
to UML models.
It was developed at IBM and is now part of the UML standard.
Initially OCL was only a formal specification language
extension to UML.
OCL may now be used with any Meta-Object Facility (MOF) compliant
metamodel, including UML.
The Object Constraint Language is a precise text language
that provides constraint and object query expressions on any
MOF model or metamodel that cannot otherwise be expressed by
Java was conceived as an interpreted language. It
doesn't have a compiler to produce code for any
particular target machine. It compiles code for its own
target, the Java Virtual Machine
Writing an interpreter for a JVM is much easier than
writing a compiler, and such machines are now incorporated
into almost every Web Browser. As a result most machines can
run Java, with no further work.
(In case you wonder why all languages aren't like
this, it is because interpreted languages tend to be slower
than compiled languages. However with the high performance of
modern PCs, the trade-off for portability is worthwhile for
many applications. Furthermore modern multi-level caches can
mean that interpreted languages, which produce denser code,
may actually not be that much slower anyway.)
By choosing to write ArgoUML in pure Java, it is
immediately made available to the maximum number of users
with the minimum amount of effort.
ArgoUML is an open source project.
That means anyone can have a free copy of the source code,
change it, use it for new purposes and so on. The only
(major) obligation is that you pass your code on in the same
way to others. The precise nature of what you can and
can't do varies from project to project, but the
principle is the same.
The advantage is that a small project like ArgoUML
suddenly is open to a lot of additional help from those who
can chip in their ideas for how the program might be
At any one time there may be 10, 15, 20 or more
people making significant contributions to ArgoUML.
To do that commercially would cost $1m+ per year.
Its not just a spirit of pure altruism. Contributing is
a way of learning “hands-on” about leading edge
software. Its a way of getting a lot of visibility (over
1,125,000 people had downloaded ArgoUML by the end of 2005).
That's a lot of good experience on a résumé
and a lot of
potential employers seeing you!
And its great for the ego!
Open Source doesn't preclude making money.
www.gentleware.com sell a commercial version of
ArgoUML, Poseidon. Their value proposition is not a piece of
private code. Its the commercial polish and support that take
risk out of using ArgoUML in a commercial development,
allowing customers to take advantage of ArgoUML's
leading edge technology.