offshore xp experience with shanghai

65
国際的な 国際的な 国際的な 国際的なXP事例 事例 事例 事例 UML使った分散開発 使った分散開発 使った分散開発 使った分散開発 2003.4.16 (株)永和 平鍋健児 岡村敏弘 UML Forum 2003 C-4

Upload: kenji-hiranabe

Post on 10-May-2015

2.655 views

Category:

Business


3 download

DESCRIPTION

Episode of XP development, done together with Shanghai company. UML editor JUDE

TRANSCRIPT

Page 1: Offshore XP experience with Shanghai

国際的な国際的な国際的な国際的なXPプロジェクト事例プロジェクト事例プロジェクト事例プロジェクト事例──── UMLを使った分散アジャイル開発を使った分散アジャイル開発を使った分散アジャイル開発を使った分散アジャイル開発

2003.4.16

(株)永和システムマネジメント

平鍋健児岡村敏弘

UML Forum 2003 C-4

Page 2: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 2

自己紹介

�㈱永和システムマネジメント�福井県福井市,200名

�金融・医療・オープンシステムの開発

�平鍋健児�オブジェクト指向・XPの現場実践、書籍・

記事の執筆

�XP-jpメーリングリスト

�岡村敏弘�Judeプロジェクトリーダー

Page 3: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 3

「国際的な「国際的な「国際的な「国際的なXPプロジェクト事例プロジェクト事例プロジェクト事例プロジェクト事例

──── UMLを使った分散アジャイル開発」を使った分散アジャイル開発」を使った分散アジャイル開発」を使った分散アジャイル開発」

17:15~18:25(70分)

中国とのジョイントプロジェクトにおいて、XP(Extreme

Programming)を適用した事例を紹介する。

開発対象は、UMLモデリングツールJudeで、昨年の10月

からプロジェクトを開始し、現在に至る。

同じ場所での開発期間と、離れた場所での開発期間の違

いや、それぞれどのような困難や利点があったかを中心に説明する。

コミュニケーションコミュニケーションコミュニケーションコミュニケーションが困難な状況においてアジャイルアジャイルアジャイルアジャイルな開

発を行う場合の課題と解決策を探る。

アブストラクト

Page 4: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 4

アジェンダ

�経緯と方針(中国・上海の状況を交えて)

�XP概要

�プロジェクト概要

�レポート

�考察

Page 5: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 5

アジェンダ

��経緯と方針(中国・上海の状況を交えて)経緯と方針(中国・上海の状況を交えて)経緯と方針(中国・上海の状況を交えて)経緯と方針(中国・上海の状況を交えて)経緯と方針(中国・上海の状況を交えて)経緯と方針(中国・上海の状況を交えて)経緯と方針(中国・上海の状況を交えて)経緯と方針(中国・上海の状況を交えて)

�XP概要

�プロジェクト概要

�レポート

�考察

Page 6: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 6

発端

� 上海視察帰りの社長曰く,

� 中国のソフトウェア会社と共同開発をせよ.

� 中国は人件費が安い点で注目されているが,実際に上海に行ってみると技術者のエネルギーはすごい.優秀な人材がたくさんいる.単に人的資源の調達場所としてではなく,優秀な技術者と友好関係を結びたい.また,今から爆発するであろう中国市場も視野に入れたい.

� 現在開発中のJude(UMLエディタ)

の開発を加速.

Page 7: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 7

中国・上海の状況

�ソフトウェア市場としての中国

�中国のソフトウェア産業成長

�上海のソフトウェア産業成長

�上海のソフトウェア技術者

�上海のソフトウェア産業の特徴

Page 8: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 8

出展: "Report of Shanghai Software

Industry Development

2001"(Shanghai Information

Committee)

Software Market breakdown of 2001Software Market breakdown of 2001Software Market breakdown of 2001Software Market breakdown of 2001

Ireland85.2

China68.2

Brazil74.81South Korea

78.9

India84

Japan545.28

USA2285.6

China USA Japan Ireland IndiaSouth

KoreaBrazil Global

1999 53.253.253.253.2 2200 540540540540 84 67.5 59 63 5337

2000 71.771.771.771.7 2400 572572572572 89 88.5 83.2 78 6038

2001 68.268.268.268.2 2285.6 545.28545.28545.28545.28 85.2 84 78.9 74.81 5754.8

Software Market (Year 1999~2001) ::::100 Million USD

世界ソフトウェア市場の比較

日本市場:中国市場=8:1

日本市場/人:中国市場/人=100:1

Page 9: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 9

China Software Sales Annual Increase Ratio (1993~2001)

0%

20%

40%

60%

80%

100%

120%

1993 1994 1995 1996 1997 1998 1999 2000 2001

1992 1993 1994 1995 1996 1997 1998 1999 2000 2001

Software Product 240 484 593 823 1,114 1,356 1,671 2,203 2,881 3,632

