Building a sexy Umbrello

I’m a big fan of Umbrello. It’s a Free Software graphical UML (Unified  Modeling Language) editor, one of the very few of it’s kind. Most UML tools are proprietary tools written in Java and Umbrello is written in C++/Qt and build on the powerful base of KDE  software. I realized how interesting Umbrello is when I noticed that the  most of my professors suggest proprietary tools or a generic diagramming program with few UML features to study UML at college class. Many companies use UML to help them quickly write applications and Umbrello is (as far as I know) the only Free Software tool which can do the code generation required for that!

Why UML is important?

Modeling is the designing of software applications before coding. Modeling is an Essential Part of large software projects, and helpful to medium and even small projects as well. (…) Using a model, those responsible for a software development project’s success can assure themselves that business functionality is complete and correct, end-user needs are met, and program design supports requirements for scalability(…)

Of course, It is not only my college that uses UML, there are a lot of company wich use UML tools in their development process, including  companies where I have worked and you can find some more examples here.


So having a Free Software UML editor is pretty important! And the Umbrello UML editor is really cool:

  • Automatic code generation (Ada, C++, C#, Java, perl, PHP, Python, Ruby)
  • Import classes and project (Ada, C++, IDL, Java, Pascal and Python only)

The bad news is that Umbrello does not receive a lot of love. It has been roughly ported to Qt4 and KDElibs4 but still uses a lot of Q3Canvas classes and has quite a few bugs.

Umbrello today


Working on Umbrello

Which is why I choose Umbrello for my conclusion work for the University. I would have to work on something anyway, why not pick something that matters? But as I combine my study (5 nights with each a different class) with a full-time job I don’t have a lot of time to do a proper job on Umbrello. My goal for the University is therefore pretty modest: I intend to finish the port of the canvas to QGraphicsView. I have identified about 30 classes which are related to the Q3Canvas and will have to be ported or replaced. I also intend to use tools for automated tests, write unit tests and and fix some bugs.

But there is more to do:
  • Better stereotypes supports
  • Complete Undo/Redo  support
  • Hyperlinks support
  • Reuse KDevelop analysis for code import
  • Bug fixing

GSoC 2011

So I have applied for a Google Summer of Code. Jonathan Riddel, the current maintainer of Umbrello, has said he would mentor me, which is really cool. So if I get this, I can quit my current job and finish the porting to QGraphicsView much faster. To ensure it’ll be a successful project, I’ve been quite modest in my goals for GSoC too: I only shortened my university plan to the GSoC timeline and added a few small things. If I finish the work for my conclusion work during the GSoC, I can be more ambitious for my University and add to the plan – I’m sure my professor won’t mind if I take on some feature work in Umbrello as well!


Sobre Camila San

11 Responses to Building a sexy Umbrello

  1. Great to see it’s getting some love, I’ve always thought it was a pretty well designed piece of software.

  2. Joerg says:

    There is also as UML tool with many features. Sadly the developed decided to stop working on it.

    Umbrello can need some more love.
    Good luck with GSoC :)

  3. Hyperion says:

    I agree with you, that modelling is quite important. What I miss definitly in most of those programs is a good export of model data into a good printable format like SVG and EPS. Modelling is mostly a visual experience; so I think a good export to put it into printed documentation (or scientific thesis ;-) ) is a needed feature.

    A small comment regarding the import and export feature from umbrello: I wonder how umbrello handles constructs of non class centric languages like Python, Ruby, Perl or PHP? How do you model a “function” in UML? Imho UML class and object diagrams are limited to class centric languages like Java and C#.

  4. jstaniek says:

    What do you think about ?

    • Camila San says:

      Hi! I didn’t see that until yesterday, it was added very late. It is an interesting idea and I might have done it if I had time to prepare – see my proposal ( If you want, send me a mail with more info – maybe we can work something out on short notice…

  5. Naproxeno says:

    As an Umbrello user, I applaud your decission and wish you luck.

    Thank you!

    • Camila San says:

      thank you! =)

  6. whilo says:

    As I recently had to start working with Java code, I have started by modelling a bit in Umbrello and exporting that to a first version of code only to find out that it was pretty b0rked. Importing also crashed Umbrello both for Java and for C++ projects. Umbrello is indeed a very fine application and nothing free of the Java/Eclipse world really matches it imo and I don’t like Java GUI applications. Hope you can make some progress…

  7. Good luck with this project, Camila! It’s very important to KDE community and developers/students of development systems!

  8. Emmanuel Lepage Vallee says:

    Thanks god, someone who want to give love it Umbrello. In fact, dont worry, your not alone. I am currently working on it too.

    The whole UI is a disaster, the 2008 GSoC to fix it was a failure and it still as unusable as it ever was.

    Two weeks ago, I started to port the UI from the countless dialogs and property tabs to an interface closer to MySQL workbench (OSS) and Open Model Sphere (fully GPL, but not really open source). Instead of having a dock for every type of UML at once, it will have one per class (use case, UML, database) and instead of having the ugly and slow to use property dialog to add items in class/tables, it use a bottom dock widget.

    For your GSoC, I have an idea. I think a good way to go for the QGraphView would be to port KGraphViewer to it and build an API to make custom shapes and custom event handler for them. KGraphViewer is not in kdesdk, but should be a nice addition to it. Look at it that way:
    -Umbrello have a custom graph view
    -KCacheGrind use graphwiz in a very buggy way
    -Massiv already use kgraphviewer and can not be merged with KCacheGrind because it rely on it
    -KGraphViewer use, well, itself, but provide a kpart
    -KDevPlatform/KDevelop also used graphwiz last time I checked
    -Git/SVN/CVS frontend also need a good graph viewer

    Take this into consideration. I think making one that can be integrated in all of those apps would be a better long term solution than keeping umbrello own (buggy) renderer. If you take that way to solve the problem, count me in too. I may be too unreliable to do a GSoC this year (in fact, apparently, this is always the case, so I wont apply again, prefer to give my place to someone who really have the time to complete his/her job in time, I don’t), but I still work on KDE in the background.

    Back to my current work, it’s not ready to be merged, it only start to work and I want to be sure that I will be able to complete it before dumping any code for review because an half backed redesign is worst than nothing at all.

    contact at elv1313 at gmail for more details, git access to my branch and so on.

  9. Panke says:

    During my studies of Computer Sciene I needed a tool like Umbrello several times and while I
    was looking for one (and I considered Umbrello, too), I realised that every single free one (beer or speech)
    sucks hard. So great to hear, that someone tries to change this.

    But I would like to propose some different yet harder to accomplish approach:

    Build a GOPPRR-Tool like MetaEdit+ maybe based on Kivio. This way there would be
    a modelling and code generation tool for every Modelling Language that exists with
    well researched theoretical foundations.

    Sadly I have no time to work on this myself.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do

Você está comentando utilizando sua conta Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

%d blogueiros gostam disto: