Domain Driven Design is a software development approach that focuses on modeling a domain into conceptual objects and business rules. It emphasizes ubiquitous language between developers and domain experts to ensure effective communication and collaboration. Context maps are used to define bounded contexts and boundaries between domains to avoid complexity. The architecture focuses on layering with domain models, entities, aggregates, domain services, events and repositories.