Software Service 289 595 702 932 1,368 1,792 2,264 2,887 3,898 4,903

Total 529 1,079 1,295 1,755 2,482 3,148 3,935 5,090 6,779 8,535

Annual Increase 106% 18% 32.70% 46.80% 31% 26.40% 27% 33.00% 26%

China Software Sales Revenue (Year 1992~2001) Unit: Million USD

ソフトウェア販売歳入の推移

年々延び率20%で成長している

Page 10: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 10

1999 2000 2001

480 578 892Grosss Income (Million USD)

Gross Income of Shanghai Software Industry

20.29%

54.39%

0%

10%

20%

30%

40%

50%

60%

1999 2000 2001

上海ソフトウェア産業の成長

特に上海の成長は顕著(50%以上)

Page 11: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 11

28%

57%

7% 4% 2% 2%0%

20%

40%

60%

20-25 25-30 30-35 35-40 40-50 >50

Age Distribution of Software Company Employees in Shanghai

上海のソフトウェア技術者

ほとんどが30歳以下.若いやる気とエネルギーに溢れている

しかし,経験はあまりない上海には大学が50以上ある

Page 12: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 12

上海の政策

�他州の大学生,卒業生も上海在住できる

�ISO9001とCMM認定に賞

�認定企業への税金の軽減

�ベンチャー企業への支援

�ハイテクプロダクトへの投資

�エンジニアの教育施設

上海政府はソフトウェア開発企業を優遇している

Page 13: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 13

中国・上海の状況(まとめ)

�中国のソフトウェア市場は日本の1/8.

�ソフトウェアの販売は,年率20%で延びている.

�特に上海は50%を超える延び率.

�上海には若く・エネルギーのある技術者が多い.

�上海は政策的にソフトウェア産業が優遇されている.

現在の上海は共同開発にとてもよい環境• 将来の市場,経済の成長• 若い人材• (日本に比べて安い人件費)

Page 14: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 14

中国とのジョイント開発の大方針

�中国を労働力リソースとは見ない

�将来の展開を見据えた信頼関係作り

�共同開発の2つの方向の選択肢�設計と製造の分離 … UMLでの仕様I/F

�密なチームの結成 … XPチーム 採用

Page 15: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 15

具体方針

� XPチームを結成し,UMLエディタを開発する.

� チームを醸成する.UMLに精通する.

� オブジェクト指向開発ノウハウを伝授する.

� 将来の設計と製造の分離にも備える.

� 分散開発のプロセスモデルを探る.

�両社の両社の両社の両社のWin-Winを確認する宣言を確認する宣言を確認する宣言を確認する宣言書を作成.書を作成.書を作成.書を作成.

Page 16: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 16

2002年9月23日

私たち、永和システムマネジメント、SuperV、大陸貿易開発、上坂会計の四社は、日本と中国での共同ソフトウェア開発において、新しいビジネス、新しい価値を創造する活動を行います。この活動にあたっては、以下を共通の原則として行動します。

1. チャレンジへの若い情熱(青)2. 出発当初の初心忘るべからず (義)3. 信頼と友情を基礎にしたアライアンス(愛)4. 自己実現 (夢)

私たちの夢:私たちの夢:私たちの夢:私たちの夢: 4つの4つの4つの4つのWinWinWinWinが第5のが第5のが第5のが第5のWinWinWinWinを創造する。を創造する。を創造する。を創造する。

福井宣言

Page 17: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 17

アジェンダ

�経緯と方針(中国・上海の状況を交えて)

��XPXP概要概要概要概要概要概要概要概要

�プロジェクト概要

�レポート

�考察

Page 18: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 18

XPとは

�eXtreme Programming

�コーディングとテストに重点

�初期設計よりも漸進的再設計

�明確な「4つの価値」,「12のプラクティス」を示す

�ソフトウェア開発は製造工程ではない.対話を基礎に置いた新しいパラダイム.

Kent Beck, 1999Extreme Programming Explained - Embrace Change( 『XPエクストリーム・プログラミング入門 - ソフトウェア開発の究極の手法 』)

Page 19: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 19

伝統的な開発

Page 20: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 20

XPの開発

Page 21: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 21

4つの価値

�Communication(コミュニケーション)

�Simplicity(シンプルさ)

�Feedback(フィードバック)

�Courage(勇気)

Communication +Simplicity+Feedback = Courage

Page 22: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 22

12のプラクティス

� Planning Game� 計画ゲーム

� Small Releases� ちいさなリリース

� Metaphor� メタファー

� Simple Design� シンプルデザイン

� Testing� テスティング

� Refactoring� リファクタリング

� Pair Programming� ペアプログラミング

� Collective Ownership� 共同所有権

� Continuous Integration� 継続的インテグレーション

� 40-Hour Week� 週40時間

� On-site Customer� オンサイト顧客

� Coding Standard� コーディング標準

