Tfpモデリングスペキュレーション

38
Requirement Development Alliance TFPモデリングスペキュレーション mixiQAネタから、ITPro 原稿作成を巡って セントラルソフト株式会社 システム2部 システム開発課 課長 林 栄一 1

description

2007年9月の要求開発アライアンス定例会で発表したスライドです。

Transcript of Tfpモデリングスペキュレーション

Page 1: Tfpモデリングスペキュレーション

Requirement Development Alliance

TFPモデリングスペキュレーションmixiのQAネタから、ITPro 原稿作成を巡って

• セントラルソフト株式会社• システム2部 システム開発課 課長• 林 栄一

1

Page 2: Tfpモデリングスペキュレーション

Requirement Development Alliance /36

スペキュレーションとは?

あーでもないこーでもないと、いろいろ検討すること。

22

Page 3: Tfpモデリングスペキュレーション

Requirement Development Alliance /36

目的TFPモデリングについてみんなであーでもない、こーでもないをやりたい!普通の人が迷っている過程をそのまま表現したい。

新しい可能性?こうしたらもっとわかりやすいかも?こうしたらもっと簡単にまとめられるかも?あーでもない、こーでもないをとおしてTFPないしはモデリングって自分でもできるかも!

33

Page 4: Tfpモデリングスペキュレーション

Requirement Development Alliance /36

自己紹介東京工芸大学 工学部電子工学課 卒楽器メーカー 4年半ほど在籍NYに1年、現地の会社と共同開発

陶磁器の卸 父の会社を継ぐ 2年ぐらい会社を整理フリー時代 1年ぐらいJR関係の研究開発の会社 2年ぐらいネットワーク保守業務 1年ほどセントラルソフト入社 ただいま11年目初めてのIT業界

44

Page 5: Tfpモデリングスペキュレーション

Requirement Development Alliance /36

やってきたもの(開発)電子楽器の開発

ドラムマシン、エフェクター、某P社カラオケアンプ

JR関連

デジタルATS、山梨リニアモーターカー運行システム →OMTで設計

フレームワークの開発

10年ほどまえ、IOCコンテナをベースとしたJavaとVBをシームレスにつなくコンポーネントフレームワークの開発。萩本さんのDROPを参考に。

マルチスレッド環境とシングルスレッド環境をつなぐしくみ

業務アプリ

大規模基幹業務のEJB化PJの共通チームでフレームワークの開発

物流系、薬局関連、製造業関係

音響制御系

サラウンドミキサー装置 →愛地球博NHKパビリオンで上映

55

Page 6: Tfpモデリングスペキュレーション

Requirement Development Alliance /36

やってきたもの

6

物作り大好きです。

オブジェクト大好きです。

6

Page 7: Tfpモデリングスペキュレーション

Requirement Development Alliance /36

やってきたもの(教育制度)

7

IT業界に入って、あまりにもモノ作りの喜びやチームワークの醍醐味が少ない環境に愕然としたことから、まず現場を横断した研修制度から作ろうと思った。

当初は業務のかたわら、直接新人研修をリード。研修組織を、8年かけてこつこつと大きくしていって現在40名ほどの現場横断の組織に成長させた。

現在は複数の研修組織ワーキンググループのとりまとめをやっています。

7

Page 8: Tfpモデリングスペキュレーション

Requirement Development Alliance /36

最近

8

今年ぐらいから表にではじめてます。要求開発アライアンスオブジェクト倶楽部でライトニングトークス「ドラムサークルとプロジェクトファシリテーション」

萩本さんには怒られぱなし。(笑)勉強しなさい!

8

Page 9: Tfpモデリングスペキュレーション

Requirement Development Alliance /36

本題です。

原稿作成と今回の発表のきっかけTFP分割の復習最初のお題モデリングの目的によるサービスの違い価値提供者と受給者の整理 システムの目的を再設定「物理的な場」から「抽象的な場」へ

99

Page 10: Tfpモデリングスペキュレーション

Requirement Development Alliance /36

きっかけ

牛尾さんや佐々木さんのMLでのメッセージ 「ITProの原稿を書いてみませんか」

いっちょやったるか!

とは言え、ネタがなかったんで、mixiの「要求開発アライアンスコミュ」でのQAを題材に、 宮原さんや佐々木 さんや牛尾さんなどのご協力をいただきつつ記事を検討。 

1010

Page 11: Tfpモデリングスペキュレーション

Requirement Development Alliance /36

作ってみたはいいけど、、

ちょっと公開するにはつっこみどころがおおいなぁ。(萩本さん談)

