46
XP祭り2015 2015/9/12

モデリングもしないでXPとは何事だ 20150912

Embed Size (px)

Citation preview

XP祭り2015 2015/9/12

モデル書いていますか?

XP実践していますか?

Amazon:http://www.amazon.co.jp/dp/4274217620/

今日のキーワード

変更のコストを一定に保つ

従来開発

XP開発

時間

コスト

書籍:エクストリーム・プログラミング ソフトウェア開発の究極の手法 P.23 図3 変更のコストは時間とともに劇的に上がらないことがある

決定を遅らせる

❝プロセス内で大きな決定を

することを可能な限り遅らせ、

決定が正しくなるまで待つだろう❞

書籍:エクストリーム・プログラミング ソフトウェア開発の究極の手法 第5章 変更のコストより

でも、

XPとモデリングって

関係あるっけ・・・

疑問

XPとモデリング

アジャイルモデリング by Scott Ambler ❝モデリングはXPの1つの要素である❞

❝リファクタリングとテストファースト開発というXPのプラクティスは、一般的に従来型のモデリングプロセスに結び付けられている「きれいな設計を促す」「コードを書く前に設計をよく考える」という2つの重要な目的を達成するために役に立ちます❞

アジャイルモデリング XPと統一プロセスを補完するプラクティス 第16章、第17章 http://www.amazon.co.jp/dp/4798102636

モデリングとXPはとても相性が良いよ!

発表者紹介 原田 巌 @iwaoRd

山田 悦朗 @e_mumble

竹林 崇 @changeworlds

今日話すこと

1. モデリングを通して学んだこと (モデリングもしないでアジャイルとは何事だ!?の復習)

2. アジャイル開発における更なる問題 – 革命的開発のダメージ

3. モデリングワークショップ×2 – 簡単モデリング体験

4. まとめ

【問題1】

みんなバラバラ

モデルって?

• プロジェクトで働くチームメンバ全員が必要とする文書

この役割を持っているべきだと思う。

そしてモデルを生み出す活動がモデリング。

重要なのは?

1)全体感、目的、知識の共有

ビッグピクチャとして全体を捉えること。

システムの背骨を築くこと。

そしてなによりユビキタス言語を築くこと。

2)実装のための設計をすること

素早くより良い設計を手に入れること。

なにより良いコードを書き上げること。

全体感≒共通認識

一貫性のある実装をするために

モデリングをする必要がある!

分析 設計

画像引用:Wikipedia 氷山の一角 http://ja.wikipedia.org/wiki/ファイル:Iceberg.jpg

分析/設計すること

問題を明らかにして、解決の仕組みを作る

そのために

相手や自分の頭の中を形にする、言語化する

現場でモデリングしてみる

ホワイトボードの前に

ペンを持って立つ!

【問題2】

• 「それって適切なの?」

現場での話

私「シナリオが○○だからこのモデルの

認識です。次にあのケースですが、

客「あの・・・」

私「はい?」

客「そのモデルの正しさってどのよう

に検証されるのですか?」

アジャイルな設計方法

作るモノをいろいろな視点で見る大切さ

モデラーとプログラマの視点でシステムを見ること

重要なのは?

1)全体感、目的、知識の共有 シナリオをベースにユーザ価値に着目したテストを実施すること。このテストは自動的に繰り返して価値提供を保証すること。 2)実装のための設計をすること モデリングとTDDで設計をスパイラルアップさせていくこと。

分析

論理設計

コード

テスト

検証

書籍:エクストリーム・プログラミング 第2版 第13章 テスト:早めに、こまめに、自働化 図17 コードとテストの順番はどちらでも構わない

学びのフィードバックループ

小さくそして速く

1. シナリオを探索する

2. モデルを小さく作る

3. モデルをコードにする

4. 動くコードからフィードバックを得て、少しずつモデ

ルも成長させていく

5. 回転を小さくイテレーティブに提供することで少しず

つ学んでいける

書籍:IMPACT MAPPING P28-29 反復デリバリによる改良

しかし発生する新たな問題

【問題3】

• 「YAGNI=部分最適」の誤った思い込みによって起こる

ちゃぶ台返し!

現場で行われる会話

• 「え?言ってなかったっけ?」 –優先度の低かったストーリーへの対処時

–言われたままに表面的に対応時

それっていいの?

• ALL RED 行われるScrap& Build 作り直してて良いの?

迷走した結果よい物が組み上がるの?

https://ja.wikipedia.org/wiki/モナ・リザ

ちゃんと考えないとね

お題

「信号機」をモデリングしましょう

ワークショップ その1

感想など

言われたママじゃダメなんだ

• ユーザーの言葉はインスタンスレベル

–相当のドメイン知識がある人に出会えなければ“良い”モデルは完成しない

• やりがちなのは解決策のモデリング

–作ってみたけど「これってどうなの?」

–やがて訪れる気付きによる設計変更

目的と解決策

• 目的と解決策を分けて考える

–トップダウンアプローチ ○ ユーザのシステムへの要求から考える

○ 目的がはっきりすると解決策も出しやすい

✕ ただ目的は最初から分かる訳ではない

–ボトムアップアプローチ ○ 要素間の性質から上位概念を探す

○ 必要な要素は簡単に集まる

✕ 上位概念まで昇華することは難しい

視座・視点・視野

1. 視座:モデルをどの立場から見るか

2. 視点:モデルをどのように見るか

3. 視野:モデルに表現する範囲はどこまでか

視点

視野

視座

視座

進め方 例

? システムに対する

ユーザの要求を考える

ユーザ

目的

目的からモデリングする 対象の知識をまとめる

お題

「信号機」をモデリングしましょう

ワークショップ その2

感想など

解答例 その1

• コンセプト 交差点のスムーズな通行

• ユーザの要求を考える

–交差点とは何か?

–信号機の役割は何か?

解答例 その2

• 交差点の構造を捕える

オブジェクト図

解答例 その3

• クラス図(抽象化)

クラス図

モデリングを実践して気付く点

• 作る対象の目的と価値

–目的を明らかにする

• 特に視座の部分

–モデリングする範囲を合意する

• 何にどこまでコストを掛けるのか?

– 説明責任は開発者

– 設計のメリットとデメリットを示す

– 見る範囲は見れる範囲見ておく

BDUF “論点となるのは、設計をするかどうかではなく、設計をいつするかである”

• LDUF/ENUF 設計の戦略と設計のシンプリシティ

–対象者に適している

–情報が伝わりやすい

–うまく分割されている

–最小限である エクストリームプログラミング 第14章 設計:時間の重要性

のレコンギスタ

• 思い込みによるアジャイル開発

⇒黒歴史からの脱却

• 温故知新

–愚者は経験に学び、賢者は歴史に学ぶ

– XPに至る道を学ぶと新しい発見がある

• オブジェクト指向

• モデリング

• パタン・ランゲージ

M odeling

MODELING Reconguista in M

XPとモデリング

アジャイルモデリング by Scott Ambler ❝モデリングはXPの1つの要素である❞

❝リファクタリングとテストファースト開発というXPのプラクティスは、一般的に従来型のモデリングプロセスに結び付けられている「きれいな設計を促す」「コードを書く前に設計をよく考える」という2つの重要な目的を達成するために役に立ちます❞

アジャイルモデリング XPと統一プロセスを補完するプラクティス 第16章、第17章 http://www.amazon.co.jp/dp/4798102636

今日の学び

• モデリング × XP –モデリングを組み合わせる事でXPを生かすことができる

• 視座・視点・視野をもって目的を明確にする

●おわり●