Index: [Article Count Order] [Thread]

Date:  Mon, 12 Mar 2001 21:03:55 +0900
From:  Hada Akihiro <Akihiro.Hada@....jp>
Subject:  [XP-jp:01712] Re: XP 事例
To:  extremeprogramming-jp@....jp
Message-Id:  <4.2.0.58.J.20010312201036.03217c40@....jp>
In-Reply-To:  <87u24z4e4z.fsf@....com>
References:  <3AAC797E.3040007@....com> <20010312132542Z.hiranabe@....jp> <3AAC797E.3040007@....com>
X-Mail-Count: 01712

牛尾さん、懸田さん、今日は。
平鍋さん、紹介ありがとうございます。

筆者に成り代わり、回答します。

At 午後 04:53 01/03/12 +0900, Takeshi Kakeda wrote:
snip.

まず、前提として(アンケートにも書きましたが)
この事例は、XP を実践することを目的としている訳ではなく、
短期開発で、プログラマーの生産性を最大にすることが必要となり、
XP を念頭に置きつつ、開発し、あとで XP 的に振り返ってみた、ということです。

>>  ところで、上記の資料ですが、どうやらUnitTestはしてないみたい
>> ですね。UnitTestはXPの肝と思っていたので、かなり意外です。
>> #計画ゲームやオンサイト顧客までできてるのに、、。
>私も拝見しました。非常に興味深い内容でしたが、牛尾さんと同様にUnitTest
>が実現できていないという部分が気になりました。

単体テストはしていますが、(extreme な)Unit Test はしていない、ということです。
つまり、
・ 単体テストに、testing framework を利用していない。
・ 単体テストを、インテグレーション時に自動的に行なうようなことをしていない。
・ 単体テストを、コーディングより先にしていない。
ということです。

なぜか、というと、端的に言えば、アプリケーション・ロジックが単純である。
ということです。
単純なアプリケーション・ロジックである場合、コードの外側に、intention を
書く必要があると考えていません。
(オブジェクト指向言語なのですから。)
実際、JavaDoc とシナリオで十分でした。
では、例外的なこと(失敗すべきテスト)はどうなるかですが、
・J2EE 環境で開発していて、失敗すべきテストは、
    基本的に環境に任せればいい。
・システム的、言語的には把握できない"失敗"は、
    function test で書けばいい。
と考えました。

>UnitTestが徹底されていないが、機能テストを徹底してフィードバックする
>ということを行ったと記述してありますが、品質の上で可なのでしょうか?
で、十分な品質を持ったシステムとして、稼動しています。
(そうでない事例を、ユーザ名・システム名を明示して紹介できません(^^))

単体テストは、各自に任せましたが、一例は、
シェル+peanuts+Java 
で、テスト環境を築いています。

>またUnitTestなしのRefactoringも非常に辛い気がします。このあたりをどのよう
>に回避していたのかも気になります。

まず、test first について。
難しいアプリケーションであれば、やっています。
というか、オブジェクト指向言語で書く場合、そうしないと書けない、
というのが実感です。

しかし今回のアプリケーションは単純なので、
Refactoring するというほどのプログラムではありません。
"機能を変えずに、実装を替える"という余地がほとんど無いのです。
ほんとにナイーブなプログラマーから見れば、自由度はあるのかも
知れませんが、ある程度の域に達していれば、一つの解しかない、
といような類です。
ので、辛くありませんでした。

>
>あと文中には触れられていませんが、メタファーの実践について詳しく話を
>伺いたいですね。
白板に、クラス図とシーケンス図を書いて、共有した、というのが
実践の全てのようです。
"詳しく"とは、どのようなストーリを期待していますか?

>
>私がお客さんにXP(というかJUnitによるTesting)を紹介した時に「短かい納期でテス
>ト書い
>ている時間があるのか?」と反論されたことがありますが、この記事のプロジェ
>クトも同様の理由でUnitTestをはしょったのでしょうか...
このお客さんの"時間があるのか"という質問の意図が不明ですね。
納期が、短かろうが、長かろうが、
書く必要のあるテストは書き、必要の無いテストは書かない。
仕事なのですから。

今回のシステムの特徴と、必要な品質を確保するための手段を考えた場合、
Unit Test が必要と考えなかった、ということです。

XP を前提にしても、
そもそも、プラクティスにあるのは、Testing であって、Unit Tests では
ありません。Unit test と Function(Acceptance) test の分業?は、
ケースバイケースなのではないでしょうか。

確かに、自動的なテストは役に立ちます。
しかし、残念ながら、
以前、GUI のテストで話題になったように、十分に実用的な web ベースの
testing framework が無いのが、現状(少なくとも半年前には)でしょう。

如何ですか?回答になっていますでしょうか?

はだ