Whenever you talk to someone about the ISO layers, ITIL or UML, about the first thing they'll tell you is why some (most) of it cannot be applied to them / their projects :)
Umple is a project that addresses this with perfection for UML! You can use as little UML as you want or create your whole project with UML support.
Having said that, this is rather basic UML support indeed. It's been a while since I've used UML myself but if memory serves there were a few more parts to it than class diagrams and associations...
Which brings me back to the first point, those two ARE the parts of UML that everyone will agree on being practical and usable.
Enough personal opinion, what does Umple do exactly?
Well, at its current stage of development you can create UML class diagrams with associations and inheritance.
You enter these using either a simple Java/C++-like definition language or, using their web version, with a tiny graphical editor.
Next you select a language and have Umple generate the corresponding code.
Simple and effective, especially when adding some code to an existing project without having to move the entire project into some case tool!
Last, but perhaps not least, the tool supports the creation of state machines.
Even though the project is obviously still evolving, the generated code is pretty good.
Some drawbacks I did notice:
1. No support for indexed associations. You can mark a "key" for an association end and I'd have expected the generated code to switch to using a TreeMap type construct instead of ArrayList. It doesn't.
2. Graphic support is sketchy. No support for drawing state machines for instance.
Effective, usable tool to quickly get a messy part of your C++, Java, PHP project under control. Non-invasive and does not even require adding any libraries to your project.
Not (yet) suitable for large-scale projects.