The dominant decomposition is the principle decomposition of a program into separate modules. The tyranny of the dominant decomposition [TarrEtAl1999] refers to restrictions imposed by the dominant decomposition on a software engineer's ability to represent particular concerns in a modular way. Many kinds of concerns do not align with the chosen decomposition, so that the concerns end up scattered across many modules and tangled with one another.