【12-A-4】 Eclipse-Way...

Preview:

DESCRIPTION

 

Citation preview

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

12-A-4

Eclipse-way

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

2009年2月13日金曜日

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

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

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

2009年2月13日金曜日

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

The Jazz Project

2009年2月13日金曜日

今日の演目

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

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

2009年2月13日金曜日

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日金曜日

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日金曜日

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日金曜日

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日金曜日

Team First

Members

Build

Release/Iteration Plan

Categories

Streams(作業領域)

Queries(状況の照会)

Events(イベント)

has

produces

definesgenerates

worksin

is responsible

shares

Process(プロセス)

Team

followsowns

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

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

2009年2月13日金曜日

成果物の追跡

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日金曜日

“パーソナル”

2009年2月13日金曜日

“チーム”

2009年2月13日金曜日

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

2009年2月13日金曜日

トレンド

2009年2月13日金曜日

実践例としてのRational TeamConcert開発

2009年2月13日金曜日

分散開発体制

ZurichBeaverton

Ottawa Saint Nazaire

Raleigh

Toronto

Winnipeg Lexington

2009年2月13日金曜日

タイムライン

エンドゲーム

リリース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日金曜日

環境

2009年2月13日金曜日

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

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

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

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

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

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

PMC

ComponentLead

ComponentLead …

Contributor Contributor …

2009年2月13日金曜日

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

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

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

2009年2月13日金曜日

Teams of Teams

Dynamic team Maintenance Development line

Main development line

Agile Planning Source Control

Jazz Development

2009年2月13日金曜日

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

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

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

2009年2月13日金曜日

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

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

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

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

2009年2月13日金曜日

プロセスをツールで制御

2009年2月13日金曜日

計画期

エンドゲーム

リリース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日金曜日

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

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

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

2009年2月13日金曜日

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

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

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

2009年2月13日金曜日

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日金曜日

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

Plan Item(フィーチャー)

ストーリー

より詳細、具体的

より詳細、具体的

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

タスク

実現する

2009年2月13日金曜日

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日金曜日

Jazz.netでの要求等の構造

2009年2月13日金曜日

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

マイルストーン

テーマ

Plan Item(フィーチャー)

イテレーション

より詳細、具体的

より詳細、具体的

~成る

~成る

ストーリー

タスク

実現する

提供される

実装される

割当てられる

2009年2月13日金曜日

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

工数見積もり

作業負荷のバランス

2009年2月13日金曜日

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

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

2009年2月13日金曜日

開発

エンドゲーム

リリース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日金曜日

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

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

2009年2月13日金曜日

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

2009年2月13日金曜日

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

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

2009年2月13日金曜日

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

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

2009年2月13日金曜日

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

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

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

2009年2月13日金曜日

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日金曜日

リソース&ビルド管理

Eclipse workspace

クライアントA

Eclipse workspace

クライアントB

2009年2月13日金曜日

リソース&ビルド管理

Eclipse workspace

クライアントA

Eclipse workspace

クライアントB

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

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

auto-check in

auto-check in

deliver

2009年2月13日金曜日

リソース&ビルド管理

Eclipse workspace

クライアントA

Eclipse workspace

クライアントB

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

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

auto-check in

auto-check in

deliver

2009年2月13日金曜日

リソース&ビルド管理

Eclipse workspace

クライアントA

Eclipse workspace

クライアントB

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

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

auto-check in

auto-check in

deliver

一時待避エリア

Suspend/Resume

2009年2月13日金曜日

リソース&ビルド管理

Eclipse workspace

クライアントA

Eclipse workspace

クライアントB

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

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

auto-check in

auto-check in

deliver

一時待避エリア

Suspend/Resume

スナップショット

2009年2月13日金曜日

リソース&ビルド管理

Eclipse workspace

クライアントA

Eclipse workspace

クライアントB

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

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

auto-check in

auto-check in

deliver

一時待避エリア

Suspend/Resume

スナップショット

ビルドエンジン

参照

2009年2月13日金曜日

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

Maintenance Stream

IntegrationStream

Developer workspaces

Build workspace

2009年2月13日金曜日

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

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

個人レベル

ストリーム (Streams)

チームレベル

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

個人の個々の作業単位

チームエリア (Team areas)

プロセス

2009年2月13日金曜日

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

“パーソナルビルド”

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

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

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

変更分の共有、不安定

2009年2月13日金曜日

“リズム“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日金曜日

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

2009年2月13日金曜日

Test Health

2009年2月13日金曜日

何が起きているか?

Team EventsSection

Jazz EventsSection

FeedsViewlet

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

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

2009年2月13日金曜日

Team of Teams Dashboard

2009年2月13日金曜日

安定化期

エンドゲーム

リリース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日金曜日

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

2009年2月13日金曜日

レトロスペクティブ

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

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

PMC がサマライズする

2009年2月13日金曜日

エンドゲーム

エンドゲーム

リリース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日金曜日

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

2009年2月13日金曜日

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

2009年2月13日金曜日

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

2009年2月13日金曜日

PMCによる承認

2009年2月13日金曜日

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

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

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

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

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

2009年2月13日金曜日

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

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

2009年2月13日金曜日

2009年2月13日金曜日

Recommended