社団法人 電子情報通信学会
THE INSTITUTE OF ELECTRONICS,
INFORMATION AND COMMUNICATION ENGINEERS

信学技報
TECHNICAL REPORT OF IEICE.

関数の変更履歴と呼出し関係に基づいた開発履歴理解支援システム
中山

崇†

松下

誠†

井上 克郎†† 大阪大学大学院情報科学研究科 〒 560–8531 大阪府豊中市待兼山町 1 番 3 号
E-mail: †{t-nakaym,matusita,inoue}@ist.osaka-u.ac.jp
あらまし オープンソースソフトウェアの開発を行う際には, 開発されたプロダクトを管理する為にリビジョン管理シ
ステムが用いられる. リビジョン管理システムは過去の開発履歴を保持しており, それを利用して効果的な開発を行うことが出来ると考えられる. しかし開発が進むにつれてこれらの情報は膨大になる為, 必要な情報を的確に取得することは容易ではない. そこで本研究では, 蓄積されたソフトウェアの開発履歴を解析し, 開発者が必要とする開発履歴情報の検索・閲覧を行うシステム CREBASS を試作した. さらに実際のソフトウェア開発で用いられた版管理システムの開発履歴情報を用いて本システムの評価を行った. その結果, 本システムを用いることで, 開発者は開発履歴から有益な情報を入手することが可能となり, 現状の問題点が解決されることを確認した.
キーワード

リビジョン管理，クロスリファレンス，リポジトリ，検索

Software Development Recognition Supporting System Using Revision
History and Function Calling Relationship
Takashi NAKAYAMA† , Makoto MATSUSHITA† , and Katsuro INOUE†† Graduate School of Information Science and Technology, Osaka University
1–3, Machikaneyama–cho, Toyonaka–shi, Osaka, 560–8351 Japan
E-mail: †{t-nakaym,matusita,inoue}@ist.osaka-u.ac.jp
Abstract Revision control system (RCS) is used for managing software products efficiently. Usually, RCS saves
all software products from the beginning of target software development which have lots of valuable information
for future software development and it could be used for recognizing software development itself. However, theseinformation tends to be larger as time have past, it would be hard to grasp what was happened. In this study, I
implement a system which extract software development information, search the information, and show them via
web browser. Also I applied this system to actual software development information, and evaluate system adequacy.
As a result, I confirmed this system enables developers to retrieve more useful information.
Key words Revision Control, Cross Reference, Repository, Search

1. ま え が き
オープンソースソフトウェアの開発規模の増大に伴い, その開発形態は多人数化, 分散化している. 大規模なオープンソース

ン管理システムは, プロダクトの開発履歴をリポジトリと呼ばれるデータベースに格納して管理する. リポジトリに含まれる履歴の中には, 将来の開発に活用することの出来る情報が多く蓄積されている.

ソフトウェア開発では, 複数の開発者が互いにソースコードを

ソフトウェアを再利用する際, これらの履歴情報を閲覧する

共有しながら同時に一つの開発作業に携わることが一般的になことによって, 以前の開発についてより深い理解が得られ, 開発

りつつある. またインターネットに代表されるネットワーク環の手助けになることが知られている [9]. しかし, 蓄積された膨境の発展に伴い, 分散した多くの開発者が異なる場所で開発作

大な情報の中から, 開発者が必要とする情報を的確に取得する業を行うことも多い.

ことは容易ではない. 例えば, ある機能の欠陥を修正する為に,このように複雑化しているソフトウェアシステムを効率よく一見無関係に見える複数のファイルが同時に修正される, など管理する為, 近年のオープンソースソフトウェア開発では, リビという状況が考えられる. このとき, 後からその履歴を閲覧する

ジョン管理システムを用いることが多くなっている. リビジョ

開発者は, 修正されたファイルがどれであるかを知ることすら—1—