勉強会でみんなで考えてみるというのもいいトレーニングだろう・・(萩本さん談)

11

要は没原稿ですわ。(爆)※関西弁でおねがします。

11

Page 12: Tfpモデリングスペキュレーション

Requirement Development Alliance /36

ともかく

TFPモデリングをあれこれ考える機会として提供したい。

できれば、みなさんのお知恵を拝借して、公開できる原稿として完成させたい!

1212

Page 13: Tfpモデリングスペキュレーション

Requirement Development Alliance /36

ですから

つっこみとご意見は大歓迎!

1313

Page 14: Tfpモデリングスペキュレーション

Requirement Development Alliance /36

TFP分割の復習

14

萩本さんの資料「TFP分割の狙い」から抜粋させていただきます。

「TFP分割の狙い OpenThology1.0」より抜粋

14

Page 15: Tfpモデリングスペキュレーション

Requirement Development Alliance /36

TFP分割の復習

15

!

!"#$%&'()*&+ ,#-&+.$)"#$%&'()*&+/0102345010234501023450102345

!!!!"""" #$%&#$%&#$%&#$%&'('('('()*)*)*)*+,-.+,-.+,-.+,-./01/01/01/01

!"#$!"#$!"#$!"#$%&%&%&%&

'()*"'()*"'()*"'()*"+,-+,-+,-+,-%&%&%&%&

.//0.//0.//0.//0111122223333

.//4.//4.//4.//4111122223333

'()*"'()*"'()*"'()*"+,-+,-+,-+,-%&%&%&%&

5555666677778,98,98,98,9%&%&%&%&

.//4.//4.//4.//41111:/:/:/:/3333

::::1111

0000;;;;3333

<=<=<=<=>>>>?@?@?@?@

<=<=<=<=>>>>

?@?@?@?@

5555666677778,98,98,98,9%&%&%&%&

AAAA-B-B-B-BCCCCDEF,-DEF,-DEF,-DEF,-%&%&%&%&

AAAA-B-B-B-BCCCCDEF,-DEF,-DEF,-DEF,-%&%&%&%&'()*"'()*"'()*"'()*"+,-+,-+,-+,-%&%&%&%&

!"#$%&'()*&+ ,#-&+.$)"#$%&'()*&+/0102345010234501023450102345

234526789$:;<526=>?

! 234526" @A! B7CDE)FGH1IAJ*234KLMNO)PHQ=R=STUV)WXYHZ[\]/R^I

" _A! `abcde7=fg/hiIcdjk=lmn/oR1!#$%$&7pqrPH1psR^I

! 89$:;<b;t&e526" @A! `aOR;t&MuvH1wx)T`almMyzD{|Rlm}~MrPS�1I

" ��! lm=�)`aOR;t&/��H17T`a=�)f�/���qp��wXT`a=�v�fg7T�Q=�7�Q=�7=fg/��H1�7)RXUV)[\)R1I

15

Page 16: Tfpモデリングスペキュレーション

Requirement Development Alliance /36

TFP分割の復習

16

!

!"#$%&'()*&+ ,#-&+.$)"#$%&'()*&+/0102345010234501023450102345

!"#!"#!"#!"#$%&'$%&'$%&'$%&'

!"#!"#"!"#!"#"!"#!"#"!"#!"#"$%$%$%$%

!""!""!""!""&&&&'('('('())))

!"#*#+,-!"#*#+,-!"#*#+,-!"#*#+,-....""""/0/0/0/0

!"#$%1111&'$()#*$1111+,-(.1111

!"#$%!"#$%

&'$()#*$

&'$()#*$

