Create your application to work without either a UI or a database so you can run automated regression-tests against the application, work when the database becomes unavailable, and link applications together without any user involvement.
When we create an application following the principles of domain-driven design, we strive to keep the business logic separate from the parts of the software that interact with the "real world". The most-often referenced case is that we don't want to build our UI layer in a way that it houses some or all of the business logic as well. We want a clear domain-focused API that is consumed by other parts of the application to provide their interaction with the domain.
The concept ...