When?
- The problem domain is to hard to solve in the host language.
- Other people than the developers need to be able to read or modify application logic.
- The domain logic must be technology neutral.
- The domain logic need to be abstracted.
- The application is large enough.
- The development team is skilled enough.