66
藤井 智弘 日本アイ・ビー・エム株式会社 ソフトウェア事業 Rational テクニカルセールス&サービス 12-A-4 Eclipse-way 分散アジャイル開発のための プラクティスとその実践例 2009213日金曜日

【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

藤井 智弘日本アイ・ビー・エム株式会社ソフトウェア事業Rational テクニカルセールス&サービス

12-A-4

Eclipse-way

分散アジャイル開発のためのプラクティスとその実践例

2009年2月13日金曜日

Page 2: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

今日の主題 アジャイル開発の有効性は認知されつつも、規模の拡大とオフショア等の分散体制の壁にぶつかっています。

Eclipse-WayはEclipse自体の開発から生まれたアジャイルプラクティス集であり、Rational TeamConcertの開発で、100人×3年以上にわたって適用され、またその過程はインターネット上に公開されています。

本セッションでは、RTCの開発をひとつの例に、アジャイルプラクティスのスケールアップのポイントを 探ります。

2009年2月13日金曜日

Page 3: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

http://www.jazz.net/オープンソースの開発モデルの成功体験を、有償製品の開発モデルに転用

The Jazz Project

2009年2月13日金曜日

Page 4: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

今日の演目

Eclipse-Way 概要 実践例としての

Rational Team Concert開発 体制 イテレーションの詳細

2009年2月13日金曜日

Page 5: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

the Eclipse Way

new & noteworthy

drive with open eyes

validate

reduce stress

learn

enable

attract to latest

transparency

validateupdate

show progress

enable

explore

validate

feedback

サインオフ

コンポーネント中心

ダイナミックなチーム

APIファースト

アダプティブプランニング レトロスペクティブ

マイルストーンファーストいつも

クライアントと共に

ライブベータ

エンドゲーム

アウトプットを自身でも使う

コミュニティを巻き込む

継続した統合

継続したテスト

2009年2月13日金曜日

Page 6: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

the Eclipse Way

new & noteworthy

drive with open eyes

validate

reduce stress

learn

enable

attract to latest

transparency

validateupdate

show progress

enable

explore

validate

feedback

サインオフ

アジャイルで共通のプラクティス

コンポーネント中心

ダイナミックなチーム

APIファースト

アダプティブプランニング レトロスペクティブ

マイルストーンファーストいつも

クライアントと共に

ライブベータ

エンドゲーム

アウトプットを自身でも使う

コミュニティを巻き込む

継続した統合

継続したテスト

2009年2月13日金曜日

Page 7: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

the Eclipse Way

new & noteworthy

drive with open eyes

validate

reduce stress

learn

enable

attract to latest

transparency

validateupdate

show progress

enable

explore

validate

feedback

サインオフ

アジャイルで共通のプラクティスオープンソースで共通のプラクティス

コンポーネント中心

ダイナミックなチーム

APIファースト

アダプティブプランニング レトロスペクティブ

マイルストーンファーストいつも

クライアントと共に

ライブベータ

エンドゲーム

アウトプットを自身でも使う

コミュニティを巻き込む

継続した統合

継続したテスト

2009年2月13日金曜日

Page 8: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

the Eclipse Way

new & noteworthy

drive with open eyes

validate

reduce stress

learn

enable

attract to latest

transparency

validateupdate

show progress

enable

explore

validate

feedback

サインオフ

アジャイルで共通のプラクティスオープンソースで共通のプラクティススケールアップのためのプラクティス

コンポーネント中心

ダイナミックなチーム

APIファースト

アダプティブプランニング レトロスペクティブ

マイルストーンファーストいつも

クライアントと共に

ライブベータ

エンドゲーム

アウトプットを自身でも使う

コミュニティを巻き込む

継続した統合

継続したテスト

2009年2月13日金曜日

Page 9: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

Team First

Members

Build

Release/Iteration Plan

Categories

Streams(作業領域)

Queries(状況の照会)

Events(イベント)

has

produces

definesgenerates

worksin

is responsible

shares

Process(プロセス)

Team

followsowns

“ツール”はチームを“知っている“

チームはそれぞれ“異なる“

2009年2月13日金曜日

Page 10: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

成果物の追跡

Work Item

IterationPlan

Build

Release

Change SetSnapshotUser

StreamArtifacts

subscribesapprovesreviews related

implements

promoted

built from

found in

plannedfor

included

reportedagainst

included

included

Workspace

change flow

Work items で作業や課題を追跡する

2009年2月13日金曜日

Page 11: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

“パーソナル”

2009年2月13日金曜日

Page 12: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

“チーム”

2009年2月13日金曜日

Page 13: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

