35
2000/11/16 第129第第第第第第第第第第第第 1 第第第第第第第第第第第第第第 第第第第第第第第第第第第第第第第第第 田田 田田† 田田 田† 田田 田田†‡ † 田田田田 田田田田田田田田田田 ‡ 田田田田田田田田田田田田田 田田田田田田田

複数のリポジトリを共有できる 仮想的なバージョン管理システムの提案

  • Upload
    komala

  • View
    34

  • Download
    0

Embed Size (px)

DESCRIPTION

複数のリポジトリを共有できる 仮想的なバージョン管理システムの提案. 田中 義己 † 松下 誠 † 井上 克郎 †‡ † 大阪大学 大学院基礎工学研究科 ‡ 奈良先端科学技術大学院大学 情報科学研究科. 背景. ソフトウェア規模が増大している コンポーネント・モジュール単位 再利用 分散環境 ソフトウェア品質改善が行われつつある 開発組織単位 (ISO9000 、 CMM) 開発者単位 - PSP. バージョン管理システム. ソフトウェア開発履歴を蓄積する 開発過程の把握が可能 - PowerPoint PPT Presentation

Citation preview

Page 1: 複数のリポジトリを共有できる 仮想的なバージョン管理システムの提案

2000/11/16 129第 回ソフトウェア工学研究会 1

複数のリポジトリを共有できる仮想的なバージョン管理システムの提案

田中 義己† 松下 誠† 井上 克郎†‡ † 大阪大学 大学院基礎工学研究科 ‡ 奈良先端科学技術大学院大学 情報科学研究科

Page 2: 複数のリポジトリを共有できる 仮想的なバージョン管理システムの提案

2000/11/16 129第 回ソフトウェア工学研究会 2

背景

ソフトウェア規模が増大している コンポーネント・モジュール単位 再利用 分散環境

ソフトウェア品質改善が行われつつある 開発組織単位 (ISO9000 、 CMM) 開発者単位 - PSP

Page 3: 複数のリポジトリを共有できる 仮想的なバージョン管理システムの提案

2000/11/16 129第 回ソフトウェア工学研究会 3

バージョン管理システム

ソフトウェア開発履歴を蓄積する 開発過程の把握が可能 ソフトウェアの品質評価に利用

主なシステム RCS, CVS ClearCase(Rational 社 ) Visual SourceSafe(Microsoft 社 )

Page 4: 複数のリポジトリを共有できる 仮想的なバージョン管理システムの提案

2000/11/16 129第 回ソフトウェア工学研究会 4

現状と問題点

開発者単位の履歴を取得する場合、ソフトウェアの履歴から作成しなければならない

複数のリポジトリから取り出したファイルの一元管理が行なえない

ソフトウェアの開発形態は変化している一方バージョン管理システムは対応できていない

Page 5: 複数のリポジトリを共有できる 仮想的なバージョン管理システムの提案

2000/11/16 129第 回ソフトウェア工学研究会 5

問題点の具体例1

開発者ごとの履歴の取り出し

リポジトリ

ユーザ

ユーザユーザ

開発組織単位の履歴しか蓄積できない

開発組織単位の履歴しか蓄積できない

Page 6: 複数のリポジトリを共有できる 仮想的なバージョン管理システムの提案

2000/11/16 129第 回ソフトウェア工学研究会 6

類似したコンポーネントへの移行

日本語対応のライブラリ

問題点の具体例2

日本語非対応のライブラリ

ユーザ移行する場合、別のコンポーネントとして扱わなければならない。

移行する場合、別のコンポーネントとして扱わなければならない。

Page 7: 複数のリポジトリを共有できる 仮想的なバージョン管理システムの提案

2000/11/16 129第 回ソフトウェア工学研究会 7

新たなコンポーネントの導入

FreeBSDOpenBSD の

OpenSSH

問題点の具体例3

その他 OpenSSH

更新がある度に最新のものを複製している

更新される度に、複製して採り込まなければならない。

更新される度に、複製して採り込まなければならない。

Page 8: 複数のリポジトリを共有できる 仮想的なバージョン管理システムの提案

2000/11/16 129第 回ソフトウェア工学研究会 8

