メディア

バグは本当に金曜日に生まれるのか、分析手法「MSR」とは?5分で分かる最新キーワード解説(2/3 ページ)

» 2014年10月15日 10時00分 公開
[土肥正弘ドキュメント工房]

 では、MSRはそんな期待にどう答えるのだろうか。以下に代表的な応用例を挙げてみよう。

ソフト資産の再利用の支援:資産カタログの生成

 開発生産性や品質向上に直接寄与する応用の1つは、開発資産のカタログ化だ。従来、開発資産を再利用するためには、例えば「サブルーチン」や「クラスライブラリ」のように機能を切り分けて、目的のソフト開発だけでなく同じような処理を必要とする他のソフトに組み込めるようにしたり、「フレームワーク」のようにさらに大きな単位での機能をひとまとめにしたりする手法が使われた。

 しかし、実際には特定業務目的の機能が他の目的のソフトにそのまま適用できる場合は限られる。また、どれが再利用に適するのか、修正すべきところはどこかを見分けるのにも大きな手間がかかる。あらかじめ再利用可能なソフトウェア部品として作成することも理論的には可能とはいえ、現実的なソフト開発スケジュールの中で行うのには困難が伴った。

 そこで、膨大で多種にわたる開発資産の中から、自動的に再利用可能な資産を抽出し、再利用しやすい形に構成し直す仕組みがあるとよい。MSRの研究は、そんな「資産カタログの自動生成」も対象とする。既にNTTデータでの実証例があり、同社のあるプロジェクトでは再利用設計期間の84%削減、開発全体で8%の工期短縮に結びついたという。

「MSR」による「資産カタログ」の生成 図2 「MSR」による「資産カタログ」の生成。ある案件において、再利用設計期間を84%削減(開発全体の8%削減)した(出典:NTTデータ)

 MSRが直接再利用可能な「部品」を生成するわけではないが、どのような場合に何が再利用できるのかのリストを作成し、類似度を見て修正が必要な度合いや箇所が迅速に把握できる。新しいシステムの追加や既存システムの一部改修に際して、都度既存資産を解析し直すことなく、再利用設計が行える。

 いわば、機械によってソースコードを自動的にライブラリ化し、開発担当者が流用するのに適切な部品をレコメンドするというイメージだ。開発の意思決定に大いに役立つとともに、部品流用により開発生産性、品質、保守性も大きく改善できそうだ。

評価や予測の支援:バグモジュール予測

 開発資産の中から傾向を見つけ出し、評価や予測に結び付けることにも期待が寄せられる。実用化に近いのは、開発したソフトに含まれるモジュールにバグが含まれる可能性の予測技術だ。例えば、Googleの「バグ予測アルゴリズム」(ソースコードの修正履歴をもとにしたバグ予測を行う技術)のような研究が、各国企業や研究機関で進められている。

 イメージとしては図3に見るように、ソースコードやバグ情報、関連情報を分析し、どのモジュール、どのコードのどの箇所にバグが含まれる可能性が高いかを予測するものだ。それが分かれば、バグを含む可能性が高いモジュールに重点的にテストして品質向上に結び付けられそうだ。また、評価やテストの工程全体を短縮することもできるかもしれない。

「MSR」によるバグモジュールの予測分析 図3 「MSR」によるバグモジュールの予測分析(出典:NTTデータ)

バグ修正のための変更の4割が新たなバグに

 MSR研究の面白い成果の例を紹介しよう。米国の研究グループによる研究によると、次のような事実が分かった(電話交換機のサブシステム:200万行のコード、3万3000件の変更仕様を対象に調査)。

  1. 不具合修正のための変更の40%が新たなバグを混入している(デグレード)
  2. 1行追加の差分では2%、1行変更の差分では5%程度がバグを混入している
  3. 500行以上の変更でバグを混入する可能性は50%

 また、ドイツの研究グループはEclipseとMozillaプロジェクトのバグトラッキングデータから、「最もバグ発生の頻度の高いのは週のうち金曜日」という興味深い事実を導き出した。

 だからどんな対応が必要なのか、というのはまた別の話だが、「ビールとおむつ」のエピソードと同様に今まで見ようとしても見えなかった事実、または仮説を立てようともしなかった発想での真実が明らかになることが分かる。

知識共有や継承支援:開発資産からのノウハウの自動抽出とナレッジ化

「Bing Code Search」画面例 図4 「Bing Code Search」画面例(出典:マイクロソフト)

 また、既存の開発資産の中からノウハウを自動的に抽出してデータベース化することにより、知識の共有や継承ができるところも重要だ。

 例えば、マイクロソフトでは図4に見るような開発者向けの支援ツールをWeb上および開発ツールのアドオンの形で提供する。ユーザーがコーディングの際に行いたい内容を書けば、それに関連するサンプルコードを既存資産から見つけてリスト化する(必ずしも適切とは限らないが)ので、コーディング作業の効率化や初級エンジニアの教育効果が期待できる。

 同じようにして企業の既存資産の中から適切なコードを提示して流用可能にすれば、自社のコーディング作法に従った標準化ができるだろう。

Copyright © ITmedia, Inc. All Rights Reserved.

会員登録(無料)

製品カタログや技術資料、導入事例など、IT導入の課題解決に役立つ資料を簡単に入手できます。