A design principle for breaking down an application into modules, layers, and encapsulations, the roles of which are independent of one another.
Sources:
NISTIR 8301