バグ報告データを用いたプログラムコード検証方法の提案

松村 知子 (0051203)


この研究では,大規模なレガシーソフトウェアでの保守作業における問題を 扱う.長年使用され修正や機能追加が繰り返されてきた大規模な レガシーソフトウェアには,仕様書や設計書には記載されて いない潜在的なコーディング規則(潜在コーディング規則)が多数存在する. 潜在コーディング規則に反したコーディングはバグ混入の原因となる.

そのため,保守作業においてコードを変更する際には,これらの規則に 違反したコーディングを行わないようにチェックしながら作業することが求められる. しかし,現状では保守作業者の記憶に頼っていて,確実にチェックが 行われていない.また,チェックするにも対象のシステムを熟知している 保守作業者が手作業によってチェックするため,コードレビューのコストが 大きくなる.

このような問題を解消するため,本研究では,レガシーソフトウェアを 対象として,潜在コーディング規則に違反するプログラムコードを 自動的に検出する方法を提案する.提案方法では,過去のバグ報告 データに含まれるバグの原因の記述,バグの発生条件,及び,バグの修正箇所 などを熟練した保守作業者が調査し,バグの原因となっている 潜在的コーディング規則を列挙する.次に,それぞれの規則に反する 「プログラムコードパターン」を形式的に記述する. そして,対象とするソフトウェアとプログラムコードパターンのマッチング により,規則に違反する箇所を検出する.

発表では,このシステムの大まかな流れと共に,実際のレガシーソフトウェアの 保守工程で発生したバグ報告データを具体的に使って,潜在コーディング規則の抽出, バグコードパターンの記述,検出されたコード部分の提示と適用方法を説明する. それによって,保守作業者のコーディング工程におけるコードレビューにかかる 作業コストが軽減されることを理解できると思う.

最後に,あるレガシーソフトウェアに提案方法を適用した結果を 紹介する.保守工程で故障発生が報告されたバグの32.7%は, 潜在コーディング規則に違反したために混入したものであり, 合計39個の規則が保守開始時に存在していたことが確認できた.そのう ちの30個の規則について,プログラムコードパターンを記述できた. 更に,報告されたバグのうちパターン記述できたものの86.8%が 試作したマッチングシステムによって保守開始時のソースコード中から 検出できた.このことから,提案方法が保守工程での変更コードの 信頼性の向上に有効であることがわかる.