• 研究課題をさがす
  • 研究者をさがす
  • KAKENの使い方
  1. 課題ページに戻る

2012 年度 実績報告書

ソフトウェア部品の振舞い特性を用いた欠陥検査の効率化

研究課題

研究課題/領域番号 23680001
研究機関大阪大学

研究代表者

石尾 隆  大阪大学, 情報科学研究科, 助教 (60452413)

研究期間 (年度) 2011-11-18 – 2014-03-31
キーワードソフトウェア工学 / データフロー解析 / ソースコード比較
研究概要

本年度は,ソフトウェアの類似した部品をグループ化し,グループ単位で閲覧する方式についての調査と,その結果を踏まえた手法の構築を行った.まず,調査として,ソフトウェア部品を類似しているとみなす要因であるコーディングパターン,コードクローンについて,それぞれの特性の分析を行った.その結果,コーディングパターンは非常に変化しやすく,ソフトウェア部品の機能的な共通点としては信頼性が低く,類似性の特性としては適していないことが判明した.コードクローンについては,ソフトウェア部品中での重要な処理をコピーしたコードが多く含まれており,ソフトウェア部品の共通の振る舞いの特性の1つとして適していることを確認した.また,ソフトウェア部品の振る舞い,入力データの共通点を調査する方法としては,動的オブジェクトプロセスグラフという手法を用いることで,部品の振る舞いの典型例を扱うことが可能であることを確認した.
調査結果を踏まえて,ソフトウェア部品の類似性を,ソースコードの類似性によって表現し,また,ソフトウェア部品の閲覧順序を自動的に抽出する手法を試作した.複数のソフトウェア部品に共通した内容は1度だけ検査し,部品ごとに新規に書き加えられた内容だけを追加で検査できるように,ソースコードの差分を可視化するツールとして実現した.また,ソフトウェア部品の内容をソフトウェアの他の部分と切り離して閲覧できるように,エイリアス解析のアルゴリズムを適用し,ソフトウェア部品の内部で参照されるデータを,部品自身が作成するデータと外部から受け取るデータに区分して表示し,ソフトウェア部品とソフトウェアの他の部分との関係を素早く確認できる開発環境を試作した.

現在までの達成度 (区分)
現在までの達成度 (区分)

2: おおむね順調に進展している

理由

ソフトウェア部品の検査方法は,ソースコードの差分を用いてソフトウェア部品の順序を並べる方式として試作した.オープンソースソフトウェアを対象に試行した実験の結果は良好であり,また,仕組みが単純であり納得しやすいという点で企業の研究グループからも肯定的な意見を多く得ることができた.一方で,企業などで継続的に開発されているソフトウェアでは,ほとんど同一のソフトウェアであるがわずかに機能が異なる変種(variant)が存在しており,ソフトウェア部品単独での順序付けよりも,製品間での順序付けのほうが望ましいという意見も得られており,順序付けに関しては異なる方式の追試も必要であると考えている.
ソフトウェア部品に関する情報をより効果的に提示するために,データフロー情報を収集,可視化する技術を実装した.実験対象として選定したソフトウェアには良好な性能を示しているが,どの程度の規模のソフトウェアにまで対応できるかは不透明であり,スケーラビリティの調査が必要である.
残る課題は,開発者に対する情報提示方法の有効性の評価である.開発者はソフトウェアのすべての機能を把握していることはないため,開発者に対して提示される部品群が,開発者にとって初めて見る部品ばかりになることもありうる.そこで,与えられた部品群が属している機能を,事前知識がない開発者であっても認識できるかを調べる必要がある.実験のための機材の準備については既に完了している.

今後の研究の推進方策

情報を提示する手法の有効性を評価するには,開発者が実際に与えられた情報を理解できるかどうかを実験する予定である.具体的には,未知のソフトウェア部品が与えられたときに,その部品が属する機能を理解できるかどうかを評価する実験を行い,開発者の作業データから,開発者がソフトウェア部品を理解する能力について調査する予定である.実験に使用するデータセットとしては,米国ウィリアム・アンド・メアリー大学の研究グループが公開している Traceability Benchmark を活用する予定である.これらは2011年から公開が始まったデータセットであり,ソフトウェアの機能とソースコードの対応関係をある程度の正確さで示していることから,ソフトウェア部品の機能を取り扱う実験に適していると考えている.
解析手法の性能評価を行うには,類似したソフトウェア部品が多数ある状況が必要であるが,一般のオープンソースソフトウェアなどでは起こりにくい.そこで,同一のオープンソースソフトウェアから異なるバージョンを収集することで,疑似的に類似したソフトウェア部品が大量にある状況を作り出す.また,著名なオープンソースソフトウェアには,開発組織が何らかの理由で2つ以上に分離したものがいくつかあり,分離直後にリリースされたソフトウェア部品の拡張例を収集することで,類似しているが機能が異なるソフトウェア部品の大規模な収集を行う.

  • 研究成果

    (6件)

すべて 2013 2012

すべて 学会発表 (6件)

  • [学会発表] Towards Generating Templates of Method Body Based on Method Name and Related Identifiers2013

    • 著者名/発表者名
      Yuya Onizuka
    • 学会等名
      8th International Workshop on Advanced Modularization Techniques
    • 発表場所
      福岡国際会議場(福岡県福岡市)
    • 年月日
      20130325-20130325
  • [学会発表] コードクローンに含まれるメソッド呼び出しの変更度合の調査2013

    • 著者名/発表者名
      工藤 良介
    • 学会等名
      情報処理学会第179回ソフトウェア工学研究会
    • 発表場所
      化学会館(東京都千代田区)
    • 年月日
      20130311-20130312
  • [学会発表] DOPGを用いたオブジェクトの振舞い予測手法2012

    • 著者名/発表者名
      脇阪 大輝
    • 学会等名
      日本ソフトウェア科学会ソフトウェア工学の基礎ワークショップ 2012
    • 発表場所
      ゆふいん山水館(大分県由布市)
    • 年月日
      20121213-20121215
  • [学会発表] 変数に格納されるオブジェクトの型を仮定した仮想メソッド呼び出し解決手法2012

    • 著者名/発表者名
      鹿島 悠
    • 学会等名
      日本ソフトウェア科学会ソフトウェア工学の基礎ワークショップ 2012
    • 発表場所
      ゆふいん山水館(大分県由布市)
    • 年月日
      20121213-20121215
  • [学会発表] ソースファイルの派生関係の自動抽出2012

    • 著者名/発表者名
      神田 哲也
    • 学会等名
      情報処理学会第178回ソフトウェア工学研究会
    • 発表場所
      広島市立大学(広島市安佐南区)
    • 年月日
      20121101-20121102
  • [学会発表] Investigation of Coding Patterns over Version History2012

    • 著者名/発表者名
      Hironori Date
    • 学会等名
      4th IEEE International Workshop on Empirical Software Engineering in Practice
    • 発表場所
      大阪大学中之島センター(大阪府大阪市)
    • 年月日
      20121026-20121027

URL: 

公開日: 2014-07-24  

サービス概要 検索マニュアル よくある質問 お知らせ 利用規程 科研費による研究の帰属

Powered by NII kakenhi