Umple is a technology for model-oriented programming.
It can be used for pure UML modeling. Or it can be used to add UML constructs, such as associations and state machines to code written in Java, PHP, C++ or Ruby. It generates code in these languages that can save a large amount of programming effort and result in higher quality.
The UmpleOnline tool allows you to edit UML diagrams graphically, and watch the Umple textual code being written in real time. This works the other way too: You can write textual Umple and watch the corresponding UML diagram appear.
Umple is being extended to support patterns, tracing and a variety of other features.
Umple is written in itself, which is central to maintaining its quality.
Umple can be used today by any programmer or modeler