Some reflections on a future of software engineering

Update. I accidentally published an early draft of thisĀ  long (for a blog post) article by clicking the wrong button in wordpress. If you read this early draft, the article is now in its finished form and I’ve added a couple of links, edited the earlier text, and added loads of links.

I have over the past year been a bit less active blogging and posting in forums. I make an exception on things related to build processes, distributed version management and Java and you may find a couple of fine rants on my website and across various blogs on this topic.

This post is intended to pull all of it together in a bit more grand vision and reflect a bit on what a post revolution software engineering world might look like. I don’t like or believe much in revolutions but I do recognize that getting from where we are to where I think we need to be amounts to one. The more likely outcome is an evolutionary development where the bits and pieces where I was not completely and utterly wrong might actually happen. At some point. Maybe.

Continue reading “Some reflections on a future of software engineering”

umlet

After years of looking for a UML tool that doesn’t suck I stumbled upon Umlet: http://qse.ifs.tuwien.ac.at/~auer/umlet/. Umlet is a very simple tool that makes it very easy to do what IMHO is the primary thing that software designers look for: quickly sketch some diagrams without worrying about correctness, completeness and details. When I’m in design mode, details distract me and break my concentration. I use a design tool primarily to structure my ideas and secondarily to illustrate them to others.

Umlet is very nice in that it doesn’t try to enforce anything. You just drag uml shapes to the drawing area, specify as much (or as little) details as you need in a brilliantly simple text area. This is a killer feature that I have never seen anywhere else. Rather than navigating through complicated dialogs you just type
a

attribute

operationFoo(bladiebla)

to specify the contents of a class rectangle. Other than the dashes there are no restrictions. Don’t want to specify attributes: leave them out. Don’t want to specify the parameters: then don’t. Whatever you type appears in the appropriate place.

When you are done you save it as a bitmap, pdf or svg drawing and it is ready to be pasted in your design doc or powerpoint presentation.

Sounds simple. It is but try to work like this in rational rose, visio or togetherJ and you will quickly get frustrated by these tools insistence to only allow semantically and syntactically correct diagrams. These tools have a purpose in an ideal model driven world that IMHO only exists in the minds of over payed consultants working for companies that are foolish and rich enough to pay the rediculous license fees these tools requires. Outside this world they are bloated, unusable tools that mostly lie unused on the shelves of software architects who have better things to do.

Umlet beats these tools easily if all you want is draw some free form uml diagrams and it comes with an unbeatable price. Of course it isn’t perfect. It doens’t generate code, the user interface is primitive, the set of export formats is limited, etc. But it gets the job done when it comes to sketching designs quickly and most importantly it is light weight and does not impose restrictions, development methods or any particular design solutions.