Some time ago one of our current customers, an international tractor manufacturer, wanted us to come up with a domain-specific language to describe his products (i.e. tractors) in order to manage the different variants, etc.
I always was really skeptical about using UML to define DSLs, but after investigating several month in tweaking it, we came up with an IMHO very pragmatic and concise solution.
With this a farmer is now able to simulate how it feels to work with the different tractors.
The DSL provides the typical variability people need, when defining a new product:
- number of wheels
- number of exhaust pipes
- whether the farmer wants to sit at the front or behind
Here's an example of how such model looks like. Isn't that declarative and intentional?
With Ed on board and his new contacts at NASA, we hope we can reuse this DSL in order to model space ships, etc. at NASA.