複数のリポジトリを統合できる バージョン管理システムの提案と試作

Download Report

Transcript 複数のリポジトリを統合できる バージョン管理システムの提案と試作

複数のリポジトリを統合できる
バージョン管理システムの提案と試作
田中 義己
井上研究室
2001/02/20
修士論文発表会
1
背景
ソフトウェア開発規模の拡大



コンポーネント・モジュール単位
再利用
分散環境
ソフトウェア品質評価


開発組織単位
開発者単位
2001/02/20
修士論文発表会
2
背景
ソフトウェア管理
バージョン管理システムの利用




開発履歴の蓄積・閲覧が可能
バグ発見が容易になる
過去の状態への移行が可能になる
変更の統合が簡単になる
2001/02/20
修士論文発表会
3
バージョン管理
プロダクトに対する追加・削除・変更などの作業を
履歴として蓄積する
蓄積したデータを開発者に提供する 管理単位:リビジョン
トランク
リポジトリ
開発者
開発者
1.0
データ操作
データ操作
1.0.1
1.1
1.0.2
1.2
プロダクトの
各段階での状態
・実データ
・属性データ
開発者
ブランチ
2001/02/20
修士論文発表会
リビジョンツリー
4
既存のシステムにおける問題点
開発者単位の履歴蓄積が困難

複数の開発者データが混在している
点在するリポジトリの一元管理が困難

異なるリポジトリに存在するコンポーネントは,
開発者も別々に管理する必要がある
リポジトリ間でのコンポーネント複製

コンポーネントの再利用などで複製と行うと,複
製時以降の変更が反映されない
2001/02/20
修士論文発表会
5
問題点1
開発者単位の履歴蓄積が困難
複数の開発者のデータが
混在している
 1つのリビジョンデータとして
開発者に依存したデータと
プロダクトデータが一緒に
蓄積されている

開発者
開発者
リポジトリ
開発者
2001/02/20
修士論文発表会
6
問題点2
点在するリポジトリの一元管理が困難

異なるリポジトリに
存在するコンポーネ
ントを,別々に管理
する必要がある
リポジトリ
リポジトリ
作業領域
作業領域
開発者
2001/02/20
修士論文発表会
7
問題点3
リポジトリ間でのコンポーネント複製
データが冗長になる
 複製時以降の複製元
の更新が判らない
⇒反映できない

2001/02/20
開発者B
(利用者)
修士論文発表会
開発者A
(複製元)
8
解決法
問題点1
問題点2
問題点3
開発者単位の履歴
蓄積が困難
点在するリポジトリの
一元管理が困難
コンポーネント複製
による問題
解決法1
解決法2
解決法3
開発者単位での
管理を可能にする
複数の作業領域を
1つにする
複製を行わずに
参照とする
新たなバージョン管理手法
2001/02/20
修士論文発表会
9
バージョン管理手法DiRM/VR
実データと開発者用データを分離して
管理する抽象リポジトリを導入する
開発者単位の履歴蓄積が可能
複数存在するリポジトリの一元管理が可能
コンポーネントの複製が不必要
2001/02/20
修士論文発表会
10
抽象リポジトリ
開発者
4構成要素




開発者
抽象リポジトリ
実データ管理部
属性データ管理部
インタフェース部
制御部
インタ
フェース部
インタ
フェース部
制御部
制御部
開発者と1対1対応
開発者に実データ管理部
と属性データ管理部を統合
した1つのリポジトリを提供
2001/02/20
属性データ
管理部
実データ
管理部
実データ
管理部
属性データ
管理部
1つの抽象リポジトリ内に
複数の実データ管理部が
存在しても良い.
修士論文発表会
実データ
管理部
抽象リポジトリ
11
実データ管理部
プロダクトデータの管理


1つの抽象リポジトリ内部に複数存在
複数の抽象リポジトリ間で共有
開発者の直接データ格納・変更を禁止

プロダクトデータの信頼性が向上
⇒制御部を介した間接的アクセス
2001/02/20
修士論文発表会
12
属性データ管理部
開発者依存のデータを管理
実データへのリンクを保持
 属性データ管理部の1リ
ビジョンは,実データ管理 実データ
管理部
部の1リビジョンを指す

属性データ
管理部
実データ
管理部
この2つのリビジョンは
異なるコンポーネントの
リビジョンを指している
2001/02/20
修士論文発表会
13
制御部
実データ管理部へのアクセス
データ操作

リビジョン作成(データ格納)
 従来方式
 実データ管理部のリビジョン利用
 リビジョンツリー参照


データ取得
リビジョン間の差分情報取得
2001/02/20
修士論文発表会
14
リビジョン作成(データ格納)
指定された
リビジョンツリー
リビジョンツリー参照


実データ管理部内のリビ
ジョンツリー全体もしくは
その一部を引用
ツリー構成は参照元と全く
同形
複製時以降の複製元に対
する変更も容易に反映可
能
属性データ
管理部
実データ
管理部
後で追加されたリビ
ジョンも参照可能
2001/02/20
修士論文発表会
15
システムの試作
新手法に基づいたバージョン管理システム DLCM


言語 : C++
コード量 : 8500行程度 + ライブラリ(STL)
データ閲覧システム DLCMView