困難である.
本研究では, この問題を解決する為のソフトウェア開発支援
環境の構築を行う. 具体的には, リポジトリに蓄積されたソフト
ウェアの開発履歴を解析し, 開発者が必要とする開発履歴情報

LM

ACB

の検索・閲覧を行うシステムの試作を行う. 本システムは, 開発
履歴情報の特定の為のリビジョン検索, 及びヒストリイベント

DFE.GHJI$K

検索, そしてソフトウェア開発の具体的な手法を閲覧する為のリビジョン関係を考慮した関数クロスリファレンサなどを持つ





システムであり, これらの機能を提供することでオープンソー
スソフトウェア開発の支援を行う. 例えば, リビジョン検索やヒストリイベント検索を用いての修正箇所の特定や, 関数クロス
リファレンサを用いての実装の詳細の理解における支援を行う.
また, 実際のオープンソースソフトウェア開発で用いられた
リポジトリを用いて本システムの適用実験を行なった. 具体的-, ,.,/ 021436587:9 ; <= >?@ !#"$ %&('*)+には, 実際のソフトウェア開発で蓄積された開発履歴情報を用
いて, 過去の開発情報の検索・閲覧及び理解が出来るか実験し

図1た. その結果, 本システムを用いることで, 開発者は有益な情報を入手することが可能となり, 現状の問題点が解決されることが確認できた. このことにより, ソフトウェア開発者の負担が軽減され, ソフトウェア生産性の向上が期待できる.
以降, 2 節では版管理システム CVS と既存の開発履歴閲覧シ
ステム, そしてその問題点について述べる. 3 節ではシステムの概要と設計について述べ,4 節ではそのシステムの実装について
述べる.5 節では本システムに対して検証を行う. 最後に 6 節で本研究のまとめと今後の課題について述べる.

2. 版管理システムを用いたソフトウェア開発
本節では, オープンソースソフトウェア開発などで一般的に用いられている版管理システム CVS と, その中に蓄積された開発履歴を閲覧する為のシステムについて述べる. また既存の開発履歴閲覧システムが抱える問題点について指摘する.

2. 1 オープンソースソフトウェア開発環境
オープンソースソフトウェア開発では, 各開発者がそれぞれ分散して並列的に開発作業を行うことが可能である. その一方で,開発中のソースコードやドキュメントなどのプロダクトを広く公開するため, それらの管理を行う必要がある. そこで, オープ
ンソースソフトウェア開発に参加する開発者は, オープンソー
スソフトウェア開発環境と呼ばれる環境の中でプロダクトの管理を行う. オープンソースソフトウェア開発環境の構成例を図1 に示す.
オープンソースソフトウェア開発環境は一般に複数の既存システムから構成される. 図 1 の構成例の場合, ソースコードやドキュメントなどのプロダクトは, 版管理システム [6] の一つである CVS(Concurrent Versions System) [3] [7] [12] を用いて管理される. また CVS に蓄積された開発履歴情報は CVSWeb などの開発履歴閲覧システムを用いて閲覧することが出来る. このようにして開発されたプロダクトは, rsync や ftp を利用して,各開発者に複製, 配布される. また開発者間の意思疎通の手段として, 電子メールやメーリングリストが用いられる. その内容
はアーカイブとして保存され,WWW(World Wide Web) を用

オープンソースソフトウェア開発環境の構成例

いた検索エンジンによって自由に検索や閲覧が可能である.
以下では, これらのシステムの中からオープンソースソフト
ウェア開発で広く用いられる版管理システム CVS と開発履歴
閲覧システムについて説明する.

2. 2 オープンソースソフトウェア開発で用いられるシステム•

版管理システム CVS

CVS は UNIX 上で動作するシステムとして構築された版管理システムであり，近年最も良く使われるシステムの１つである．CVS は複数のファイルを処理でき, またリポジトリを複数の開発者で利用することも考慮し，開発者間の競合にも対処可能となっている．さらに，ネットワーク環境を用いた分散開発を行うことも出来る為, Apache [1] や FreeBSD [10] 等, オープ
ンソースソフトウェア開発やグループウェアなどで用いられている.
次に CVS を使う上で良く用いられる用語について説明する.

