Correggere il decadimento del design nel codice sorgente non è un compito banale. Diagnosticare e successivamente correggere le incongruenze tra il codice di un sistema software e le sue regole di progettazione (ad esempio, le query al database sono consentite solo nel livello di persistenza) e le convenzioni di codifica può essere complesso, dispendioso in termini di tempo e soggetto a errori. Fornire supporto per questo processo è quindi altamente auspicabile, ma di una complessità molto maggiore che suggerire azioni correttive di base per problemi di implementazione semplicistici (come il ''dichiarare una variabile locale per variabile non dichiarata'' suggerito da Eclipse). Questo si concentra su un approccio di ragionamento abduttivo per ridurre la correzione delle incoerenze che consiste in (1) un mezzo per gli sviluppatori per documentare e verificare le regole di progettazione e codifica di un sistema, (2) un ragionatore logico abduttivo che ipotizza possibili cause di incoerenze tra il codice del sistema e le regole documentate e (3) una libreria di azioni correttive per ogni causa ipotizzata (4) un meccanismo di rollback indietro per ripristinare la fase precedente.