Upload
koichik
View
2.200
Download
0
Embed Size (px)
DESCRIPTION
2002 年頃にとあるプロジェクトで ClearCase を使っていたことを 2007 年の JavaEE 勉強会で紹介した資料です.
Citation preview
An Introduction toAn Introduction to
Unified Change Unified Change ManagementManagement統一変更管理統一変更管理の紹介の紹介
【見覚え】【見覚え】 小林浩一 小林浩一 (koichik) (koichik) 【あります】【あります】
AgendaAgenda
ClearCaseClearCase 概要概要 UCMUCM 某証券での適用某証券での適用
ClearCaseClearCase
商用のソフトウェア構成管理ツール商用のソフトウェア構成管理ツール CVSCVS やや SubversionSubversion と同一カテゴリのプロダクトと同一カテゴリのプロダクト
歴史歴史 Atria SoftwareAtria Software がが 19921992 年にリリース年にリリース Pure SoftwarePure Software と合併してと合併して Pure AtriaPure Atria にに RationalRational がが Pure AtriaPure Atria を買収を買収 IBMIBM がが RationalRational を買収を買収
現在の製品名現在の製品名 IBM Rational ClearCaseIBM Rational ClearCase
用語の対応表用語の対応表CVS/SVNCVS/SVN ClearCaseClearCase
リポジトリリポジトリ VOB VOB (Versioned Object Base)(Versioned Object Base)
作業コピー作業コピー ビュービューブランチブランチ ストリームストリームタグタグ ベースラインベースラインチェックアウトチェックアウト ビュー作成ビュー作成cvs edit (svn cvs edit (svn lock)lock) チェックアウトチェックアウト
コミットコミット チェックインチェックイン
ClearCaseClearCase の特徴の特徴 チェックアウト・修正・チェックインモチェックアウト・修正・チェックインモ
デルデル 変更を行うにはチェックアウト操作が必要変更を行うにはチェックアウト操作が必要 チェックアウトでファイルをロックチェックアウトでファイルをロック
ロックしないでチェックアウトも可ロックしないでチェックアウトも可 チェックインでファイルのロックを解除チェックインでファイルのロックを解除
ディレクトリもバージョン管理されるディレクトリもバージョン管理される ファイル名の変更や移動も可能ファイル名の変更や移動も可能
Multi Version File Multi Version File SystemSystem
CVS/SVNCVS/SVN は通常のファイルシステム上には通常のファイルシステム上に作業コピーを作成作業コピーを作成 メタデータメタデータ (.svn(.svn などなど )) が見えるが見える
アプリケーションで無視する必要有りアプリケーションで無視する必要有り 通常のファイルアクセスは構成管理と無関係通常のファイルアクセスは構成管理と無関係
ClearCaseClearCase は独自のファイルシステム上には独自のファイルシステム上にビューを作成ビューを作成 メタデータは見えないメタデータは見えない 通常のファイルアクセスに通常のファイルアクセスに ClearCaseClearCase がが
介入できる介入できる
Multi Version File Multi Version File SystemSystem
アプリケーション
OS
open, read write, close,...
MVFS NativeFile System
ビュービュー ダイナミックビューダイナミックビュー
ローカルのファイルシステム上にコピーを持たないローカルのファイルシステム上にコピーを持たない ビューにアクセスがあるとビューにアクセスがあると VOBVOB へアクセスへアクセス
ローカルディスクにキャッシングはするローカルディスクにキャッシングはする 大規模なシステムでもビューの作成が一瞬大規模なシステムでもビューの作成が一瞬
コピーしないからコピーしないから svn updatesvn update のような操作が不要のような操作が不要
コピーを持っていないからコピーを持っていないから ビルド時にはネットワークの速度が問題になることもビルド時にはネットワークの速度が問題になることも
スタティックビュースタティックビュー ローカルのファイルシステム上にコピーを持つローカルのファイルシステム上にコピーを持つ
AgendaAgenda
ClearCaseClearCase 概要概要 UCMUCM 某証券での適用某証券での適用
UCM - UCM - 統一変更管理統一変更管理 ClearCaseClearCase を使った構成管理のを使った構成管理の
ベストプラクティスベストプラクティス ClearCaseClearCase に組み込まれているに組み込まれている
メタデータをメタデータを VOBVOB で管理で管理 ツール・コマンドのサポート有りツール・コマンドのサポート有り UCMUCM の使用は必須ではないの使用は必須ではない
UCMUCM を使わず素のままを使わず素のまま CleaCaseCleaCase を使うことをを使うことをBase ClearCaseBase ClearCase と呼ぶと呼ぶ
UCMUCM の構成要素の構成要素
プロジェクトプロジェクト 変更の大きな単位を表す変更の大きな単位を表す UCMUCM オブジェクトオブジェクト
PVOB(Project VOB)PVOB(Project VOB) で管理されるメタデータで管理されるメタデータ PVOBPVOB は複数のプロジェクトを持つは複数のプロジェクトを持つ 例例
バージョンバージョン XX 開発プロジェクト開発プロジェクト XX 機能追加プロジェクト機能追加プロジェクト
プロジェクトは一つの統合ストリームを持プロジェクトは一つの統合ストリームを持つつ
統合ストリーム統合ストリーム プロジェクトの統合用ストリームプロジェクトの統合用ストリーム
プロジェクト内のトランク相当プロジェクト内のトランク相当 プロジェクトは一つの統合ストリームをプロジェクトは一つの統合ストリームを
持つ持つ 統合ストリームは複数の開発ストリーム統合ストリームは複数の開発ストリーム
を持つを持つ
開発ストリーム開発ストリーム プロジェクトの開発者用ストリームプロジェクトの開発者用ストリーム
開発者は自分専用のストリームを持つ開発者は自分専用のストリームを持つ 統合ストリームは複数の開発ストリームを統合ストリームは複数の開発ストリームを
持つ持つ プロジェクト内のブランチ相当プロジェクト内のブランチ相当
子の開発ストリームを複数持つこともでき子の開発ストリームを複数持つこともできるる 開発チーム毎の統合用開発ストリーム開発チーム毎の統合用開発ストリーム 開発フェーズ毎の統合用開発ストリーム開発フェーズ毎の統合用開発ストリーム
シンプルなプロジェクトの例シンプルなプロジェクトの例 XX 機能追加プロジェクト機能追加プロジェクト
統合ストリーム統合ストリーム AA さんの開発ストリームさんの開発ストリーム BB さんの開発ストリームさんの開発ストリーム ......
YY 機能追加プロジェクト機能追加プロジェクト 統合ストリーム統合ストリーム
AA さんの開発ストリームさんの開発ストリーム BB さんの開発ストリームさんの開発ストリーム ......
複雑なプロジェクトの例複雑なプロジェクトの例 ZZ 機能追加プロジェクト機能追加プロジェクト
統合ストリーム統合ストリーム XX チームの開発ストリームチームの開発ストリーム
AA さんの開発ストリームさんの開発ストリーム BB さんの開発ストリームさんの開発ストリーム ......
YY チームの開発ストリームチームの開発ストリーム MM さんの開発ストリームさんの開発ストリーム NN さんの開発ストリームさんの開発ストリーム ......
ストリームのポイントストリームのポイント 親子関係がある親子関係がある
統合ストリーム統合ストリーム (( 親親 )) と開発ストリームと開発ストリーム (( 子子 )) 親開発ストリームと子開発ストリーム親開発ストリームと子開発ストリーム
開発者毎に開発ストリームを持つ開発者毎に開発ストリームを持つ 開発者用のストリームは共有しない開発者用のストリームは共有しない
ロックモデルが制約にならないロックモデルが制約にならない チェックインと他者への公開を分けることができるチェックインと他者への公開を分けることができる
SVNSVN 等で同一ブランチを複数開発者が使う場合は等で同一ブランチを複数開発者が使う場合はコミットで他者への公開となるコミットで他者への公開となる
UCMUCM における他者への公開は統合ストリームへのにおける他者への公開は統合ストリームへのマージマージ
ストリーム間のマージストリーム間のマージ リベースリベース
親から子へのマージ親から子へのマージ 統合ストリームから開発ストリームへ統合ストリームから開発ストリームへ
他者の変更を取り込む他者の変更を取り込む デリバーデリバー
子から親へのマージ子から親へのマージ 開発ストリームから統合ストリームへ開発ストリームから統合ストリームへ
自分の変更を他者へ提供する自分の変更を他者へ提供する
競合の対処競合の対処 デリバーの前にリベースするデリバーの前にリベースする
プロジェクトのポリシーで強制できるプロジェクトのポリシーで強制できる コンフリクトは開発ストリームで解消コンフリクトは開発ストリームで解消 デリバーでは競合は発生しないデリバーでは競合は発生しない
リベースとデリバーリベースとデリバー統合ストリーム
開発ストリーム A 開発ストリーム B参加 参加
変更
デリバー
変更
リベース 競合の解消
デリバーリベース
競合の解消
変更
デリバー
BL0
BL1
BL2
BL3
リベース
開発者のマージサイクル開発者のマージサイクル変更・テスト変更・テストチェックインチェックイン
競合解消・テスト競合解消・テストチェックインチェックイン
リベースリベースデリバーデリバー
プロジェクト内のマージプロジェクト内のマージ
統合ストリーム統合ストリーム
開発ストリーム開発ストリーム 開発ストリーム開発ストリーム
開発ストリーム同士で開発ストリーム同士ではは
マージしないマージしない
プロジェクト間のマージプロジェクト間のマージ
統合ストリーム統合ストリーム
統合ストリーム統合ストリーム 統合ストリーム統合ストリーム
プロジェクトプロジェクトAA
プロジェクトプロジェクトCC
プロジェクトプロジェクトBB
UCMUCM のまとめのまとめ 型にはめた型にはめた ClearCaseClearCase の使い方の使い方
ツリー状に階層化されたストリームツリー状に階層化されたストリーム 統合ストリーム・開発ストリーム統合ストリーム・開発ストリーム
22 つの方向性のあるマージつの方向性のあるマージ リベースしてからデリバーリベースしてからデリバー 親子間でマージ親子間でマージ 兄弟ではマージしない兄弟ではマージしない
大規模大規模 (( 大人数大人数 )) での並行開発に強みでの並行開発に強み 柔軟性には欠ける柔軟性には欠ける だがそれがいいだがそれがいい
プロジェクトの構成は未定義プロジェクトの構成は未定義 プロジェクト間のマージをどう運用するか?プロジェクト間のマージをどう運用するか?
AgendaAgenda
ClearCaseClearCase 概要概要 UCMUCM 某証券での適用某証券での適用
某証券某証券 インターネット・トレーディングシステインターネット・トレーディングシステ
ムム かなり大規模かなり大規模
JavaJava ソース・ソース・ JSPJSP ともファイル数は万単位ともファイル数は万単位 多いときは多いときは 100100 人以上の開発者人以上の開発者
19991999 年に稼働年に稼働 当初は当初は VisualAge(VisualAge( 独自独自 SCM)+CVS(JSPSCM)+CVS(JSP 等等 )) WSADWSAD への移行と同時にへの移行と同時に ClearCaseClearCase へへ
某証券での並行開発某証券での並行開発 ほぼ毎週新機能リリースほぼ毎週新機能リリース
毎週金曜の夜に本番環境へ毎週金曜の夜に本番環境へ 大きな機能追加項目が常に多数ある大きな機能追加項目が常に多数ある
開発期間はバラバラ開発期間はバラバラ (( 数日~数ヶ月数日~数ヶ月 )) 出来次第リリースなんてことも出来次第リリースなんてことも 品質に問題があればリリースできない品質に問題があればリリースできない リリースの順番は状況次第 リリースの順番は状況次第 ((事前に決定できない事前に決定できない ))
機能追加項目毎に独立した並行開発が必要機能追加項目毎に独立した並行開発が必要 VisualAge+CVSVisualAge+CVS ではマージの負担が制約になったではマージの負担が制約になった ClearCaseClearCase でで UCMUCM の導入への導入へ
某証券でのプロジェクト構成某証券でのプロジェクト構成 メインラインプロジェクトメインラインプロジェクト
mainline-integrationmainline-integration mainline-next_releasemainline-next_release
メンテナンスプロジェクトメンテナンスプロジェクト maintenance-integrationmaintenance-integration
開発ストリーム・・・開発ストリーム・・・ XX 機能追加プロジェクト機能追加プロジェクト
x-integrationx-integration 開発ストリーム・・・開発ストリーム・・・
常時常時 1010 以上の以上の機能追加プロジェクト機能追加プロジェクト
ががアクティブアクティブ
専用のプロジェクトを専用のプロジェクトを作るほどではない小さ作るほどではない小さ
なな変更はここで行う変更はここで行う
本番リリース用の本番リリース用の成果物を作成する成果物を作成する
プロジェクトプロジェクト
プロジェクト間のマージプロジェクト間のマージ
integrationintegration
next_releasenext_release 統合統合
メインラインメインラインプロジェクトプロジェクト
XX 機能追加機能追加プロジェクトプロジェクト
開発開発
統合統合
メンテナンスメンテナンスプロジェクトプロジェクト
開発開発
本番リリース後本番リリース後リベース・デリバーリベース・デリバー
本番リリース後本番リリース後リベース・デリバーリベース・デリバー
週末リリース予定の週末リリース予定のプロジェクトを週の初めにプロジェクトを週の初めに
リベース・デリバーリベース・デリバー
参考文献参考文献 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