Como superar o anti-padrão "Big Ball of Mud"?

O que faz com que um programa de computador se transforme em umGrande bola de lama? É possível recuperar-se deste anti-padrão? Existem métodos comprovados de refatoração que possam ser aplicados?