※ 14, 13, 19 などと統廃合が起こっているが,ここではオリジナルの12を挙げる

Page 23: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 23

XP Processリリース開発

イテレーション

リリース計画

受入れテスト

2~3ヶ月

イテレーション

・タスク

・タスク

・・

イテレーション

計画

受入れテスト

2~3週間

ストーリーストーリー

タスク

スタンダップ

ミーティング

ユニットテスト

1~2日

ペア

プログラミング

・・・・・

ペアプログラミング

テスト作成

ユニットテスト

2~3時間

プログラミング

XPの開発の流れ

ユーザ

ストーリー

リリース

・・・・・・

リファクタリン

インテグレーション

実行可能リリース

インテグレーション

ストーリーカード

タスクーカード

�プロジェクトはリリースの連続

�1リリースは2~3ヶ月

�リリースはイテレーションの連続

�イテレーションは2~3週間

�イテレーションはタスクからなる

�タスクは1~2日

�タスクはペアによって開発される

�毎朝のスタンドアップミーティング

�テストファーストによる開発

Page 24: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 24

アジェンダ

�経緯と方針(中国・上海の状況を交えて)

�XP概要

��プロジェクト概要プロジェクト概要プロジェクト概要プロジェクト概要プロジェクト概要プロジェクト概要プロジェクト概要プロジェクト概要

�レポート

�考察

Page 25: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 25

開発対象Jude

�UMLモデリングツール

�Javaアプリケーション

�規模(現在)� クラス数:1180

� 全NCSS:約9万行(≒コメントや空行以外)

Method1010

Class757588

Package233823382392393131

Project888268882690759075118011803838

perNCSSMethodsClassesPackages

プロジェクト概要

Page 26: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 26

ビジョン

1.Jude竹バージョンを開発しリリースすること

2.信頼関係を構築し、日本と中国で高品質のソフトウェアを共同開発するモデル(ビジネス、プロセス)を見つけること

デファクトスタンダードデファクトスタンダードデファクトスタンダードデファクトスタンダードデファクトスタンダードデファクトスタンダードデファクトスタンダードデファクトスタンダード

2.中国アライアンス2.中国アライアンス2.中国アライアンス2.中国アライアンス2.中国アライアンス2.中国アライアンス2.中国アライアンス2.中国アライアンス

1.1.1.1.1.1.1.1.JudeJude

JudeJude梅梅梅梅梅梅梅梅

JudeJude竹竹竹竹竹竹竹竹

JudeJude松松松松松松松松

クリエイティブで生産性クリエイティブで生産性クリエイティブで生産性クリエイティブで生産性クリエイティブで生産性クリエイティブで生産性クリエイティブで生産性クリエイティブで生産性の高いチームの高いチームの高いチームの高いチームの高いチームの高いチームの高いチームの高いチーム

コアとなる機能を装備コアとなる機能を装備コアとなる機能を装備コアとなる機能を装備コアとなる機能を装備コアとなる機能を装備コアとなる機能を装備コアとなる機能を装備

将来の展開に耐える将来の展開に耐える将来の展開に耐える将来の展開に耐える将来の展開に耐える将来の展開に耐える将来の展開に耐える将来の展開に耐えるレベルに拡張レベルに拡張レベルに拡張レベルに拡張レベルに拡張レベルに拡張レベルに拡張レベルに拡張

業界特化商品業界特化商品業界特化商品業界特化商品業界特化商品業界特化商品業界特化商品業界特化商品カスタマイズパートナカスタマイズパートナカスタマイズパートナカスタマイズパートナカスタマイズパートナカスタマイズパートナカスタマイズパートナカスタマイズパートナ

アーキテクチャの確立アーキテクチャの確立アーキテクチャの確立アーキテクチャの確立アーキテクチャの確立アーキテクチャの確立アーキテクチャの確立アーキテクチャの確立基本機能の実装基本機能の実装基本機能の実装基本機能の実装基本機能の実装基本機能の実装基本機能の実装基本機能の実装

WinWin--WinWin関係関係関係関係関係関係関係関係

信頼関係信頼関係信頼関係信頼関係信頼関係信頼関係信頼関係信頼関係

Page 27: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 27

Superv(上海)当社

体制

�中国3名、日本3名の開発チーム

開発チーム開発チーム開発チーム開発チーム

Director::::平鍋平鍋平鍋平鍋 (擬似顧客、コーチ)(擬似顧客、コーチ)(擬似顧客、コーチ)(擬似顧客、コーチ)

GPM::::Toshi (擬似顧客代理)(擬似顧客代理)(擬似顧客代理)(擬似顧客代理)

Masa ((((プログラマ)プログラマ)プログラマ)プログラマ)

29292929才、開発経験7年才、開発経験7年才、開発経験7年才、開発経験7年

Midori ((((プログラマ)プログラマ)プログラマ)プログラマ)

