版管理とソフトウェアの再利用 における支援に関する研究 大阪大学 大学院基礎工学研究科 情報数理系専攻 ソフトウェア科学分野 山本哲男 1 背景 ハードウェアの価格の低下とその機能の向上にともな い、ソフトウェアシステムは年々大規模化・複雑化し ている ソフトウェアの構築や保守にかかるコストが増大し、 多くの労力が必要 保守支援手法 版(バージョン)管理、プログラム理解支援、・・・ 構築支援手法 再利用、設計方法論、・・・ 2 問題点 既存のバージョン管理手法 プロダクトの作成,変更作業の逐次的な記録や 追跡を支援するシステム ユーザの負担が大きい 保存する間隔が粗い 3 問題点 続き 既存の再利用手法 粒度の細かい再利用(ライブラリ等) より大規模なシステムレベルでの再利用が求めら れている B社 D社 A社 C社 C社 4 目的 新しい版管理手法・版管理システムの提案 ユーザの保存したファイルを特別な操作を必要と せず自動的に記録するシステム 大規模システムレベルでの再利用のためのシ ステム類似度の提案 ソフトウェアシステム間の類似度を用いた派生関 係を計測するシステム 5 論文の構成 第1章 まえがき 第2章 堆積型ファイルシステムMoraineの提 案と実装[3,4] 第3章 メトリクス環境MAMEの提案と実装 [1,5] 第4章 類似度計測ツールSMMTの提案と実 装[2] 第5章 むすび 6 堆積型ファイルシステムMoraineと メトリクス計測システムMAME[2,3章] 1995年のHDD容量 -------- 0.54Gbytes 空き容量 0.39Gbytes Linux (Slackware2.2[Basic Applications+X window]) 0.15Gbytes 7 HDD容量の変遷 2001年のHDD容量 --------0.39Gbytes 80Gbytes 200倍 空き容量 79Gbytes Linux (RedHat7[Basic Applications+X window]) 1Gbytes 6倍 0.15Gbytes 8 空き容量の使用 一般ユーザ JPEG, MPEG, MP3, HTML, ... ソフトウェア工学に携わる者 ? バージョン管理手法は限られたHDD容量の 基で考案、開発されている ユーザが手動で保存 9 ソフトウェアプロダクトの保存 昔のHDDは高価で現実的に不可能 FreeBSD 2.0 100Mbytes 1994 FreeBSD 4.4 27 リリース 320Mbytes 2001 履歴の総サイズ 1.2Gbytes 現在のHDD容量はソフトウェアの履歴を保存 するのに十分な容量を持っている 10 MoraineとMAMEの開発 二つのシステムを構築した 自動的にプロダクトを保存する ⇒堆積型ファイルシステム Moraine 定量的なメトリクス計測基盤 ⇒メトリクス計測システム MAME (Moraine As a Metrics Environment) 11 Moraineの設計方針 自動的に保存 すべてのファイルを細粒度で自動的に保存する 容易な操作 開発者はMoraineについて特別な知識を必要としない。 通常の読み出し、書き込み操作をシステムがつかまえるこ とで以前と同じ環境で作業が行える オープンな構造 Moraine で保存するファイルは既存のツールを利用して行 う 12 Moraineの特徴 Moraine は常に最新のバージョンのみを開発 者に見せる Newer 実際のファイル構造 リポジトリ 開発者 操作 最新バージョン 開発者の視点 13 Moraineのアーキテクチャ User Process VFS Vertical File System UFS Unix File system VCD Version Control Daemon バージョン管理サブシステム RCS VCS VFS を実際のファイルシステムの上に論理 管理コマンド群 的なファイルシステムとして存在するように -retrieve versions HDD -show a delta 実現 14 VCD はバージョン管理サブシステムを結ぶ 役割を果たすプロセス Moraineのアーキテクチャ User Process VFS Vertical File System VCD Version Control Daemon 管理コマンド群は通常の操作では行えない バージョン管理サブシステム UFS 操作を行うコマンド群 Unix File system RCS VCS 管理コマンド群 バージョン管理サブシステムはバージョン間の -retrieve versions HDD -show a delta 差分計算といった実際にバージョンを記録す る作業を行う部分 15 実験 Moraineが実用的かどうかについて実験を 行った システムの性能と保存データサイズ UFS (UNIX file system) と比較 計測環境 Pentium 166MHZ/48MB RAM 16 実験(読み出し) 時間 (Sec.) ファイルの読み出しにかかるプロセスの実行時間 10 9 8 7 6 5 4 3 2 1 0 Moraine UFS 1 2 3 4 5 6 7 8 1MBファイルの連続読み出し回数 9 10 17 実験(書き込み) ファイルの書き込みにかかるプロセスの実行時間 35 時間 (Sec.) 30 Moraine UFS 25 20 15 10 5 0 1 2 3 4 5 6 7 8 1MBファイルの連続書き込み回数 9 10 18 実験(サイズ) 学生のプログラム演習に適用 Student1 Student2 Student3 LOC 9339 4067 2543 45 20 18 ファイル数 225 117 73 最終ファイルサイズ (KB) 総バージョン数 ソースコードの 総バージョン数 533 249 357 311 147 247 19 実験(サイズ) 続き 1400 1388 UFS 1200 Moraine 1000 KB 800 600 400 225 200 0 604 546 Student1 117 Student2 73 Student3 20 メトリクス計測システムMAME ファイルの開発者,バージョン数,日時などを 指定し,プロダクトに関するメトリクスを計測す る 時間軸やバージョンの数の推移によって、メトリ クスがどう推移しているか分かる 21 MAMEの設計方針 開発者の環境を変更する必要はない 様々なデータを自動的に収集する 粒度自在 開発中、開発後にかかわらずメトリクスが取得 可能 22 MAMEのアークテクチャ 開発者 開発活動 開発環境 メトリクスデータ MAME 開発ツール ファイルの読み書き メトリクス計算 VFS UFS HDD Moraine VCD RCS 保存ファイルの取得 Commands 23 実験 MAMEを学生のプログラム演習に適用 メトリクスは演習終了後に取得した 任意のファイルが更新された時の下記メトリク スの推移を取得 ファイル数 ファイルの全行数 C言語でかかれたソースコードの関数の数 24 実験結果 横軸はソースコードの累積バージョン数 LOC ファイル数 5000 20 4000 15 3000 lines 数 25 10 2000 5 1000 0 0 0 50 100 147 0 バージョン数 50 147 100 バージョン数 バージョン数20-50 で開発は停滞 25 実験結果 続き C言語の関数の数 120 100 数 80 60 40 20 0 0 50 100 147 バージョン数 開発者は関数のスケルトンを作った後、中身 を書いている 26 関連研究 ClearCase, PVCS, Visual Source Safe 開発者はシステムを理解する必要がある バージョンの記録は手動で行う 保存したバージョンの二次利用が困難 27 まとめ 自動的にファイルを保存するファイルシステムMoraine の提案と実装を行った プロダクトに関するメトリクスを収集するシステムMAME の提案と実装を行った 開発者に余分な負担をかけない 実用的な速度で動作可能 いつでも取りたいときに取得可能 今後の課題 大規模ソフトウェアによる評価実験 メトリクス問い合わせ言語の構築 28 類似度計測システムSMMT[4章] ドキュメントなどが存在すれば、複数の類 似システム間の相違点を知ることは可能 であろうが,定量的な値を得ることは容易 ではない システムが小規模な場合、そのシステムの 個々の構成要素を人間が調べ値を出すことも 可能 構造が複雑で大規模なシステムでは、何らか の機械的な処理により、自動的に求めること が必須 29 目的 二つのソフトウェアシステムの類似度メトリクス 自動的に計測するシステムSMMT(Similarity Metrics Measuring Tool)の提案と実装 類似度の形式的な定義を与え、それを求めるた めの現実的な方法を示す 実際に類似度を種々のUNIX系OSのいくつかの バージョンに適用した結果を示す 30 ソフトウェアプロダクトに対する類似 度の一般的定義(1/2) ファイルやソフトウェアシステムを抽象的に表し たものをプロダクトと呼ぶ プロダクトは要素の集合とし、P={p1,…,pm}と あらわす Pをファイルとすると、piは各行になる Pをシステムとすると、piはファイルになる 31 ソフトウェアプロダクトに対する類似 度の一般的定義(2/2) P Q 二つのプロダクト P={p1,…,pm},Q={q1,…,qm}に対し、等価 な要素の対応R⊆P×Qが得られるとする PとQのRに対する類似度S(0≦S≦1)を以下の ように定義する |{pi|(pi,qj) R}| |{qj|(pi,qj) R}| S(P,Q) PQ 32 具体的なメトリクス 等価な行を用いた類似度Sline プロダクトPをソフトウェアシステムし、要素をシステ ムを構成するファイルの行とする 対応Rは各行の対応とする ファイル名やファイルの大きさに影響されない 33 Slineの要素の対応 Slineを計算するためのRを求める方法 CCFinderとdiffを組み合わせ対応Rを求める CCFinder — コードクローン検出ツール ソースコードを入力としてコードクローンを出力する diff — ファイルの差分抽出ツール 二つのファイル間の行単位の差分を求める CCFinderでクローンが見つかったファイルのペアに 対してdiffを実行する 34 CCFinder と diff を用いる理由 diff だけを用いると、すべてのファイルの組み合 わせに対して実行する必要がある CCFinder でクローンを持つファイルの組を見つ け、その組に対してのみ diff を実行する 35 SMMTの処理概要 P SMMT 前処理後のP Step1 Step2 前処理 Q Step3 CCFinder CCFinder diff の実行結果 の実行 の実行 前処理後のQ diff の実行結果 Step4 対応の 抽出 抽出結果 Step5 類似度 類似度の 計算 36 実験 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言語のソースのみ 37 38 同一種類のOS間での類似度 FreeBSD 2.2との間の類似度 39 異なる種類のOS間での類似度 FreeBSD3.0とNetBSD1.3で4.4BSDLite2が取り込まれてい る 0.5 NetBSD 1.0 0.45 NetBSD 1.1 0.4 NetBSD 1.2 0.35 NetBSD 1.3 0.3 0.25 0.2 0.15 0.1 0.05 0 FreeBSD 2.0 FreeBSD 2.0.5 FreeBSD 2.1 FreeBSD 2.2 FreeBSD 3.0 FreeBSD 4.0 40 クラスタ分析 Slineを距離と考え、クラスタ分析を行った 41 まとめ 二つのソフトウェアシステムの類似度を提案し、 計測システムSMMTを構築した SMMTをUNIX系OSに適用した 今後の課題 類似部分から再利用可能な部品の抽出 42 むすび 堆積型ファイルシステムMoraine、および MAMEの提案と実装 開発者に特別な操作を必要とせず、自動的に細 かい粒度で保存する 類似度計測システムSMMTの提案と実装 ソフトウェア間の類似度を計測し、類似度からソフ トウェアの派生を知ることが可能になる 43 終 44 実験(書き込み) 続き Moraine+Sync: 完全に書き込みが終わる間の時間 35 Moraine+Sync Moraine UFS 時間 (Sec.) 30 25 20 15 10 5 0 1 2 3 4 5 6 7 8 1MBファイルの連続書き込み回数 9 10 45
© Copyright 2024 ExpyDoc