The strategic value of domain models
Generally speaking, DSLs offer great value in model-driven development environments. They are the basis for generative technology. Model-driven development is an advanced extension of model-based development where models at higher semantic levels are utilized to generate downstream models—e.g., design and implementation models—and eventually, software code. Model Driven Architecture (MDA) is the standard for model-driven development.
Other application areas for DSLs are projects building enterprise software applications for a specific profession, say accounting, or a specific domain, such as Enterprise Asset Management (EAM). The idea is for the lead enterprise architect (the role) to hand application modelers the precise language that the application intends to serve. The power this grants you is, instead of thinking in terms of classes, associations, and parts as your fundamental building blocks, you are thinking in terms of domain constructs, such as, Asset, Asset Type, Asset Management Plan, and Asset Lifecycle. The latter cuts development costs by an order of magnitude. This makes it a long term strategic investment in technology, and even, intellectual property if you were to invent your own languages.
In some cases, language invention can be appropriate for what is needed. For example, in a recent project we invented an “interaction modeling language” for application modelers to build apps based on the interactions that occur in real work scenarios, say for example, the interactions between a physician, an assistant nurse, and a patient in a clinical visit. In this manner, you can devise non-standard methods for building software apps on a behavioral basis, not system structure.
In your modeling journey, so far, you have utilized languages such as SysML, ArchiMate, and BPMN. These are “extensions” of the base modeling language UML. You can think of SysML as a domain specific language for the domain of Systems Engineering. SysML, as well as ArchiMate and BPMN were built as extensions of UML using UML Profiles for their respective domains.