狠狠撸

狠狠撸Share a Scribd company logo
An Introduction to Unified Change Management 統一変更管理 の紹介 【見覚え】   小林浩一  (koichik)  【あります】
Agenda ClearCase 概要 UCM 某証券での適用
ClearCase 商用のソフトウェア構成管理ツール CVS や Subversion と同一カテゴリのプロダクト 歴史 Atria Software が 1992 年にリリース Pure Software と合併して Pure Atria に Rational が Pure Atria を買収 IBM が Rational を買収 現在の製品名 IBM Rational ClearCase
用語の対応表 チェックイン コミット チェックアウト cvs edit (svn lock) ビュー作成 チェックアウト ベースライン タグ ストリーム ブランチ ビュー 作業コピー VOB  (Versioned Object Base) リポジトリ ClearCase CVS/SVN
ClearCase の特徴 チェックアウト?修正?チェックインモデル 変更を行うにはチェックアウト操作が必要 チェックアウトでファイルをロック ロックしないでチェックアウトも可 チェックインでファイルのロックを解除 ディレクトリもバージョン管理される ファイル名の変更や移動も可能
Multi Version File System CVS/SVN は通常のファイルシステム上に 作業コピーを作成 メタデータ (.svn など ) が見える アプリケーションで無視する必要有り 通常のファイルアクセスは構成管理と無関係 ClearCase は独自のファイルシステム上に ビューを作成 メタデータは見えない 通常のファイルアクセスに ClearCase が 介入できる
Multi Version File System アプリケーション OS open, read write, close,... MVFS Native File System
ビュー ダイナミックビュー ローカルのファイルシステム上にコピーを持たない ビューにアクセスがあると VOB へアクセス ローカルディスクにキャッシングはする 大規模なシステムでもビューの作成が一瞬 コピーしないから svn update のような操作が不要 コピーを持っていないから ビルド時にはネットワークの速度が問題になることも スタティックビュー ローカルのファイルシステム上にコピーを持つ
Agenda ClearCase 概要 UCM 某証券での適用
UCM -  統一変更管理 ClearCase を使った構成管理の ベストプラクティス ClearCase に組み込まれている メタデータを VOB で管理 ツール?コマンドのサポート有り UCM の使用は必須ではない UCM を使わず素のまま CleaCase を使うことを Base ClearCase と呼ぶ
UCM の構成要素
プロジェクト 変更の大きな単位を表す UCM オブジェクト PVOB(Project VOB) で管理されるメタデータ PVOB は複数のプロジェクトを持つ 例 バージョン X 開発プロジェクト X 機能追加プロジェクト プロジェクトは一つの統合ストリームを持つ
統合ストリーム プロジェクトの統合用ストリーム プロジェクト内のトランク相当 プロジェクトは一つの統合ストリームを持つ 統合ストリームは複数の開発ストリームを持つ
開発ストリーム プロジェクトの開発者用ストリーム 開発者は自分専用のストリームを持つ 統合ストリームは複数の開発ストリームを持つ プロジェクト内のブランチ相当 子の開発ストリームを複数持つこともできる 開発チーム毎の統合用開発ストリーム 開発フェーズ毎の統合用開発ストリーム
シンプルなプロジェクトの例 X 機能追加プロジェクト 統合ストリーム A さんの開発ストリーム B さんの開発ストリーム ... Y 機能追加プロジェクト 統合ストリーム A さんの開発ストリーム B さんの開発ストリーム ...
複雑なプロジェクトの例 Z 機能追加プロジェクト 統合ストリーム X チームの開発ストリーム A さんの開発ストリーム B さんの開発ストリーム ... Y チームの開発ストリーム M さんの開発ストリーム N さんの開発ストリーム ...
ストリームのポイント 親子関係がある 統合ストリーム ( 親 ) と開発ストリーム ( 子 ) 親開発ストリームと子開発ストリーム 開発者毎に開発ストリームを持つ 開発者用のストリームは共有しない ロックモデルが制約にならない チェックインと他者への公開を分けることができる SVN 等で同一ブランチを複数開発者が使う場合は コミットで他者への公開となる UCM における他者への公開は統合ストリームへの マージ
ストリーム間のマージ リベース 親から子へのマージ 統合ストリームから開発ストリームへ 他者の変更を取り込む デリバー 子から親へのマージ 開発ストリームから統合ストリームへ 自分の変更を他者へ提供する
競合の対処 デリバーの前にリベースする プロジェクトのポリシーで強制できる コンフリクトは開発ストリームで解消 デリバーでは競合は発生しない
リベースとデリバー 統合ストリーム 開発ストリーム A 開発ストリーム B 参加 参加 変更 デリバー 変更 リベース 競合の解消 デリバー リベース 競合の解消 変更 デリバー BL0 BL1 BL2 BL3 リベース
開発者のマージサイクル 変更?テスト チェックイン 競合解消?テスト チェックイン リベース デリバー
プロジェクト内のマージ 統合ストリーム 開発ストリーム 開発ストリーム 開発ストリーム同士では マージしない
プロジェクト間のマージ 統合ストリーム 統合ストリーム 統合ストリーム プロジェクト A プロジェクト C プロジェクト B
UCM のまとめ 型にはめた ClearCase の使い方 ツリー状に階層化されたストリーム 統合ストリーム?開発ストリーム 2 つの方向性のあるマージ リベースしてからデリバー 親子間でマージ 兄弟ではマージしない 大規模 ( 大人数 ) での並行開発に強み 柔軟性には欠ける だがそれがいい プロジェクトの構成は未定義 プロジェクト間のマージをどう運用するか?
Agenda ClearCase 概要 UCM 某証券での適用
某証券 インターネット?トレーディングシステム かなり大規模 Java ソース? JSP ともファイル数は万単位 多いときは 100 人以上の開発者 1999 年に稼働 当初は VisualAge( 独自 SCM)+CVS(JSP 等 ) WSAD への移行と同時に ClearCase へ
某証券での並行開発 ほぼ毎週新機能リリース 毎週金曜の夜に本番環境へ 大きな機能追加項目が常に多数ある 開発期間はバラバラ ( 数日~数ヶ月 ) 出来次第リリースなんてことも 品質に問題があればリリースできない リリースの順番は状況次第  ( 事前に決定できない ) 機能追加項目毎に独立した並行開発が必要 VisualAge+CVS ではマージの負担が制約になった ClearCase で UCM の導入へ
某証券でのプロジェクト構成 メインラインプロジェクト mainline-integration mainline-next_release メンテナンスプロジェクト maintenance-integration 開発ストリーム??? X 機能追加プロジェクト x-integration 開発ストリーム??? 常時 10 以上の 機能追加プロジェクトが アクティブ 専用のプロジェクトを 作るほどではない小さな 変更はここで行う 本番リリース用の 成果物を作成する プロジェクト
プロジェクト間のマージ integration next_release 統合 メインライン プロジェクト X 機能追加 プロジェクト 開発 統合 メンテナンス プロジェクト 開発 本番リリース後 リベース?デリバー 本番リリース後 リベース?デリバー 週末リリース予定の プロジェクトを週の初めに リベース?デリバー
参考文献 Software Configuration Management Strategies and  IBM Rational ClearCase ISBN0-321-20019-5 The Art of ClearCase Deployment ISBN0-321-26220-4

More Related Content

2007/02 ClearCase & UCM の紹介