“チームから成るチーム“

2009年2月13日金曜日

Page 14: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

トレンド

2009年2月13日金曜日

Page 15: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

実践例としてのRational TeamConcert開発

2009年2月13日金曜日

Page 16: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

分散開発体制

ZurichBeaverton

Ottawa Saint Nazaire

Raleigh

Toronto

Winnipeg Lexington

2009年2月13日金曜日

Page 17: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

タイムライン

エンドゲーム

リリースM1a

pla

n

dev

elo

p

stab

ilize

4 weeks

ウォームアップ

retr

osp

ecti

ve

init

ial r

elea

se p

lan

dec

om

pre

ssio

n

M1

pla

n

dev

elo

p

stab

ilize

pla

n

dev

elo

p

stab

ilize

サインオフ

サインオフ サインオフ

4 weeks 4 weeks

fix

- s

pit

& p

olis

h

test fix

test

イテレーション終了時 デモ、レトロスペクティブ、New & Noteworthy

2009年2月13日金曜日

Page 18: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

環境

2009年2月13日金曜日

Page 19: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

メンバーの役割モデル プロジェクト・マネージメント・コミッティ(PMC)

リリースプランに責任テーマ設定ファシリテイター、コーディネータ

全員参加型の意思決定を推進 e.g. “アーキテクチャ上の課題トップ 5 “

コンポーネント・リード イテレーションプラン、テストプランに責任

コントリビュータ コード、テスト、デザインに責任 多くの役割を果たす

開発者、テスター、アーキテクト カスタマーサポート、リリースエンジニアリング

PMC

ComponentLead

ComponentLead …

Contributor Contributor …

2009年2月13日金曜日

Page 20: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

コンポーネントベース開発 “コンポーネント・ベースド” チームは、1拠点に存在し、ひとつあるいはそれ以上のコンポーネントに責任を持つ

コンポーネント群は分散して存在する

“architecture follows organization” Team Concert はコンポーネント・ベースド開発をサポートする チームは自身の“ストリーム”を持つ チームは、そのストリーム内で、リソースの変更を共有する チームは自身が責任を有すコンポーネントがある ストリームはコンポーネントを参照する

2009年2月13日金曜日

Page 21: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

Teams of Teams

Dynamic team Maintenance Development line

Main development line

Agile Planning Source Control

Jazz Development

2009年2月13日金曜日

Page 22: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

プロセス:追跡するアイテム 障害(Defects), タスク(Tasks), 機能拡張(Enhancements)

ビルド・ステータス(Build status)

レトロスペクティブ(Retrospectives) 計画項目(Plan Items), ストーリ(Stories)

2009年2月13日金曜日

Page 23: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

プロセスルールを、イテレーションフェーズに合わせて定義

開発期 コード変更の登録にはコメントをつけること

安定化期 コード変更の登録には、ワークアイテムとの関連付けておくこと

コンポーネントリードによる承認が必須 チームメンバーによるレビューをうけること

2009年2月13日金曜日

Page 24: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

プロセスをツールで制御

2009年2月13日金曜日

Page 25: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

計画期

エンドゲーム

リリースM1a

pla

n

dev

elo

p

stab

ilize

4 weeks

ウォームアップ

retr

osp

ecti

ve

init

ial r

elea

se p

lan

dec

om

pre

ssio

n

M1

pla

n

dev

elo

p

stab

ilize

pla

n

dev

elo

p

stab

ilize

サインオフ

サインオフ サインオフ

4 weeks 4 weeks

fix

- s

pit

& p

olis

h

test fix

test

2009年2月13日金曜日

Page 26: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

ワークアイテムの計画 Plan Item (フィーチャー)

提案(Proposed), コミット(Committed), 延期(Deferred)

ストーリー(Story) タスク(Task)

2009年2月13日金曜日

Page 27: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

”アジャイル化”にむけてへの不安要求やら仕様やら・・・

「“全体のプラン”ってどうする?」- 抜け、漏れ

「“好き勝手放題”をどう収束(あるいは抑える)させるの?」

2009年2月13日金曜日

Page 28: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

Jazz.netでの例 巨視的視点:リリースプラン

https://jazz.net/development/DevelopmentItem.jsp?href=content/project/plans/rtc-plan-2.0.html

Components and product configurations Release deliverables Release milestones Operating environments Compatibility and Evolution Themes and Priorities Plan items UIs

2009年2月13日金曜日

Page 29: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

Jazz.netでの要求等の構造テーマ

Plan Item(フィーチャー)

ストーリー

より詳細、具体的

より詳細、具体的

