2.4. 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.

2.4.1. Cognitive Psychology

2.4.1.1. Theory

ArgoUML is particularly inspired by three theories within cognitive psychology: i) reflection-in-action, ii) opportunistic design iii) and comprehension and problem solving.

2.4.1.1.1. Reflection-in-Action

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.

2.4.1.1.2. Opportunistic 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 alternatives.

2.4.1.1.3. 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:

  1. 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.

  2. Familiar aspects of a situation model, which improve designers' abilities to formulate solutions.

2.4.1.2. Practical Application in ArgoUML

The implementation of these theories within ArgoUML is through a number of techniques.

  1. 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.

  2. 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 critics.

  3. 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 action.

  4. The use of checklists, to guide the user through a complex process.

2.4.2. Open Standards

UML is itself an open standard. ArgoUML throughout has tried to use open standards for all its interfaces.

The key advantage of open standards is that it permits easy inter-working between applications, and the ability to move from one application to another as necessary.

2.4.2.1. 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 designers.

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 separately with the model (see Section 2.5.3.1, “Loading and Saving” ).

2.4.2.2. Graphics Formats - SVG, PNG, JPEG

Scalable Vector Graphics (SVG) is a recent standard proposed to the W3C Standardization body (www.w3c.org) by Adobe ( www.adobe.com). As yet it is not widely adopted, but is likely to become the standard for graphical data that is based on vectors (i.e. lines) rather than bitmaps.

For now ArgoUML saves diagrams using an earlier proposed standard, Portable Graphics Markup Language (PGML). However it has the option to export graphical data as SVG for those who can make use of it.

2.4.2.3. Object Constraint Language (OCL)

Object Constraint Language (OCL) is the UML standard for expressing constraints within diagrams that express the dynamic behavior of a design.

At present OCL is quite new and not widely available. ArgoUML is one of the few CASE tools to provide comprehensive support.

2.4.3. 100% Pure Java

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 (JVM).

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.

2.4.4. Open Source

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 improved. At any one time their 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 100,000 people had downloaded ArgoUML by the spring of 2001). That's a lot of good experience on a resumé and a lot of potential employers seeing you!

And its great for the ego!

Open Source doesn't preclude making money. Gentleware 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.