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