33才、開発経験8年33才、開発経験8年33才、開発経験8年33才、開発経験8年

PM: Rock ((((マネージャ、プログラマネージャ、プログラマネージャ、プログラマネージャ、プログラ

マ)マ)マ)マ)

27才、開発経験4年27才、開発経験4年27才、開発経験4年27才、開発経験4年Wenny ((((プログラマ)プログラマ)プログラマ)プログラマ)

28才、開発経験5年28才、開発経験5年28才、開発経験5年28才、開発経験5年

Yves ((((プログラマ)プログラマ)プログラマ)プログラマ)

23才、開発経験1年23才、開発経験1年23才、開発経験1年23才、開発経験1年

Technical Manager::::Jessy((((コーチ)コーチ)コーチ)コーチ)

PM: Toshi (マネージャ、プログラ(マネージャ、プログラ(マネージャ、プログラ(マネージャ、プログラ

マ)マ)マ)マ)

30才、開発経験6年30才、開発経験6年30才、開発経験6年30才、開発経験6年

Page 28: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 28

スケジュール

�Startup Phaseで4つの図サポートを追加する

�Elaboration Phaseで他の基盤機能を追加する

年年年年

月月月月 10101010 11111111 12121212 1111

2002200220022002 20032003200320036666 7777 8888 99992222 3333 4444 5555

Release4Release4Release4Release4他基盤機能の拡張他基盤機能の拡張他基盤機能の拡張他基盤機能の拡張

Release1Release1Release1Release1ステートチャート図、ステートチャート図、ステートチャート図、ステートチャート図、アクティビティ図追加アクティビティ図追加アクティビティ図追加アクティビティ図追加

準備準備準備準備

Release2Release2Release2Release2シーケンス図、シーケンス図、シーケンス図、シーケンス図、

コラボレーション図追加コラボレーション図追加コラボレーション図追加コラボレーション図追加

Release3Release3Release3Release3他基盤機能の拡張他基盤機能の拡張他基盤機能の拡張他基盤機能の拡張

Startup phase では、project velocity

の把握、ナレッジ共有、相互理解、コミュニケーションに焦点をあてる

Startup PhaseStartup Phase

Elaboration PhaseElaboration Phase

Page 29: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 29

開発場所

� 中国で一緒に開発スタート → 分散開発

� 日本で一緒に開発 → 分散開発

Release2Release1

333322221111121212121111111110101010

日本日本日本日本

上海上海上海上海

当社当社当社当社

当社当社当社当社

当社当社当社当社

SV

SuperVSuperV

準備準備準備準備 →→→→

分散分散分散分散分散分散分散分散 合同合同合同合同合同合同合同合同 分散分散分散分散分散分散分散分散 合同合同合同合同合同合同合同合同 分散分散分散分散分散分散分散分散

Page 30: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 30

� 「XPをベースに短期繰り返し型で開発する」

� 課題

� どう情報共有するか

� どう品質を維持するか

� どうリスクを軽減するか

� XPの採用

� 密なコミュニケーション

� ペアプログラミング・ユニットテストによる品質維持

� 短期リリースと舵取りによるリスク軽減

� 工夫した点

� モデルテスト、コマンドテスト、ストーリテスト

� Reflection Sheet、Evaluation Sheetで改善

プロセス1

Page 31: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 31

プロセス2

Release1(3 months)

Iteration2(1 weeks)

Iteration1(1 weeks)

Simple

UML

Simple

UML

Story1Story1

Rel.2

Meta

model

Meta

model

Iter

ation E

valu

ation

Story2-1Story2-1

Story2-NStory2-N

Iter

ation E

valu

ation

Iteration3(1 weeks)

Story5-1Story5-1

Story5-NStory5-N

Iter

ation E

valu

ation

Present

ation

Present

ation

Model

Test

Model

Test

Model

Test

Model

TestModel

Test

Model

Test

Command

Test

Command

TestCommand

Test

Command

Test

IterationN(1

weeks)

Story TestStory Test

Iter

ation Evalu

ation

Relea

se Evalu

ation

Evaluation Sheet

Improved Process

Evaluation Sheet

Improved Process

Relea

se P

lannin

g

Iter

ation P

lannin

g

Iter

ation P

lannin

g

Iter

ation P

lannin

g

Iter

ation P

lannin

g

Reflection Sheet

Tracking Sheet

Reflection Sheet

Tracking Sheet

�Release:三ヶ月単位で大きな計画+機能開発+評価を行う

� Iteration:計画+機能開発+評価を一週間単位で繰り返す

Page 32: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 32

ツール・環境

Antビルドツール

J2SE 1.4.1コンパイラ

Windows2000、XPOS

MSN Messenger会話

Swiki情報共有

JUnitユニットテスト

CVS、WinCVS構成管理

Eclipse統合開発環境

Page 33: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 33

アジェンダ

