2014年8月21日

イマ旬キーワード

ソフトウエアリポジトリマイニング

ソフトウエア開発の現場には大量の開発資産が蓄積されつつあります。こうした開発現場のビッグデータを生産技術として役立てる技術が「ソフトウエアリポジトリマイニング」です。

技術開発本部 吉田 英嗣

ビッグデータ化するソフトウエア開発資産

現在の開発現場では、ソースコードだけではなく、ドキュメントやバグ情報など、さまざまなデータが開発の過程で作成・蓄積されるようになっています。そして、それらデータはコンピューター処理可能な形でデジタル化されるようになっています。例えば、ソースコードはその変更履歴とともに構成管理ツールで管理され、ドキュメントはOfficeツールやUML(Unified Modeling Language)エディタなどによりXML化されています。バグ情報はBTS(Bug Tracking System)等のプロジェクト管理ツールによりデータベース化されるようになりました。

NTTデータにおいても、年間約50Mstepのプログラムが作られ、それに付随してドキュメントも推定100万ファイル以上蓄積されています。また、Webにより開発資産データは組織を越えて広く流通するようになっています。現在、大まかに見積もっても、1億ページ以上の技術情報Webページが存在します。加えて、近年は多種・大量のデータを解析する技術が高度化しています。これらの技術を用いると、テキスト検索、非構造データ解析、データマイニング、パターンマッチング、自然言語処理、大規模分散処理、機械学習といった、高度なデータ処理が可能となります。

このような「デジタル化された膨大な量の開発資産データ」と「高度化するデータ解析技術」により、ソフトウエア生産技術の新しい領域が切り拓かれようとしています。

ソフトウエア開発現場におけるビッグデータ分析活用

大量に蓄積された開発資産データに対して、データマイニング等のデータ解析技術を活用することにより、ソフトウエア開発に有用な知見を抽出して活用する方法についての研究が近年盛んになってきています。学術界では「ソフトウエアリポジトリマイニング(Mining Software Repositories)」と呼ばれ参考1、2、すでに10年以上の歴史を持つ研究分野になっています。「ソフトウエアリポジトリマイニング」の代表例として「バグモジュール予測」があります。バグ発生実績やソースコードの状態―規模、複雑度、結合度、凝集度、修正履歴などをもとに、相関分析や機械学習により、バグ混入の可能性が高いモジュールを予測します。ソースコードの修正履歴を基にバグモジュールを予測し、レビュー支援として利用しているという、Googleの取り組みが話題にもなりました参考3

【図】

図:バグモジュール予測

「ソフトウエアリポジトリマイニング」の応用例は、バグモジュール予測だけではありません。ソースコード部品の検索や開発チームのコミュニケーション分析なども提案されています。今後も現場の開発資産データは日々増加し、その大量の開発データを現実的な時間で分析できるビッグデータ分析基盤の発展など、データ解析技術はより高度化していきます。これらの背景から、「ソフトウエアリポジトリマイニング」は、今後、多くのソフトウエア生産技術を生み出す基盤技術となっていくでしょう。

NTTデータでは、このような予測技術をソフトウエア開発の品質管理に利用するための技術開発を進めています。バグ混入の可能性の高いモジュールを定量的に予測できれば、そのモジュールに対するテストを重点化し、テスト工数を適切に配分するといった、より効果的・効率的なテスト戦略を立てられるようになります。

著者プロフィール

【写真】

技術開発本部 吉田 英嗣

開発自動化技術を中心としたソフトウエア生産技術に関する技術開発に従事。NTTデータにおける「自動化」の推進役。最近は大量の開発資産を活用した新しい開発手法について研究中。Java等に関する書籍・記事執筆も行う。

お気軽に
お問い合わせ
ください

ソフトウエアリポジトリマイニングに関するお問い合わせ

お問い合わせフォーム

ソフトウエアリポジトリマイニングに関連する情報

サービス

詳細な分析で意思決定を迅速化、お客様のビジネスに変革をもたらす