Index: [Article Count Order] [Thread]

Date:  Sat, 5 Aug 2000 17:37:19 +0900
From:  Kaoru Hosokawa <khosokawa@....com>
Subject:  [XP-jp:00702] Re: VXP 	ストーリー1タスク案
To:  extremeprogramming-jp@....jp (extremeprogramming-jp ML)
Message-Id:  <B5B200D6.2B30%khosokawa@....com>
In-Reply-To:  <00Aug3.125149jst.115210@....jp>
Posted:  Sat, 05 Aug 2000 17:35:21 +0900
X-Mail-Count: 00702

ホソカワです。

コメントしますが、外しているかもしれません。

on 2000/08/03 12:50 PM, firo at firo@....jp wrote:

> 矢崎です。
> 
> Kaoru Hosokawaさん wrote:
> 
>>> 
>>> 私はよくわからないのですが、ユーザストーリからタスクに
>>> 変換するときには、何かコツとか戦略のようなものはある
>>> のでしょうか。
>>> 
>> 
>> EC本を見直しましたが、特に記述されていないと思います。
>> 
> 
> そう、EC本に限らず、案外タスクの説明って少ないと
> 思いませんか?
> 
> 今私が現場でタスクという言葉を使うときには、次のよ
> うな意味で使っています。
> 
> XXプログラムの担当をだれだれにして、、、
> ・概要設計
> ・詳細設計
> ・コーディング
> ・単体テスト
> ・結合テスト
> 
> 概要設計に何日、詳細設計に何日、という具合ですね。
> またもう少し細かいレベルにいけばテストをするためには
> テストデータを揃えなければならない、、なんていうサブ
> タスクが必要になったりします。
> 
> しかしXPでいうところのタスクって、上のような視点の
> ものではないですよね。多分。このあたりの整理が自分の
> 中でつけばいいのですが。。。まだ、はっきりしていませ
> ん。
> 
> 
>> 

私は、XPのタスクをこのように理解しています。

    ストーリー  は、要求
    タスク      は、要求を満たすための(プログラミング)作業

矢崎さんのタスクは、(XPで言っている)タスクの洗い出しではなく、タスクの実装
をするためのプロセスではないでしょうか?

>>> 3日以内に終わるもの、とかいう指針はわかるのですが、
>>> 特に内容的な面についてはどうなのでしょう?
>>> 
>> 
>> 一つの iteration のアウトプット(内容)はビジネスと開発で決めることだと思い
>> ますが、「内容的な面」とは?
>> 
> 
> タスクについての基準として、確か、1つのタスクは2,3日で終わる
> 程度の大きさでなければならない、、、というような大きさの面での
> ガイドはあったと思うのですが、1つのタスクで実現すべきものは
> どういう内容のものでなければならないのか、、の、指針がないの
> かな?、、という疑問です。
> 

そうですね。明確な指針は出ていませんね。

タスクの内容は、どんなものでもいいのではないでしょうか?そのタスクが2、3日
で完成する内容で、かつ、ストーリーの一部である事が大事なのではないでしょうか?

> つまり、タスクが出たら、次はその単位でCRCをし、テストを書き、
> Pair Programmingしていくのだと思いますが、そうなると、タスクを切
> り出すとは、ユーザストーリ(要件)を仕様にし、そしてさらにそれを
> 開発しやすい単位に分割していることになると思います(まちがって
> いたらご指摘お願いします)。しかしそれにしては、EC本等では、なん
> か、あっさりしているというか軽くあつかわれているというか、もう少
> しその、なんかいろいろノウハウがあってもいいような気がするので
> すが、どうでしょう。もう、ここは開発者のセンスとスキルにおまかせ!
> ってことでしょうか?あるいはベックは、ここんところはあんまり関心
> がない?
> 

そうですね。でも、要求からデザインを導く方法は、XPと関係がないのかもしれませ
ん。開発者が一番いいと思う手法で作業をすすめればいいと思います。ただ、Big
Design Upfront にならないように注意することです。

> 以下は私見です(ちょっと長いです。)
> 
> タスクについて、、、、
> 1つ私が参考にしているのが、UML DistilledのChapter
> 11(今手元に英語本の2ndしかないので、その点ごめんな
> さい)で、Fowlerはその章で、Use Case-->Scenario-->
> Responsibilityというように、要件からシステムの機能
> へと展開していっています。
> 
> 英語本145ページ
> Various health care professionals make observations
> about patients.This simple system will allow someone
> to get information about those observations and
> to add additional observations.
> (略)
> This is such a simple example that it has but a
> single use case,named "review and add patient
> observations." We can elaborate on that with a few
> scenarios.
> * Ask for the latest heart rate of a patient.
> * Ask for the blood type of a patient.
> * Update a patient's level of consciousness.
> * Update a patient's heart rate.The system marks
> the rate as slow,normal,or fast,according to the
> system's built-in ranges.
> 
> 英語本150ページ
> The first scenario asks for the latest heart rate
> of the patient.The first question is: Whose
> responsibility is it to handle this request?
> (略 そして151ページ)
> A similar responsibility exists for Phenomenon:
> Find the latest Category Observation that has a
> Phenomenon for the given Phenomenon Type.
> 
> Figure 11-5 shows operations that I've added to
> Patient to reflect my thinking.
> 
> となって、2つのresponsibility--latestAmountOf(
> PhenomenonType):QuantityとphenomenonOf(PhenomenonType
> ):PhenomenonをクラスPatientのResponsibilityとして
>  図に表しています。
> 
> そして、その後はコードに展開していきます。コードを書き
> すすめる上で、上のResponsibilityは、複数のクラス間のコラボレ
> ーションに展開していきます(FowlerはこれをRefactoringでや
> ることが多いと書いています)。本をお持ちでしたら、そちらに
> あたっていただければ幸いです。
> 
> さて、私としては、上記のuse caseにユーザストーリが対応し、
> responsibilityにタスクが対応するのではないかと、考えています。
> 完全対応ではないかもしれませんが。
> 
> しかし、上記が仮に正しいとして、だからといって、タスクを切り出す
> ときの疑問が解決するわけではありません。例えば次のような疑問
> もわいてきます。。。(今回は関係ないかもしれませんが、)GUI系の
> ものであれば、タスクを切り出すところでクラスが明示的に与えられ
> ていないとしても、MVCを意識したタスク切り出しをするのでしょうか
> ?RUPでいうところのコントール系とエンティティ系のResponsibilityを
> 分けてタスクに落としていくべきでしょうか?少なくとも
> First Iterationではクラスはまだ出ていないと思うのですが、そうす
> るとMVCとかコントロール、エンティティといった切り分けも具体的
> にはなされていないはずで、このあたりを考えて行うべきかどうか
> も??です。もしかしたらメタファーでその当たりをある程度、先に
> 決めているのかもしれませんが。。

もし、MVCがそのシステムに適していると思われるのなら、ERで分析する必要はない
と思います。MVCを使うだけです。「これって、MVCがいいよね。みなさん、どうおも
います?」のような感じでタスクの洗いだしを行っているミーティングを思い浮かべ
ています。このミーティングでは、ER分析する人もいれば、もうCRC始めているひと
もいると思います。なんでもありなのではないでしょうか?ただ、時間をあまりかけ
ずに、パッと決めることが大事なんでしょう。(要求は明日かわるから…)

-- 
Kaoru Hosokawa
khosokawa@....com