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