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