Index: [Article Count Order] [Thread]

Date:  Sun, 10 Dec 2000 18:07:05 +0900
From:  firo@....jp
Subject:  [XP-jp:01309] Re: テストはテスト ?
To:  extremeprogramming-jp@....jp (extremeprogramming-jp ML)
Message-Id:  <3A334D9B.83CCAE23@....jp>
References:  <000001c05f4b$1f6d0c00$010400c8@Ra20> <00Dec7.135115jst.115203@....jp>
Posted:  Sun, 10 Dec 2000 18:32:12 +0900
X-Mail-Count: 01309

矢崎です。

[XP-jp:01265]の私の投稿の内容について、再度じっくり
考えてみたのですが、ちょっと考えの正しくないことがわ
かったので、訂正します。

firo wrote:

> >  私もこの点が気になってJPLoPの友野さんにお聞きしたのですが、XPでいう
> > テストはMeyerの契約主導設計の実現の一種であるというお話でした。「表
> > 明」というのでしょうか。「表明」は「こうなっているべきだ」というのを事
> > 前条件、事後条件、不変条件で通常そのプログラムの内部で記述するものです
> > (というのは平鍋さんのほうが詳しいと思います)が、それを外側にもってきた
> > のが、XPのテストということでしょうか。
> >
>
> 私は、表明とXPのテストは、レベルが1段階異なると思います。
>
> まず表明、テストの一般論として、、
>
> 表明は、事前条件が満たされる時に、そのメソッドを実行すると
> 必ず事後条件が満たされていなければならない、とか、オブジェクト
> は常にその不変条件を満たしていなければならない、とかいう
> もので、ざっくりといえば、仕様だと思います。しかし、表明を定義
> しただけでは、クラスがそのとおりインプリメントされていることが
> 保障されているわけではありません。プログラマは、表明を *実現*
> しなければなりません。
>

表明は、1つ1つの条件文(真偽値を持つ文)である。つまりここでは、
個々の事前条件、事後条件、クラス不変表明です。ですから、「表明は、
事前条件が満たされる時に、そのメソッドを実行すると必ず事後条件が
満たされていなければならない(というものである)」、というのは、表明の
説明としては、明らかに間違い。

上の文の趣旨の文における、正しい主語は、契約によるプログラム
とか、表明つきプログラムとかになるでしょう。例えば、
「プログラム検証論」林晋著、共立出版によれば、表明つきプログラム
{A}P{B}の意味を説明するとして、

「表明つきプログラム{A}P{B}の意味:プログラムPを条件Aが成り立っ
ている状態で実行したとき、停止するならば、そのとき条件Bが必ず
成り立つ。」

と説明されています。そうした意味にのっとって、{A}が表明であり、{B}も
また別の表明であり、{A}と{B}のセットが仕様になる、そういうことだと思
います。

さて、表明そのものの認識が間違っていたので、[XP-jp:01265]を読まれ
た方には非常にご迷惑をおかけしました。このテーマに関しましては、
もう少し考えを整理して、投稿しなおしたいと思います。

--
矢崎 博英 <firo@....jp>