Jump to content

Preferred UML Tool

Recommended Posts

I thought I would add a few details to explain our selection....

When I first investigated UML tools about three years ago I looked at a number of tools (certainly not all) that were free to quite expensive. Most of the free tools at the time did not support the (then-current) 2.0 specification. I initially ended up selecting a tool from the same vendor that made the requirements management tool we use. I found that UML tool to be very hard to use (admittedly part of it was probably my lack of experience with a UML tool). The help files didn't even attempt to provide information on common user questions, the product support was poor, and extra modules for the tool were absurdly expensive.

We knew about Enterprise Architect and switched to it when we heard good things from some colleagues with another organization. EA quickly proved its value. Not only was it about ten times less expensive than the previous tool we had, it turned out to be really usable! It has a generally well-designed interface and I find that I can use it quite efficiently. It handles the core UML functions quite well. We distribute our models to readers via the free viewer, as HTML, or sometimes in RTFs. EA has version control capabilities that work well with Subversion, and EA's design supports sharing packages between models very effectively. The help files are good, there is an active EA user forum (although it's not independent like LAVA) and the Sparx Systems folks are quite helpful on the forum and via technical support. Updates are easy to install. I can see why EA has won some significant industry awards and has a pretty large following.

EA has many additional features that can help with the software development process. Some of these non-core functionalities are more useful than others. One nice thing is that add-ins (some by third party developers) are inexpensive. (SysML, in particular, has so much potential! I think the requirements traceability features need improvement before this can fully take over for a good requirements database tool, though.) In short, EA has become one of my favorite tools. I like it nearly as much as LabVIEW. (Gasp!)

By the way, you can find lists of UML tools at the OMG's UML page: http://www.uml.org/#UML2.0.

I'm pretty sure Endevo's UML Modeller (UML Modeller 1.2)--already mentioned--is the only tool that supports LabVIEW code generation from diagrams (class diagrams) and diagram (class diagrams, again) generation from LabVIEW code. (EA supports this for other platforms but not LabVIEW. I really want Sparx Systems and National Instruments to work together to make this a reality for LabVIEW.) UML Modeller supports five of the thirteen UML 2.x diagrams (probably the ones I most use). I haven't worked with UML Modeller so I can't comment on its usability.

One last comment. In principle a model developed using one tool can be opened in any other tool that meets the same UML standard, since the files are stored in XML-formatted files according to a standard. Unfortunately, the reality is that models are generally not interchangeable between tools (yet).

Link to comment
  • 4 weeks later...