CVS では, プロジェクトの開発履歴をリポジトリというデータ
ベースにリビジョンの列として格納する. このリビジョンとはプロジェクトのある時点でのスナップショットを表すものである. 開発者はチェックイン, チェックアウトという作業を行って,リポジトリから特定のリビジョンを取得したり, 変更内容をリポジトリに反映したりといったことを行う. チェックイン時にはログメッセージというコメントを添えることで, そのチェックイ
ンを行う意図をはっきりさせる. また, あるリビジョンからバ
グ修正などの為に新たにリビジョン列を派生させることも出来る. この派生したリビジョン列をブランチという. このようにして得られるリビジョン列は一般に木構造をなしている為, リビ
ジョンツリーと呼ばれる.

•

CVSWebCVSWeb [5] は CVS リポジトリ内に保存されている開発履歴情報を Web ブラウザ経由で視覚的に閲覧できるシステムである.
このシステムは, プロジェクト内のファイル階層の閲覧や, 各—2—

ファイルのチェックインの履歴の確認, 各リビジョンの内容の表(Cvs REpository Browse And Search System) について説明示, そしてあるファイルの任意のリビジョン間の差分を色付きする.

で表示する機能なども持っている.

•

図 2 に CREBASS の概要を示す.

ViewCVS

ViewCVS [11] は CVSWeb と同様に CVS リポジトリ内の開発履歴情報を Web ブラウザ経由で閲覧できるシステムである.
このシステムは CVSWeb の機能に加え, 正規表現やワイル
ドカードを用いたリビジョン検索や正規表現を用いたファイルの検索, そして CVSGraph [4] を用いたリビジョンツリーの視覚的表示などが行える.

2. 3 問 題 点
版管理システムと履歴閲覧システムを用いてソフトウェアの開発作業を行う場合, 以下のような問題点がある.

•

リビジョン検索機能を持たない

版管理システムを用いた開発を行う時, 過去のソースコード

図 2 CREBASS の概要や変更内容を, 新たな開発に再利用するといったことが行われる. このとき, 開発者は自分の開発内容に関連するリビジョンをリポジトリから探し出す必要があるが, プロダクトの過去の開発状況を熟知していない限り, 莫大な履歴情報から開発者が欲するリビジョンの情報を即座に取得するのは非常に困難である.
リビジョン検索機能がないと過去の開発履歴情報を利用するこ

3. 1 システムの概要
本システムは, 前節で述べた問題点を解決する為に, 以下の機
能を持つ.

•

各リビジョンの更新作業に関する情報を指定した条件とが困難になると考えられる.

•の元で検索する機能である.

開発された時期を考慮した関数の参照元と定義を得るの

検索条件としては, リビジョンの更新日時, 更新作業者,が困難

更新作業を象徴するキーワード, リビジョンが所属す

版管理システムを用いた開発を行う時は, 必ずしも最新版のるブランチ名, そしてファイルが存在するディレクト

ソースコードを編集することになるとは限らない. 例えば, 過去

リ名を指定することが出来る.

の安定版のソースで見つかったバグを修正する時は, 最新版の検索を実行すると指定した条件に合致するリビジョン

ソースを編集するのではなく, 安定版のリビジョンからバグ修の情報が列挙される. 各リビジョン情報にはファイル

正用のブランチを派生させて作業を行うことが多い. このよう名, リビジョン番号, 更新日時, 更新作業者, 所属ブラン

な状況下では過去のリビジョンのソースコードを理解する必要

チ名, ログメッセージ, そしてキーワードが記載されてがあるが, そのリビジョンから参照している関数の, その時点でいる.

の関数定義を取得することは既存のシステムでは不可能である.

この機能を用いることで, 自分の興味がある開発履歴を

このことは過去のソースコードの理解の大きな障壁になっていリポジトリから容易に取り出すことが可能になる. 例

