Separation of concerns
In computer science separation of concerns
is the process of breaking a program into distinct features, that do overlap in functionality as little as possible.
A program may log its actions, handle a database of records, compute a statistic from these records, etc.
What distinct concerns do exist should be determined first (separation of concerns), and then they should be implemented as separate as possible.
See aspect-oriented programming, aspect, core concern and cross-cutting concern as well.