2007/02 clearcase & ucm の紹介

30
An Introduction to An Introduction to Unified Change Unified Change Management Management 統統統統 統統統統 ののの ののの のののの 【】 のののの 【】 小小小小小小(koichik) (koichik) ののののの 【】 ののののの 【】

Upload: koichik

Post on 19-Jun-2015

2.201 views

Category:

Technology


0 download

DESCRIPTION

2002 年頃にとあるプロジェクトで ClearCase を使っていたことを 2007 年の JavaEE 勉強会で紹介した資料です.

TRANSCRIPT

Page 1: 2007/02 ClearCase & UCM の紹介

An Introduction toAn Introduction to

Unified Change Unified Change ManagementManagement統一変更管理統一変更管理の紹介の紹介

【見覚え】【見覚え】 小林浩一 小林浩一 (koichik) (koichik) 【あります】【あります】

Page 2: 2007/02 ClearCase & UCM の紹介

AgendaAgenda

ClearCaseClearCase 概要概要 UCMUCM 某証券での適用某証券での適用

Page 3: 2007/02 ClearCase & UCM の紹介

ClearCaseClearCase

商用のソフトウェア構成管理ツール商用のソフトウェア構成管理ツール CVSCVS やや SubversionSubversion と同一カテゴリのプロダクトと同一カテゴリのプロダクト

歴史歴史 Atria SoftwareAtria Software がが 19921992 年にリリース年にリリース Pure SoftwarePure Software と合併してと合併して Pure AtriaPure Atria にに RationalRational がが Pure AtriaPure Atria を買収を買収 IBMIBM がが RationalRational を買収を買収

現在の製品名現在の製品名 IBM Rational ClearCaseIBM Rational ClearCase

Page 4: 2007/02 ClearCase & UCM の紹介

用語の対応表用語の対応表CVS/SVNCVS/SVN ClearCaseClearCase

リポジトリリポジトリ VOB VOB (Versioned Object Base)(Versioned Object Base)

作業コピー作業コピー ビュービューブランチブランチ ストリームストリームタグタグ ベースラインベースラインチェックアウトチェックアウト ビュー作成ビュー作成cvs edit (svn cvs edit (svn lock)lock) チェックアウトチェックアウト

コミットコミット チェックインチェックイン

Page 5: 2007/02 ClearCase & UCM の紹介

ClearCaseClearCase の特徴の特徴 チェックアウト・修正・チェックインモチェックアウト・修正・チェックインモ

デルデル 変更を行うにはチェックアウト操作が必要変更を行うにはチェックアウト操作が必要 チェックアウトでファイルをロックチェックアウトでファイルをロック

ロックしないでチェックアウトも可ロックしないでチェックアウトも可 チェックインでファイルのロックを解除チェックインでファイルのロックを解除

ディレクトリもバージョン管理されるディレクトリもバージョン管理される ファイル名の変更や移動も可能ファイル名の変更や移動も可能

Page 6: 2007/02 ClearCase & UCM の紹介

Multi Version File Multi Version File SystemSystem

CVS/SVNCVS/SVN は通常のファイルシステム上には通常のファイルシステム上に作業コピーを作成作業コピーを作成 メタデータメタデータ (.svn(.svn などなど )) が見えるが見える

アプリケーションで無視する必要有りアプリケーションで無視する必要有り 通常のファイルアクセスは構成管理と無関係通常のファイルアクセスは構成管理と無関係

ClearCaseClearCase は独自のファイルシステム上には独自のファイルシステム上にビューを作成ビューを作成 メタデータは見えないメタデータは見えない 通常のファイルアクセスに通常のファイルアクセスに ClearCaseClearCase がが

介入できる介入できる

Page 7: 2007/02 ClearCase & UCM の紹介

Multi Version File Multi Version File SystemSystem

アプリケーション

OS

open, read write, close,...

MVFS NativeFile System

Page 8: 2007/02 ClearCase & UCM の紹介

ビュービュー ダイナミックビューダイナミックビュー