ると考えられる.

•

えばあるディレクトリ以下のファイルに対して行った,

開発履歴の追跡を単一ファイルでしか行えないある開発者の更新作業の検索といったことが行える.

一般的に, システムの 1 つの機能を複数のソースファイルを用いて実装することは珍しくない. このような機能の開発作業

リビジョン検索機能•

リビジョン関係を考慮した関数クロスリファレンス機能の流れを理解するには, その機能を実装している全てのファイ

ソースコードを閲覧中に関数を参照している箇所をク

ルの開発履歴を同時に追跡する必要がある. しかし既存のシスリックすることで, その関数の, 閲覧中のリビジョンのテムでは単一ファイルの開発履歴を追うことしか出来ず, 開発

時点での定義元へとジャンプする機能である.

作業におけるファイル間の関係を把握することが困難である.

過去のリビジョンのソースコードを閲覧中に, そこから参照している関数の実装がどのようになっているか

これらの問題点は開発者への負担を増加させ, 開発効率の低調べたいことがある. しかしその関数の仕様が現在と下を招いていると考えられる. そこで以上の問題点を解決する

その時点で等しいとは限らないので出来る限り時間的ことを目的とした, 開発履歴閲覧システム CREBASS を設計,に対応する関数定義を得たい. この機能を用いること

試作した.

で既存システムでは多大な労力がかかるこの操作をリ

3. CVS リポジトリ閲覧・検索システム CREBASS
本節では, 試作した開発履歴理解支援システム CREBASS

ンクのクリックだけで行うことが出来る.

•

プロジェクトデータの変遷の折れ線グラフによる表示

機能

—3—

ファイルの総行数, 編集量, 累計 commiter 数の変遷を

各ファイル, リビジョンの総行数, 編集量, 累計 com-

折れ線グラフにして表示する機能である.

miter 数をデータベース化したもの. これらの情報につ入力として対象のファイル名とブランチ名を与えるこいての折れ線グラフの描画の際に用いる.

とで, そのブランチ上における対象ファイルの変遷を•

折れ線グラフとして閲覧することが出来る.

リポジトリに対してこれまでに起きたヒストリイベン

入力にはファイル名だけではなくディレクトリ名を与トをデータベース化したもの. ヒストリイベントの検えることも出来る. この場合は指定されたディレクト

索の際に用いる.

リ以下の全ファイルの値を足しあわせたものがグラフ化の対象となる. これによって複数のファイルの変遷をまとめてみることが可能となる.
また 1 つのグラフ上に複数の対象を同時にグラフ化することも出来る. これによって複数対象間の開発履歴

3. 3 ユーザインターフェース
この部分はユーザと各データベースを結ぶインターフェースの役割を果している. 開発者から要求を受けると CVS リポジト
リやデータベースと連結し, 要求されたデータを表示する.

•の違いを確認することが可能となる.

•

cvs history 情報データベース

あるディレクトリの中にどのようなファイルやサブ

CVS history 情報の検索機能
CVS には history というコマンドがあり, それを用いディレクトリが存在するかを確認できる.

•ることによって過去, リポジトリに対して起きたイベ

グ付けなどのリポジトリに対するアクションのことを

出来る.

•

差分表示部
あるファイルの 2 つのリビジョン間の内容の差分を表指す. 本システムではこのイベント情報をデータベー示する. 前のリビジョンからどの行が削除され, どの行ス化し, 検索する機能を持つ.

が加えられ, そしてどの行がどのように変更されたか

検索条件としては, 検索するイベントの種類, イベントを判別しやすいようにそれぞれの場合について別の色を起こしたユーザ, 検索する期間, そして検索対象とす

で背景を塗り, わかりやすいように表示する.

るディレクトリを指定することが出来る.
検索を実行すると指定した条件に合致するヒストリイ

