People usually distinguish between general modeling languages and domain-specific languages. With this classification, UML clearly belongs to the first group.
It’s also clear (I´d say to almost everybody) that for some domains UML is not exactly the best option and that a domain-specific language tailored to that domain produce much better results.
Nevertheless, what we should never forget is that UML may not be a domain-specific language but it is a many-domains language . That is, UML may not be suited for all domains but can be directly applied to easily and successfully model many of them .
Please avoid creating DSLs that just reinvent the wheel again and again. If your DSL resembles too much UML maybe you should consider using just (a subset of) UML.
UML has many defects but at least after all this time we are more or less aware of all of them!. Instead, when creating an unnecessary DSL you may end up repeating many of the mistakes that we’ve managed TO solve (OR AT least identify) in the case OF UML.
We already fought a hard battle against the UML fever . Let’s try to avoid falling victims of the DSL fever now.
This post is not at all against DSLs. It’s just against the perversion of the DSL concept.