350 likes | 487 Views
複数のリポジトリを共有できる 仮想的なバージョン管理システムの提案. 田中 義己 † 松下 誠 † 井上 克郎 †‡ † 大阪大学 大学院基礎工学研究科 ‡ 奈良先端科学技術大学院大学 情報科学研究科. 背景. ソフトウェア規模が増大している コンポーネント・モジュール単位 再利用 分散環境 ソフトウェア品質改善が行われつつある 開発組織単位 (ISO9000 、 CMM) 開発者単位 - PSP. バージョン管理システム. ソフトウェア開発履歴を蓄積する 開発過程の把握が可能
E N D
複数のリポジトリを共有できる仮想的なバージョン管理システムの提案複数のリポジトリを共有できる仮想的なバージョン管理システムの提案 田中 義己†松下 誠†井上 克郎†‡ †大阪大学 大学院基礎工学研究科 ‡奈良先端科学技術大学院大学 情報科学研究科 第129回ソフトウェア工学研究会
背景 • ソフトウェア規模が増大している • コンポーネント・モジュール単位 • 再利用 • 分散環境 • ソフトウェア品質改善が行われつつある • 開発組織単位(ISO9000、CMM) • 開発者単位 - PSP 第129回ソフトウェア工学研究会
バージョン管理システム • ソフトウェア開発履歴を蓄積する • 開発過程の把握が可能 • ソフトウェアの品質評価に利用 • 主なシステム • RCS, CVS • ClearCase(Rational社) • Visual SourceSafe(Microsoft社) 第129回ソフトウェア工学研究会
現状と問題点 ソフトウェアの開発形態は変化している一方 バージョン管理システムは対応できていない • 開発者単位の履歴を取得する場合、ソフトウェアの履歴から作成しなければならない • 複数のリポジトリから取り出したファイルの一元管理が行なえない 第129回ソフトウェア工学研究会
問題点の具体例1 • 開発者ごとの履歴の取り出し ユーザ ユーザ ユーザ リポジトリ 開発組織単位の 履歴しか蓄積できない 第129回ソフトウェア工学研究会
問題点の具体例2 • 類似したコンポーネントへの移行 移行する場合、別のコンポーネントとして扱わなければならない。 ユーザ 日本語非対応のライブラリ 日本語対応のライブラリ 第129回ソフトウェア工学研究会
問題点の具体例3 • 新たなコンポーネントの導入 FreeBSD OpenBSDの OpenSSH 更新がある度に 最新のものを 複製している 更新される度に、複製して採り込まなければならない。 その他 OpenSSH 第129回ソフトウェア工学研究会
ソフトウェア用のリポジトリとは別に 開発者用のリポジトリを導入する しかし、実データ部分のオーバーヘッドが大きくなる 問題の解決法 開発者単位で 履歴の蓄積を行なう 開発者ごとのソフト ウェア管理を行なう 第129回ソフトウェア工学研究会
DiRM/VRの提案 Distributed Revision Management w/Virtual Repository 実データを格納するリポジトリとは別に 仮想的なリポジトリを導入する • 開発者に応じて、必要となるソフトウェアを一元管理することが可能 • 開発者単位の履歴を容易に得ることができ、開発者毎の品質改善に利用することが可能 • 再利用の際、既存のソフトウェアコンポーネントを複製ではなく、共有とすることが可能 第129回ソフトウェア工学研究会
DiRM/VRにおける概念要素 ユーザ • 仲介レイヤー 2種類のリポジトリを 取りまとめる • 物理リポジトリ 実データの管理を行う • 抽象リポジトリ 開発者単位での管理 を行う ユーザ ユーザ ユーザ 仲介 仲介 仲介 仲介 抽象 抽象 抽象 抽象 物理 物理 物理 第129回ソフトウェア工学研究会
仲介レイヤー • 物理リポジトリと抽象リポジトリを、ユーザ側に1つのリポジトリとして提供する • ユーザとのインタフェースを既存のシステムと、ほぼ同様の形式で提供可能となる • ユーザがリポジトリに対して行なったオペレーションの解析を行なう • 必要に応じて、物理・抽象リポジトリとデータのやり取りをする 第129回ソフトウェア工学研究会
物理リポジトリ • ファイルの実体を管理している • ファイルの実体だけではなく、それに付随する属性情報やメッセージログなども管理している • 物理リポジトリへのアクセスは仲介レイヤーを通して行なう • リポジトリ内部データの信頼性を高めるため 第129回ソフトウェア工学研究会
抽象リポジトリ • ファイルの実体を持たない仮想リポジトリ • ファイルの実体は物理リポジトリから参照する • 1ファイル内のリビジョンを異なる物理リポジトリから参照してもよい 抽象リポジトリ 物理リポジトリ 物理リポジトリ 第129回ソフトウェア工学研究会
リビジョンシェアリング 抽象リポジトリ • 必要なリビジョンのみ共有可能 • 他のユーザが行なった更新部分の反映可能 ユーザAはブランチの部分からは のみ共有している。 物理 リポジトリ ユーザA ユーザB ユーザAが行なった「 → 」という更新を、ユーザBがを参照するだけで共有可能となる。 抽象リポジトリ 第129回ソフトウェア工学研究会
DiRM/VRのオペレーション • 2種類のリポジトリを扱うため、オペレーションの変更・拡張をする • 以下の4つのオペレーションについて説明する • Check in • Check out • Diff • Merge 第129回ソフトウェア工学研究会
Check in • 抽象リポジトリ内に新しくリビジョンを作成するオペレーション • Traditional Check in 従来の手法と同様のcheck in • Referential Check in 物理リポジトリのリビジョンを利用したcheck in • Extended Check in 複数のリビジョンを同時にcheck in 第129回ソフトウェア工学研究会
Traditional Check in • ローカルでファイルに変更を加えたものをリポジトリに格納する • 物理リポジトリ側で リビジョンの作成に 失敗した場合、全く 変化は起こらない ユーザ 抽象リポジトリ Rev作成 仲介レイヤー CMD解析 物理リポジトリ Rev作成 処理 情報更新 ※図中のCMDはコマンド、 Revはリビジョンという意味 以降も同じ 第129回ソフトウェア工学研究会
Referential Check in • 物理リポジトリに存在する1リビジョンを新たに参照する • 抽象リポジトリにリビ ジョンが作成されるの でCheck inオペレー ションとなる 抽象 リポジトリ 物理 リポジトリ 第129回ソフトウェア工学研究会
Extended Check in • 物理リポジトリから派生関係にある複数のリビジョンを参照する • RT (revision tree) Check in 1つのリビジョンをルートとするリビジョンツリー全体を参照 • SQ (sequential) Check in 互いに派生関係にある2つのリビジョン間に存在するリビジョンを参照 第129回ソフトウェア工学研究会
RT Check in SQ Check in 指定不可 Extended Check in 抽象 リポジトリ 抽象 リポジトリ 指定可能 物理 リポジトリ 物理 リポジトリ :指定したリビジョン 第129回ソフトウェア工学研究会
Check out • 1リビジョン分のデータを取り出すオペレーション • 抽象リポジトリ内部で 各リビジョンの情報と して、実データの所在 を持っている。それを 基に物理リポジトリか らデータを取り出す。 ユーザ 抽象リポジトリ 所在確認 仲介レイヤー CMD解析 パス情報 物理リポジトリ 取り出し 処理 第129回ソフトウェア工学研究会
差分計算 Diff ユーザ • 2つのリビジョン間の差分情報を得るためのオペレーション • それぞれのリビジョンを取り出してから計算する 物理リポジトリが異なる場合でも計算可能 仲介レイヤー CMD解析 差分計算 抽象 リポジトリ 物理 リポジトリ 物理 リポジトリ 第129回ソフトウェア工学研究会
差分計算 Merge ユーザ 仲介レイヤー CMD解析 差分計算 • 2つのリビジョンを統合するオペレーション • 差分情報の計算はDiffと同じ • 差分情報が当てはまらない場合は、何の変化も無し 抽象 リポジトリ 物理 リポジトリ 物理 リポジトリ 第129回ソフトウェア工学研究会
具体的な利用例1 • 開発者ごとの履歴の取り出し ユーザ 抽象リポジトリ ユーザ ユーザ 抽象リポジトリ 抽象リポジトリ 物理リポジトリ 第129回ソフトウェア工学研究会
具体的な利用例2 • 類似したコンポーネントへの移行 開発者 日本語非対応のライブラリ 日本語対応のライブラリ 第129回ソフトウェア工学研究会
具体的な利用例3 • 新たなコンポーネントの導入 既存の コンポーネント FreeBSD OpenBSDの OpenSSH 第129回ソフトウェア工学研究会
システムの構築 • DiRM/VRに基づいて、現在、実際にシステムを構築している • 開発者ごとに履歴を蓄積することが可能 • 開発者単位で必要なソフトウェアコンポーネントを一元管理することが可能 第129回ソフトウェア工学研究会
システムの構成 • 仲介システム • 主にこの部分を構築する • 物理リポジトリ • 既存のシステムであるCVSを利用 • 抽象リポジトリ • システムの仕様に則ったファイルの集合 第129回ソフトウェア工学研究会
システムのデータ流れ 仲介システム 抽象リポジトリ リポジトリ用 ファイル集合 アクセス 抽象 リポジトリ アクセス部 指示 ユーザ コマンド 解析部 オペレー ション 情報・データ 情報・データ 指示 情報・ ファイル 物理リポジトリ データ 解析部 情報・データ インタフェース CVS リポジトリ 物理 リポジトリ アクセス部 アクセス 第129回ソフトウェア工学研究会
まとめ 仮想的リポジトリを利用した、開発者指向のバージョン管理システムを提案した 物理・抽象リポジトリおよび、仲介レイヤー といった概念を導入 • 開発者単位で、実際の開発に沿った形で、 ソフトウェア管理や履歴の蓄積が可能 • 個人のソフトウェアプロセス評価に利用可能 第129回ソフトウェア工学研究会
今後の課題 • システム評価 • パフォーマンスの測定 オペレーション実行時間の測定 →既存のシステムと比較する • オーバーヘッドの計測 抽象リポジトリとして利用したファイルサイズの計測 →ファイル全体から見た割合を計測 • 実際の開発環境へ適用 • 開発者ごとに蓄積した履歴の有効性の測定 • 開発者にとっての利用し易さの測定 第129回ソフトウェア工学研究会
終 第129回ソフトウェア工学研究会
システムの試作(物理リポジトリ) • 物理リポジトリしては、既存のシステムであるCVSを利用する • 特別に『操作可能権限』を得ることで、物理リポジトリへの直接アクセスが可能となる。 第129回ソフトウェア工学研究会
システムの試作(抽象リポジトリ) • 各リビジョンの属性情報が書かれたファイルの集合 • 抽象リポジトリの中で、複数のプロジェクトを管理可能 • 1つのプロジェクトに、複数のファイルが存在する 第129回ソフトウェア工学研究会
システムの試作(仲介システム) • コマンド解析部 • ユーザからのオペレーションを解析し、各リポジトリへ命令を出す • 物理リポジトリアクセス部 • CVSインタフェースで適当なコマンドを実行する • 抽象リポジトリアクセス部 • 属性情報が蓄積されているファイルに直接アクセスして、情報を取得する • データ処理部 • 物理・抽象リポジトリから得た情報を処理する 第129回ソフトウェア工学研究会