ファイルログ表示部
あるファイルのコミットログの履歴を確認することがントのヒストリを得ることができる. ここで言うイベ
ントとはファイルのチェックイン, チェックアウト, タ

ディレクトリ構造表示部•

コード表示部

ベントの情報が列挙される. 各ヒストリイベント情報あるファイルのあるリビジョンの内容を表示する.

にはイベントの種類, イベントが起きた日時, イベント

そのファイルが C 言語のソースファイルであった場を起こしたユーザ, そして各イベントに特有の情報が合は, ここにリビジョン関係を考慮した関数クロスリ記載されている. また複数のイベントが同時に発生しファレンス機能が加わる. 関数を参照している箇所にたと考えられるときはそれらのイベントをまとめて一はリンクが張ってあり, そこをクリックするとそのリまとまりのヒストリイベントとして表示するといったビジョンのチェックイン時点での関数定義元へとジャことも行う.

ンプする.

これらの機能の他に既存のシステムにもあるような, ディレ•

リビジョン検索部

クトリ構造の表示機能, 任意のリビジョン間の差分表示機能,指定した条件に合致するリビジョンを検索する. 指定

ファイルログ表示機能, そして各リビジョンの内容の表示機能

する条件の種類には更新日時, 更新作業者, キーワードを持つ.

がある. また検索する範囲をディレクトリ名やブラン
チ名を指定して絞ることも出来る.

3. 2 データベース
本システムでは以下の 4 つのデータベースを用いることによ•りユーザに有用な情報の提示を行う.

•

•

•

プロジェクトデータ閲覧部
ファイル, もしくはディレクトリ下のファイルの総行

関数定義・参照情報データベース

数, 編集量, 累計 commiter 数の折れ線グラフを生成しあるリビジョンの何行目に何の関数の定義があるのか,て表示する. 複数のファイル, ディレクトリのグラフを

また何行目で何の関数を参照しているかをデータベー

同時に表示してそれぞれを比較することも出来る. まス化したもの.C 言語のソースコードを表示する際のクたブランチ名を指定することでグラフ化の対象をそのロスリファレンスの構築に用いる.

ブランチのみに絞ることも出来る.

リビジョン情報データベース•

cvs history 表示部

各リビジョンのチェックインの情報をデータベース化

過去にリポジトリに起きたイベントを検索, 表示する.

したもの. リビジョン検索の際に用いる.

検索時にはイベントの種類, イベントを起こしたユー

プロジェクトデータベース

ザ名, 期間, そしてディレクトリを指定することが出来,その条件に合致するイベント情報群が時系列で表示さ—4—れる. このとき同時に起きたと考えられる複数のイベント情報群は 1 つにまとめて表示される.

4. CREBASS の実装
本節では, これまで述べた開発履歴理解支援システム CRE-

BASS の実装を行なった. 開発には Java を用い, コードサイズ
は全体で約 9100 行となった. 開発環境は以下のとおりである.

•

CPU:Penitum4 1.5GHz•

RAM:512MB•

OS:FreeBSD 4.9-STABLE•

データベース:GNU GDBM 1.8.3•

WEB サーバ:Jakarta Tomcat 5.0.16•

JDK 1.4.2

図3

ディレクトリ構造表示画面

4. 1 データベース
必要な情報を容易に取得できるように, あらかじめ CVS リポ
ジトリを解析してデータベースを作成しておく.

CVS のリポジトリは, プロジェクト中の各ファイル毎に作成
図4

リビジョン検索画面

図5

総行数の折れ線グラフ

された RCS 形式のファイルの中に過去の変更履歴が保存されている. 本システムではこの RCS ファイルを解析することで必要な開発履歴情報の抽出を行う.
関数定義・参照情報データベースでは関数の定義位置情報な
どの, リビジョン関係を考慮した関数クロスリファレンサを構築する上で必要な情報をデータベース化し, リビジョン情報デー
タベースでは各リビジョンの情報とリビジョン検索で用いる情報をデータベース化する. またプロジェクトデータベースでは各種情報の折れ線グラフの作成に必要な情報をデータベース化
し, ヒストリ情報データベースではヒストリ検索に必要な情報をデータベース化する.