“Enterprise Scalability and Security”“Jazz Product Family”“Web Access”“Easy to Set up and Maintain”....

タスク

実現する

2009年2月13日金曜日

Page 30: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

Jazz.netでの要求等の構造テーマ

Plan Item(フィーチャー)

より詳細、具体的

より詳細、具体的

“Project level read access control”“Server performance and scaling data”“Provide REST API or work items”“Support Visual Studio IDE”ストーリー

タスク

実現する

2009年2月13日金曜日

Page 31: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

Jazz.netでの要求等の構造

2009年2月13日金曜日

Page 32: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

Jazz.netでの要求等の構造リリース

マイルストーン

テーマ

Plan Item(フィーチャー)

イテレーション

より詳細、具体的

より詳細、具体的

~成る

~成る

ストーリー

タスク

実現する

提供される

実装される

割当てられる

2009年2月13日金曜日

Page 33: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

イテレーションプラン ストーリーの定義 タスクへの詳細化

工数見積もり

作業負荷のバランス

2009年2月13日金曜日

Page 34: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

フィードバックのフォーカスと収束

全体から見て、”今”どうなっているか?今“何を”議論すべきか?

2009年2月13日金曜日

Page 35: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

開発

エンドゲーム

リリースM1a

pla

n

dev

elo

p

stab

ilize

4 weeks

ウォームアップ

retr

osp

ecti

ve

init

ial r

elea

se p

lan

dec

om

pre

ssio

n

M1

pla

n

dev

elo

p

stab

ilize

pla

n

dev

elo

p

stab

ilize

サインオフ

サインオフ サインオフ

4 weeks 4 weeks

fix

- s

pit

& p

olis

h

test fix

test

2009年2月13日金曜日

Page 36: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

進捗の追跡 イテレーションプランでの進捗が見られるダッシュボードで時系列の進捗を把握

イテレーション単位 トレンド

2009年2月13日金曜日

Page 37: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

”アジャイル化”にむけてへの不安”結局、人の仕事のすべては管理できない”

2009年2月13日金曜日

Page 38: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

”アジャイル化”にむけてへの不安”結局、人の仕事のすべては管理できない”

同じチーム→目が届く→リカバリできる

2009年2月13日金曜日

Page 39: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

”アジャイル化”にむけてへの不安”結局、人の仕事のすべては管理できない”

同じチーム→目が届く→リカバリできる 他のチーム→(自チームほどには)目が届かない     →ちょっと怖い。でも、そばに      いれば何とかなる

2009年2月13日金曜日

Page 40: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

”アジャイル化”にむけてへの不安”結局、人の仕事のすべては管理できない”

同じチーム→目が届く→リカバリできる 他のチーム→(自チームほどには)目が届かない     →ちょっと怖い。でも、そばに      いれば何とかなる

離れたチーム→何をしてるかわからない。      →怖すぎる

2009年2月13日金曜日

Page 41: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

Team First:”チーム”がチームとして機能するために

Members

Build

Release/Iteration Plan

Categories

Streams(作業領域)

Queries(状況の照会)

Events(イベント)

has

produces

definesgenerates

worksin

is responsible

shares

Process(プロセス)

Team

followsowns

チームの役割に応じたルール/ワークフローの活用他の悪影響を排除できる”独立した”作業空間の確保”Whole team”→”Dynamic Team”と独立性のバランス

- リソース管理とビルド環境

2009年2月13日金曜日

Page 42: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

リソース&ビルド管理

Eclipse workspace

クライアントA

Eclipse workspace

クライアントB

2009年2月13日金曜日

Page 43: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

リソース&ビルド管理

Eclipse workspace

クライアントA

Eclipse workspace

クライアントB

ストリームリポジトリワークスペース

リポジトリワークスペース

auto-check in

auto-check in

deliver

2009年2月13日金曜日

Page 44: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

リソース&ビルド管理

Eclipse workspace

クライアントA

Eclipse workspace

クライアントB

ストリームリポジトリワークスペース

リポジトリワークスペース

auto-check in

auto-check in

deliver

2009年2月13日金曜日

Page 45: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

リソース&ビルド管理

Eclipse workspace

クライアントA

Eclipse workspace

クライアントB

ストリームリポジトリワークスペース

リポジトリワークスペース

auto-check in

auto-check in

deliver

一時待避エリア

Suspend/Resume

2009年2月13日金曜日

Page 46: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

リソース&ビルド管理

Eclipse workspace

クライアントA

Eclipse workspace

クライアントB

ストリームリポジトリワークスペース

リポジトリワークスペース

auto-check in

auto-check in

deliver

一時待避エリア

