Es un principio de organización de proyectos. Percibe como estructurar el código en un proyecto.
Concepto propuesto por Robert C. Martin donde la arquitectura deberia gritar el dominio de negocio por módulos de dominio y no los detalles técnicos por capas técnicas.
propuesta habitual
Controllers/
Repositories/
Data/
Services/
screaming architecture
Invoices/
CreateInvoice/
PayInvoice/
CancelInvoice/
Customers/
RegisterCustomer/
UpdateCustomer/
La desventaja es que puede incurrir en duplicación de código y requiere de conocimiento técnico avanzado.