• 検索結果がありません。

版管理とソフトウェア再利用の支援に関する研究

N/A
N/A
Protected

Academic year: 2021

シェア "版管理とソフトウェア再利用の支援に関する研究"

Copied!
45
0
0

読み込み中.... (全文を見る)

全文

(1)

版管理とソフトウェアの再利

における支援に関する研究

大阪大学 大学院基礎工学研究科 情報数理系専攻 ソフトウェア科学分野

山本哲男

(2)

背景

ハードウェアの価格の低下とその機能の向上 にともない、ソフトウェアシステムは年々大 規模化・複雑化している ソフトウェアの構築や保守にかかるコストが 増大し、多くの労力が必要  保守支援手法  版(バージョン)管理、プログラム理解支援、・・・  構築支援手法  再利用、設計方法論、・・・

(3)

問題点

既存のバージョン管理手法  プロダクトの作成,変更作業の逐次的な記 録や追跡を支援するシステム    ユーザの負担が大きい  保存する間隔が粗い

(4)

問題点 続き

既存の再利用手法  粒度の細かい再利用(ライブラリ等)  より大規模なシステムレベルでの再利用が 求められている A 社 B 社 C 社 D 社 C 社

(5)

目的

新しい版管理手法・版管理システムの 提案  ユーザの保存したファイルを特別な操作を 必要とせず自動的に記録するシステム 大規模システムレベルでの再利用のた めのシステム類似度の提案  ソフトウェアシステム間の類似度を用いた 派生関係を計測するシステム

(6)

論文の構成

第1章 まえがき 第2章 堆積型ファイルシステム Moraine の提案と実装 [3,4] 第3章 メトリクス環境 MAME の提案と 実装 [1,5] 第4章 類似度計測ツール SMMT の提案 と実装 [2] 第5章 むすび

(7)

堆積型ファイルシステム

Moraine と

メトリクス計測システム

MAME[2,3 章 ]

1995 年の HDD 容量 --- 0.54Gbytes Linux (Slackware2.2[Basic Applications+X window]) 0.15Gbytes 空き容量 0.39Gbytes

(8)

HDD 容量の変遷

2001 年の HDD 容量 --- 80Gbytes Linux (RedHat7[Basic Applications+X window]) 1Gbytes 空き容量 79Gbytes 0.39Gbytes 200 倍 0.15Gbytes 6 倍

(9)

空き容量の使用

一般ユーザ  JPEG, MPEG, MP3, HTML, ... ソフトウェア工学に携わる者  ? バージョン管理手法は限られたHDD容 量の基で考案、開発されている ユーザが手動で保存

(10)

ソフトウェアプロダクトの保

昔の HDD は高価で現実的に不可能 現在の HDD 容量はソフトウェアの履歴 を保存するのに十分な容量を持っている 履歴の総サイズ 1.2Gbytes FreeBSD 2.0 1994 2001 FreeBSD 4.4 100Mbytes 27 リリース 320Mbytes

(11)

Moraine と MAME の開発

二つのシステムを構築した 自動的にプロダクトを保存する    ⇒堆積型ファイルシステム Moraine 定量的なメトリクス計測基盤 ⇒ メトリクス計測システム MAME

(12)

Moraine の設計方針

自動的に保存  すべてのファイルを細粒度で自動的に保存する 容易な操作  開発者は Moraine について特別な知識を必要としな い。通常の読み出し、書き込み操作をシステムがつ かまえることで以前と同じ環境で作業が行える オープンな構造  Moraine で保存するファイルは既存のツールを利用 して行う

(13)

Moraine の特徴

Moraine は常に最新のバージョンのみ を開発者に見せる Newer リポジトリ 操作 開発者 最新バージョン 開発者の視点 Newer 実際のファイル構造 Newer

(14)

Moraine のアーキテクチャ

HDD User Process VFS VCD RCS UFS バージョン管理サブシステム -retrieve versions -show a delta 管理コマンド群

Vertical File System Version Control Daemon

Unix File system

VFS を実際のファイルシステムの上 に論理的なファイルシステムとして 存在するように実現

VFS

Vertical File System

(15)

HDD User Process VFS VCD RCS UFS -retrieve versions -show a delta 管理コマンド群

Vertical File System Version Control Daemon

バージョン管理サブシステムはバー ジョン間の差分計算といった実際に バージョンを記録する作業を行う部分

VCD

