umple
The Umple Model-Oriented Programming Technology
...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. In fact the Umple compiler itself was written in Umple. Any Java, C++ or PHP project could use Umple.
...