▪ Separation of concerns(SOC) is one of the core software design principle
▪ Separation of concerns is a design principle for separating a computer program into distinct sections
▪ Isolate the software application into separate sections, manages complexity by partitioning the
software system
▪ Distinguish between the concepts of layer and tiers with certain responsibilities.
▪ Elements in the software should be unique
▪ Limits to allocate responsibilities
▪ Low-coupling, high-cohesion