おおむらです
>濱井です。
>[XP-jp:03991]でも書いていますが、テストファーストって、ある種の実行
>可能仕様の記述だと思います。
私も去りし2000年のある日の[XP-jp:00976]でXPのテストが「実行可能な仕様書」
になっていると言っています。
その部分を引用すれば
---------- XP-jp:03991 の引用 ここから
XPでは、テストが、ある意味、「実行可能な仕様書」になってますよね。
まあ、テストなので本質的に不完全だから「仕様書」にはなりえないわけですけど、
あるクラスの使い方を知りたかったら、そのテストコードを読めば分るという
ような点で、仕様書のようなものと思います。
----------ここまで
>作成しようとするプログラムの仕様を作成前に記述することは、その
>プログラムの仕様を自分自身や他人に明確にすることになります。この効果は、
>自然言語による仕様書の記述にもありますが、自然言語による仕様書では記述
>の際と読んで解釈する際に自然言語の持つ曖昧さによって、曖昧さや間違いが
>入る余地が多分にあります。プログラミング言語では、曖昧さや間違いが入る
>余地は少なくなります。
私は昔、形式的仕様からプログラムを自動合成するという仕事に
かかわっていたので、ついつい仕様というと形式的なものを思い起こして
しまいます。それで、テストのことを不完全だと言ってしまいますけど、
やはり、テストは特定の値についてしか記述しないので、仕様には
なりませんよね。それが実行可能であることを保証するための
トレードオフになってるわけで、そのトレードオフは今のXPのバランスの
よさを見ると、正しいんだろうなとは思いますが、それでも他の道は
ないのかなと思うわけです。
話がそれてしまいました。
>テストファーストが効果的なのは、テストにより正しさを保証しようとする
>だけでなく、プログラムを作成する際、その仕様が明確になっているためだ
>と思います。
そのとおりだと思います。