As complex software programs evolve, they inevitably accumulate kludges – coding that, while inelegant, inefficient, clumsy or patched together, succeeds in solving ...