エンジニアのソフトウェア的愛情

または私は如何にして心配するのを止めてプログラムを・愛する・ようになったか

作り替えるリスク、作り替えないリスク

すでに各所で語り尽くされた感もありますが。

シリーズ化した製品に合わせてソフトウェアも機能の変更/追加をしながら開発を進めていくと、最初の設計では思いもよらなかった変更が重なって、コードが劣化してしまいます。さて、次の製品開発に目を向けたとき、コードが劣化したソフトウェアは作り替えるべきでしょうか、それとも作り替える危険をさけて使い続けるべきでしょうか。
今コストを書けたり新たな欠陥をうむリスクをおかして将来のリスクを下げるか、将来変更に多大なコストかがかる可能性があるものの今は低いリスクをとるか、ということになるかと思います。要は「ときとばあいによる」が答えなわけですが。
ソフトウェアの変更を続けていくと、どこかでこの作り替えるリスクの大きさと作り替えないリスクの大きさが逆転するポイントがあるはずですが、これを見分けることができるんでしょうか?あるいは、根本的にこの二分法的な見方に問題があるのかもという気がしなくもないですが。