問題の解決法開発者単位で

履歴の蓄積を行なう

開発者単位で履歴の蓄積を行なう

しかし、実データ部分のオーバーヘッドが大きくなるしかし、実データ部分のオーバーヘッドが大きくなる

開発者ごとのソフトウェア管理を行なう

開発者ごとのソフトウェア管理を行なう

ソフトウェア用のリポジトリとは別に開発者用のリポジトリを導入する

Page 9: 複数のリポジトリを共有できる 仮想的なバージョン管理システムの提案

2000/11/16 129第 回ソフトウェア工学研究会 9

DiRM/VR の提案

開発者に応じて、必要となるソフトウェアを一元管理することが可能

開発者単位の履歴を容易に得ることができ、開発者毎の品質改善に利用することが可能

再利用の際、既存のソフトウェアコンポーネントを複製ではなく、共有とすることが可能

実データを格納するリポジトリとは別に仮想的なリポジトリを導入する

Distributed Revision Managementw/ Virtual Repository

Page 10: 複数のリポジトリを共有できる 仮想的なバージョン管理システムの提案

2000/11/16 129第 回ソフトウェア工学研究会 10

DiRM/VR における概念要素

抽象

ユーザ

物理 物理物理

仲介

抽象

ユーザ

抽象

ユーザ

抽象

ユーザ 仲介レイヤー

2種類のリポジトリを

取りまとめる 物理リポジトリ

実データの管理を行う

抽象リポジトリ開発者単位での管理を行う

仲介 仲介 仲介

Page 11: 複数のリポジトリを共有できる 仮想的なバージョン管理システムの提案

2000/11/16 129第 回ソフトウェア工学研究会 11

仲介レイヤー物理リポジトリと抽象リポジトリを、ユーザ側に1つのリポジトリとして提供する ユーザとのインタフェースを既存のシス

テムと、ほぼ同様の形式で提供可能となる

ユーザがリポジトリに対して行なったオペレーションの解析を行なう 必要に応じて、物理・抽象リポジトリと

データのやり取りをする

Page 12: 複数のリポジトリを共有できる 仮想的なバージョン管理システムの提案

2000/11/16 129第 回ソフトウェア工学研究会 12

物理リポジトリファイルの実体を管理している ファイルの実体だけではなく、それに付随する属性情報やメッセージログなども管理している

物理リポジトリへのアクセスは仲介レイヤーを通して行なう リポジトリ内部データの信頼性を高めるため

Page 13: 複数のリポジトリを共有できる 仮想的なバージョン管理システムの提案

2000/11/16 129第 回ソフトウェア工学研究会 13

抽象リポジトリ

物理リポジトリ物理リポジトリ

抽象リポジトリ

ファイルの実体を持たない仮想リポジトリ ファイルの実体

は物理リポジトリから参照する

1ファイル内のリビジョンを異なる物理リポジトリから参照してもよい

Page 14: 複数のリポジトリを共有できる 仮想的なバージョン管理システムの提案

2000/11/16 129第 回ソフトウェア工学研究会 14

リビジョンシェアリング 必要なリビジョンのみ

共有可能

他のユーザが行なった更新部分の反映可能

抽象リポジトリ

抽象リポジトリ

物理リポジトリ ユーザ A

ユーザ Bユーザ Aが行なった「 → 」という更新を、ユーザ B がを参照するだけで共有可能となる。

ユーザ Aが行なった「 → 」という更新を、ユーザ B がを参照するだけで共有可能となる。

ユーザ Aはブランチの部分からは のみ共有している。

ユーザ Aはブランチの部分からは のみ共有している。

Page 15: 複数のリポジトリを共有できる 仮想的なバージョン管理システムの提案

2000/11/16 129第 回ソフトウェア工学研究会 15

DiRM/VR のオペレーション

2種類のリポジトリを扱うため、オペレーションの変更・拡張をする以下の4つのオペレーションについて説明する Check in Check out Diff Merge

Page 16: 複数のリポジトリを共有できる 仮想的なバージョン管理システムの提案

2000/11/16 129第 回ソフトウェア工学研究会 16

Check in