ローカルのファイルシステム上にコピーを持たないローカルのファイルシステム上にコピーを持たない ビューにアクセスがあるとビューにアクセスがあると VOBVOB へアクセスへアクセス

ローカルディスクにキャッシングはするローカルディスクにキャッシングはする 大規模なシステムでもビューの作成が一瞬大規模なシステムでもビューの作成が一瞬

コピーしないからコピーしないから svn updatesvn update のような操作が不要のような操作が不要

コピーを持っていないからコピーを持っていないから ビルド時にはネットワークの速度が問題になることもビルド時にはネットワークの速度が問題になることも

スタティックビュースタティックビュー ローカルのファイルシステム上にコピーを持つローカルのファイルシステム上にコピーを持つ

Page 9: 2007/02 ClearCase & UCM の紹介

AgendaAgenda

ClearCaseClearCase 概要概要 UCMUCM 某証券での適用某証券での適用

Page 10: 2007/02 ClearCase & UCM の紹介

UCM - UCM - 統一変更管理統一変更管理 ClearCaseClearCase を使った構成管理のを使った構成管理の

ベストプラクティスベストプラクティス ClearCaseClearCase に組み込まれているに組み込まれている

メタデータをメタデータを VOBVOB で管理で管理 ツール・コマンドのサポート有りツール・コマンドのサポート有り UCMUCM の使用は必須ではないの使用は必須ではない

UCMUCM を使わず素のままを使わず素のまま CleaCaseCleaCase を使うことをを使うことをBase ClearCaseBase ClearCase と呼ぶと呼ぶ

Page 11: 2007/02 ClearCase & UCM の紹介

UCMUCM の構成要素の構成要素

Page 12: 2007/02 ClearCase & UCM の紹介

プロジェクトプロジェクト 変更の大きな単位を表す変更の大きな単位を表す UCMUCM オブジェクトオブジェクト

PVOB(Project VOB)PVOB(Project VOB) で管理されるメタデータで管理されるメタデータ PVOBPVOB は複数のプロジェクトを持つは複数のプロジェクトを持つ 例例

バージョンバージョン XX 開発プロジェクト開発プロジェクト XX 機能追加プロジェクト機能追加プロジェクト

プロジェクトは一つの統合ストリームを持プロジェクトは一つの統合ストリームを持つつ

Page 13: 2007/02 ClearCase & UCM の紹介

統合ストリーム統合ストリーム プロジェクトの統合用ストリームプロジェクトの統合用ストリーム

プロジェクト内のトランク相当プロジェクト内のトランク相当 プロジェクトは一つの統合ストリームをプロジェクトは一つの統合ストリームを

持つ持つ 統合ストリームは複数の開発ストリーム統合ストリームは複数の開発ストリーム

を持つを持つ

Page 14: 2007/02 ClearCase & UCM の紹介

開発ストリーム開発ストリーム プロジェクトの開発者用ストリームプロジェクトの開発者用ストリーム

開発者は自分専用のストリームを持つ開発者は自分専用のストリームを持つ 統合ストリームは複数の開発ストリームを統合ストリームは複数の開発ストリームを

持つ持つ プロジェクト内のブランチ相当プロジェクト内のブランチ相当

子の開発ストリームを複数持つこともでき子の開発ストリームを複数持つこともできるる 開発チーム毎の統合用開発ストリーム開発チーム毎の統合用開発ストリーム 開発フェーズ毎の統合用開発ストリーム開発フェーズ毎の統合用開発ストリーム

Page 15: 2007/02 ClearCase & UCM の紹介

シンプルなプロジェクトの例シンプルなプロジェクトの例 XX 機能追加プロジェクト機能追加プロジェクト

統合ストリーム統合ストリーム AA さんの開発ストリームさんの開発ストリーム BB さんの開発ストリームさんの開発ストリーム ......

YY 機能追加プロジェクト機能追加プロジェクト 統合ストリーム統合ストリーム

AA さんの開発ストリームさんの開発ストリーム BB さんの開発ストリームさんの開発ストリーム ......

Page 16: 2007/02 ClearCase & UCM の紹介

