TDDの革新性
平鍋さんが最近、
「テストしやすい設計が良いオブジェクト指向設計である」
と述べている意見に触発されて、TDD(テスト駆動開発)が他の開発手法と異なる革新性はどこにあるのか?について考えてみた。
下記の3点があげられるのではないか?
【1】インターフェイス中心に考えるようになる
テストしやすいモジュール設計を突き詰めると、業務ロジックのようなアルゴリズムよりもインターフェイスの方が重要になる。更に、テストの効率を考えると、メソッドの粒度は小さいほどやりやすい。シーケンス図で書くと10ステップ以上もあるメソッドはテストしにくいはず。
【2】開発プロセスそのものが変わってしまう
テストを実装前に置くことで、開発プロセスの順番が変わってしまう点に着目せよ。
仕様決定→詳細設計→実装→単体テスト
という従来のプロセスではなく、
計画ゲーム→テスト設計→実装(以下、繰り返し)
というプロセスに大きく変更される。
つまり、ウォーターフォール型開発から、XPのようなアジャイル開発に取って代わる。
だから、従来の経営者・管理者にとって、アジャイル開発では、従来の開発プロセスのノウハウを生かすことができないので、心理的に受け入れにくいのではなかろうか?
【3】テストできる範囲(仕様、技術)を確定するため、スコープマネジメントを暗黙のうちに行っている
アジャイルプロセスを勉強してみると、アジャイルの長所は「チーム・ビルディング」と「スコープマネジメント」にあるという印象を持った。
テストしやすいシステム設計を突き詰めると、プログラムの粒度は、効率よく単体テストできる大きさになる。つまり、システムはテスト設計の視点から分割される。開発時にテストしにくい部分を切り離すことによって、プログラムの品質を制御しやすくなる利点がある。
又、イテレーションのサイズを守ることができる範囲内でタスクを分割するので、進捗を管理しやすくなる。つまり、管理するスコープをイテレーションのサイズと連携させることによって、リスクを減らしている。
XPではきちんと書かれていないが、モジュール分割やタスク分割でスコープマネジメントを暗黙のうちに行っていることを忘れてはいけない。
TDDとアジャイルには、プログラミング技術とマネジメントの最新のテクニックが含まれているので、研究する余地がまだあるように思う。
| 固定リンク
「日記・コラム・つぶやき」カテゴリの記事
- TwitterやFacebookは人力キュレーションツールとして使う(2022.10.02)
- 「現代病「集中できない」を知力に変える 読む力 最新スキル大全」の感想(2022.08.28)
- 人類は海辺から生まれた~水生類人猿説が面白い(2022.08.09)
- 戦前の日本人の気質はまだ成熟していない青年期と同じだった(2022.06.14)
- 物理学を攻略するためのマップ(2022.04.18)
「プロジェクトマネジメント」カテゴリの記事
- 「スクラムの拡張による組織づくり」のScrum@Scaleの感想(2024.03.31)
- ストラテジストとプロジェクトマネージャの役割の違いは何なのかpart2~プロセスのレイヤと達成目標のレイヤが異なる(2023.02.18)
- ストラテジストとプロジェクトマネージャの役割の違いは何なのかpart1~CSFはWBSみたいなものと捉える(2023.02.14)
- PM理論では課業志向の方が関係志向よりも生産性が高いことを主張しているのではないか(2023.01.22)
- 現代日本人の弱点はリーダーシップ不足と生産性が著しく低いこと、そしてリスク許容度が著しく低いことだ(2022.12.23)
コメント