寺田@東工大 です.
> 寺田さん,
> 平鍋です.変な部分で反応してすみません,
>
> > 単体テストとリファクタリングの繰り返しで「解」に漸近しようという思想は
> > とっても面白いと思ってます.「解の公式」で根を求めるのではなく,Newton
> > 法で収束計算して根を求めようというのと似てますよね.ソフトウェアの設計に
> > 「解の公式」が見つからない以上,収束計算で解を求めるしかないですもんね.
>
> これ,面白いです.Kent は,クルマの運転は行く方向を最初から
> 決めてハンドルを固定するのではない,ハンドルを左右に調整する
> のが重要,というメタファを出しますが,まさに上記のイメージと
> 呼応します.
>
> 以上
さりげなく書きましたが,実はちょっと反応してもらいたかったところなんです(笑)
我ながら上手い「メタファー」なんじゃないかと,自画自賛モード入ってます.
反応して頂いて,ありがとうございます.
実はもうちょっと続きが考えてあります.(^^;
関数形によっては,根が複数ある場合がありますよね.Newton 法による解がどの根に
収束するかは,初期値によって決まります.あるいは,初期値を間違えると Newton 法
は発散してしまうこともあります.
同様に,XP によるプロジェクトが最終的にどのような形に落ち着くのかは,テストと
リファクタリングの繰り返しが開始する前の,「最初の設計」に左右されるのかもしれ
ない,と思います.それどころか,初期値である「最初の設計」がまずいと,XP プロ
ジェクトも発散してしまうかもしれません.
Newton 法で解を正しく収束させるにはある程度の初期値の選定が必要です.同様に,X
P もある程度は「最初の設計」をやらないとまずいかもしれません.つまり,モデリン
グです.
XP でもモデリングが必要かどうかは,賛否両論で結論が出ていない問題なのだと思い
ます.この問題を Newton 法のメタファで考えると,根を求めたい関数が,初期値の選
定を必要とする関数なのかどうか,というところに行き着くのだと思います.
その「関数」は,ひょっとするとプロジェクトごとや,対象の問題領域ごとに異なるも
のなのかもしれません.しかし,ソフトウェア開発は,考えうる限り最も難しい「最適
値探索問題」の一つなのではないか,と思います.ソフトウェア開発がそんなに単純な
「関数形」であるとは思えません.
多分,モデリングは多少は必要なんじゃないかなぁ,と予想してます.
Kent Beck 氏のような優れた技術者ならば,モデリングの儀式を明示的に行わなくても,
本能的に適切な「初期値(=最初の設計)」を設定できるのかもしれませんけど.