ソフトウェア管理には2つのアプローチがあると思われる。
一つは
コーディングレベルのアプローチ
もう一つは
実装レベルのアプローチ

コーディングレベルのアプローチとは
見通しの良いコードを書くことでバグを減らす事である。
例えば、オブジェクト指向プログラミングは有効な手段となる。

一方で、実装レベルのアプローチは
実際にプログラムを走らせた後、
プログラム自身でエラーを検出し、修正する方法である。