�経緯と方針(中国・上海の状況を交えて)

�XP概要

�プロジェクト概要

��レポートレポートレポートレポートレポートレポートレポートレポート

�考察

Page 34: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 34

導入

119 1075 631 286 7431

Release2Release1

8452

333322221111121212121111111110101010

日本日本日本日本

上海上海上海上海

当社当社当社当社

当社当社当社当社

当社当社当社当社

SV

SuperVSuperV

導入導入導入導入 →→→→

�開発開始前の準備� 計画共有、ストーリカード準備、環境準備、体験課題

分散分散分散分散分散分散分散分散 合同合同合同合同合同合同合同合同 分散分散分散分散分散分散分散分散 合同合同合同合同合同合同合同合同 分散分散分散分散分散分散分散分散

Page 35: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 35

環境準備

�「コミュニケーションに適した環境を準備」ホ

ワイ

トボ

ード

タスク表を貼る壁

プリンタ

ホワイトボードを持つチームの部屋ホワイトボードを持つチームの部屋ホワイトボードを持つチームの部屋ホワイトボードを持つチームの部屋

お菓子お菓子

Page 36: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 36

XP体験課題

M1 M2 M3 M4 M5 M6

分析されたクラス構成 C B B A B B

依存関係の局所化 B A B A A A

理解しやすさ C B A A A B

命名センス A B A A A A

コメント充実度 B A C A C C

テスト比率 B B B A A A

コーディング標準 C B B B B B

「簡単な課題で、プロジェクトでの価値観を共有」

�課題:「ボーリングの点数計算プログラム」

�狙いと効果� XP予行(ユニットテスト、タスク分割と見積もり)

� プロジェクトでの価値観共有� 理解しやすさ重視

� 品質重視

� メンバの技量把握

� コーディング規約注意

�期間:1日

各自のプログラム評価結果

Page 37: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 37

アーキテクチャ1

�「共通語のUMLでアーキテクチャを共有」

jcontrol

jmodel

jview

jsystem

jutil<<global utility>>

jviewElement

resource

Jude

Startup Jude application.main() method is here.

Commands &Modes.Edit model and control view.

System.Global, SecurityManager, SystemProperty

View.Frame & Dialogs

View elements.Has view model and Update drawing

Jude's Models(Presentations)

Properties, Help, Images, Messages

Utilities

JP.co.esm.caddies.jomtJP.co.esm.caddies.jomtJP.co.esm.caddies.jomtJP.co.esm.caddies.jomt•パッケージの責務と依存関係中心に理解

説明UMLの例

Page 38: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 38

Overview of GolfOverview of GolfOverview of GolfOverview of Golf(Jude Architecture)(Jude Architecture)(Jude Architecture)(Jude Architecture)

ControlControlControlControl

ModelModelModelModel

ViewViewViewView

CommandListener<<Interface>>

EntityStoreEvent

ModelUIView

GroupUIView

CommandFactory

Application

Command

CommandEvent

CommandManager<<singleton>>

CommandRunner

11new

listen

JTree(from swing)

JTreeUIView

GCanvas(from draw)

GCanvasUIView

listen

Mode JMenuBar(from swing)

UIView

** 0..10..1

GolfAction

0..*

new

new

new

Act ion(from swing)

EntityCl ipboard

edit

EntityStore new

edit

StateEditable(f rom undo)

<<Interface>>

0..*0..*

Communication between View and Control is executed with in CommandEvent. View generates CommandEvent .

A Change of Mode is notified to View within EntityStoreEvent.

Command edits Model. It also operates Mode and UI.

0..*

アーキテクチャ2

��「「JudeJudeは、は、MVCMVCのフレームワーク上に構築」のフレームワーク上に構築」

Page 39: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 39

Release1

テストの種類

Iteration2Iteration1

モデル開発モデル開発 機能開発•コントローラ•ビュー

機能開発•コントローラ•ビュー

モデルテストモデルテスト モデルテストモデルテスト

コマンドテストコマンドテスト

IterationN

ストーリテストストーリテスト

Model TestModel Test

コマンドテストコマンドテスト

ユーザストーリを正しく実行できるかを目視で確認するストーリテストストーリテストストーリテストストーリテスト

(手動)

アプリケーションを起動した状態でコマンドを送り、コマンドが正しく実行できるかを確認する

コマンドテストコマンドテストコマンドテストコマンドテスト

(JUnit)

内部で持っているモデル(UMLメタモデルなど)が正しい

かを確認するモデルテストモデルテストモデルテストモデルテスト

(JUnit)

Page 40: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 40

Release1 合同開発

119 1075 631 286 7431

Release2Release1

8452

333322221111121212121111111110101010

日本日本日本日本

上海上海上海上海

当社当社当社当社

当社当社当社当社

当社当社当社当社

SV

SuperVSuperV

準備準備準備準備 →→→→