I went deeper into this field (it became my hobby staring on the OMG's spec), and I just want to share my latest insight.

There is a standard for saving the uml diagrams in xml called 'XMI', the syntax can be found on the OMG page. This is pretty much important, when you want to shar data between two or more uml tools or want some code autogeneration.

So far, a big down of dia (I proposed it) is, that it doesn't support XMI. Furthermore the developers assigned that issue a low priority, meaning that they won't fix it.

I will switch over to StarUML as well...


Link to comment

I have to say the editor is not bad.

I like it because it's easy to use and I can focus on the software design rather than fighting the diagram like I do with Visio. Code generation isn't my goal; I'm looking for speed and simplicity. StarUML, though quirky in some areas, fits those requirements pretty well.

I wish it explained more about the concepts of UML.

It definitely expects that you know what you want to do with UML. The sparse documentation tells you how to do things, but not when or why you would want to do them. I think that's on purpose. UML is a language. How you apply the language to your problem is up to you. To figure that out you need to look into the various software design processes that use UML and see how they use the different diagrams. (Here's a link to a good overview of the main diagrams as used by the Rational process, and another link to more in depth documentation.) UML provides very generalized pieces for you to build your software model in a way that makes sense to you. Not all of the abilities of each piece provided by StarUML need to be used. Some of them have properties that do not show up on diagrams. (I assume they're for code generation.) Since I'm only using StarUML for the diagrams I don't bother with any of those properties.

I think the important thing to remember is to avoid the urge to model your software in exquisite detail. For example, I no longer fill in all inputs and outputs for each method in a class. That made the diagrams more confusing and created a lot of work trying to keep the classifiers updated. Now I enter that information only when it is needed to clarify a relationship or the purpose of a method. Most of my class methods (operations, in StarUML) simply define the name and scope.

Taking a step back from that I also focus on just a few types of diagrams. I use class diagrams all the time to model the static relationships between my classes and sequence diagrams to model complex sequences between objects at runtime. I have used use case diagrams but haven't found them very useful as an analysis tool. Their main value is documenting what the use cases are so I don't forget any. Working up a user interface activity diagram last week with an Operator swimlane and a System swimlane played a key role in uncovering use cases the customer expected to work but had not articulated. Activity diagrams with swimlanes are also very helpful in figuring out what messages and data needs to be passed between parallel loops. I like using the collaboration diagram for a high level view of the information flow in my app.

There is a standard for saving the uml diagrams in xml called 'XMI', the syntax can be found on the OMG page. This is pretty much important, when you want to shar data between two or more uml tools or want some code autogeneration.

This is very important if using StarUML since it's development appears to have stopped several years ago. From what little I've read, UML tools all implement their own flavor of XMI, much like what occurred during the browser wars of a decade ago. Is there any chance of you exporting a StarUML file to XMI and seeing how well it complies to the standard?

Have you guys ever tried Argo UML? http://argouml.tigris.org/

I installed it several weeks ago and fiddled with it for a few minutes. It seemed like overkill for what I needed and I really didn't have time to learn a new UML tool, so I dropped it.

Link to comment

I was digging through the XMI export generated by StarUML for a StateMachine and cross-checking it with the XMI specs to broaden the scope for my uml to lv state machine compiler. Both the xmi and the xmi specs (they are a syntax definition) are written in xml, so readable for both machine and human. So I guess there is a compliance check available. I havn't yet compared it to other XMI files, so I have now experience about the real compliance limits. If someone is just exploring some tool for generating state machines, it would be nice to PM me a xmi export, so I can compare the flavours...

Generally, I think that importing xmi files won't always work. You can nest several general container objects, here the root layer of an StarUML file:

model(this is the project)->namespace->model(this is the diagram)->namespace->statemachine.

It might be very specific to the tool how this can be handled.

The next issue I expect is that the uml/xmi scope is describing very detailed bits most developers won't care, hence there is no real need to implement it into an uml tool. As an example the trigger of a transition might be resolved further as


where TimeExpression will be already in the form of your final code. I have the follwing 'stop' found in StarUml that the DoActivity of a state will only be converted into UML:UninterpretedAction where there is a choice of maybe 7 different 'Action types'.

As a short summary, the xmi specs gives a lot of flexibility to implement it. I therefore doubt that importing xmi will always work, both in general and considering details.


Link to comment

I discovered some mistakes in my statements above.

StarUml is using the xmi specs V 1.3 from 2001. Current version is V2.1.1 If I remember correctly, they also can export in 1.1

Because even the link has changed since:

UML 1_3

Seems like there are more specs than tools that care about them... :oops:

I will keep updating this thread when I found out more about it. Maybe others can also give a brief comment about the xmi versions other tools claim to be able. Even better, let's share some dummy uml exports and try to import them... That way we would at least have a list of compatibility issues.


Link to comment

A couple years ago when we were investigating tools we tried reading XMI files generated by one tool with another tool. It didn't work very well at all. At the time there was even a note on OMG's site (I'm pretty sure it was OMG's site--I can't find it now) that noted that XMI interoperability hadn't been as successful as hoped at that point. I do know that there are some tools that will read files from certain other tools, but I'd want to test this before counting on it to work!

Note that there are different versions of XMI requirements, so if sharing models between tools is essential you will want to make sure your tools support the version of XMI you need as well as the appropriate version of the UML specification. (The move to UML 2.0 was pretty significant and not all tools discussed in this thread support the latest version of the UML specification.)

The selection of an appropriate tool ultimately will depend on what you want to do with it. If you want to make throw-away sketches you need a certain level of functionality. Generating code is at the other end of the spectrum. In between one can make models for documentation and design discussions, perhaps requiring management of the models in version control. I think in all of these the ease of use and flexibility of the tool comes into play, of course.

Link to comment

Paul, which edition of EA do you use? I checked out the website and it looks like it is trying to be more than just a UML tool. It also wants to be a code generator and project management tool (with unit testing and resource tracking options.) What features have you found particularly useful and what features are less useful fluff?

Link to comment

We use the Corporate edition of EA (might as well, since there isn't much difference in price). Yes, EA does do code generation (unfortunately, not for LabVIEW), which is a feature of certain UML tools. We actually do use it to generate Java classes for one of our applications. (You can also generate a model from code, which is something we have not tried.)

EA does support much more functionality, as you note.

I have the SysML add-in. I don't use it regularly, though, since we haven't committed to SysML. (Philosophically, I think SysML has a lot to offer since everything is in a single model, but I don't expect our project to adopt it wholesale anytime soon.)

I also have the DOORS add-in (links to a DOORS requirements management database), which works well enough for our purposes. I think EA has some work to do to make requirements management seriously effective in EA (which is also why I don't use SysML just yet). In particular, we want to show that if we satisfy all the requirements of a summary requirement that requirement should show as satisfied as well (see NI Requirements Gateway for an excellent example) but EA doesn't have any way to do this now. (I put in a feature request.) EA does support a relationship matrix to show which requirements are covered, but I don't think this as implemented is all that helpful. We do export our requirements to a web-based tool, Enterprise Tester, in which we can write and execute test procedures and generate issues in our issue tracker (JIRA--an absolutely fantastic tool). Enterprise Tester is still in its infancy and so rough around the edges but even at that it has been a huge help.

EA also supports project estimation and management tools. I think these are actually pretty good, but I don't use them partly because of the issues with handling requirements in the first place and partly because I have more interest in using tools that focus on iterative development. (The plan is to implement the JIRA plug-in, Greenhopper, but I have to learn how to use that first!)

Users on the EA forum have said some good things about RaQuest (a third-party plug-in for requirements management). I certainly would like a great requirements management tool that works across our enterprise but I don't think I've found it yet.

Users on the EA forum have had good things to say about the ICONIX toolset as well. I have the book, which is pretty well written, but to date our usage of EA differs. I don't think we will adopt the ICONIX methodology as a whole ever, but the book is still worth a read.

The core of EA has a lot of features and overall they function quite well. The plug-ins are inexpensive as well. (For comparison, we were interested in an XMI importer-exporter add-in for our previous tool and the cost of the add-in exceeded the original cost of the expensive tool! This functionality is included in the version of EA we already have.)

Anyway, most of our work stays solidly within the realm of use case diagrams, deployment diagrams, component diagrams, sequence diagrams, statemachine diagrams, and class diagrams, with the last two being arguably the most used here. The EA core supports all of these quite nicely. Support for version control is quite nice and a huge benefit, and it is quite nice to be able to distribute the projects either natively (readable with EALite), as HTML, or as an rtf document (the last of which we don't do often). EA is fast and (relatively) easy to use, I have found, although of course there was a learning curve much as I experienced the first time I tried to use a spreadsheet many years ago.

Link to comment

The Endevo UML tool integrates fully with LabVIEW, does do code generation and code extraction (generate the UML from a VI hierarchy), and is the recommended tool by National Instruments for G developers who need UML support.


Yes, this is true, as noted above.

I will tackle this issue from a user perspective, though. As a user I want: support for all 13 UML diagrams, a tool compliant with the latest UML standard, a tool with integrated support of version control and many other aspects of software development (ultimately including requirements traceability and testing)--and code generation and code extraction with LabVIEW. I have heard very good things about Endevo's tool (which again, I have not used myself) and I support furthering the development with Endevo to make this a full-featured tool, but as I look on the website as a potential customer, I see that Endevo's UML Modeller supports only 5 diagram types and doesn't promise compatibility with the latest UML standard, nor does it have anywhere near the feature-list that a tool like EA offers (and that I like to use!). (Moreover, EA is much less expensive and can afford to be since Sparx has sold over 150,000 licenses for it.)

My point is not that EA is the answer but that I want a better answer than the current solution. Maybe this means working with Sparx. Maybe this means investing more in Endevo's offering. Are we moving in either direction?

I'm sure I'm a demanding customer in this regard; but, why shouldn't I have it? :-)


Link to comment
  • 3 weeks later...

Well I've been trying out Enterprise Architect on the basis of Paul's experience, and it turns out it is very similar to StarUML. Maybe Sparx used Star UML source code? Maybe they hired the StarUML developers? I dunno... but moving from one to the other is no problem at all.

Link to comment
  • 6 months later...

I did create a community group for uml on the dark side:


This thread is of course refered there.

You're all invited to join, but I'll stay on LAVA as well of course.

I'll try to do more on the LabVIEW/uml frontier the next month. I think this is a really interesting issue, as the graphical nature of uml is actually favouring our minds experienced with graphical software engineering. On the other hand, uml is condensing a bunch of OOP concepts that are not yet represented in LVOOP (interfaces, abstract classes...). And to even think bigger, uml has some concepts intended to bridge the gap: on the one hand it could be necessary to try to reuse the infrastructure only and develop a modelling language on it's own via CMOF or EMOF in parallel to uml to comply with the LVOOP native by-val syntax. On the other hand, a subset of LVOOP (by-ref design) could be modelled using the profiles packages that are in both Infrastructure and superstructure of the uml specs.

But it must admit that I'm just to much in my early steps on both uml and LVOOP to see the way to go. But I'll be bloging in the community mentioned above about my uml-findings (it's pretty dry but philosophical stuff, best digested with some dry red wine!).


Link to comment

I'll have to pay more attention to this, somehow missed this thread back when it was active earlier.

I started playing with Altova's UModel, for no real reason other than I already had a license for it by virtue of me being an XMLSpy user. Consider me a novice as far as UML goes, I've always done pseudo UML using good old pen and paper before, figured I'd pony up and do it for real this time around.

Link to comment

Paul and Daqlu -

AQ mentioned that the Endevo/Symbio tool is the recommended UML tool for LV. That doesn't mean, however, that others haven't created UML tools as well.

Some LabVIEW users at AddQ released a free LabVIEW OO framework called G#, and they actually built a plug-in for StarUML. It supports both code generation and reverse engineering of G# classes. They've done this primarily as an open source effort, and might be willing to look at general LV class support for StarUML (or let someone else take that up, in the open source spirit yes.gif )

Link to comment

Paul and Daqlu -

AQ mentioned that the Endevo/Symbio tool is the recommended UML tool for LV. That doesn't mean, however, that others haven't created UML tools as well.

Some LabVIEW users at AddQ released a free LabVIEW OO framework called G#, and they actually built a plug-in for StarUML. It supports both code generation and reverse engineering of G# classes. They've done this primarily as an open source effort, and might be willing to look at general LV class support for StarUML (or let someone else take that up, in the open source spirit yes.gif )

Thanks for the information on AddQ. I hadn't heard of it before. I applaud the creators for making it available for free.

On the other hand, I am going to state that I think think the strategy for UML-LabVIEW integration thus far is inappropriate and unsatisfactory. I think that we should only consider tools that support the current UML standard (an open standard published by OMG). That should be a minimum requirement. Neither Symbio's tool (as good as it is) nor StarUML come close to doing that. Moreover, StarUML is not an active project and hence will never see another upgrade and hence will be an even worse option long-term. (My apologies to StarUML fans, but that's just stating it the way it is.)

I think that NI has already developed the IP to take this to the next step. NI needs to make a good business decision here to make an agreement with one or more appopriate tool vendors (could be existing vendors or a new vendor) that will result in a tool that fully supports the latest UML specification and will continue to support future specifications. I think NI can make such an arrangement while benefitting all parties, and I think it will make LabVIEW and NI more competitive as a consequence.

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...

Important Information

By using this site, you agree to our Terms of Use.