奈良先端科学技術大学院大学 > 情報科学研究科 / 情報科学センター

リポジトリマイニングとは

増員するほど火の車? - ソフトウェア開発現場のジレンマ

近年,ソフトウェアは社会の隅々にまで浸透しており,その開発工程は年々大規模かつ複雑なものとなっています.しかし,少なくないソフトウェアプロジェクトが予算超過を起こしたり,スケジュールどおりに開発が完了しないといった事態に陥っています.

スケジュール通りの開発が困難な場合にとられる対処として,開発者の増員がしばしば実施されます.しかし,新規にメンバーを投入することでかえって開発時間がかかってしまうという問題が指摘されています.というのも,開発者を新たに投入した直後は開発中のソフトウェアについての知識が不足しているため,投入直後からその能力を十分に発揮できないからです.むしろ既存の開発者がさまざまなことを教える必要があり,不用意な開発者増員は全体としての開発コストを上げることになってしまいます.

そこで,新しく参加したメンバーには一刻も早く開発中のソフトウェアを理解してもらうことが重要になってきます.

ソフトウェア開発履歴からのお宝発掘 - リポジトリマイニング

本研究ではソフトウェア理解を支援するために,これまでに開発されたソフトウェア群の開発履歴を分析・整理して提示する手法を提案しています.特にその情報源としてソフトウェアリポジトリに着目しています.

ソフトウェアリポジトリとは多数の開発者がネットワークを通じて協調して開発するときに用いる開発基盤を提供するサービスです.その構成物は,ソースコードを管理する版管理システムや,開発者間で交わされた議論を保管しておくメーリングリスト管理システムなどがあります.これまでにソフトウェアリポジトリはオープンソースソフトウェアを中心に,さまざまなソフトウェア開発で実際に利用されており,膨大な開発履歴が蓄積されています.ただ,これらの情報はあまりにも膨大なため,そのままでは十分に活用することができません.

そこで,これらの情報から枝葉末節を省略したり,類似情報をまとめたりといった整理統合を行って,有用な情報を把握可能な形で提供しよう,というのが本研究の狙いです.このような作業をリポジトリマイニングと呼びます.

現在取り組んでいる研究テーマ

開発履歴を用いたリファクタリングと欠陥の関係分析

リファクタリングとは,プログラムの動作を変えることなくソースコードの設計を改善することを言います. リファクタリングの伝道者として有名なファウラーは,「リファクタリングを実施すると欠陥(バグ)の混入が減少する」と著書で述べています. そこで,この研究ではソースコードの変更履歴からリファクタリングの実施を推定し,バグ管理システムに記録された欠陥の修正情報と照らし合わすことで,リファクタリングが本当に欠陥混入を減少させるのかどうかを明らかにします.

開発履歴を用いたコードクローン理解支援環境

コードクローンとは,プログラム中のソースコードのうち重複している箇所のことを指します.この研究では版管理システムが持つ開発履歴を利用してコードクローンの変遷をわかりやすく提示する環境の構築を目指します.詳細はこちら

MUDABlue: ソフトウェア自動分類システム

ソフトウェアリポジトリには膨大な数のソフトウェアが登録されています.これらの中から類似ソフトウェアを発見するためのメカニズムを提供することで,ソフトウェアの再利用や,開発者間のコミュニケーション促進を目指します.詳細はこちら

細粒度プロセス分析・抽出手法

ソフトウェアプロセスの改善を行う際には,組織レベルだけでなく個人レベルの細かいプロセス(=細粒度プロセス:Micro Process)の観点からも分析を行う必要があります.本研究プロジェクトでは,ソフトウェア開発時に収集されたデータをもとに,細粒度プロセスの抽出,分析を目的として研究を行っています.

履歴情報を用いたデザインパターン分析

デザインパターンとは,ソフトウェア開発の設計段階で蓄積されたノウハウを再利用できるかたちでまとめたものです.デザインパターンを用いることで,ソフトウェアの品質を向上させることができると言われていますが,その実態は明らかになっていません.本研究プロジェクトでは,デザインパターンの利用状況やソフトウェアの品質との関連を明らかにすることを目的として研究を行っています. [詳細を見る(PDFファイル)

開発者の共起関係に基づく開発プロジェクト分析

オープンソースソフトウェア開発において,プロジェクトのアクティビティはソフトウェアの品質に影響を及ぼす大きな要因とされています.本研究グループでは,開発に用いられるメーリングリストに着目し,開発者の共起性からプロジェクトの共起性について予測する手法を研究しています.