umple
The Umple Model-Oriented Programming Technology
...A developer can use Umple in one of several ways. They can start with a pure model, containing only classes, associations, attributes and state machines, and then gradually add methods in one of the base languages to the Umple code base. Alternatively a developer can start with a normal program in a language like Java, and add modeling constructs in very small increments, gradually moving their system from a code-centric system from a model-centric system. Either way, Umple provides top-quality code generation.
Umple is being used, for real systems. ...