Suspend/Resume

スナップショット

2009年2月13日金曜日

Page 47: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

リソース&ビルド管理

Eclipse workspace

クライアントA

Eclipse workspace

クライアントB

ストリームリポジトリワークスペース

リポジトリワークスペース

auto-check in

auto-check in

deliver

一時待避エリア

Suspend/Resume

スナップショット

ビルドエンジン

参照

2009年2月13日金曜日

Page 48: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

リソースの共有ストリームでチームの作業領域の独立性を確保

Maintenance Stream

IntegrationStream

Developer workspaces

Build workspace

2009年2月13日金曜日

Page 49: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

独立性のレベルRTCでの”領域”に関する概念 独立性のレベル

リポジトリ・ワークスペース (Repository workspaces)

個人レベル

ストリーム (Streams)

チームレベル

サスペンド&レジューム(Suspend and Resume)

個人の個々の作業単位

チームエリア (Team areas)

プロセス

2009年2月13日金曜日

Page 50: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

ビルドサポート 開発者単位

“パーソナルビルド”

チーム単位 “チームの継続したビルド”

複合チーム単位 ウィークリーの統合ビルド

安定化を目的 継続統合ストリーム

変更分の共有、不安定

2009年2月13日金曜日

Page 51: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

“リズム“Rhythm for Green

リポジトリワークスペース(Personal Builds)‏

good buildfailed build

週次統合ストリーム (Team of team )‏

deliver/accept

RC2

RC2 Stabilization ストリーム

チームストリーム(Team Builds)‏

変更セットの公開と受け入れ

C-I ストリーム (Team of team Builds)‏

ベースラインの公開と受け入れ

suspend/resume

suspend/resume

2009年2月13日金曜日

Page 52: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

ビルド状況のトラッキング

2009年2月13日金曜日

Page 53: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

Test Health

2009年2月13日金曜日

Page 54: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

何が起きているか?

Team EventsSection

Jazz EventsSection

FeedsViewlet

チーム間はフィードでつなぐ:

マイ・イベント チーム・イベント

2009年2月13日金曜日

Page 55: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

Team of Teams Dashboard

2009年2月13日金曜日

Page 56: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

安定化期

エンドゲーム

リリースM1a

pla

n

dev

elo

p

stab

ilize

4 weeks

ウォームアップ

retr

osp

ecti

ve

init

ial r

elea

se p

lan

dec

om

pre

ssio

n

M1

pla

n

dev

elo

p

stab

ilize

pla

n

dev

elo

p

stab

ilize

サインオフ

サインオフ サインオフ

4 weeks 4 weeks

fix

- s

pit

& p

olis

h

test fix

test

2009年2月13日金曜日

Page 57: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

安定化したビルドをマイルストーンとして格上げ Work item で承認状況を追跡

2009年2月13日金曜日

Page 58: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

レトロスペクティブ

ワークアイテムの一種 何ができて何ができないか?

プロセスをどう調整するか?

PMC がサマライズする

2009年2月13日金曜日

Page 59: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

エンドゲーム

エンドゲーム

リリースM1a

pla

n

dev

elo

p

stab

ilize

4 weeks

ウォームアップ

retr

osp

ecti

ve

init

ial r

elea

se p

lan

dec

om

pre

ssio

n

M1

pla

n

dev

elo

p

stab

ilize

pla

n

dev

elo

p

stab

ilize

サインオフ

サインオフ サインオフ

4 weeks 4 weeks

fix

- s

pit

& p

olis

h

test fix

test

2009年2月13日金曜日

Page 60: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

エンドゲームでのトラッキング

2009年2月13日金曜日

Page 61: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

エンドゲームでのトラッキング

2009年2月13日金曜日

Page 62: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

エンドゲームでのトラッキング

2009年2月13日金曜日

Page 63: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

PMCによる承認

2009年2月13日金曜日

Page 64: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

RTCの外部で行われるアクション

コンポーネントリードと2フェーズプランニングコール 安定化週では毎日

イテレーション終了時にデモ コンポーネントチーム内では、毎日スタンダップミーティングを実施

リリースサイクルの最初ではF2Fミーティング

新しいコンポーネント開発企画時はF2F

2009年2月13日金曜日

Page 65: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

ポイント ”チーム”の独立化 ”無駄を排する”→+”ロスを最小化する”

スキルのばらつきは不可避→”WBSの集合としてのプロセス”から”完了基準の集合体”へ

2009年2月13日金曜日

Page 66: 【12-A-4】 Eclipse-Way :分散アジャイル開発のためのプラクティスとその事例

2009年2月13日金曜日