Using Languages That You've Built
We build (or use preexisting) languages for the same reasons we build metamodels: to declare the elements of a modeling language so we can build mappings between them. However, construction of a metamodel is only one way to build a language.
The genius of the UML is that it is ecumenical: It allows anyone to use it in any way he or she chooses. A user of the UML has the ability, via the profile mechanism, to add features so that additional meanings can be adduced. Alternatively, you may build a MOF metamodel, either from scratch or by importing the UML metamodel and making incremental variations from that.
A language needs a concrete syntax. One approach is to bend the UML to your will by constructing mappings between the abstract syntax of a UML concrete representation and the metamodel of your language. An alternative is to construct a domain-specific language that meets your specific needs.
Sometimes a language is incomplete, or it requires addition of elements at a different level of abstraction from the rest of the model. In this case, we may elaborate the generated model. We take up this topic in Chapter 8.