TDDの革新性
平鍋さんが最近、
「テストしやすい設計が良いオブジェクト指向設計である」
と述べている意見に触発されて、TDD(テスト駆動開発)が他の開発手法と異なる革新性はどこにあるのか?について考えてみた。
下記の3点があげられるのではないか?
【1】インターフェイス中心に考えるようになる
テストしやすいモジュール設計を突き詰めると、業務ロジックのようなアルゴリズムよりもインターフェイスの方が重要になる。更に、テストの効率を考えると、メソッドの粒度は小さいほどやりやすい。シーケンス図で書くと10ステップ以上もあるメソッドはテストしにくいはず。
【2】開発プロセスそのものが変わってしまう
テストを実装前に置くことで、開発プロセスの順番が変わってしまう点に着目せよ。
仕様決定→詳細設計→実装→単体テスト
という従来のプロセスではなく、
計画ゲーム→テスト設計→実装(以下、繰り返し)
というプロセスに大きく変更される。
つまり、ウォーターフォール型開発から、XPのようなアジャイル開発に取って代わる。
だから、従来の経営者・管理者にとって、アジャイル開発では、従来の開発プロセスのノウハウを生かすことができないので、心理的に受け入れにくいのではなかろうか?
【3】テストできる範囲(仕様、技術)を確定するため、スコープマネジメントを暗黙のうちに行っている
アジャイルプロセスを勉強してみると、アジャイルの長所は「チーム・ビルディング」と「スコープマネジメント」にあるという印象を持った。
テストしやすいシステム設計を突き詰めると、プログラムの粒度は、効率よく単体テストできる大きさになる。つまり、システムはテスト設計の視点から分割される。開発時にテストしにくい部分を切り離すことによって、プログラムの品質を制御しやすくなる利点がある。
又、イテレーションのサイズを守ることができる範囲内でタスクを分割するので、進捗を管理しやすくなる。つまり、管理するスコープをイテレーションのサイズと連携させることによって、リスクを減らしている。
XPではきちんと書かれていないが、モジュール分割やタスク分割でスコープマネジメントを暗黙のうちに行っていることを忘れてはいけない。
TDDとアジャイルには、プログラミング技術とマネジメントの最新のテクニックが含まれているので、研究する余地がまだあるように思う。
| 固定リンク
| コメント (0)
| トラックバック (0)
最近のコメント