言語 : Perl
コード量 : 1600行程度 + ライブラリ(jcode.pl)
開発環境,CPU : PentinumⅢ 1GHz × 2
RAM : 1GBytes
OS : FreeBSD 4.2-STABLE
2001/02/20
修士論文発表会
16
バージョン管理システム DLCM

実データ管理部
 CVSリポジトリの利用

開発者
DLCM
インタ
オペレー
フェース部 ション解析
属性データ管理部
コマンド
 1コンポーネントを1ファイル
で管理

解析結果
受け取り
インタフェース部
 オペレーション解析

制御部
データ
編集
CVSのイン
タフェース
制御部
 解析結果受け取り
属性データ
用のファイル
CVSリポジトリ
属性データ管理部
実データ管理部
 実データ管理部へのアクセス
 取り出したデータの閲覧
2001/02/20
修士論文発表会
17
データ閲覧システム DLCMView

開発者
コンポーネント一覧
 属性データ管理部に存在するコ
Webブラウザ
ンポーネントの一覧

リビジョン一覧
Webサーバ
 各コンポーネントに存在するリビ
ジョンの一覧

CGI
リビジョンデータ閲覧
 各リビジョンのデータ表示

差分データ閲覧
DLCMView
 2リビジョン間の差分データ表示
属性データ
管理部
2001/02/20
修士論文発表会
実データ
管理部
18
適応実験
開発者単位の履歴を取得する実験

4人の開発者が,コンポーネントに対して行った
履歴の取得
点在するリポジトリを一元管理する実験

マルチバイト文字に未対応のライブラリと対応
済みのライブラリを利用
コンポーネントの複製せず,参照とする実験

FreeBSDとOpenBSDのコンポーネントを利用
2001/02/20
修士論文発表会
19
実験の方法
点在するリポジトリを一元管理する実験

マルチバイト文字に未対応のライブラリから対
応済みのライブラリへの移行
未対応の
ライブラリ
strctrl.cpp
実データ
管理部
2001/02/20
strctrl.cpp
属性データ
管理部
修士論文発表会
対応済みの
ライブラリ
jstrctrl.cpp
実データ
管理部
20
実験の結果
リビジョンが1.2から1.3に
なるときに,実データが
strctrl.cppからjstrctrl.cppへ
と替わっている
1.4が存在するのは,
一部パスを変更する必要が
あったためであり,実際の
ソースコードには手を加えて
いない
マルチバイト文字の処理が
可能となった
2001/02/20
修士論文発表会
21
まとめ
プロダクトデータと開発者データを分離した
バージョン管理システムの提案と試作
開発者単位の履歴蓄積が可能
複数存在するリポジトリの一元管理が可能
コンポーネントの複製が不必要
⇒適応実験により確認
2001/02/20
修士論文発表会
22
今後の課題
実データ管理部内のリビジョンが繁雑

リビジョン競合時は,単純に別のリビジョンとし
て退避し格納する為
⇒ブランチの利用法を定義
システムにおける実行時間が長い

既存のシステムに比べ,ファイルアクセス回数
が多い為
⇒ファイルアクセスの最適化
2001/02/20
修士論文発表会
23
終
2001/02/20
修士論文発表会
24
バージョン管理システムの利点
バグの発見
パッチを簡単に作成する仕組みの提供
容易に以前のバージョンへ戻すことが可能
変更統合が簡単
グループ作業の簡単化
2001/02/20
修士論文発表会
25
リビジョン作成(データ格納)
従来方式

実データ,属性デー
タ双方のリビジョン
作成
属性データ
管理部
2001/02/20
実データ管理部のリビ
ジョン利用

既に存在する実データを
リンクするリビジョンの作
成
属性データ
管理部
実データ
管理部
修士論文発表会
実データ
管理部
26
データ取得
開発者
リビジョンの内容取得

指定された属性データ
+

属性データからリンクさ
れている実データ
属性データ
管理部
実データ
管理部
指定された
リビジョン
2001/02/20
修士論文発表会
27
リビジョン間の差分情報取得
実データ内部にある差分
情報の利用は不可
互いに異なるコンポーネ
ントのりビジョンである可
能性の存在.
差分計算
属性データ
管理部
実データ
管理部
実データ
管理部
指定された
2つのリビジョン
2001/02/20
修士論文発表会
28
適応実験1
開発者を単位とした開発履歴取得

各開発者毎の履歴は
属性データ管理部に存在
実データ
管理部

システムのログ出力や
DLCM Viewerで容易に
閲覧・取得が可能
2001/02/20
修士論文発表会
属性データ
管理部
属性データ
管理部
Main
Sub
29
適応実験3
コンポーネントに複製せずに参照する




FreeBSDのopensshコンポーネントをOpenBSD
のsshコンポーネントへの参照とした.
5つのファイルに対して変更を行うだけで,実際
に実行形式ファイルを作成することができた.
複製ではなく,参照としても問題は生じない
冗長なデータを削減
2001/02/20
修士論文発表会
30
問題点3
リポジトリ間でのコンポーネント複製
データが冗長になる
 複製時以降の更新が
分からない.
⇒反映できない

2001/02/20
修士論文発表会
31