分散分散分散分散分散分散分散分散 合同合同合同合同合同合同合同合同 分散分散分散分散分散分散分散分散 合同合同合同合同合同合同合同合同 分散分散分散分散分散分散分散分散

Page 41: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 41

Releaseプランニング

�「ざっくりと、一緒に計画する」

�準備していったStoryカードとStoryリストを利用

�合同開発中に一通りの開発を一緒に行う

見積もり(理想日)

Storyのリスト

どれからやるかどんな機能を開発したいか

Page 42: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 42

第一イテレーション

�とにかくやってみる

�できる限りコミュニケーションする

Page 43: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 43

Iterationプランニング

��タスク内容タスク内容タスク内容タスク内容タスク内容タスク内容タスク内容タスク内容

�� ステートチャート図のモデル開発ステートチャート図のモデル開発ステートチャート図のモデル開発ステートチャート図のモデル開発ステートチャート図のモデル開発ステートチャート図のモデル開発ステートチャート図のモデル開発ステートチャート図のモデル開発

�� ステートチャート図の生成機能開発ステートチャート図の生成機能開発ステートチャート図の生成機能開発ステートチャート図の生成機能開発ステートチャート図の生成機能開発ステートチャート図の生成機能開発ステートチャート図の生成機能開発ステートチャート図の生成機能開発

�� (一つ基本機能を先行開発)(一つ基本機能を先行開発)(一つ基本機能を先行開発)(一つ基本機能を先行開発)(一つ基本機能を先行開発)(一つ基本機能を先行開発)(一つ基本機能を先行開発)(一つ基本機能を先行開発)

��タスク分割とサインアップタスク分割とサインアップタスク分割とサインアップタスク分割とサインアップタスク分割とサインアップタスク分割とサインアップタスク分割とサインアップタスク分割とサインアップ

Page 44: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 44

開発

�「ペアプロがチーム内ナレッジ共有に効果大」

�UMLで開発対象の概略理解

� UMLメタモデル等のクラス図、オブジェクト図

�ペアプログラミング

� 新しいことに対する勇気、そして理解� アーキテクチャ

� 開発環境

� 会話促進

� ソースコードで解りあう

�ユニットテスト

� 習慣化

Page 45: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 45

トラッキングシート

��計画したタスク全て完了計画したタスク全て完了

��Team Velocity = 12.2 PointsTeam Velocity = 12.2 Points

��Test = 100% Test = 100% ((168 cases168 cases))

Page 46: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 46

リフレクションシート

�「このIterationを振り返り、改善」

�Dash out the completed task

�Eat some sweets

�Put list of story on the wall

�Pair up with different nationality

�Take a 15 minutes rest after lunch

�Open the window during lunch (by

Yves)

�Tracking on wiki

�Good mood

�Make jokes

�Talk a lot

�No over work

�Communication by writing and drawing

�Avoiding to one-way communication

�Without projector

�Pair Programming

�Stand up meeting

Try TheseKeep These

Page 47: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 47

第二イテレーション

�機能の開発�Storyカードで機能理解

�ほぼ全ペアの組み合わせ実施

�途中で新たなストーリ7つ追加

�全タスク開発完了

Page 48: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 48

開発風景

Page 49: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 49

中国余談

�プラス

� 時差1時間

� 漢字、ブロークンな英語

� 健康志向、週40時間労働

�マイナス

� ビザ、連休

� 電話、ネットワーク不安定

� 交通

�両方

� 食事

Page 50: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 50

Release1 分散開発

119 1075 631 286 7431

Release2Release1

8452

333322221111121212121111111110101010

日本日本日本日本

上海上海上海上海

当社当社当社当社

当社当社当社当社

当社当社当社当社

SV

SuperVSuperV

準備準備準備準備 →→→→

分散分散分散分散分散分散分散分散 合同合同合同合同合同合同合同合同 分散分散分散分散分散分散分散分散 合同合同合同合同合同合同合同合同 分散分散分散分散分散分散分散分散

Page 51: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 51

分散開発

�分散でも大きな分担割をせずXP継続

�変化・工夫�あらかじめStoryカードを一緒に作成、理解

�プランニングは、全員でのチャット

�トラッキング情報は、壁ではなくwikiで共有

�スタンドアップミーティングは、各社で実施

�不明点、アイデアなどは、必要なときにその都度チャット

�ペアプロは、継続(奇数人になり減少)

Page 52: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 52

ここから簡単にここから簡単にここから簡単にここから簡単にWebを編集を編集を編集を編集

Wikiによる情報共有サイトマップサイトマップサイトマップサイトマップ� Release 1

� スケジュールスケジュールスケジュールスケジュール(期間分割と大雑把な見通し)(期間分割と大雑把な見通し)(期間分割と大雑把な見通し)(期間分割と大雑把な見通し)

� ストーリーストーリーストーリーストーリー 一覧一覧一覧一覧(このリリースの開発対象)(このリリースの開発対象)(このリリースの開発対象)(このリリースの開発対象)

