Model gestuurde software ontwikkeling is meestal gebaseerd op zogenaamde domein specifieke talen (Eng: Domain Specific Language of DSL. Zo een DSL is een taal welke speciaal ontwikkeld wordt om eenvoudig en expressief te zijn in het gekozen domein.

Horizontale (of technische) versus verticale (of business) DSL

Een horizontale DSL is een DSL gericht op een technisch domein. Dit soort technische DSLs worden meestal gebruikt door technische mensen, die zelf software schrijven, met als doel om het het ontwikkelen van software sneller, eenvoudiger en kwalitatief beter te doen. Een voorbeeld van een technische DSL is is bijvoorbeeld Mod4j,
een open source project dat iki in het verleden opgezet heb.
Mod4j bevat een aantal DSLs Voor het modelleren van verschillende lagen in de technische architectuur

Een verticale DSL, ook wel business DSL genoemd, is een DSL voor een business domein. De gebruikers van zo een DSL zijn meestal business mensen die werken in het domein. Door het gebruik van een business DSL kunnen zij precies aangeven wat zij willen in hun eigen terminologie. Het PMW project dat we uitgevoerd hebben bevat een a DSL voor het modelleren van verzekeringsproducten welke direct door de verzekeringsexperts gebruikt wordt.

De potentiele voordelen van business DSLs zij hoger dan die van technische DSLs, omdat business DSL's helepn om het gat tussen business requirements en de IT te overbruggen. De requiirements worden in de DSl modellen vastgelegd door de business experts en deze modellen worden automatisch vertaald naar de benodigde software.

Interne versus externe DSLs

Een interne DSL is een DSL welek gedefinieerd wordt binnen een bestaande general purpose taal. Hierbij bevat de basis taal de mogelijkheid om uitgebreid te worden met nieuwe constructies. Met behulp hiervan kunnen domein concepten aan de basis taal toevoegd worden. Het resultaat is altijd een hybride van en domein specifieke en general purpose taal. Omdat de general purpose taal meestal niet geschikt is voor business gebruikers worden interne DSLs bijna uitsluitend gebruikt voor horizontale DSLs voor ontwikkelaars. De syntax is beperkt tot wat de basis taal levert, en kan slecht worden aangepast aan de eisen van business experts.

Een externe DSL is een standalone DSL.
Er is geen basis taal, en de DSL bevat derhalve alleen dat wat voor het domein en de gebruikers in het domein van belang is. Niet meer, en niet minder. Externe DSLs kunnen zowel voor interne als externe DSLs gebruikt worden. De syntax kan geheel vrij gekozen worden. Zowel een textuele, een grafische, alsook een tabulaire syntax of combinaties van verschillende syntaxes zijn allemaal mogelijk. Deze vrijheid bij de keuze van de syntax maakt het mnogelijk om de DSL zo optimaal mogelijk aan te passen aan de specifieke gebruikers uit het business domein.