Version Control Daemon

バージョン管理サブシステム VCS 管理コマンド群は通常の操作では行え ない操作を行うコマンド群

Moraine のアーキテクチャ

VCD はバージョン管理サブシステム を結ぶ役割を果たすプロセス

(16)

実験

Moraine が実用的かどうかについて実験 を行った

システムの性能と保存データサイズ UFS (UNIX file system) と比較

計測環境

(17)

実験(読み出し)

ファイルの読み出しにかかるプロセスの実行 時間 0 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 MB 1 ファイルの連続読み出し回数 時 間(S ec .) MoraineUFS

(18)

実験(書き込み)

ファイルの書き込みにかかるプロセスの実行 時間 0 5 10 15 20 25 30 35 1 2 3 4 5 6 7 8 9 10 1MBファイルの連続書き込み回数 時 間(S ec .) MoraineUFS

(19)

実験(サイズ)

学生のプログラム演習に適用

Student1 Student2 Student3

LOC 9339 4067 2543 ファイル数 45 20 18 最終ファイルサ イズ (KB) 225 117 73 総バージョン数 533 249 357 ソースコードの 総バージョン数 311 147 247

(20)

実験(サイズ) 続き

225 1388 117 546 73 604 0 200 400 600 800 1000 1200 1400 KB

Student1 Student2 Student3

UFS

(21)

メトリクス計測システム

MAME

ファイルの開発者,バージョン数,日 時などを指定し,プロダクトに関する メトリクスを計測する 時間軸やバージョンの数の推移によっ て、メトリクスがどう推移しているか 分かる

(22)

MAME の設計方針

開発者の環境を変更する必要はない 様々なデータを自動的に収集する 粒度自在 開発中、開発後にかかわらずメトリク スが取得可能

(23)

MAME のアークテクチャ

開発ツール メトリクス計算 ファイルの読み書き 開発活動 メトリクスデータ VCD HDD VCD VFS UFS RCS Commands Moraine 保存ファイルの取得 開発者 MAME 開発環境

(24)

実験

MAME を学生のプログラム演習に適用 メトリクスは演習終了後に取得した 任意のファイルが更新された時の下記 メトリクスの推移を取得  ファイル数  ファイルの全行数  C 言語でかかれたソースコードの関数の数

(25)

実験結果

横軸はソースコードの累積バージョン数 LOC 0 1000 2000 3000 4000 5000 0 50 100 バージョン数 lin es ファイル数 0 5 10 15 20 25 0 50 100 バージョン数 数 147 147 バージョン数 20-50 で開発は停滞

(26)

実験結果 続き

C言語の関数の数 0 20 40 60 80 100 120 0 50 100 バージョン数 数 開発者は関数のスケルトンを作った後、 中身を書いている 147

(27)

関連研究

ClearCase, PVCS, Visual Source Safe

 開発者はシステムを理解する必要がある

 バージョンの記録は手動で行う

(28)

まとめ

自動的にファイルを保存するファイルシステム Moraine の提案と実装を行った プロダクトに関するメトリクスを収集するシステム MAME の提案と実装を行った  開発者に余分な負担をかけない  実用的な速度で動作可能  いつでも取りたいときに取得可能 今後の課題  大規模ソフトウェアによる評価実験  メトリクス問い合わせ言語の構築

(29)

類似度計測システム SMMT

[4

章 ]

ドキュメントなどが存在すれば、複数の 類似システム間の相違点を知ることは可 能であろうが,定量的な値を得ることは 容易ではない  システムが小規模な場合、そのシステムの 個々の構成要素を人間が調べ値を出すことも 可能  構造が複雑で大規模なシステムでは、何らか の機械的な処理により、自動的に求めること が必須

(30)

目的

二つのソフトウェアシステムの類似度 メトリクス自動的に計測するシステム SMMT(Similarity Metrics Measuring

Tool) の提案と実装

 類似度の形式的な定義を与え、それを求め

るための現実的な方法を示す

 実際に類似度を種々の UNIX 系 OS のいく

(31)

ソフトウェアプロダクトに対

する類似度の一般的定義 (1/2)

ファイルやソフトウェアシステムを抽 象的に表したものをプロダクトと呼ぶ プロダクトは要素の集合とし、 P={p1, …,pm} とあらわす  P をファイルとすると、 pi は各行になる  P をシステムとすると、 pi はファイルにな る