複雑なプロジェクトの例複雑なプロジェクトの例 ZZ 機能追加プロジェクト機能追加プロジェクト

統合ストリーム統合ストリーム XX チームの開発ストリームチームの開発ストリーム

AA さんの開発ストリームさんの開発ストリーム BB さんの開発ストリームさんの開発ストリーム ......

YY チームの開発ストリームチームの開発ストリーム MM さんの開発ストリームさんの開発ストリーム NN さんの開発ストリームさんの開発ストリーム ......

Page 17: 2007/02 ClearCase & UCM の紹介

ストリームのポイントストリームのポイント 親子関係がある親子関係がある

統合ストリーム統合ストリーム (( 親親 )) と開発ストリームと開発ストリーム (( 子子 )) 親開発ストリームと子開発ストリーム親開発ストリームと子開発ストリーム

開発者毎に開発ストリームを持つ開発者毎に開発ストリームを持つ 開発者用のストリームは共有しない開発者用のストリームは共有しない

ロックモデルが制約にならないロックモデルが制約にならない チェックインと他者への公開を分けることができるチェックインと他者への公開を分けることができる

SVNSVN 等で同一ブランチを複数開発者が使う場合は等で同一ブランチを複数開発者が使う場合はコミットで他者への公開となるコミットで他者への公開となる

UCMUCM における他者への公開は統合ストリームへのにおける他者への公開は統合ストリームへのマージマージ

Page 18: 2007/02 ClearCase & UCM の紹介

ストリーム間のマージストリーム間のマージ リベースリベース

親から子へのマージ親から子へのマージ 統合ストリームから開発ストリームへ統合ストリームから開発ストリームへ

他者の変更を取り込む他者の変更を取り込む デリバーデリバー

子から親へのマージ子から親へのマージ 開発ストリームから統合ストリームへ開発ストリームから統合ストリームへ

自分の変更を他者へ提供する自分の変更を他者へ提供する

Page 19: 2007/02 ClearCase & UCM の紹介

競合の対処競合の対処 デリバーの前にリベースするデリバーの前にリベースする

プロジェクトのポリシーで強制できるプロジェクトのポリシーで強制できる コンフリクトは開発ストリームで解消コンフリクトは開発ストリームで解消 デリバーでは競合は発生しないデリバーでは競合は発生しない

Page 20: 2007/02 ClearCase & UCM の紹介

リベースとデリバーリベースとデリバー統合ストリーム

開発ストリーム A 開発ストリーム B参加 参加

変更

デリバー

変更

リベース 競合の解消

デリバーリベース

競合の解消

変更

デリバー

BL0

BL1

BL2

BL3

リベース

Page 21: 2007/02 ClearCase & UCM の紹介

開発者のマージサイクル開発者のマージサイクル変更・テスト変更・テストチェックインチェックイン

競合解消・テスト競合解消・テストチェックインチェックイン

リベースリベースデリバーデリバー

Page 22: 2007/02 ClearCase & UCM の紹介

プロジェクト内のマージプロジェクト内のマージ

統合ストリーム統合ストリーム

開発ストリーム開発ストリーム 開発ストリーム開発ストリーム

開発ストリーム同士で開発ストリーム同士ではは

マージしないマージしない

Page 23: 2007/02 ClearCase & UCM の紹介

プロジェクト間のマージプロジェクト間のマージ

統合ストリーム統合ストリーム

統合ストリーム統合ストリーム 統合ストリーム統合ストリーム

プロジェクトプロジェクトAA

プロジェクトプロジェクトCC

プロジェクトプロジェクトBB

Page 24: 2007/02 ClearCase & UCM の紹介

UCMUCM のまとめのまとめ 型にはめた型にはめた ClearCaseClearCase の使い方の使い方

ツリー状に階層化されたストリームツリー状に階層化されたストリーム 統合ストリーム・開発ストリーム統合ストリーム・開発ストリーム

22 つの方向性のあるマージつの方向性のあるマージ リベースしてからデリバーリベースしてからデリバー 親子間でマージ親子間でマージ 兄弟ではマージしない兄弟ではマージしない

