リファクタリングプロセスパターン

 リファクタリングとは,既存ソフトウェアの理解性や変更容易性を向上させることを目的とした上で,外部的挙動を保存したままで内部構造を改善する活動を指す[8].一般的には,リファクタリング前後で,同一の入力値集合(外部入力)に対して同一の出力値集合(外部出力)が得られることを,外部的挙動が保存されているという.また,リファクタリングでは,大きな設計変更を小さな変換の繰り返しで実現することで,挙動の保存を保証するのが特徴である.ソフトウェア進化では,ソフトウェアの改変を伴うため,リファクタリングは進化パターンでひとつである.

 ここでは,リファクタリングにおける新たなコード変換を提案するのではなく,リファクタリングプロセスに関する2つのパターンを紹介する.

パターン 6.1

コア資産は今すぐリファクタリングしよう
Refactor Your Core Assets, Just for Today

コア資産の品質を安定させるための適切なリファクタリング時期を逃さない.

問題

解法

トレードオフ

-利点

-欠点

根拠

 エクストリーム・プログラミングに,YAGNI(You Aren’t Gonna Need It)がある.これは,機能は実際に必要となるまでは追加しないのがよいとする原則である.言い換えれば,今必要なことだけを行うべきである,という意味である.コア資産の拡張におけるリファクタリングは,まさに今必要なことである.追加要求は,コア資産の次の版で実現される要求であるから,その際に対応すれば良い.コア資産の品質を高めるためのリファクタリングは,まさに,今やるべきことである.

パターン 6.2

リファクタリングのフレーム条件を定義しよう
Define Frame Conditions before Refactoring

安全に(挙動の保存を担保して)リファクタリングを実施したい

問題

解法

トレードオフ

-利点

-欠点

関連するパターン

 挙動の保存を確認するためには,OORP[7]の進化を実現するためのテストを書こう / Write Tests to Enable Evolution (OORP パターン6.1)によるテストとの併用が重要である.これは,テストを用意することで,進化の際に機能の一部が保存されることを担保しようとするパターンである.


参考文献
パターン集のトップへ戻る ページのトップへ戻る