デバッグ
問題の源を特定したら、次はどのようにその問題を修正するかを決定する作業である。問題が非常に単純なものである場合を除いて、システムの深い理解が必要不可欠となる。なぜなら、修正によってシステムの現状の振る舞いを変更してしまい、予期しない結果を生むことになるかもしれないからである。その上、既存のバグの修正は新しいバグを生み出したり、修正したバグに隠れていたバグを顕在化させることがよくある。このような問題はコード中でそれまでテストされていなかった部分を実行する際によく発生する。
場合によっては、修正は単純で明確である。これはオリジナルの設計を間違って実装しているようなロジック上のエラーに特に当てはまる。反対に、問題がシステムの大部分に渡るような重大な設計上の不備を浮き彫りにした場合には、修正は悪ければ不可能となり、ソフトウェアの一からの書き直しが必要となる。
状況によって、恒久的な修正の前に"quick fix"の実装が応急処置的に望まれることがある。これは修正の性質や製品のスケジュール(またはさらに切迫した問題)以外にも、問題の緊急度、現れやすさ、頻度、副作用などを考慮して決定されることが多い。