山崎@東工大です。
> > > というのも、当時も今も、少しずつスタイルや作業の質が変わりながらも、設計・実
> > > 装時ともに、責務を強く意識して設計(あるいは実装しながら設計)すると、自然にパ
> > > タンの適用やインターフェース間のプロトコルの設計、構造(仕掛けを含む)の設計を
> > > 伴ってしまうからです。そうでないとしっくりこないのです。そして、この責務を重視
> > > したアプローチはかなりしっかりしたモデリングやコアな部分の作りこみを自然と伴い
> > > 、そこから見るとXP的ではないように感じたということです。
> >
> > じっくり考えないといけなくなりますからね。
> > ペアでさくっと「テスト&実装」のリズムが狂いそうですものね。
>
> まさしくそう感じるんです。ペアでやる作業ではないように思うのです。
ペアで議論しながら設計をするというのではダメでしょうか? というか、む
しろこういう問題こそ、ペアで「ああでもない、こうでもない」と議論しても、
より良い責務分割が出来るようにも思うのですが。後は一人で考えた方が良い
か、ペアで考えた方が良いか、好みの問題のような気がします。
> 少し見えてきた気がしています。それは、責務を意識しまた責務の洗い出しがう
> まくなればなるほどXP的でなくなるが、その変化(パラダイムシフト)さえも許さ
> れるのかもしれないということです。そしてそのパラダイムシフトした時にできて
> る開発プロセスは人間系を大事にしたものになっているなら夢がありますね。
僕は、先程述べた通り、責務分析を綿密に行うことと XP はパラダイムが違う
とは思いません。ペアプログラミングの本質は議論をする事だと思っているの
で、責務分析を行う過程もまた XP に取り込めると思います。
> > 恐らくこの問題に関してもいわゆる 1:9 の法則があって、ほとんどのクラス
> > は責務の分析をしっかりやらずにプログラミングしてもあまり問題がないが、
> > 一部のクラスは分析をしっかりやる必要があり、そのバランスをうまく調整す
> > る必要があるという事ではないでしょうか。
>
> OOで設計した場合、1:9(あるいは2:8)の1(あるは2)の部分が、9(あるいは8)に
> 影響を与えますからその通りと思います。ただ何が1にあたるのかというバラン
> ス(あるいは分類)はおのずと取れると考えています。(もちろんその洗い出し
> の質は様々でリファクタリングが不要になるとは考えていません。)
なるほど、分析を行うべきクラスに他のクラスが依存しているという事は、確
かに良くありそうなことです。時間があったら過去のプロジェクトに関して分
析をしてみようかな。
> しかしながら仮に十分なバランスが取れたとしても、赤坂さんが指摘されてい
> るようにその1の部分の設計実装では、(例えばペアプロ)どのように関わればよ
> いか悩ましいプラクティスが出てくるという問題が表れます。
> この問題をうまく扱うための、つまりペアプロに関していえばペアプロをし続
> けながら適当な責務を洗い出し実装をするにはどのように関ればよいかというあ
> たりが見えていないことを悩ましく感じていました。個人的な経験からいうとこ
> の作業はレビューはしてもらいたいが、まずは一人でもくもくと遣りたいしそう
> でないとうまく出来る自信がないからです。(古いタイプの人間なのかもしれま
> せんがf^^;)
> この点については今もまだ見えていませんが、上記しましたように責務を重視
> するということをXPが嫌うものではないだろうという認識をあらたに持ちました。
先程の繰り返しになりますが、XP が人間とその間のコミュニケーションを大
切にする開発方法論である以上、一人で黙々と分析してから議論を行うという
スタイルと相反する物ではないと考えます。
山崎 進 --- yamazaki@....jp
東京工業大学数理計算科学専攻柴山研