1. Thanks, Rob, for your comments on this interesting topic. There’s a discussion here too:

    Object-orientation and metamodels are powerful concepts indeed. I find their history fascinating too, hopefully you don’t mind if I throw in a few of my own thoughts, even if some of them differ from yours.

    UML was indeed designed for modelling any discrete system, albeit with a strong OO focus – as a fusion of Rumbaugh’s Object Modeling Technique, Booch’s Object-Oriented Design, and Jacobson’s Object-Oriented Software Engineering, it couldn’t really claim to have nothing to do with OO! Although like any language it can be used to some extent for things it wasn’t designed for, most use these days is still connected to OO implementations, either as a sketch or a blueprint.

    As far as I know, the mouse wasn’t invented at Xerox PARC (founded 1970), but in the 1960s at Stanford Research Institute by Doug Engelbart and Bill English. Most people would say the first OO programming language was Simula 67.

    UML certainly didn’t introduce the metamodel. There were metamodels of object-oriented modeling languages well before UML. In 1993 MetaEdit offered metamodels and modeling support for OODA, OOAD and OMT, and by the first version of MetaEdit+ in 1995, there were already OOA/OOD, FUSION, OODA, OMT, Moses, OSA and OODLE – all before the first full UML draft (0.9 in June 1996). Some other modeling tools, even some fixed to a particular language, also used metamodels, either explicitly or under the covers.

    UML came to the metamodel party rather late and with a surprising date – the Meta Object Facility, born out of work on CORBA and eventually shoehorned to be a subset of UML intended to allow UML to represent itself (mostly for documentation). The first mechanism for supporting UML extension, profiles, is not really a metamodeling mechanism, more just simple tagging. Later MOF and its subsets were promoted by the OMG as ways of extending UML by metamodeling. In practice that doesn’t seem to have happened much; instead, the OMG itself has used MOF as a way of specifying various more or less UML-related languages for business processes or system modeling.

    UML is able to describe many domains, including ones outside its initial area, but I wouldn’t say it is efficient for those. Similarly MOF isn’t particularly good at describing languages other than UML – MOF-based tools seem to require 10-50x the amount of work as tools based on concepts designed from the ground up for metamodeling ( – and that study was by MOF experts on a MOF-based language!).

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.