大規模大規模 (( 大人数大人数 )) での並行開発に強みでの並行開発に強み 柔軟性には欠ける柔軟性には欠ける だがそれがいいだがそれがいい

プロジェクトの構成は未定義プロジェクトの構成は未定義 プロジェクト間のマージをどう運用するか?プロジェクト間のマージをどう運用するか?

Page 25: 2007/02 ClearCase & UCM の紹介

AgendaAgenda

ClearCaseClearCase 概要概要 UCMUCM 某証券での適用某証券での適用

Page 26: 2007/02 ClearCase & UCM の紹介

某証券某証券 インターネット・トレーディングシステインターネット・トレーディングシステ

ムム かなり大規模かなり大規模

JavaJava ソース・ソース・ JSPJSP ともファイル数は万単位ともファイル数は万単位 多いときは多いときは 100100 人以上の開発者人以上の開発者

19991999 年に稼働年に稼働 当初は当初は VisualAge(VisualAge( 独自独自 SCM)+CVS(JSPSCM)+CVS(JSP 等等 )) WSADWSAD への移行と同時にへの移行と同時に ClearCaseClearCase へへ

Page 27: 2007/02 ClearCase & UCM の紹介

某証券での並行開発某証券での並行開発 ほぼ毎週新機能リリースほぼ毎週新機能リリース

毎週金曜の夜に本番環境へ毎週金曜の夜に本番環境へ 大きな機能追加項目が常に多数ある大きな機能追加項目が常に多数ある

開発期間はバラバラ開発期間はバラバラ (( 数日~数ヶ月数日~数ヶ月 )) 出来次第リリースなんてことも出来次第リリースなんてことも 品質に問題があればリリースできない品質に問題があればリリースできない リリースの順番は状況次第 リリースの順番は状況次第 ((事前に決定できない事前に決定できない ))

機能追加項目毎に独立した並行開発が必要機能追加項目毎に独立した並行開発が必要 VisualAge+CVSVisualAge+CVS ではマージの負担が制約になったではマージの負担が制約になった ClearCaseClearCase でで UCMUCM の導入への導入へ

Page 28: 2007/02 ClearCase & UCM の紹介

某証券でのプロジェクト構成某証券でのプロジェクト構成 メインラインプロジェクトメインラインプロジェクト

mainline-integrationmainline-integration mainline-next_releasemainline-next_release

メンテナンスプロジェクトメンテナンスプロジェクト maintenance-integrationmaintenance-integration

開発ストリーム・・・開発ストリーム・・・ XX 機能追加プロジェクト機能追加プロジェクト

x-integrationx-integration 開発ストリーム・・・開発ストリーム・・・

常時常時 1010 以上の以上の機能追加プロジェクト機能追加プロジェクト

ががアクティブアクティブ

専用のプロジェクトを専用のプロジェクトを作るほどではない小さ作るほどではない小さ

なな変更はここで行う変更はここで行う

本番リリース用の本番リリース用の成果物を作成する成果物を作成する

プロジェクトプロジェクト

Page 29: 2007/02 ClearCase & UCM の紹介

プロジェクト間のマージプロジェクト間のマージ

integrationintegration

next_releasenext_release 統合統合

メインラインメインラインプロジェクトプロジェクト

XX 機能追加機能追加プロジェクトプロジェクト

開発開発

統合統合

メンテナンスメンテナンスプロジェクトプロジェクト

開発開発

本番リリース後本番リリース後リベース・デリバーリベース・デリバー

本番リリース後本番リリース後リベース・デリバーリベース・デリバー

週末リリース予定の週末リリース予定のプロジェクトを週の初めにプロジェクトを週の初めに

リベース・デリバーリベース・デリバー

Page 30: 2007/02 ClearCase & UCM の紹介

参考文献参考文献 Software Configuration Software Configuration

Management Strategies Management Strategies and and IBM Rational ClearCaseIBM Rational ClearCase ISBN0-321-20019-5ISBN0-321-20019-5

The Art of ClearCase The Art of ClearCase DeploymentDeployment ISBN0-321-26220-4ISBN0-321-26220-4