This is a recurrent question. Even if I barely teach right now, people keep asking me what tool would I recommend to teach UML courses. And it has also been a “hot” topic in our team, especially since NoMagic dropped the academic license for MagicDraw (or complicated a lot the process to get one, still not sure).
I know there is no one-size-fits-all UML tool. In fact, I classify them in different tool categories to try to be a little bit more helpful. But a UML tool for teaching is a different category in itself. To teach UML, I’d like to have a tool that:
- It’s open source, free or, at least, free for students (i.e. an academic license)
- It’s usable. We do not want to give a bad first impression. And providing an intuitive and easy-to-use UML modeling tool is key for this. This includes the installation process (or switch to a web-based UML tool).
- It must be a real modeling tool, not a drawing one.
- At the same time, it would be great if it accepts some flexible / incomplete modeling process where models are eventually consistent but allows for some iterative process instead of assuming models should be precise, complete and correct from the let go.
- Goes beyond modeling, e.g. able to perform some code-generation. This is not really needed to teach UML but it helps to motivate the students about the benefits of learning modeling.
And, if I can dream, it should support OCL to avoid resorting to more “esoteric” tools in advanced modeling courses.
Do you know a tool that checks all these boxes? (I don’t!) Or that comes close? If not, what tool do you use and why?
Summary of your opinions and suggestions
Thank you all for your comments (especially via the comments on this post and this LinkedIn threat). I’ll try to summarize your suggestions. First, two reflections:
- There are not many open source options, nor commercial tools offering a free academic licenses (so that you can use the full features of the tool for free instead of a limited free plan). In fact, we have less than before. A few of you suggested tools that were free / open source before but no more!
- For convenience, textual UML tools (eg. PlantUML) are rather popular. I see them as really useful to deliver assignments or to create UML diagrams to be embedded in other documents, as longa as the actual teaching of UML concepts and constructs is done either on the whiteboard or with a different (graphical) tool. I still think that graphical representation is the best option for some diagrams, especially to discuss alternative representations.
- Pen and pencil was also mentioned as an alternative. I agree with this one as well for in-classroom discussions or to introduce new students to the world of modeling without tools interfering in the process. If we had good and really usable tools, teaching beginners with tools from day one would be a way to help them quickly understand the benefits of modeling. Otherwise, tools may just scare them (see my own experience).
And now let’s see the tools that you suggested:
- Visual Paradigm has indeed a free version (the online version) but at least such free version is more of a drawing tool than a modeling one as I was able to create nice cycles of generalizations with it (obviously, forbidden in UML).
- Modelio Open source and Papyrus were also mentioned. They do satisfy most of the requirements above but I have my doubts regarding the usability one. Just installing them is not easy so they may not be the best tools for beginners. At some point there was an initiative to create a “Papyrus for Education” version.
- GenMyModel is a great free, online and usable suggestion. And it’s also a real modeling tool where you can even export your models as XMI files and import them in other tools for further modeling/analysis. Right now it’s completely free though its future business model is unclear.
- Astah is a not-so-known tool. We had covered it to model with the Goal Structured Notation but I had not really looked into it for UML modeling. And I do like it. It doesn’t have the most “modern” look and feel (it’s a more traditional Java-based classic desktop application) but it does its job. You can easily create all types of UML models with it and it even offers some code generation capabilities. It’s not completely free for teaching purposes but it does seem (information on the website is not 100% clear) that students can get it for free while instructors should pay for an academic license.
All in all, I think it’s clear we can find tools that could help us when teaching UML but there is no clear winner. It all depends on your specific needs. I believe it would be better if we had more options to choose from so I hope to revisit this post in the future and be able to add a few more! In the meantime, please keep pouring your comments and suggestions.
ICREA Research Professor at Internet Interdisciplinary Institute (UOC). Leader of the SOM Research Lab focusing on the broad area of systems and software engineering. Home page.
If you want to teach UML [http://omg.org/spec/uml] the tool should IMHO be as UML specification conformant as possible. Eclipse Papyrus is in my perception the tool of choice in this case. Starting from the hierarchy of meta-classes, taking into account the attributes, association ends and operation ends provided, the checking of constraints I am aware of no other tool coming next to implement the UML specification that pedantic., Most so called UML tools do not even respect the naming of the non-abstract meta-classes, ignore the abstract meta-classes completely.
If you want to teach how to model, my first question is: Why UML?
We’ve been using Visual Paradigm (VP) for over 15 years now. I wouldn’t say it’s the best tool (not sure there is a single one) but it has been doing the job quite nicely. It is industrial strength, meaning almost no bugs. It does consistency check across the different diagrams and supports code generation and reverse engineering. The downside I would say is when you want to use it in a collaborative settings (team projects). There is a collaboration server, you can install a git plugin, but it versions binary files basically. There is a not so stable online version, where you can also add comments (in revision mode). The feedback I have been getting from students (so more than 1000 sample size) is very mitigated.
Two quick comments:
1) To Carsten’s question “why UML” I would say a) the question Jordi posed started with “if you want to teach UML…” and b) what would you suggest today as a better paradigm for teaching formal modeling?
2) IMHO, if you want to teach modeling you would really be better off not using a modeling tool at all in the beginning. My experience is that students who are brand new to the modeling world easily confuse modeling tools with modeling concepts. There is a good deal more to learning “how to model” than there is to “learning a new modeling tool”.
First of all, in accordance with the ISO/IEC 61508 and its derivatives i.e. ISO/IEC 26262, ISO/EN 50126, ISO/EN 50129, ISO/EN 50128, … I do not consider UML being formal. Formal would be for example CCS, CSP, HOL, LOTOS, OBJ, temporal logic, VDM and Z.
I consider UML, SysML, Arcadia being semi-formal.
For teaching purposes I prefer Arcadia. More concise, easier to learn, damn powerful.
d’accord, also model and diagram are mixed up quite often
Exactly. My assumption is that for, let’s say, traditional software analysis and design courses in undergrad courses in computer science / engineering, UML has to be covered. Not saying “only” UML but it wouldn’t make sense (to me) that CS students finish the degree without a basic knowledge of UML. Like it or not it is still the most popular modeling language.
I guess the best-in-class UML tool currently is StarUML. Actually, looks like it even meets all your criteria.
StarUML is one of the tools I do recommend as well but they also moved to closed source. From their website: ” StarUML V1 was an open source project under GPL License. However, current StarUML (after V2) is not open source any more. ”
There was a fork of the original open source version (Called WhiteStarUML) but it’s not really maintained either
If you REALLY need a free / open-source-ish tool, there is Papyrus (https://www.eclipse.org/papyrus/) and Modelio (https://www.modelio.org/). In both cases, I recommend a scripted/pre-defined installation package for students unless they already have software development experience. Once installed, everybody should be OK.
Papyrus is a great tool in many aspects but I find it too difficult to use for new students entering the world of modeling
Why do I have suddenly the other bird called BlueJ [https://www.bluej.org/] in mind?
But I doubt the highly simplified class diagrams BlueJ supports fully fit your needs.
We also switched to Modelio after the MagicDraw debacle, for about three years now. Our students do a modelling project of a board game in the modelling course, then take the same example to generate code from the models (in another course). We have about 60+ students each year.
It works well after we explain students how to use the tool, how to customise the views so that it fits the syntax we teach, and how to properly use version control.
We are somehow happy with it, but there is a few drawbacks. First, it does not work well with some MacOS/Linux distros (specifically two years ago, after a massive upgrade in MacOS). We do not use it as a collaborative tool, but many students expressed the need to exchange diagrams (as they are paired for the Lab). My dream would also be to have an online, easy to deploy, always up-to-date, tool for modelling in UML. FInally, performing OCL checks does seem to work with some older version… Wish me luck for the new one 🙂
I would also love to have a fully-fledged *modelling* tool for UML (that easily enforces object diagrams conformance checks for example at the click of a button, with errors notifications and correction, etc.) but the actual choices are very slim…
We briefly considered VisualParadigm a year, but stopped with it had too many issues (but this was years back, it certainly improved since then). We considered Papyrus the past years, but the effort of recreating the tutorial videos and the small examples stopped us (well, this is extra time someone has to spend without any actual return).
I would join any effort to develop such a tool that includes a nice, intuitive way of plugging OCL constraints and actually checking them (with appropriate error notifications, fixes, etc.)
Still stick to UML v1.x?
UML2 supersedes the Object notion with the IMHO much more versatile InstanceSpecification meta-class. Yeah, slowly even some commercial UML tools begin to support the InstanceSpecification meta-class.
I am not a specialist of UML and its many intricate details, especially because when I started teaching this course, UML was already in its version 2(.1, if I remember correctly).
What I want to transmit to my students is a way of thinking, and a rather standardised way of transmitting their thoughts. Most of their expressions come in a visual way, and from what I read from the UML Standard v2.5.1 (2017):
An InstanceSpecification is depicted using similar notation to its classifiers, but in place of the Classifier name appears
**an underlined concatenation of the instance name (if any), a colon (‘:’) and the Classifier name or names**. The
convention for showing multiple classifiers is to separate their names by commas.
An InstanceSpecification whose classifier is an Association represents a link and is shown **using the same notation as for
an Association**, but the solid path or paths connect InstanceSpecifications rather than Classifiers.”
Visually, I don’t see a clear difference in the syntax for previously called Objects, and current InstanceSpecs. Hence, my confusion, which is opportunistic: since students already have encountered the notion of Objects in Object-Oriented Programming, I don’t want to confuse them…
Another point is that I don’t want my students to become specialists of the UML standard. Rather, I want them to acquire a knowledge that allow them to communicate what they understand from an Information System (or any other system, for that matter), with two objectives in mind: (i) communicate with other stakeholders, certainly not familiar with the latest UML development; and (ii) generate code from their models, so that it become usable (some would say, transformable… MDE-style).
In the long term, I also want them to be able to cope with other formalisms, languages, etc., typically what we find in MDE tools. In particular, they model expertise domains later in the cursus (creating so-called Domain-Specific Languages). To do that, they use MOF/Ecore/…, which is strictly speaking not UML: no notion as rich as an association, everything should be rooted in a “main” class, no interfaces, etc. With this simplicity, they are able to actually generate code and manipulate it (generating tests, applying formal verification, etc.)
As I see it, the distinction is rather minimal, but the confusion plays in the favour of the students, their previous knowledge, and the tasks they are meant to perform with UML. And UML is not the objective, it is a means to a more global end. If they end up using UML in industry, it’s fine by me, but I still think they come fully equipped with what they would need, and have all the tools to learn what is missing if necessary (specifically, using SysML: the returns I have is that the transition is rather smooth once they understand what a System is meant to be…)