Software Repository Mining

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

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

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

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

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

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

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

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

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

ソフトウェア開発プロセス

近年,ソフトウェア開発は大規模化,複雑化の一途をたどっており,巨大なシステムの開発には数千人もの開発者,数十もの開発会社が関わることもあります.当研究グループでは,ソフトウェア開発プロジェクトの持つ複雑性を緩和し,プロジェクトの円滑な遂行を支援する技術の研究を進めています.

研究キーワード:

ソフトウェアリポジトリ,データマイニング,可視化,ソフトウェア保守,保守プロセス,ソフトウェアプロセス,プロセスモデリング,プロセス改善,マイクロプロセス分析,CMM/CMMI,ユーザビリティ,PReP,プロジェクトレビュー

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 定量的管理を取り入れた開発計画立案支援

計画通りの期間・品質でソフトウェアを開発できるように,プロセスの実行過程で発生する問題を発見し,解決することをプロセス改善と呼びます.プロセス改善を行うためには,プロジェクトの開始時に適切な計画を立てることが重要だと言われています.本研究プロジェクトでは,実企業から提供を受けたデータをもとに,開発プロジェクトの計画立案支援に関する研究を行っています.[詳細を見る

  • 階層構造と時間軸によるソフトウェア開発プロジェクトの可視化

ソフトウェア開発の需要が急激に増加する一方で,開発期間が短くなり失敗プロジェクトが増加していると言われています.本研究プロジェクトでは,WBSやDFDといったソフトウェア開発プロセスを記述可能なダイアグラムの多くが階層構造を持つことに着目し,ソフトウェア開発プロジェクト可視化手法について研究を行っています.

  • ソフトウェア開発データ分析による分散開発の支援

ソフトウェアシステムの大規模化に伴い,ソフトウェア開発プロジェクトも大規模・複雑化してきています.このため様々な開発組織が協調して,分散開発を行うような開発スタイルが一般的になっています.本研究グループでは,複数組織による分散開発における開発支援に関して研究を行っています.[詳細を見る(PDFファイル)

  • ユーザビリティ向上テクニックのソフトウェア開発プロセスへの融合

ソフトウェアのユーザビリティ(使いやすさ)を向上するために,様々なテクニックが提案されています.このようなテクニックは,開発プロセスの中で適切な時期に,妥当なテクニックを選択,実践する必要があります.本研究プロジェクトでは,ユーザビリティ向上テクニックを念頭に置いたソフトウェア開発プロセスについて研究を行っています.[詳細を見る(PDFファイル)

  • プロジェクトマネージメントナビゲータ

開発プロジェクトの運営においては,類似に失敗が繰り返されることが多くあります.本研究プロジェクトでは,プロジェクトの管理者(プロジェクトマネージャ)が過去のプロジェクトの経験を,次のプロジェクトで活用させるための仕組みを構築することを目的として研究を行っています.[詳細を見る(PDFファイル)

  • プロセスモデリング手法PRePとその支援環境

ソフトウェア開発の手順や管理方法を理解しやすい形式で記述したものが「ソフトウェアプロセスモデル」です.ソフトウェアプロセスモデルは,プロセス管理や評価に役立ちます.本研究プロジェクトでは,ソフトウェアプロセスモデリングの手法や記法について研究を行っています.[詳細を見る