抽象リポジトリ内に新しくリビジョンを作成するオペレーション Traditional Check in 従来の手法と同様の check in Referential Check in 物理リポジトリのリビジョンを利用した check in

Extended Check in 複数のリビジョンを同時に check in

Page 17: 複数のリポジトリを共有できる 仮想的なバージョン管理システムの提案

2000/11/16 129第 回ソフトウェア工学研究会 17

Traditional Check inローカルでファイルに変更を加えたものをリポジトリに格納する 物理リポジトリ側で リビジョンの作成に 失敗した場合、全く 変化は起こらない

仲介レイヤー 物理リポジトリ

抽象リポジトリ

Rev 作成

Rev 作成

情報更新

CMD 解析

処理

ユーザ

※図中の CMD はコマンド、 Rev はリビジョンという意味 以降も同じ

Page 18: 複数のリポジトリを共有できる 仮想的なバージョン管理システムの提案

2000/11/16 129第 回ソフトウェア工学研究会 18

物理リポジトリ

Referential Check in

物理リポジトリに存在する1リビジョンを新たに参照する 抽象リポジトリにリビ ジョンが作成されるの で Check in オペレー ションとなる

抽象リポジトリ

Page 19: 複数のリポジトリを共有できる 仮想的なバージョン管理システムの提案

2000/11/16 129第 回ソフトウェア工学研究会 19

Extended Check in

物理リポジトリから派生関係にある複数のリビジョンを参照する RT (revision tree) Check in 1つのリビジョンをルートとするリビ

ジョンツリー全体を参照 SQ (sequential) Check in 互いに派生関係にある2つのリビジョン間に存在するリビジョンを参照

Page 20: 複数のリポジトリを共有できる 仮想的なバージョン管理システムの提案

2000/11/16 129第 回ソフトウェア工学研究会 20

抽象リポジトリ

物理リポジトリ

Extended Check inRT Check in SQ Check in

抽象リポジトリ

物理リポジトリ

指定可能指定可能

:指定したリビジョン

指定不可指定不可

Page 21: 複数のリポジトリを共有できる 仮想的なバージョン管理システムの提案

2000/11/16 129第 回ソフトウェア工学研究会 21

Check out1リビジョン分のデータを取り出すオペレーション 抽象リポジトリ内部で 各リビジョンの情報と して、実データの所在 を持っている。それを 基に物理リポジトリか らデータを取り出す。

仲介レイヤー物理リポジトリ

抽象リポジトリ

所在確認

取り出し

CMD 解析

処理

ユーザ

パス情報

Page 22: 複数のリポジトリを共有できる 仮想的なバージョン管理システムの提案

2000/11/16 129第 回ソフトウェア工学研究会 22

Diff2つのリビジョン間の差分情報を得るためのオペレーション それぞれのリビジョン

を取り出してから計算する

物理リポジトリが異なる場合でも計算可能

抽象リポジトリ物理

リポジトリ物理

リポジトリ

ユーザ

CMD 解析 差分計算差分計算

仲介レイヤー

Page 23: 複数のリポジトリを共有できる 仮想的なバージョン管理システムの提案

2000/11/16 129第 回ソフトウェア工学研究会 23

Merge2つのリビジョンを統合するオペレーション 差分情報の計算は Di

ff と同じ 差分情報が当てはま

らない場合は、何の変化も無し 抽象

リポジトリ物理リポジトリ

物理リポジトリ

ユーザ

CMD 解析 差分計算差分計算

仲介レイヤー

Page 24: 複数のリポジトリを共有できる 仮想的なバージョン管理システムの提案

2000/11/16 129第 回ソフトウェア工学研究会 24

具体的な利用例1開発者ごとの履歴の取り出し

物理リポジトリ

抽象リポジトリ

抽象リポジトリ 抽象リポジトリ

ユーザユーザ

ユーザ

Page 25: 複数のリポジトリを共有できる 仮想的なバージョン管理システムの提案

2000/11/16 129第 回ソフトウェア工学研究会 25

開発者               

日本語対応のライブラリ

具体的な利用例2類似したコンポーネントへの移行

日本語非対応のライブラリ

Page 26: 複数のリポジトリを共有できる 仮想的なバージョン管理システムの提案

