I’ve sent the final version of my dissertation to the University of Liverpool. I’ve been doing this Master’s degree since 2005, and now it’s over. It feels good and weird at the same time.
Rem 1.0, the final result and main objective of my Master’s thesis work, has been released today. A small, simple, yet extensible and portable UML tool written in C++, using Juce, POCO and SQLite. Not perfect but extensible and small. And that’s what’s great about it.

8 Comments
#1. Yoan 08.29.2008
I managed to get it running on my linux box as well (by instaling poco, cppunit and juce separately). I cannot draw a line or an arrow. And the toolbox seems to be stuck inside the application when I want to move it out again (if the gesture is fast).
What is the interesting part of this master dissertation ? I bet UML isn’t ;-)
#2. Adrian 08.29.2008
Try selecting an actor and a bubble and click the line button; the same for having an arrow between two actors: select them, and click the arrow button. It’s weird but it’s the only mechanism I found in 6 months of dev to make it… of course it’s not the best but, it fulfills my needs so far :) The dissertation was not only about UML, but also C++, template metaprogramming (see the Active Record implementation), multiple inheritance, and other stuff as well. The idea is to continue, so feel free to send me patches from now on ;)
Did you find the Linux instructions readable? I was worried to have forgotten something so I’m happy you got it up and running. Thanks for the feedback!
#3. Yoan 08.29.2008
Mmmh, kinda weird behaviour yes.
what work:
- pressing Shift, selecting the actor and the circle and then pressing the line.
- pressing Shift, selecting two circles and then pressing the line.
- pressing Shift, selecting two actors and then pressing the arrow.
what doesn’t work
- other kind of combinations
- selecting the two items with the mouse and pressing the line/arrow button (or from the menu)
Cannot the metaprogramming be achieve with macros instead of templates? This is a compiled language after all. I think I need to dive into that or have a better explaination to really get the cool factor of this. Sending patches, for what? I’m done with UML since I left school :-) At least on something that isn’t either paper or a white board. What a waste of public money, isn’t it?
#4. Adrian 08.29.2008
This was a master’s degree project, kid, not your everyday project. A highly experimental one, by the way, in the best academic way. As such, I cannot see myself giving to a red-brick university in the UK a paper showing macros as “advanced” c++ programming… I hope you get my point.
On the other hand, “metaprogramming” has nothing to do with macros, which is just telling the preprocessor to do stuff, with no type-checking whatsoever. Templates not only offer that, but are actually a Turing-complete extension to the language, meaning that you have a complete programming language to deal with; macros is just string replacement, nothing else. Give a read to Alexandrescu’s book to understand what I say: http://tinyurl.com/56hadr
BTW, the combinations that doesn’t work in Rem are intentional. Get back to your books and see that arrows between two actors mean inheriting the use cases attached to.
And yes, please, don’t send patches.
#5. Yoan 09.01.2008
I’m not your kid, dude!
Anyway, my purpose was to say, about the bug, that it’s not intuitive to use Shift+Click to select two items for linking them together. The software doesn’t show any information about what is possible and what isn’t, which leads its user to go back to its UML book, and maybe forget all that.
What interest me, is what is great inside Rem and not Rem itself. C++ template meta-programming is seen as a pure functional and untyped programming language (http://bannalia.blogspot.com/2008/05/functional-characterization-of-c.html) which is quite interesting. Downloading it and trying to read behing the huge load of Doxygen-targeted comments didn’t help me. Or maybe I should give XCode a try (uhu).
So if you have to time to do a proper blog post with that, I’d appreciate way more than this — nonetheless — funny picture.
Cheers m8,
#6. Adrian 09.01.2008
For the moment the project is stopped, as I’m waiting for the evaluation of my dissertation (120 pages of explanations about the project) and then I’ll rewrite parts of it, for sure. I’ll also publish the dissertation once it’s evaluated.
I know that the software isn’t the most intuitive ever, but hey, I’ve done this in 6 months in part time while working, trying to make everything work fine in Windows. Which is a PITA by the way. And writing a dissertation at the same time.
If you want to see the interesting bits of Rem, try the “storage” namespace; see in the tests/ActiveRecordTest.cpp and tests/AnyPropertyMap.cpp files how to use the classes in these namespace. I think the most interesting thing is there, if you ask me. It uses partial template specialization, the “curiously recurring template pattern”, virtual inheritance (to solve the dreaded diamond problem) and template methods inside template classes.
Interesting link you posted; indeed TMP is untyped for the moment… C++0x should add “Concepts” to the mix, used to add some type information to template parameters: http://en.wikipedia.org/wiki/C%2B%2B0x#Concepts
So far, TMP is used with a good deal of duck typing, exactly. But if you’re really interested in the subject, try the Alexandrescu book first. Best book ever on the subject, not too long (~350 pages) and really fun.
As for the comments, any file editor with syntax coloring should do the trick, not only Xcode (Kate, Gedit, EditPlus, TextMate…)
#7. SpinDoctor 09.03.2008
Uhmmm, yo solo queria decir… felicitaciones, cualquiera fuere el tema sobre el que escribiste las 120 paginas. Yo acabo de entregar mi proyecto de disertacion, asi que te imaginas que me gustaria mas bien en tu lugar… :o)
#8. hernun 09.04.2008
hola,
¡feliz cumple y feliz maestría, maestro!
no sé qué clase de problems tengo con el envío de correso. no pude ni siquiera enviarlos vía webmail, de modo que te escribo desde aquí (sería adecuado que borres este comentario en cuanto lo leas, jeje).
en fin. sólo saludarte hasta que pueda escribirte como corresponde (parece que bardea prehistórico un router que instalé).
un abazo grande,
h.
Commenting