(32)

二つのプロダクト P={p1,…,pm},Q={q1, …,qm} に対し、等価な要素の対応 R⊆ P ×Q が得られるとする P と Q の R に対する類似度 S(0 S 1)≦ ≦ を以下のように定義する

ソフトウェアプロダクトに対

する類似度の一般的定義 (2/2)

Q P R}| ) ,q |(p |{q R}| ) ,q |(p |{p S(P,Q) i i j j i j      P Q

(33)

具体的なメトリクス

等価な行を用いた類似度 Sline  プロダクト P をソフトウェアシステムし、 要素をシステムを構成するファイルの行と する  対応 R は各行の対応とする ファイル名やファイルの大きさに影響さ れない

(34)

S

line

の要素の対応

Sline を計算するための R を求める方法  CCFinder と diff を組み合わせ対応 R を求める  CCFinder — コードクローン検出ツール  ソースコードを入力としてコードクローンを出力する  diff — ファイルの差分抽出ツール  二つのファイル間の行単位の差分を求める  CCFinder でクローンが見つかったファイルの ペアに対して diff を実行する

(35)

CCFinder と diff を用いる理

diff だけを用いると、すべてのファイル の組み合わせに対して実行する必要があ る CCFinder でクローンを持つファイルの組 を見つけ、その組に対してのみ diff を実 行する

(36)

SMMT の処理概要

前処理 Step1 CCFinder の実行 Step2 diff の実行 Step3 対応の 抽出 Step4 類似度の 計算 Step5 P Q 類似度 前処理後の P 前処理後の Q CCFinder の実行結果 diff の実行結果 抽出結果 SMMT

(37)

実験

UNIX 系 OS を用いて類似度を計算した  4.4BSDLite, 4.4BSDLite2  FreeBSD2.0, 2.0.5, 2.1, 2.2, 3.0, 4.0  NetBSD1.0, 1.1, 1.2, 1.3, 1.4, 1.5  OpenBSD2.0, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8 23 個の OS のすべての組み合わせで Sline を求 めた カーネル部分の C 言語のソースのみ

(38)
(39)

同一種類の OS 間での類似度

(40)

異なる種類の OS 間での類似

FreeBSD3.0 と NetBSD1.3 で 4.4BSDLite2 が取り込ま れている 0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 NetBSD 1.0 NetBSD 1.1 NetBSD 1.2 NetBSD 1.3

(41)

クラスタ分析

Sline を距離と考え、クラスタ分析を行っ

(42)

まとめ

二つのソフトウェアシステムの類似度 を提案し、計測システム SMMT を構築 した SMMT を UNIX 系 OS に適用した 今後の課題  類似部分から再利用可能な部品の抽出

(43)

むすび

堆積型ファイルシステム Moraine 、およ び MAME の提案と実装  開発者に特別な操作を必要とせず、自動的に 細かい粒度で保存する 類似度計測システム SMMT の提案と実装  ソフトウェア間の類似度を計測し、類似度か らソフトウェアの派生を知ることが可能にな る

(44)
(45)

実験(書き込み) 続き

Moraine+Sync: 完全に書き込みが終わる間の時 間 0 5 10 15 20 25 30 35 1 2 3 4 5 6 7 8 9 10 1MBファイルの連続書き込み回数 時 間(S ec .) Moraine+Sync Moraine UFS

参照

関連したドキュメント

12月 米SolarWinds社のIT管理ソフトウェア(orion platform)の

第二運転管理部 作業管理グループ当直長 :1名 第二運転管理部 作業管理グループ当直副長 :1名 第二運転管理部 作業管理グループメンバー :4名

Zeuner, Wolf-Rainer, Die Höhe des Schadensersatzes bei schuldhafter Nichtverzinsung der vom Mieter gezahlten Kaution, ZMR, 1((0,

はじめに 中小造船所では、少子高齢化や熟練技術者・技能者の退職の影響等により、人材不足が

2000 年、キリバスにおいて Regional Energy Meeting (REM2000)が開催され、水素燃 料電池、太陽電池、風力発電、OTEC(海洋温度差発電)等の可能性について議論がなさ れた 2

回収数 総合満足度 管理状況 接遇 サービス 107 100.0 98.1 100 98.1 4

[r]

This Policy Proposal reflects the results of a 3 year international research program undertaken by the Ocean Policy Research Foundation (OPRF), the Australian National Centre