Old software that has been patched so many times that even small changes to the source code make the program fail. The term stems from metal that has been worked and reworked so often that it becomes brittle. The term may also refer to software that was designed with very little error checking or a rigid set of assumptions that are no longer valid. In such cases, variations of input may cause the program to crash. See patch and spaghetti code.