� ストーリーカード(ストーリーカード(ストーリーカード(ストーリーカード(必要なストーリーのみ)必要なストーリーのみ)必要なストーリーのみ)必要なストーリーのみ)

� Iteration1

� Reflection Sheet((((前回の反省)前回の反省)前回の反省)前回の反省)

� Tracking Sheet

� Team Velocity

� テスト結果(テスト結果(テスト結果(テスト結果(テストケース数と結果)テストケース数と結果)テストケース数と結果)テストケース数と結果)

� Iteration2

� ・・・・・・・・・・・・・・・・・・・・

� Release 2

� Release 3

� バグ情報一覧バグ情報一覧バグ情報一覧バグ情報一覧

� 改善項目一覧改善項目一覧改善項目一覧改善項目一覧

� Daily自動テスト結果集計自動テスト結果集計自動テスト結果集計自動テスト結果集計

� 開発のヒント集(開発のヒント集(開発のヒント集(開発のヒント集(開発注意点など)開発注意点など)開発注意点など)開発注意点など)

� ダウンロード数推移ダウンロード数推移ダウンロード数推移ダウンロード数推移

EditEditEdit

Page 53: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 53

実践プラクティス

開発者全員で見積もり、サインアップ。

ストーリーカードにより機能を理解。タスクカードは作成せず。

計画ゲーム○

テストの種類を3つ用意。コマンドのテストサポートクラス利用。モデルテスト、コマンドテスト、

ストーリテスト○

×

×

実施

特に準備せず。メタファー

2週間単位でリリース。ちいさなリリース

機能の実装に必要な設計のみに集中。シンプルデザイン

ユニットテストを実践。テスト駆動は未定着。テスティング

よく実践した。常にではなく、デバッグ時は1人。ペアプログラミング

気づいたときになるべく実践。必要意識高い。余裕必要。リファクタリング

Iteration毎にReflectionシート作成(5分)。

Release毎にEvaluationSheet記入。→ 改善意識向上。

Reflection、Evaluation

ObjectClubバージョンの標準遵守。Eclipseの自動フォーマット。コーディング標準

ほぼ残業ゼロだった。最近はがんばりペース。週40時間

どのファイルも誰でも編集可能。共同所有権

意見がまとまらない場合など、擬似顧客が決定。オンサイト顧客

毎日インテグレーション。毎日自動テスト。継続的インテグレーション

どのように実践したかプラクティス

特別

特別

Page 54: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 54

トラブルと対処

�Visa取得遅れによる出張延期� → 準備課題など

�仕様誤解2,3度� 慣れによる仕様確認不足が原因

� → そのイテレーション内に回復

� → 複雑なものはwiki上にイメージと詳細な記述追加

�正月休みのずれ+1人ハネムーン� → 他のメンバがカバーし、問題なし

�ネットワーク不安定でチャット不可� → 他のインスタントメッセンジャで対処

Page 55: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 55

Release1全体

XX’’ mas

masversion

version �8888回のイテレーションを完了回のイテレーションを完了回のイテレーションを完了回のイテレーションを完了

� 平均平均平均平均TeamVelocity = 12.2

� テストケース数テストケース数テストケース数テストケース数 = 404

� 完了したストーリー数完了したストーリー数完了したストーリー数完了したストーリー数 = 約約約約100

� ステートチャート図とアクティビティ図追加ステートチャート図とアクティビティ図追加ステートチャート図とアクティビティ図追加ステートチャート図とアクティビティ図追加

� 他いくつかの改善項目を完了他いくつかの改善項目を完了他いくつかの改善項目を完了他いくつかの改善項目を完了

� 合同開発・分散開発共に順調に進行合同開発・分散開発共に順調に進行合同開発・分散開発共に順調に進行合同開発・分散開発共に順調に進行

�X’masバージョンを急遽リリースバージョンを急遽リリースバージョンを急遽リリースバージョンを急遽リリース� 予定外、2日で対応予定外、2日で対応予定外、2日で対応予定外、2日で対応

� 外部へのリリースで、顧客視点の再認識外部へのリリースで、顧客視点の再認識外部へのリリースで、顧客視点の再認識外部へのリリースで、顧客視点の再認識

Page 56: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 56

アジェンダ

�経緯と方針(中国・上海の状況を交えて)

�XP概要

�プロジェクト概要

�レポート

��考察考察考察考察考察考察考察考察

Page 57: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 57

分散開発と担当割

○△×頻繁なリリース

A図を一緒に開発A図を日本、

B図を中国

アプリを日本、

モデルを中国

密疎疎コミュニケーション

○△○機能仕様の統一感

◎○△モチベーション

◎○○品質

多中少必要知識

あり少ないあり担当タスク間の依存

一緒に開発する縦に大きく割る横に大きく割る

