You work in Java, JavaScript or TypeScript and you get asked from a client or your supervisor/boss to create a documentation of the current implementation. The other query comes from the senior or principal software engineers, where you have to design a complex system first and you need a formalized way to do this with UML.
Now you ask yourself:
- Which free UML editor to use?
- Is there a free diagram tool I could use?
- Is there ideally a free UML tool which would work on all environments (Windows, Mac, Linux)?
- If I have to decide for the best free UML tool now, what are the major requirements?
Table of Contents
- What are the criteria for a good a UML tool?
- What are the typical use cases for a (free) UML diagram tool?
- What do we typically need a (free) UML diagram tool for?
- On what operating systems is the (free) UML tool available?
- Does the free UML diagram tool support XMI export?
- Is the common UML 2 standard supported?
- Does the best free UML tool support the required programming languages?
- Softer criteria for the selection process
- Why do we write only about open source or free UML tools?
1. What are the criteria for a good a UML tool?
Before we dig deeper into the criteria, let's start with the common use-cases for a UML tool.
1.1. What are the typical use cases for a (free) UML diagram tool?
Usually, as a software engineer / developer, we either have the situation to create a UML variant from the existing code or we want to also create code from the UML model. This means we have these two cases:
- reverse engineer existing code
usually to document an existing system - generate code from existing UML models
usually to start with an implementation after a design phase
1.2. What do we typically need a (free) UML diagram tool for?
In most cases we need an abstracted presentation of a software system either to be able to talk to other developers or to be able to talk with the supervisor (tech lead, architects, boss) about the proposed solution. This means that in all cases it documents either a planed (in future to be implemented) software system, or an existing software system. But in nearly all cases you need your free UML tool to explain the software system to others.
In more advanced software projects you can even take the free UML tool to design software and a code generator will do a lot of standard implementation for the project already. This is known as the Model-driven-architecture (MDA) approach. But in this article we will focus more on the developers' need for having a good tool to design or reverse engineer.
1.3. On what operating systems is the (free) UML tool available?
As a Linux user from nearly the first year after its release, I am really happy about the fact that my younger padawan developers are also starting to prefer to use Linux as their primary operating system. Of course nowadays the free UML tool has to work well on windows, since the management and clients are mostly still on Windows OS. But there are also a lot of Mac developers, who also want to use a free UML tool properly on their system.
So for our projects we have defined to use only free UML diagram tools which are available for the operating systems (in given priority):
- Windows
- Linux
- Mac
Luckily in most cases if it is available for Linux, the best free UML tool is also available for Mac.
1.4. Does the free UML diagram tool support XMI export?
XML Metadata Interchange (XMI) is a standard of the Object Management Group (OMG) to be able to exchange our UML models between different tools.
Sadly from various talks with the developers of non free UML tools, the commercial developers intentionally integrate compatibility issues or if there are compatibility issues, they try to avoid to fix it. Asking why was mostly answered by why should they help their competitors to catch their clients, which is really bad if you have a requirement to use a different tool in your current project.
This is one of my personal reasons why I prefer to have an open source implementations of data exchange formats. No commercial requirement can stop you from using your invested lifetime in a document or just simply stealing your lifetime by forcing you to fix additional issues from intentional incompatibility.
1.5. Is the common UML 2 standard supported?
1.6. Does the best free UML tool support the required programming languages?
In our case we focus mostly on Java, JavaScript and TypeScript. Of course we sometimes have the need to have ER diagrams for the database. Luckily since the ORMs like hibernate are available we can also easily use the UML class diagram to understand a database.
1.7. Softer criteria for the selection process
There is some other criteria around, which we consider more as a 'would be nice to have the feature'.
1.7.1. MDA support
1.7.2. Templating of the free diagram UML tool
Sometmes there is a coming up requirement to have a corporate design, which needs to be integrated into a UML diagram. Also here, if you already have a clear corporate design for a UML diagram, your company probably already has decided for a UML tool to use. Of course it would be great to have a design templating in your best free UML tool as well.
1.7.3. Integration into Eclipse IDE
1.7.4. Integration into IntelliJ IDE
1.7.5. Support for other programming languages
If the free UML tool supports you on more programming languages like SQL, C, C++, C#, PHP, Ruby, Python, XML, XSD, WSDL, WADL, JPA-Mapping, and many more, that is great, but not mandatory. So this is also a soft criteria.
1.7.6. Cloud-based vs desktop based application
In the meanwhile there are a bunch of cloud based diagramming tools available. Pros and cons can be of course discussed. But for our needs we are focusing on desktop based tools, since our developers have often the requirement that the data has to be protected by the EU-GDPR (the previous laws have been the German BDSG, which was basically a major template for the EU-GDPR / EU-DSGVO). So in many cases we cannot use a cloud based diagramming :(
2. Why do we write only about open source or free UML tools?
Young developers, mostly during study time or during apprenticeship or just for fun, do not want to buy a software which will probably not be supported later in the business. So of course these developers prefer a free UML tool.
In smaller companies, you do not have to discuss with the management if you need a UML tool or not. As a developer team or a lead developer, you can just decide on your own to use a free UML tool, since you do not need any payments from the company.
2.1. What is the best way to give back to the free UML diagram tool community?
Even if the free UML tool does not cost your company anything, I always suggest to ask your boss for a payment for the open source community if you are using a free open source tool from them. Your boss is saving a lot of money with open source. In this case it should be a no brainer to support the community by donating about 10-20% of the savings (compared to commercial UML tool) to the community. The community itself can invest more in improving the free UML diagram tool so both sides benefit from your decision.
Hint: best time to ask for a donation is after the tool is established in your team and your full team is asking for the donation to the community.
3. Is there any best free UML tool available?
Till now we have mostly cleared the requirements and why to use an open source or free UML tool. Now we need to dig deeper into the available UML tooling on the market.
Click on the buttons / tags above the free UML tools to get the reduced list to your requirements. All is preselected in the current view:
4. None tools fit your needs, still need a commercial UML diagram tool?
Please go on reading the article UML tool for developers about the commercial variants.
Author: Darko Palic