複数のリポジトリを共有できる

複数のリポジトリを共有できる
仮想的なバージョン管理システムの提案
田中 義己† 松下 誠† 井上 克郎†‡
†大阪大学 大学院基礎工学研究科
‡奈良先端科学技術大学院大学
情報科学研究科
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