+,-(.

!"#$!"#$!"#$!"#$%&'(%&'(%&'(%&'(!"#$!"#$!"#$!"#$)*+'()*+'()*+'()*+'(,,,,!"#$!"#$!"#$!"#$----././././0000121212123333,,,,!"#$!"#$!"#$!"#$----454545450000121212123333

2342342342345678567856785678

9:6;<=9:6;<=9:6;<=9:6;<=>?@A>?@A>?@A>?@A

BCBCBCBCDEDEDEDEFGHI<JKFGHI<JKFGHI<JKFGHI<JKDEDEDEDELMNODELMNODELMNODELMNODE

6789678967896789

:;:;:;:;0000<=<=<=<=

>?>?>?>?@@@@'('('('(

AAAABBBBCD:;CD:;CD:;CD:;!"#$EFGHI!"#$EFGHI!"#$EFGHI!"#$EFGHIJKLJKLJKLJKL

!"#$%&'()*&+ ,#-&+.$)"#$%&'()*&+/0102345010234501023450102345

!"#()*

! +,-./(0123455" +,-./(67289:*;

! <=>?@ABCDEDFGHIJ" +,-.KCL DMN:*;

" OPQ<=>?@ABCRST2UVWEXYZ[MF\]ZY;

! ^_(`abc=deRfg4:-./2hi4:*" #$%QBjklmnjoakK

! 8pJ-.KCLEqr" sC`K=mC?J&'()*+,(t-.+(/2uvwx

! aKys`z{J+,-.KCL2f|" 67(}~2���G-.KCL

16

Page 17: Tfpモデリングスペキュレーション

Requirement Development Alliance /36

TFP分割の復習

17

!

!"#$%&'()*&+ ,#-&+.$)"#$%&'()*&+/0102345010234501023450102345

!"#!"#!"#!"#$%&'$%&'$%&'$%&'

!"#!"#"!"#!"#"!"#!"#"!"#!"#"$%$%$%$%

!""!""!""!""&&&&'('('('())))

!"#*#+,-!"#*#+,-!"#*#+,-!"#*#+,-....""""/0/0/0/0

!"#$%1111&'$()#*$1111+,-(.1111

!"#$%!"#$%

&'$()#*$

&'$()#*$

+,-(.

!"#$!"#$!"#$!"#$%&'(%&'(%&'(%&'(!"#$!"#$!"#$!"#$)*+'()*+'()*+'()*+'(,,,,!"#$!"#$!"#$!"#$----././././0000121212123333,,,,!"#$!"#$!"#$!"#$----454545450000121212123333

2342342342345678567856785678

9:6;<=9:6;<=9:6;<=9:6;<=>?@A>?@A>?@A>?@A

BCBCBCBCDEDEDEDEFGHI<JKFGHI<JKFGHI<JKFGHI<JKDEDEDEDELMNODELMNODELMNODELMNODE

6789678967896789

:;:;:;:;0000<=<=<=<=

>?>?>?>?@@@@'('('('(

AAAABBBBCD:;CD:;CD:;CD:;!"#$EFGHI!"#$EFGHI!"#$EFGHI!"#$EFGHIJKLJKLJKLJKL

!"#$%&'()*&+ ,#-&+.$)"#$%&'()*&+/0102345010234501023450102345

!"#()*

! +,-./(0123455" +,-./(67289:*;

! <=>?@ABCDEDFGHIJ" +,-.KCL DMN:*;

" OPQ<=>?@ABCRST2UVWEXYZ[MF\]ZY;

! ^_(`abc=deRfg4:-./2hi4:*" #$%QBjklmnjoakK

! 8pJ-.KCLEqr" sC`K=mC?J&'()*+,(t-.+(/2uvwx

! aKys`z{J+,-.KCL2f|" 67(}~2���G-.KCL

17

Page 18: Tfpモデリングスペキュレーション

Requirement Development Alliance /36

TFP分割の復習

18

!

!"#$%&'()*&+ ,#-&+.$)"#$%&'()*&+/0102345010234501023450102345

!"#!"#!"#!"#$%&'$%&'$%&'$%&'

!"#!"#"!"#!"#"!"#!"#"!"#!"#"$%$%$%$%

!""!""!""!""&&&&'('('('())))

!"#*#+,-!"#*#+,-!"#*#+,-!"#*#+,-....""""/0/0/0/0

!"#$%1111&'$()#*$1111+,-(.1111

!"#$%!"#$%

&'$()#*$

&'$()#*$

+,-(.

!"#$!"#$!"#$!"#$%&'(%&'(%&'(%&'(!"#$!"#$!"#$!"#$)*+'()*+'()*+'()*+'(,,,,!"#$!"#$!"#$!"#$----././././0000121212123333,,,,!"#$!"#$!"#$!"#$----454545450000121212123333

6666777789:;89:;89:;89:;!"#$<=>?@!"#$<=>?@!"#$<=>?@!"#$<=>?@ABCABCABCABC

45454545!"#$

DEDEDEDE%&'

!"#$%&'()*&+ ,#-&+.$)"#$%&'()*&+/0102345010234501023450102345

!"#()*+

$ ,-./01$2345678,./019:;<5=;>?@

#%&'(A

BCDEFGHI./01J$KL@

")*+,-*A

M")*'+,-*AJEFN@!.,*/9OPQL@

!.,*/A

$ RSTUV/$23TUV/WX(YZ[\]^9_7@

!.,*/A

BTUV/WX()`a+9bcL@A9d*>?@

")*+,-*A

MTUV/efghVfi(jk96l`m>?@0F47:123[4

#%&'(A

18

Page 19: Tfpモデリングスペキュレーション

Requirement Development Alliance /36

TFP分割の復習

19

!

!"#$%&'()*&+ ,#-&+.$)"#$%&'()*&+/0102345010234501023450102345

!"#!"#!"#!"#$%&'$%&'$%&'$%&'

!"#!"#"!"#!"#"!"#!"#"!"#!"#"$%$%$%$%

!""!""!""!""&&&&'('('('())))

!"#*#+,-!"#*#+,-!"#*#+,-!"#*#+,-....""""/0/0/0/0

!"#$%1111&'$()#*$1111+,-(.1111

!"#$%!"#$%

&'$()#*$

&'$()#*$

+,-(.

!"#$!"#$!"#$!"#$%&'(%&'(%&'(%&'(!"#$!"#$!"#$!"#$)*+'()*+'()*+'()*+'(,,,,!"#$!"#$!"#$!"#$----././././0000121212123333,,,,!"#$!"#$!"#$!"#$----454545450000121212123333

6666777789:;89:;89:;89:;!"#$<=>?@!"#$<=>?@!"#$<=>?@!"#$<=>?@ABCABCABCABC

45454545!"#$

DEDEDEDE%&'

!"#$%&'()*&+ ,#-&+.$)"#$%&'()*&+/0102345010234501023450102345

!"#()*+

$ ,-./01$2345678,./019:;<5=;>?@

#%&'(A

BCDEFGHI./01J$KL@

")*+,-*A

M")*'+,-*AJEFN@!.,*/9OPQL@

!.,*/A

$ RSTUV/$23TUV/WX(YZ[\]^9_7@

!.,*/A

BTUV/WX()`a+9bcL@A9d*>?@

")*+,-*A

MTUV/efghVfi(jk96l`m>?@0F47:123[4

#%&'(A

19

Page 20: Tfpモデリングスペキュレーション

Requirement Development Alliance /36

TFP分割の復習

20

!

!"#$%&'()*&+ ,#-&+.$)"#$%&'()*&+/0102345010234501023450102345

!"#$%&!"#$%&'(

!"#$!"#$!"#$!"#$%&%&%&%&!"#$

'()*+,-

+$./+$./+$./+$./

01010101+$./+$./+$./+$./

23232323

45454545678678678678 9*!$6789*!$6789*!$6789*!$678

:;:;:;:;678678678678

<=>$678<=>$678<=>$678<=>$678 9*!$6789*!$6789*!$6789*!$678

!"#?@AB?@AB?@AB?@AB

CCCC!$%&'DDDD

CCCC"(&)*%+&DDDD

CCCC#,-).DDDD

CCCCEFEFEFEFG=*G=*G=*G=*CCCC!"#$!"#$!"#$!"#$

H*$I*$H*$I*$H*$I*$H*$I*$CCCC+$./H*$+$./H*$+$./H*$+$./H*$

I*$I*$I*$I*$

J*K.LMN678J*K.LMN678J*K.LMN678J*K.LMN67801010101678678678678

CCCC01010101O$PO$PO$PO$PCCCC/0121323232323

CCCCJ*K.LMN678J*K.LMN678J*K.LMN678J*K.LMN678

CCCC456678678678678

CCCC34745454545

QR<QR<QR<QR<CCCC8!STUSTUSTUSTU

QR<QR<QR<QR<

CCCC<="VLP<="VLP<="VLP<="VLP

W*8W*8W*8W*8XYZXYZXYZXYZ

01[\01[\01[\01[\

GV*]GV*]GV*]GV*]

^_^_^_^_

`̀̀̀

aaaabbbb

cdcdcdcd efefefef 7gh-7gh-7gh-7gh- +GP+GP+GP+GP

iiiijjjj01[\01[\01[\01[\!"#$67O-k!"#$67O-k!"#$67O-k!"#$67O-klmnlmnlmnlmn

!"#$%&'()*&+ ,#-&+.$)"#$%&'()*&+/0102345010234501023450102345

'()

20

Page 21: Tfpモデリングスペキュレーション

Requirement Development Alliance /36

モデリングに対しての不安?2名づつペアになって話しをします。

一人2分ずつ、片方ずつ話してください。聞いている方は言いたいことがあっても、途中で口を挟まずに相手の話を引き出す意図で聞いてください。

話す内容は、「モデリングに関してうまくいっていないこと、不安」です。モデリングに関して、業務でバリバリやっている方は、ご自分のもっているモデリングに関するビジョンを話してください。

2121

Page 22: Tfpモデリングスペキュレーション

Requirement Development Alliance /36

さて、最初のお題

Mさんはサッカーの試合の運営を効率化するためにシステム化するよう上司から指示されました。

Mさんはまず、このための現状分析を要求開発のTFP分割手法を使って行おうとしました。

 Mさん自身アマチュアのサッカーチームに所属して活躍するぐらいサッカー大好きなので、意気揚々とモデリングを行いました。

2222

Page 23: Tfpモデリングスペキュレーション

Requirement Development Alliance /36

最初のモデル

2323

Page 24: Tfpモデリングスペキュレーション

Requirement Development Alliance /36

問題点?

このモデルの問題点がなにかわかりますか?

2424

Page 25: Tfpモデリングスペキュレーション

Requirement Development Alliance /36

第1のポイント

知っていることを全部書くのがモデリングではない。

目的を明確に。

2525

Page 26: Tfpモデリングスペキュレーション

Requirement Development Alliance /36

ユースケース再考

2626

Page 27: Tfpモデリングスペキュレーション

Requirement Development Alliance /36

第2のポイント

 特にサービスを明確にするためのビジネスモデリングは、何を目的として書くかよって、記述するサービスが大きく異なります。 

 はじめから目的が明確ならいいのですが、目的が不明確あるいは、目的の本質が不明確なときには、このことがモデリングによって明確になることを意識することが重要です。 

 サッカーゲームそのものをモデル化するなら、観戦するとかチケットの購入は不要ですし、サッカーリーグ盛り上げることを目的としてモデル化するなら、プレイヤーや審判をモデル化するのはあまり意味がありません。

27

モデリングの目的によるサービスの違い

27

Page 28: Tfpモデリングスペキュレーション

Requirement Development Alliance /36

目的はどっち?

28

?←どっち?→

28

Page 29: Tfpモデリングスペキュレーション

Requirement Development Alliance /36

価値提供者と受給者の整理

2929

Page 30: Tfpモデリングスペキュレーション

Requirement Development Alliance /36

システムの目的を再設定•すばらしい試合を見たい。•運営コストを削減したい。•みたい試合を逃さずにみてほしい。•チケット販売を効率よくしたい。

30

モデリングの目的は、これらの目的が関係する構造を「見える化」することである。

30

Page 31: Tfpモデリングスペキュレーション

Requirement Development Alliance /36

システムの目的を再設定

31

BSC戦略マップにしてみると

31

Page 32: Tfpモデリングスペキュレーション

Requirement Development Alliance /36

第3のポイント

 価値の提供者と受給者を明確にすることによって、目的を明確にすることができる。(仮説)

 モデリングの目的はビジネスの価値を生み出すことですから、一つの方法として現在あるサービスを誰が提供し、誰が受け取るかを意識することで目的を明確にしていくことができます。

3232

Page 33: Tfpモデリングスペキュレーション

Requirement Development Alliance /36

価値と目的?

さて、本当に価値の提供者と受給者の関係を明確にすることで、目的が明確にできるでしょうか?

同じように2づつペアになって一人ずつ話してください。

3333

Page 34: Tfpモデリングスペキュレーション

Requirement Development Alliance /36

作り直したモデル

3434

Page 35: Tfpモデリングスペキュレーション

Requirement Development Alliance /36

第4のポイント「物理的な場」から「抽象的な場」へ

物理的な「場」の設定が必ずしも、ビジネス上の「場」とは一致しないものです。

観客席やフィールドなどの物理的な「場」を認識した後に、それらを資源として使うビジネス上の「場」とはなにかを考察することが重要です。(仮説)

3535

Page 36: Tfpモデリングスペキュレーション

Requirement Development Alliance /36

第4のポイント「物理的な場」から「抽象的な場」へ

36

最初の図:

・観客席・フィールド

後の図:

・チケット売買・試合運営・試合企画

36

Page 37: Tfpモデリングスペキュレーション

Requirement Development Alliance /36

補足

 今回はあくまでTFP分割図のサンプルという意味合いで「サッカーの試合」を題材として取り上げています。

 本来の業務においてはどこかをシステム化するために分析していると思いますので要求開発では、どこを「システム化」するか?ということを念頭において、モデル化する部分を絞り込みます。

3737

Page 38: Tfpモデリングスペキュレーション

Requirement Development Alliance /36

さいごに

ご意見ご希望は反省会で。

ありがとうございました。

3838