final is definitely about enforcement and has been subject to a great deal of controversy.
E.g.
M. Feathers: It's Time To Deprecate Final E.R. Harold: Final == Good E.R. Harold: Eliminating Final That last sentence though seems to be a weak attempt to provide a justification for such a feature in a modeling language. In my opinion,
leaf (like many other of UML's dustier corners) was only introduced into UML for tool makers who needed a model level concept that was equivalent to
final for their code generation, reverse engineering, and roundtrip engineering products. The value that a concept like
leaf adds to UML as a modeling language is dubious and it certainly can make UML more heavy weight. You only need 20% of UML to use it - but apparently a much higher level of competence is required to use a UML tool (that is trying to
sell its code reverse engineering and generation features).
If you have to provide that much low level detail to your modeling tool then you are in fact programming - and you are potentially obfuscating the grand idea of your overall model.
Model-Driven Development: One Curmudgeon's View - Why won't the general purpose language be graphical?
it was simply faster to write code�
�
Computers don't do big picture.