This is a review about an already well-known application that has been enjoying huge success, since the earlier releases in 2006 and up to the current version. It's about an UML modeling tool called ArgoUML, the current version of which is 0.25.1, released on May 10, 2007. However, I will refer here to an earlier version, ArgoUML 0.24, mainly because there's no tutorial or documentation material referring to versions higher than 0.24.
Hardly can one find anything these days that doesn't involve, to some extent, the use of a certain computer application. Industry, medical equipment, commerce, sports, entertainment, education, administration, transportation systems, and the list can go on, are all fields that rely more or less on automation. Automation has been successfully introduced with the use of computer programs that perform certain tasks otherwise, meaning directly handled, too time consuming. What has become a matter of fact is that, today, it is practically impossible to accomplish anything by starting from scratch. What I'm trying to say, and I think this is a statement that cannot possibly be debated, is that most of the world we know today would be completely paralyzed if it wasn't for one thing, one of the main factors that led to the technological boom we’re all witnessing right now - computer software.
For a program to be exactly that, a contributor to technical evolution, it has to undergo certain necessary steps to ensure that it will perform its tasks efficiently. That is the most important trait of UML, which takes the construction of a system through a number of phases, while not prescribing any particular process. There are four primary steps required, and I think a brief description of each one is in order now.
The first one is about identifying the system's requirements and describing the problem in the “customers” terms, or, in other words, the problem space. The next stage is the analysis, which takes the requirements and tries to formulate them in the language of the solution space this time. This is performed by keeping a high-level perspective, without getting into the details of a specific solution. Then comes the design phase, when the solution is constructed in full detail, thus migrating from the abstraction of the previous phase to a concrete term realization. The final step is the build phase, in which the actual programming is done, followed by lots of test and validations to observe if the program meets the customer's demands. Also here, the user information material, tutorial and all the documentation reference is written.
The reason why I felt a description of these basic UML steps was necessary was that I would like to state that ArgoUML offers a very good guide about them and, should you find the time to read the user manual, it cannot but turn you into a software design fan. Maybe it's just my small programming background that got the best of me when I first discovered ArgoUML, but I personally believe that designing, analyzing and finally testing a system to joyfully conclude that it works perfectly is very interesting. This program handles the task of helping you understand and efficiently apply these concepts wonderfully, and is also very well supported by its documentation pages.
I have always highly appreciated a software that has a well written documentation, which can virtually transform a newbie in at least an intermediate user without too much trouble. That's because we live in a world of free software, where developers collaborate more than in any other domain, and which is dominated, among others, by a very persistent human emotion. I'm talking about curiosity, of course, the kind that pushes you to dig deeper and deeper until you fully understand the conceptions behind a given application. I'm sure that it has happened to a lot of open source fans to stumble across a little application that they so extensively used that they became active members on the development mailing list.
The ArgoUML reference material, along with its tutorial and quickstart guide, are excellent documentation that I'm confident will prove useful to many of you. Although it is stipulated early in the beginning of the tutorial that it's addressed to experimented users, I had no major difficulties in understanding the basic ideas and functionality. I did not, however, have the chance to experiment just about every aspect of ArgoUML, probably because I did not use it for real, serious work – but that's a future plan of mine, which I'll be sure to share with you, should I accomplish something that's worth mentioning.
I know that this article sounds more like a praise to the software rather than a classical review, but it's difficult to discuss all that you can do with ArgoUML when you have a space limit, so I do not intend to do that here. My goal is to wet your appetite in what regards a great domain to work in, such as software design is, and to give you my general thoughts about my experience with ArgoUML. My first encounter with this program was in my second year of college during an OOP course, and I wondered then what good it could possibly do. After a very long and somewhat frustrating Java assignment, the teacher asked us to also create the UML diagram from our code. It was just a school assignment, no longer than 1,000 lines of code, so the programming process was very straightforward - I read what I had to do, gave it a few minutes’ thought, and then began coding. I was never in a real danger of writing too many lines and later discovering that something didn’t fit with what I had done so far, so that I'd be forced to fundamentally change the whole program. It was neither too complicated, nor too time consuming and, naturally, I failed to get what the point of a UML diagram was.
However, now, I realize that in the real software business, applications stretch out for many code lines, and can contain numerous source files, which makes a prior and thorough analysis and design an absolute prerequisite. And ArgoUML handles this task beautifully; it is, in my and many others' opinion, the tool to use for UML modeling.The Good:
So far, I've concentrated on general aspects, but now's the time to show some practical perks as well. The most important is that it's written in Java, so it's as portable as a software can be, and requires only a machine with Java Runtime Environment (JRE 5 or 6). It's inspired by certain theories within cognitive psychology, thus taking into account the natural way of thinking of a complex system designer, leading to better handling and facilitating creation. It is also capable of code generation (without the method body, of course), reverse engineering by importing java source files and generating diagrams, advanced diagram editing, and has ten-language support (such as English, French, German, Italian and a few more).The Bad:
The "bad" thing is there's no tutorial addressed to people who want to learn UML modeling, but the developers promise that it will be featured in future releases. Also, I might suggest a more appealing interface, maybe SWT but, then again, these are only details, although they do matter in the general overview of the program.The Truth:
With regret that I could not deliver a more detailed article, I honestly recommend ArgoUML to experts, intermediates, and also beginners who are willing to spend the time required to get used to it. I, for one, know what I'm going to delight myself with every evening, so I hope you'll enjoy it too!