Separation of Concerns
Separation of Concerns is about slicing up aspects of your application, so they don’t overlap. These are typically thought of (by developers) as horizontal concerns (they apply to the application as a whole): such as user interface, database, and business logic. The term can equally (and confusingly) be applied to more abstract ideas, such as authentication, logging and cryptography.
Finally, there are vertical concerns, which deal with more business-focused functionality such as Content Management, Reporting, and Membership.