noun: (programming) The process of separating a computer program into distinct features that overlap functionally as little as possible.
noun: The analogous effort in any designing of processes to best delineate the concerns so as to clarify roles, avoid duplication, increase efficiency, and so on.