2000/11/16 129第 回ソフトウェア工学研究会 26

新たなコンポーネントの導入

既存のコンポーネント FreeBSD

OpenBSD のOpenSSH

具体的な利用例3

Page 27: 複数のリポジトリを共有できる 仮想的なバージョン管理システムの提案

2000/11/16 129第 回ソフトウェア工学研究会 27

システムの構築

DiRM/VR に基づいて、現在、実際にシステムを構築している

開発者ごとに履歴を蓄積することが可能 開発者単位で必要なソフトウェアコンポー

ネントを一元管理することが可能

Page 28: 複数のリポジトリを共有できる 仮想的なバージョン管理システムの提案

2000/11/16 129第 回ソフトウェア工学研究会 28

システムの構成

仲介システム 主にこの部分を構築する

物理リポジトリ 既存のシステムである CVS を利用

抽象リポジトリ システムの仕様に則ったファイルの集合

Page 29: 複数のリポジトリを共有できる 仮想的なバージョン管理システムの提案

2000/11/16 129第 回ソフトウェア工学研究会 29

システムのデータ流れ

抽象リポジトリ

物理リポジトリ

CVSリポジトリ

CVSリポジトリ

インタフェース

仲介システム

抽象リポジトリアクセス部

抽象リポジトリアクセス部

ユーザ

データ解析部データ解析部

物理リポジトリアクセス部

物理リポジトリアクセス部

コマンド解析部

コマンド解析部

リポジトリ用ファイル集合リポジトリ用ファイル集合

オペレーション

アクセス

アクセス

情報・データ

情報・データ

情報・データ情報・ファイル

指示

指示

Page 30: 複数のリポジトリを共有できる 仮想的なバージョン管理システムの提案

2000/11/16 129第 回ソフトウェア工学研究会 30

まとめ 仮想的リポジトリを利用した、開発者指向のバージョン管理システムを提案した 物理・抽象リポジトリおよび、仲介レイヤー といった概念を導入

開発者単位で、実際の開発に沿った形で、 ソフトウェア管理や履歴の蓄積が可能 個人のソフトウェアプロセス評価に利用可能

Page 31: 複数のリポジトリを共有できる 仮想的なバージョン管理システムの提案

2000/11/16 129第 回ソフトウェア工学研究会 31

今後の課題システム評価 パフォーマンスの測定 オペレーション実行時間の測定 →既存のシステムと比較する オーバーヘッドの計測 抽象リポジトリとして利用したファイルサイズの計測

→ファイル全体から見た割合を計測

実際の開発環境へ適用 開発者ごとに蓄積した履歴の有効性の測定 開発者にとっての利用し易さの測定

Page 32: 複数のリポジトリを共有できる 仮想的なバージョン管理システムの提案

2000/11/16 129第 回ソフトウェア工学研究会 32

Page 33: 複数のリポジトリを共有できる 仮想的なバージョン管理システムの提案

2000/11/16 129第 回ソフトウェア工学研究会 33

システムの試作 (物理リポジトリ )

物理リポジトリしては、既存のシステムである CVS を利用する特別に『操作可能権限』を得ることで、物理リポジトリへの直接アクセスが可能となる。

Page 34: 複数のリポジトリを共有できる 仮想的なバージョン管理システムの提案

2000/11/16 129第 回ソフトウェア工学研究会 34

システムの試作 (抽象リポジトリ )

各リビジョンの属性情報が書かれたファイルの集合抽象リポジトリの中で、複数のプロジェクトを管理可能 1つのプロジェクトに、複数のファイル

が存在する

Page 35: 複数のリポジトリを共有できる 仮想的なバージョン管理システムの提案

2000/11/16 129第 回ソフトウェア工学研究会 35

システムの試作 (仲介システム )コマンド解析部 ユーザからのオペレーションを解析し、各リポジ

トリへ命令を出す

物理リポジトリアクセス部 CVS インタフェースで適当なコマンドを実行する

抽象リポジトリアクセス部 属性情報が蓄積されているファイルに直接アクセ

スして、情報を取得する

データ処理部 物理・抽象リポジトリから得た情報を処理する