問題が把握できると、次は、どのように「リファクタリング」を進めていくかを決めます。把握した問題は、その方針を決める上で重要なファクターとなります。
しかし、それだけではありません。その製品を開発するために、どの程度の投資をしていくかによっても、「リファクタリング」の方針が変わります。
製品への投資は、製品のライフサイクル(下表の左列を参照)により、おのずと決まったり、戦略的に決められます。「レガシーシステム」を活用し、「リファクタリング」が検討されるのは、成長期の後期~衰退期です。その各期になされる投資と、「レガシーシステム」がもっている問題の状況により、以下の「リファクタリング」のなかから、進め方が決められます。
局所的なコードベースリファクタリング
意味論まで踏み込んだ、広範囲な設計改善リファクタリング
機械的に実施する、広範囲な設計改善リファクタリング
![局所的なコードベース・リファクタリング、意味論まで踏み込んだ広範囲な設計改善リファクタリング、機械的に実施する広範囲な設計改善リファクタリング。問題の範囲や製品成熟度により「リファクタリング」の範囲を決定|【「レガシーシステム」の活用を考える必要がない】導入期-製品が市場に導入されたばかり。機能が大きく変わる時期。製品自体の位置付けも、変わる可能性あり。/成長期(前期)-製品が市場に認知され始め、市場における製品の位置づけがほぼ決まる。各社、差別化を図り、機能の追加・淘汰が激しい。【意味論まで踏み込んだ、広範囲な設計改善「リファクタリング」(場合によっては、思い切ってアーキテクチャの再構築をしても良い)】成長期(後期)-市場獲得のための競争が激化。製品ファミリはどんどん増やされる。成長期後半では価格競争が繰り広げられる。【意味論まで踏み込んだ、広範囲な設計改善「リファクタリング」】成熟期-製品の普及が行き渡り、生き残りがはっきりする。製品ファミリが徐々に整理され、定番ブランドのみが生き残る。【機械的に実施する、広範囲な設計改善「リファクタリング」】衰退期-代替製品の登場や、飽きられることで、市場が縮小していくが、根強い顧客層のために製品リリースは維持する。機能追加はほぼないが、互換性は求められる。](img/kaizen/mondai.gif)