4. 2 ユーザインターフェース
ユーザインターフェース部はユーザからの要求を受けて, リ
ポジトリやデータベースから情報を取り出し, 表示する.
例えばリビジョン検索部 (図 4) では, リビジョン情報データ
ベースと連結してリビジョン情報の検索, 表示を行う. 同様にヒストリ情報検索部 (図 6) やプロジェクトデータ閲覧部 (図 5) でもヒストリ情報データベースやプロジェクトデータベースと連結して各機能を実現している.
また, ディレクトリ構造表示部 (図 3), ファイルログ表示部,
差分表示部は CVS リポジトリから必要な情報を取り出して開図 6 cvs history 表示画面

発者に対して提示する. コード表示部も, ファイルの中身や各リビジョンの情報はリポジトリから取得するが, コード中に関数を参照している箇所が存在する時は関数定義・参照情報デー
タベースと連結して, リビジョン関係を考慮した関数クロスリ
ファレンス機能を実現する.

5. 適 用 実 験
本節では実際にシステムを動作し, 得られた結果について考察する.

5. 2 実験の内容
2003 年 3 月 17 日に OpenSSL v0.9.7a と v0.9.6i に対する
パッチのリリースが行なわれた. このパッチは, ホストの秘密鍵が流出する可能性があるという,RSA blinding に関する脆弱性を修正する為のものである. 今, 利用者はこのパッチによるソフ
トウェアへの変更点の詳細を確認したいものとする.
まず利用者はこのパッチに関する変更箇所を確認する為に,

5. 1 実 験 対 象

リビジョン検索機能を用いて,2003 年 3 月 15 日から同 20 日ま

CREBASS 内に保持するデータとして,OpenSSL [8] の CVS

でにチェックインされ, かつキーワード RSA を持つリビジョン

リポジトリとそこから得られるデータを用いた.

を検索した.

—5—

検索を行なった結果,7 つのリビジョンが条件に一致するもの

きるようになっているが, この選択で必ずしも正しい定義元をとして表示された. 表示された結果を見ると, そのうち 3 件が選択できるとは限らず, 間違った関数定義情報を取得してしま

ben というユーザによって同時にチェックインされたリビジョ

う恐れがある.

ン, 残り 4 件が bodo というユーザによって同時にチェックイン
されたリビジョンであることがわかった.

6. ま と め

チェックインの内容を確認する為にログメッセージを確認

本研究では CVS リポジトリに蓄積されたリビジョン情報をすると, ben のチェックインには”Turn on RSA blinding by

解析して, 開発履歴情報の閲覧・検索を行ない, ユーザの開発履

default.” と書かれていた. また ben がチェックインを行なっ

歴理解を支援するシステムを作成した. 本システムは各ファイ

た openssl/CHANGES ファイルを読むと, タイミング攻撃をルの開発履歴や任意のリビジョン間の差分表示の他に, リビジョ回避する為に,RSA blinding をデフォルトでオンにするというン関係を考慮した関数クロスリファレンス, 更新日時・更新作業

記述が確認できた. 以上のことから ben のチェックインは RSA

者・キーワードによるリビジョン検索, 任意のファイル, もしくblinding に関する脆弱性を修正する為のものであることが確認

はディレクトリ下のファイル群の開発情報の遷移を折れ線グラできた.

フで視覚的に確認する機能, 過去にリポジトリに対して起こっ

次に RSA blinding をデフォルトでオンにする為の具体的なたヒストリイベントを検索・表示する機能などがある. そして

修正内容を確認する為に, チェックインされた他の 2 つのファイ

実際のソフトウェア開発で蓄積された開発履歴情報を用いて適ルの差分を確認することにした. すると新たに関数とマクロが用実験を行ない, ユーザが必要とする開発履歴情報の閲覧・検定義されており, それらを用いて RSA blinding のデフォルト

