Index: [Article Count Order] [Thread]

Date:  Fri, 14 Apr 2000 18:24:22 +0900
From:  佃 軍治 	<tsukuda@....jp>
Subject:  [XP-jp:00210] Re: XP Chapter7 Four Values 	の解説
To:  extremeprogramming-jp@....jp (extremeprogramming-jp ML)
Message-Id:  <38F6E3BB.3A92661E@....jp>
References:  <B519647C.D80%khosokawa@....com> <38F499AC.44F194D0@....jp> <uem8aoeou.fsf@....jp> <00Apr13.124805jst.115201@....jp> <000e01bfa538$40e34110$79792fc0@....jp> <00Apr13.131543jst.115202@....jp> <uog7d84x5.fsf@....jp>
Posted:  Fri, 14 Apr 2000 18:24:11 +0900
X-Mail-Count: 00210


佃です。

Yoshihiro Tsukamoto wrote:
> 
> 塚本です。
> 
> >>>>> "firo" == 矢崎 博英 <firo@....jp> writes:
> 
>     firo> 矢崎です。リプライありがとうございます。
> (中略)
>     firo> ですから、
> 
>     firo> XPは柔軟性、再利用性に対立するものではない。しかし、それを
>     firo> やみくもに行うことには反対する。必要な時に必要な程度で行う。
> 
> ありがとうございます。やはり原則はそうですね。
> 
> それでも、個人的にいって「Refactoring すればどうにかなる」という過度の
> 幻想は抱けません。要件の決め打ちが支配的なシステムを作ると、追加要件の
> 内容次第では Refactoring の必要なユニットだらけになると思うのです。
> 

私は今のところ、「XPでは 基本的にすべてのユニットは各イテ
レーションでRefactoringする」と理解(誤解?)しています。

今開発すべきことだけを開発する。将来(次のイテレーションであ
っても)開発するであろうことには備えない。
そうしないと、結局開発する機能すべてについて検討するようなこ
とになりかねず、分析工程に時間がかかってしまう。
分析が終了するまではウォータフォールの開発プロセスになる。

> # 開発コストが「運任せ(要件の着順次第)」になりそうなイメージがあります。

開発の順番は要件の着順次第ではなく、リスクの高いユースケース
の順番になると思います。
もしリスクの高いユースケースの要件がなかなか決まらなければ、
とれあえずある仮定のもとで開発し、顧客に確認してもらい、要件
を決めことになるのではないでしょうか。

> 
> それはそうと、最初のメールで
> 
>     firo> これも例えばなのですが、デザインパターンにしろ、Fowlerのアナリシス
>     firo> パターンにしろ、ある種の柔軟性、再利用性、拡張性のようなものを
>     firo> ねらいとしているところが多いと思うのですが、これらはXPのシンプル
>     firo> と対立するものなのでしょうか?
> 
> とありましたが、パターンは Refactoring を行なう時の良いお手本になると
> 思います。
> 
> >>>>> "石井" == 石井 勝 <mishii@....jp> writes:
> 
>     石井> Simplicityについてですが,
> 
>     >> 2.柔軟性を考慮しなくても、後からそれが必要になったときに、
>     >>   Refactoringなどを行って柔軟性を確保することができるように
>     >>   なる。よって、Simplicityとは、必要になるまでは柔軟性を考慮
>     >>   しない(それが必要になったらする)。
> 
>     石井> 僕はXPを調べたときこっちだという印象を受けました.
>     石井> というか,柔軟性という単語にひっかかるのですが,現在の仕様
>     石井> (テスト)に対してもっとも簡単なものであればよい,ということでしょう.
>     石井> 現在の仕様がMVCを求めるものであればそうするでしょうし,求めない
>     石井> ならMVCを使うのはoverkillということではないでしょうか?
> 
> 「現在の」を額面通りに考えすぎると勝手が良くないケースもありそうです。
> 例えばこんなケースを想定してみて下さい。
> 
> 現在の初号機: 1    [CPU/ボード]
> 次期の二号機: 1..4 [CPU/ボード]
> 
> 次期への移行コストを考えると、ボード 対 CPU の関連は最初から「1:多」に
> モデリングされるケースもあると思います。初号機についてはCPU側の多重度
> 1..m に制約 {m=1} がついて test suite も 1 CPU 用に限定されますけど。
> 
> MVC にしても、フレームワークとして提供されているものを「使う」ぶんには
> MVC なしの実装をスクラッチで書くよりもむしろ、アプリケーションコードは
> シンプルになり得ると思います。
> 

初号機と二号機を同じ開発メンバが担当することになるのであれ
ば、XPではリリース1を1対1で開発するのではないかと思いま
す。

異なる開発メンバが担当するのであれば、既に明白な拡張性につい
ては、リリース1の中で開発すべきではないかと思います。
二号機の開発メンバは恐る恐るコードを触ることになるだろうか
ら。
でも、XPでは回帰テストが容易にできるように作り込んでいるの
であろうから、XPを実践した人たちは、この状況でさえも拡張性
はリリース1で開発しないと考えているかもしれませんね。


> 話は変わりますが、「シンプル」と「拡張性」の両立というと、XP が OCP
> (Open-Closed Principle) とどのように協調できるかにも興味があるのですが、
> そのあたりはいかがでしょう?
> 
> --
>   Yoshihiro Tsukamoto

-- 
  佃 軍治  tsukuda@....jp
  日立製作所システム開発研究所第2部