�Judeプロジェクトでは、“一緒に開発”を継続

Page 58: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 58

ツールとアジャイル開発

�「分散アジャイル開発はツールにも支えられる」

WebベースのXPプロジェクトサポートシステム。(Judeプロジェクトでは未使用)

XPlanner、XpTrackerPlugin

(TWiki plugin)XP管理

情報・考えを伝えるのがメールに比べ格段に楽。

インスタントメッセンジャー(MSNMessenger他)

会話

遠隔ペアプロ

ビルドツール

ユニットテスト

情報共有

構成管理

開発

種類種類種類種類

プログラミングが楽。ソースを追うのが楽。テストが楽。リファクタリングが楽。

Eclipse

頻繁なリリースが楽。Ant

離れた人とのペアプロの可能性。

(まだ不安定)

Sangam(Eclipse plugin)

非常に手軽に情報共有できた。Swiki、TWiki、PukiWiki他

テストが楽。JUnit

ソースコード共有が楽。CVS、WinCVS

効果効果効果効果ツールツールツールツール

直接会って話をする、壁に貼る、が一番。それに近づける。直接会って話をする、壁に貼る、が一番。それに近づける。直接会って話をする、壁に貼る、が一番。それに近づける。直接会って話をする、壁に貼る、が一番。それに近づける。

Page 59: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 59

UMLの役割

高い表現力・伝達力と厳密さをもった標準言語

ソフトウェアの設計をすばやく共有

アライアンスとスピード時代の開発をスムーズに

�今回の開発でのUML利用� 開発対象Judeのアーキテクチャ共有

� モデル(UMLメタモデル含む)の設計

� 簡単な設計アイデアの交換

Page 60: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 60

プロジェクトの特性

Judeプロジェクトについての、

分散アジャイル開発のプラス要因

�自分が顧客視点を持てた(UMLツールの利用者)

�機能追加が主で大規模な設計が不要だった

�参考ツールが存在し、要求仕様を理解しやすかった

�一部モデルに関する詳細な仕様書が存在した

�日本と中国との開発だった(時差など有利)

�自社ソフトウェアの開発だった

Page 61: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 61

うまくいったことと課題

�うまくいったこと

� 導入課題での価値観共有

� XPでのナレッジ共有、モチベーション維持

� リフレクションシートでの改善・改善意識

� メールではなくチャットでのリアルタイムな対話

� Wikiでのプロジェクト情報共有

�課題

� コマンドテストの軽量化(テスト実行時間短縮、分割など)

� 顧客巻き込み

� リファクタリングとテストの時間確保

� プランニングゲームの時間短縮

Page 62: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 62

今回の事例のポイント

�JudeをXPで中国と共同開発

�あえて大きな役割分担せず、“一緒に開発”

�同じ場所でチーム開発開始

�ナレッジ共有、モチベーション維持

�分散開発ではコミュニケーションツール活用

�UMLは重要な共通語の一つ

�密なチーム・信頼関係を構築

Page 63: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 63

XPと信頼

XP 信頼XPXPは、信頼を築くは、信頼を築くは、信頼を築くは、信頼を築くは、信頼を築くは、信頼を築くは、信頼を築くは、信頼を築く

XPXPは、信頼を基礎とするは、信頼を基礎とするは、信頼を基礎とするは、信頼を基礎とするは、信頼を基礎とするは、信頼を基礎とするは、信頼を基礎とするは、信頼を基礎とする

Page 64: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 64

紹介

PNG、JPEG出力

図のプリンタ出力

出力

Javaソース読み込み入力

アクティビティ図

コラボレーション図

クラス図

Javaスケルトンコード出力

シーケンス図

Javadoc形式のHtml出力

ステートチャート図

ユースケース図

�機能・特徴� UML1.4サポート

� 無限回UNDO/REDO(編集の取り消し、やり直し)

� 大きな図をすばやく移動できる全体マップビュー

� クラス図自動生成

� Microsoft Office® への図イメージ貼付け

� 右ドラッグによる斜め方向スクロール

� ステレオタイプ毎の色設定

http://http://ObjectClubObjectClub..esmesm.co..co.jpjp/Jude//Jude/

にて無償公開中。にて無償公開中。にて無償公開中。にて無償公開中。にて無償公開中。にて無償公開中。にて無償公開中。にて無償公開中。

「真のカスタマからのコメントを「真のカスタマからのコメントを「真のカスタマからのコメントを「真のカスタマからのコメントを「真のカスタマからのコメントを「真のカスタマからのコメントを「真のカスタマからのコメントを「真のカスタマからのコメントを

ぜひお寄せください」ぜひお寄せください」ぜひお寄せください」ぜひお寄せください」ぜひお寄せください」ぜひお寄せください」ぜひお寄せください」ぜひお寄せください」

Page 65: Offshore XP experience with Shanghai

(C)Eiwa System Management, Inc 65