DDD (Domain-Driven Design)
Eric Evans (2003): modellare domini complessi parlando con gli esperti del dominio e riportando il loro linguaggio direttamente nel codice.
Pattern strategici: bounded context (ogni parte del dominio ha il proprio linguaggio), context map, ubiquitous language. Pattern tattici: aggregate (confine di consistenza), entity, value object, domain event, repository, application service. Rende al meglio nei domini aziendali complessi; è eccessivo per le semplici applicazioni CRUD.
Ha influenzato i microservizi (ogni servizio = un bounded context), l'event sourcing e CQRS. Il riferimento moderno è «Implementing Domain-Driven Design» di Vaughn Vernon (2013). La critica: discussioni architetturali piene di terminologia, dove la sostanza a volte si perde.