There are literally hundred of UML tools. So, no way to even try to look for any complete comparison among them. Instead, I’ll aim to give you links to the most relevant tools (at least in my opinion) grouped in a number of different categories. I also maintain a twitter list of UML / modeling tools that could be useful in your search.

But before we start, let me give you my advice when choosing a UML2 tool: think carefully what you need the tool for!. There is no one size fits all UML tool. A UML tool with strong code generation capabilities may not offer a good collaborative modeling environment or be too strict to be used for drawing some informal models during the early stages of the development process.

After this word of caution, let’s start with our lists of UML tools (remember that if you feel overwhelmed and want some UML pro help, you can always check our consulting services).

There is no one-size-fits-all UML2 tool. Think carefully about what you need the tool for (documentation?, code-generation?, early design?...) and then look for a tool that excels at that Click To Tweet

My top five all-purpose UML tools

In no particular order, these are the five tools I’d start checking first. I’ve “played” and liked all of them

  • MagicDraw: I love the usability of MagicDraw. But I even like more its strong UML execution and simulation capabilities. NoMagic (the company behind MagicDraw) was recently bought by Dassault Systems .  As a result, we can expect MagicDraw to become even better at modeling for systems engineering.
  • Papyrus UML. It’s the “de facto” UML modeling tool for the Eclipse environment. Free and open source, it’s your go-to tool if you are an Eclipse user or need to integrate your modeling tool with other Eclipse-based tools as part of full development pipeline. While Papyrus is for sure not the most simple and intuitive tool out there, it is making good efforts in adapting its interface to the user profile and needs (e.g. see the Papyrus for Information Modeling or the Papyrus for real-time specializations).
  • Modelio. A very powerful tool organized as a core open source modeler to be extended by premium (mostly commercial) modules available in the modelio store. This allows you to adapt and evolve your modeling needs. For instance, you can start by modeling the system for free and then decide to buy an extension to be able to generate automatically its implementation in C#.
  • ArgoUML. Ok, now you’ll think I went nuts. Yes, I agree, ArgoUML is one of the ugliest UML tools you’ve ever seen and has not been updated at all in the last few years. But ArgoUML wins them all in the “sentimental UML tool” category. It was the first UML tool I used and they did an excellent job at a time where there were basically no free / open source UML tools available. I believe ArgoUML deserves some credit for that!.
  • StarUML: If Grady Booch itself endorses it (see below), StarUML had to make it to the top 5. This is your best option if you’re looking for a quick, easy-to-use, simple and reasonably cheap UML modeling tool.

Btw, if I wasn’t so sentimental (as I say above, the only reason why ArgoUML is on the list), Enterprise Architect would also be on the top 5. It’s also a great tool with a greater emphasis on information / business / strategic modeling aspects than the others.

 

Textual UML tools

Sometimes old plain text triumphs over nice cool graphics. If you think graphical UML editors are too slow or cumbersome, there are plenty of textual UML tools available (and some of them rather successful).

All textual UML tools offer some kind of (mostly) simple language to describe your UML class, sequence, activity ,… diagrams. You can use this textual UML description to store and compare your models but you can still visualize teh resulting diagram since all of them are able to automatically display the corresponding graphical UML diagram from its textual description.

Wanna know more? see our complete list of textual modeling tools.

Executable UML tools

Executable UML (check the new Executable UML standards fuml and Alf) aims at defining UML models with a behavioral specification precise enough to be effectively executed. In its purest state, Executable UML eliminates the need of programming the software system.

Several executable UML tools
are now available. Check the full list of Executable UML tools we have discovered so far!.

Online UML tools

Web-based UML tools are the fastest growing market in the UML tools segment. Not really a surprise, we are seeing the same trend everywhere (e.g. cloud-based programming IDEs).

To keep up with the pace of new tools popping up in this UML tools area, we have a dedicated page to cover the top online UML modeling tools (also including web-based tools for ER and BPMN diagrams)

Eclipse UML tools

Eclipse users have Papyrus (mentioned above) to define UML, SysML,… models. But there are other good alternatives as well. Especial mentin to UML designer built with Sirius (a framework to create your own customized modeling environment).

You can find other Eclipse UML2 compatible tools (but take into account that the list is outdated).

Free and Open source UML tools

If you are only interested in free / open source UML tools, then you’re lucky!. Many of the tools mentioned above are open source or have at least a free plan. Price is not an excuse for not learning UML!

And if you need yet more suggestions, I’ll give you one more. Try UMLet.

UML tools for Python

Are UML tools that are specially indicated when you work on Python projects? (both in the UML to Python and Python to UML direction). Yes and No.

Yes, because at some point there were a good number of tools focused on making UML and Python work together, but NO because, as you can see, most of them have been long abandoned (though some are still somewhat usable):

  • PyUML is an open source Eclipse plug-in offering round-trip engineering between UML and Python. UML support is limited to class diagrams and the code-generation capabilities are simple class to class (or interface to interface) transformations. Last release in 2009
  • Epydoc : Generate UML documentation from python code (last release on 2008)
  • PyNSource : Reverse engineer python source code into UML. Generated UML class diagrams can be displayed as ASCII Art or in a more typical graphical form. Latest version from 2012.
  • Lumpy . Python module that generates UML diagrams (currently object and class diagrams) from a running Python program. It is similar to a graphical debugger in the sense that it generates a visualization of the state of a running program, but it is different from a debugger in the sense that it tries to generate high-level visualizations that are compliant (at least in spirit) with standard UML
  • And others like ObjectDomain (commercial tool with forward and reverse engineering support for Python) and  argoUML-python do not even seem to exist anymore.
  • GraphModels (django-command-extensions) creates a UML-like GraphViz dot file for the specified app name. Latest release from 2009.
  • Pyreverse included in Pylint  (a Python static code analysis tool) analyses Python code and extracts UML class diagrams and package dependencies
  • pywebuml uses graphviz to create a UML class diagram representing your python (and also Java and C#) code. Latest release from 2012.
  • uml-to-django automatically generates the Django model and admin interface from a UML class diagram. My own UMLtoDjango service had a very similar tool, focusing on the automatic generation of CRUD interfaces for Django from a simple class diagram.

Nevertheless, if the market of UML-to-python (and python-to-UML) is clearly underserved, at least we have some general UML tools that include some forward and reverse engineering support for Python, like Enterprise Architect (source code roundtrip), Visual Paradigm (python code generation from class diagrams) or GenMyModel (model-to-text transformation template for Python). Nothing really spectacular but good enough to save you some time.

Curiously enough, Python is indeed used to build modeling tools themselves. See PyEcore, a modeling framework written in Python or Sismic, an open source Python API for statechart execution, validation and testing.