索が行なえることを確認した.

での機能使用を行なっていることが確認できた.

今後の課題としては, リビジョン検索時に用いるキーワード

しかし新たに定義された関数内から参照している関数の実装の抽出手法の改善, 関数クロスリファレンサによる関数の参照についてはこのファイルからはわからず, また同時にコミットさ

先特定手法の改善, より大規模なリポジトリによる適用実験, それたファイルからもその記述は発見できなかった. そこでチェッ

して実行速度, 及びスケーラビリティの向上が挙げられる.

クインされたソースコードをコード表示部で表示したところ,
両関数の定義へのリンクが張ってあったので, それをクリックすることでその関数の定義を確認することができた.

5. 3 考察

今回の適用実験から, 利用者は日時やキーワードを用いてリビジョン検索を行うことで自分の知りたい開発履歴情報を検索できることがわかった. またリビジョン関係を考慮した関数ク
ロスリファレンスシステムを用いることで, あるリビジョンのソースコード内で参照している関数の定義を調べることが出来,
ソフトウェアの実装の理解を深めることが出来ることがわかる.
ここで既存のシステムを用いて今回と同じ実験を行うことを考える. CVSWeb ではリビジョンの検索が出来ない為, プロジェ
クトの詳細を理解している人でない限り, 該当する変更箇所がどこであるかを瞬時に捜し出すことは困難である. 一方,ViewCVSや Bonsai [2] などはリビジョン検索機能を持っているが, ログ
メッセージに関する検索を行うことが出来ないので, プロジェ
クトに精通していないユーザは知りたいトピックに関するリビ
ジョンを絞り込むのに困難を要すると思われる. また, 該当する
リビジョンを検索できたとしても, そのリビジョンがその時点で参照している関数の定義を取得する方法が無い為, 対応する
関数定義を得る為には多大な手順が必要であったと考えられる.

文

献[1] The Apache Software Foundation, Apache Projects,
http://www.apache.org/.
[2] Bonsai, http://www.mozilla.org/bonsai.html.
[3] Brian Berliner, “CVS II:Parallelizing Software Development”, In USENIX Association, editor, Proceedings of theWinter 1990 USENIX Conference, pages 341–352, Berkeley,
CA, USA, 1990.
[4] CvsGraph,
http://www.akhphd.au.dk/~bertho/cvsgraph/.
[5] CVSWeb,
http://stud.fh-heilbronn.de/~zeller/cgi/cvsweb.cgi/.
http://www.freebsd.org/projects/cvsweb.html/.
[6] Jacky Estublier, “Software Configuration Management: A
Roadmap”. The Future of Software Engineering in 22nd
ICSE, pp.281–289, 2000.
[7] Karl Fogel, “Open Source Development with CVS”, The
Coriolis Group, 2000.
[8] OpenSSL, http://www.openssl.org/.
[9] Peter H. Feiler, “Configuration Management Models in
Commercial Environments”, CMU/SEI-91-TR-7 ESD-9TR-7, March, 1991.
[10] The FreeBSD Project, The FreeBSD Project,
http://www.freebsd.org/.
[11] ViewCVS,
http://viewcvs.sourceforge.net/.
[12] 鯉江英隆, 西本卓也, 馬場肇, “バージョン管理システム (CVS)の導入と活用”, SOFT BANK, December, 2000

しかし, 現在の CREBASS では不十分な機能も存在する. 例
えばリビジョン検索のときに用いるキーワードの抽出は必ずしも完全とはいえず, キーワードだけで目的のリビジョンを正し
く検索できない. また, 本システムでは関数の定義, 参照関係の導出を, 関数名の一致のみから判断している. この結果, 複数のファイルで同名の関数が定義されていたときに, 関数の参照先を一意に特定することが出来なくってしまう. 現在は, 複数の定義が見つかった場合にはユーザがどの定義を閲覧するか選択で—6—