JP2018133081A - ソフトウェアプログラム修復のためのメソッド呼び出し合成 - Google Patents

ソフトウェアプログラム修復のためのメソッド呼び出し合成 Download PDF

Info

Publication number
JP2018133081A
JP2018133081A JP2017246216A JP2017246216A JP2018133081A JP 2018133081 A JP2018133081 A JP 2018133081A JP 2017246216 A JP2017246216 A JP 2017246216A JP 2017246216 A JP2017246216 A JP 2017246216A JP 2018133081 A JP2018133081 A JP 2018133081A
Authority
JP
Japan
Prior art keywords
method call
synthetic method
call
fault location
score
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2017246216A
Other languages
English (en)
Other versions
JP7056139B2 (ja
Inventor
ケイ サハ・リポン
K Saha Ripon
ケイ サハ・リポン
アール プラサド・ムクル
R Prasad Mukul
アール プラサド・ムクル
吉田 浩章
Hiroaki Yoshida
浩章 吉田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JP2018133081A publication Critical patent/JP2018133081A/ja
Application granted granted Critical
Publication of JP7056139B2 publication Critical patent/JP7056139B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/366Software debugging using diagnostics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3692Test management for test results analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】ソフトウェアプログラム修復のためのメソッド呼び出し合成技術を提供する。【解決手段】メソッド呼び出し合成技術のフローチャート300は、ソフトウェアプログラムに対してテストスーツのテスト実行を実行し、ソフトウェアプログラムの中の障害及び対応する障害位置を識別する302。識別された障害位置に対する修復候補として、複数の合成メソッド呼び出しを取得する304。複数の合成メソッド呼び出しの各々の特性と障害位置との間の関係、特性と障害位置に対応するエラーレポートとの間の関係に基づき、複数の合成メソッド呼び出しを優先順位付けする306。優先順位に基づき、障害位置に対する修復操作のために、複数の合成メソッド呼び出しから合成メソッド呼び出しを選択する308。障害位置に対する修復操作及び前記選択した合成メソッド呼び出しを実行する310。【選択図】図3

Description

本開示で議論される実施形態は、ソフトウェアプログラム修復のためのメソッド呼び出し合成に関する。
ソフトウェアプログラムは、意図したように動作できない障害(通常、「バグ」と呼ばれる)をそれらの中に含むことが多い。多くの場合、ソフトウェアプログラムの中の障害を識別し及び修正しようとして、自動修復システムが使用される。
本開示で請求される主題は、上述のような欠点を解決する実施形態や上述のような環境でのみ機能する実施形態に限定されない。むしろ、この背景技術は、単に、本開示に記載される複数の実施形態が実施される技術分野の一例を説明するために提供される。
一実施形態の一態様によると、方法は、ソフトウェアプログラムの複数のオブジェクト及び複数のメソッドを用いて、複数の合成メソッド呼び出しを取得するステップを含み得る。方法は、前記複数の合成メソッド呼び出しの各々の1又は複数の特性と前記障害位置との間の関係、前記1又は複数の特性と前記障害位置に対応するエラーレポートとの間の関係、のうちの1又は複数に基づき、前記複数の合成メソッド呼び出しの優先順位を決定するステップ、を更に有して良い。方法は、選択される合成メソッド呼び出しの対応する優先順位に基づき、前記障害位置に対する修復操作のために、前記複数の合成メソッド呼び出しから合成メソッド呼び出しを選択するステップを更に有して良い。さらに、方法は、前記障害位置に対する修復操作及び前記選択した合成メソッド呼び出しを実行するステップを有して良い。
実施形態の目的及び利点が理解され、少なくとも特に特許請求の範囲で指摘された要素、特徴及び組合せを用いて達成されるだろう。
上述の全体的説明及び以下の詳細な説明の両方は、例示及び説明のためであり、本発明の範囲を限定しない。
例示的な実施形態は、添付の図面を用いて、更なる特異性及び詳細事項と共に記載され説明される。
ソフトウェアプログラムの修復に関連する例示的な環境を表す図である。 ソフトウェアプログラムを修復するために構成され得る例示的なコンピューティングシステムを示す。 ソフトウェアプログラムを修復する例示的な方法のフローチャートを示す。 修復候補として使用され得る合成メソッド呼び出しを生成し及び優先順位付けする例示的な方法のフローチャートを示す。 障害位置の修正候補であり得るメソッド呼び出しのコンテキストスコアを決定する例示的な方法のフローチャートを示す。 障害位置の修正候補であり得るメソッド呼び出しのエラーレポートスコアを決定する例示的な方法のフローチャートを示す。 複合スコアを決定する例示的な方法のフローチャートを示す。
本開示に記載の幾つかの実施形態は、ソフトウェアプログラムを修復する方法及びシステムに関する。ソフトウェアプログラムは、多くの場合、ソフトウェアプログラムを意図しない方法で動作させ得る障害(通常、「バグ」として参照される)を含む。さらに、多くの場合、ソフトウェアプログラムを修復するよう障害を検出し及び修正するために、自動修復システム及び技術が使用される。幾つかの例では、障害を修正するために修復としてメソッド呼び出しが使用され得る。
本開示に記載の1又は複数の実施形態によると、1又は複数の障害位置がソフトウェアプログラムの中で識別されて良い。さらに、複数のメソッド呼び出しが、特定の障害位置のための可能性のある修復候補として合成されて良い。幾つかの実施形態では、メソッド呼び出しは、それぞれ、対応するメソッド呼び出しの1又は複数の特性と特定の障害位置との間の1又は複数の関係に基づきスコアを付けられて良い。幾つかの例では、このようなスコアは、本開示において「コンテキストスコア」として参照され得る。追加又は代替で、メソッド呼び出しは、それぞれ、対応するメソッド呼び出しの1又は複数の特性と特定の障害位置に対応するエラーレポートとの間の1又は複数の関係に基づきスコアを付けられて良い。幾つかの例では、このようなスコアは、本開示において「エラーレポートスコア」として参照され得る。
幾つかの例では、メソッド呼び出しは、スコア付けに基づき、特定の障害位置に対する可能性のある修復候補として優先順位を付けられて良い。本開示では、メソッド呼び出しを優先順位付けすることへの参照は、より低い優先度を有するメソッド呼び出しよりも、より高い優先度を有するメソッド呼び出しが修復操作の実行中に選択されるように、メソッド呼び出しをランク付けすることを含み得る。追加又は代替で、メソッド呼び出しを優先順位付けすることは、メソッド呼び出しを廃棄する又は枝刈り(pruning)することを含み得る。廃棄され又は枝刈りされたメソッド呼び出しは、幾つかの例では、修復操作の実行中に選択されなくて良い。
例えば、幾つかの実施形態では、修復操作のために(例えば、修復として実施されるために)、特定の合成メソッド呼び出しが他の合成メソッド呼び出しよりも高い優先度を有することに基づき、特定の合成メソッド呼び出しが他の合成メソッド呼び出しより優先して選択されて良い。上述又は他の実施形態では、修復操作は、選択された特定の合成メソッド呼び出しを修復として使用して実行されて良い。
障害位置に対する可能性のある修復候補としてのメソッド呼び出しの合成及び優先順位付けは、どのメソッド呼び出しが修復として使用されるソフトウェアプログラムに追加され得るかを識別することにより、及び更にどのメソッド呼び出しが実際にソフトウェアプログラムを修復する可能性がより高いかを識別することにより、自動ソフトウェアプログラム修復の効率を向上し得る。
本開示の実施形態を、添付の図面を参照して以下に説明する。
図1は、本開示に記載の少なくとも1つの実施形態により構成される、ソフトウェアプログラムの修復に関連する例示的な環境100を示す図である。環境100は、障害に対する被検査コード104を分析するよう構成される修復モジュール106を含んで良い。修復モジュール106は、変更被検査コード108を出力するよう更に構成されて良い。変更被検査コード108は、修復モジュール106により実行された修復操作により被検査コード104に対して行われた1又は複数の変更を含んで良い。
被検査コード104は、例えばソフトウェアプログラム、ソフトウェアプログラムのコード、ライブラリ、アプリケーション、スクリプト、又は処理装置による実行のための他のロジック若しくは命令のような、電子データを有して良い。幾つかの実施形態では、被検査コード104は、ソフトウェアプログラムの完全なインスタンスを有して良い。追加又は代替で、被検査コード104は、ソフトウェアプログラムの一部を有して良い。被検査コード104は、ソフトウェアプログラムのために使用され得る任意の適切な種類のコンピュータ言語で書かれて良い。
修復モジュール106は、コンピューティング装置に、被検査コード104の1又は複数の変更を実行させて変更被検査コード108を生成させるよう構成されるコード及びルーチンを有して良い。追加又は代替で、修復モジュール106は、(例えば、1又は複数の工程を実行する又はその実行を制御する)プロセッサ、マイクロプロセッサ、FPGA(field−programmable gate array)又はASIC(application−specific integrated circuit)を含むハードウェアを用いて実装されて良い。幾つかの他の例では、修復モジュール106は、ハードウェア及びソフトウェアの組み合わせを用いて実装されて良い。本開示では、修復モジュール106により実行されるとして記載される操作は、修復モジュール106が対応するシステムに実行するよう指示し得る操作を有して良い。
修復モジュール106は、被検査コード104の中の1又は複数の障害を修復する(修正するとしても参照される)ために使用され得る被検査コード104に対する一連の修復操作を実行するよう構成されて良い。
幾つかの実施形態では、修復モジュール106は、修復テンプレート112及び1又は複数のテストスーツ111に基づき修復操作のうちの1又は複数を実行するよう構成されて良い。
例えば、修復モジュール106は、被検査コード104の中の1又は複数の障害及び対応する障害位置を検出し又は決定するために、被検査コード104に対して1又は複数のテストスーツを適用するよう構成されて良い。幾つかの実施形態では、修復モジュール106は、テスト実行の実行として参照され得る、テストスーツに含まれる1又は複数のテストを実行するよう構成されて良い。合格するテスト実行は、「合格テスト実行」として参照され得る。失敗するテスト実行は、「失敗テスト実行」として参照され得る。幾つかの実施形態では、被検査コード104の障害位置及び対応する障害は、障害位置に現れるコードを実行する失敗テスト実行に基づき識別されて良い。
幾つかの実施形態では、修復モジュール106は、テストスーツの1又は複数のテストの実行に基づき被検査コード104の中の1又は複数の障害位置を識別するよう構成されて良い。上述又は他の実施形態では、修復モジュール106は、障害位置のうちの1又は複数の各々に関して複数のメソッド呼び出し(「合成メソッド呼び出し」として参照される)を生成するよう構成されて良い。特定の障害位置に関する合成メソッド呼び出しは、可能性のある修復候補であって良く、被検査コード104を変更するために及び場合によっては特定の障害位置にある障害を修復するために、被検査コード104に実装されて良い。追加又は代替で、幾つかの実施形態では、合成メソッド呼び出しは、特定の障害位置に基づき生成されて良い。
例えば、メソッド呼び出しは、以下の基本構造を有して良い:「(object.)MI_name(arg1,arg2,...,argN)」。このような構造では、「object」としてラベル付けされた部分は、オブジェクト又はオブジェクトクラス、又はメソッド呼び出しにより変更され若しくは定められ得るオブジェクト(本開示では「定義オブジェクト(defined object)」として参照される)を返す別のメソッド呼び出しを表して良い。「MI_name」は、メソッド呼び出しの対象(subject)であり得るメソッド名を表して良い。「arg1,arg2,...,argN」は、オブジェクト、原始変数、又はメソッド呼び出しのメソッドのための入力パラメータ(「引数」としても参照される)として使用されるオブジェクト若しくは原始変数を返す他のメソッド呼び出しを表して良い。メソッドは、メソッド呼び出しの中の引数又は定義オブジェクトとして使用されて良いが、本開示では、メソッド呼び出しのメソッドへの言及は、概して、「MI_name」に対応するメソッドを表して良く、「対象メソッド(subject method)」として参照されて良い。さらに、メソッド呼び出しの定義オブジェクト又は引数として使用され得るオブジェクトは、「メソッド呼び出しのオブジェクト」又は「メソッド呼び出しにより使用されるオブジェクト」として参照されて良い。
さらに、幾つかの実施形態では、修復モジュール106は、特定の障害位置に対応する被検査コード104の範囲内にあり得る1又は複数のオブジェクトを識別するよう構成されて良い。幾つかの実施形態では、修復モジュール106は、特定の障害位置に対応する被検査コード104の範囲内にあり得る全部のオブジェクトを識別するよう構成されて良い。オブジェクトは、原始変数、データ構造若しくはクラスのインスタンス、関数により返されるクラスのインスタンス、メソッド、等を含んで良い。本開示では、特定の障害位置に対応する被検査コード104の「範囲内のオブジェクト」への言及は、被検査コード104を破壊することなくオブジェクトが使用できる障害位置で有効な該オブジェクトを表して良い。
修復モジュール106は、識別したオブジェクトに基づき、1又は複数の合成メソッド呼び出しを生成するよう構成されて良い。例えば、修復モジュール106は、合成メソッド呼び出しの対象メソッドであり得るメソッドを、識別されたオブジェクトから取得するよう構成されて良い。上述又は他の実施形態では、修復モジュール106は、対象メソッドの各々のメソッド署名を識別するよう構成されて良い。特定の対象メソッドのメソッド署名は、特定の対象メソッドにより定義され得る定義オブジェクトのオブジェクト種類、特定対象メソッドの引数の数、及び/又は特定の対象メソッドの引数のオブジェクト種類、を含んで良い。したがって、幾つかの実施形態では、特定の対象メソッドのメソッド署名識別は、特定の対象メソッドの定義オブジェクトのオブジェクト種類及び引数を識別することを含んで良い。追加又は代替で、特定の対象メソッドのメソッド署名検出は、特定の対象メソッドの引数の数を識別することを含んで良い。
修復モジュール106は、対象メソッド、対象メソッドの署名、並びに他の識別されたオブジェクト及びそれらの対応する種類、に基づき、合成メソッド呼び出しを生成するよう構成されて良い。例えば、特定の対象メソッドの特定のメソッド署名は、対象メソッドの定義オブジェクトが整数であること、及び対象メソッドが2つの引数を含むこと、ここで引数のうちの一方は特定種類のメソッドであり他の引数は文字列であること、を示して良い。このような例では、修復モジュール106は、整数であるオブジェクトを定義オブジェクトとして、特定種類のメソッドであるオブジェクトを第1引数として、及び文字列であるオブジェクトを第2引数として使用することにより、特定の対象メソッドについて複数の合成メソッド呼び出しを生成するよう構成されて良い。幾つかの実施形態では、修復モジュール106は、整数型である各識別されたオブジェクトを定義として使用し、特定種類である各識別されたメソッドを第1引数として使用し、及び文字列型である各識別されたオブジェクトを第2引数として使用することに関し、特定の対象メソッドについて、合成メソッド呼び出しの全ての可能な順列を生成して良い。
さらに、特定の対象メソッドについて合成メソッド呼び出しを生成する際に、修復モジュール106は、定義オブジェクトについて、整数型ではない全ての識別されたオブジェクトを無視し、第1引数について、特定種類のメソッドではない全てのオブジェクトを無視し、及び第2引数について、文字列型ではない全てのオブジェクトを無視するよう構成されて良い。幾つかの例では、メソッド署名と互換性がある識別されたオブジェクトの識別及びメソッド署名と互換性のない識別されたオブジェクトの無視は、メソッド署名に関してオブジェクトを解決することとして参照されて良い。本開示では、メソッド署名と互換性のあるオブジェクトへの言及は、オブジェクトがメソッド署名に対応するメソッド呼び出しの定義オブジェクト又は引数として使用されるために互換性がある種類であることを示して良い。
上述のように、幾つかの実施形態では、合成メソッド呼び出しは、特定の障害位置に対する可能性のある修復候補であって良い。幾つかの実施形態では、修復モジュール106は、特定の障害位置のための修復として実施するために、合成メソッド呼び出しに優先順位付けするよう構成されて良い。幾つかの実施形態では、優先順位付けは、特定の障害位置のための修復として合成メソッド呼び出しの有効性を示し得る合成メソッド呼び出しの特性に基づいて良い。例えば、幾つかの例では、合成メソッド呼び出しの1又は複数の特性と特定の障害位置との間の関係は、修復としての合成メソッド呼び出しの有効性を示して良い。別の例として、合成メソッド呼び出しの1又は複数の特性と特定の障害位置に対応するエラーレポートとの間の関係は、合成メソッド呼び出しの有効性を示して良い。
幾つかの実施形態では、コンテキストスコア及び/又はエラーレポートスコアを決定するために使用され得る合成メソッド呼び出しの特性は、対応する合成メソッド呼び出しの戻り型、対応する合成メソッド呼び出しにより使用されるオブジェクトのうちの1又は複数の各々の位置、対応する合成メソッド呼び出しのメソッド名、対応する合成メソッド呼び出しにより使用されるオブジェクトのうちの1又は複数の各々の名称、対応する合成メソッド呼び出しにより使用されるオブジェクトのうちの1又は複数の各々の種類、対応する合成メソッド呼び出しの中のオブジェクトのうちの1又は複数の各々の使用の種類、対応する合成メソッド呼び出しにより使用されるオブジェクトのうちの1又は複数の各々の発生回数、又はそれらの組合せ、を含んで良い。幾つかの実施形態では、特性のうちの1又は複数は、対応するメソッド署名に基づき決定されて良い。したがって、対応するメソッド署名も、上述の特性のうちの1つより多くを含む自身の対応するメソッド呼び出しの特性である。
追加又は代替で、特性のうちの1又は複数と障害位置との間の関係は、対応する合成メソッド呼び出しの戻り型と障害位置との間の戻り型関係、障害位置に関して対応する合成メソッド呼び出しにより使用されるオブジェクトのうちの1又は複数の各々の位置、障害位置の特定行数の範囲内で対応する合成メソッド呼び出しにより使用されるオブジェクトのうちの1又は複数の発生回数、障害位置に対応する現在実施されているメソッド呼び出しのメソッド名との対応する合成メソッド呼び出しのメソッド名のセマンティック類似性、又はそれらの任意の組合せ、を含んで良い。さらに幾つかの実施形態では、特性のうちの1又は複数とエラーレポートとの間の関係は、対応するメソッド呼び出しのメソッド名とエラーレポートに含まれる1又は複数のワードとの間のセマンティック類似性、オブジェクトのうちの1又は複数の名称とエラーレポートに含まれる1又は複数のワードとの間のセマンティック類似性、対応するメソッド呼び出しにより使用されるオブジェクトのうちの1又は複数の種類の名称とエラーレポートに含まれる1又は複数のワードとの間のセマンティック類似性、又はそれらの任意の組合せ、を含んで良い。
追加又は代替で、優先順位付けは、合成メソッド呼び出しの各々について生成され得るスコアに基づいて良い。幾つかの実施形態では、スコアは、上述の関係のうちの1又は複数の指示を提供して良い。例えば、幾つかの実施形態では、スコアは、コンテキストスコア及び/又はエラーレポートスコアを含んで良い。幾つかの例では、コンテキストスコアは、合成メソッド呼び出しの各々の1又は複数の特性と特定の障害位置との間の関係に基づいて良い。幾つかの実施形態では、修復モジュール106は、図5の方法500に関して後述する1又は複数の操作に基づき、コンテキストスコアを生成するよう構成されて良い。幾つかの例では、エラーレポートスコアは、合成メソッド呼び出しの各々の1又は複数の特性と特定の障害位置に対応するエラーレポートとの間の関係に基づいて良い。幾つかの実施形態では、修復モジュール106は、図6の方法600に関して後述する1又は複数の操作に基づき、エラーレポートスコアを生成するよう構成されて良い。
上述又は他の実施形態では、スコアは、コンテキストスコア及びエラーレポートスコアに基づき得る複合スコアを含んで良い。幾つかの実施形態では、複合スコアは、図7の方法700に関して後述する1又は複数の操作に基づき生成されて良い。
上述のように、幾つかの実施形態では、修復モジュール106は、合成メソッド呼び出しのコンテキストスコア、エラーレポートスコア、及び/又は複合スコアに基づき、修復操作のための合成メソッド呼び出しを優先順位付けするよう構成されて良い。幾つかの実施形態では、優先順位付けは、図3の方法300及び図4の方法400に関して後述する1又は複数の操作に基づき実行されて良い。
幾つかの実施形態では、修復モジュール106は、特定のメソッド呼び出しの優先度に基づき、特定の障害位置のための修復として実施すべき特定の合成メソッド呼び出しを選択するよう構成されて良い。例えば、優先順位付けは、修復操作の実行中に合成メソッド呼び出しの選択の順序を決定するために使用されて良い。例えば、より低い優先度を有する合成メソッド呼び出しの選択の前に、より高い優先度を有する合成メソッド呼び出しが修復として選択されて良い。例えば、修復モジュール106は、異なる合成メソッド呼び出しの各々の優先度を比較して良い。該優先度の比較に基づき、修復モジュール106は、より低い優先度を有する合成メソッド呼び出しを選択する代わりに、より高い優先度を有する特定の合成メソッド呼び出しを選択して良い。
修復モジュール106は、特定の障害位置に関して、被検査コード104に関する修復操作及び選択した合成メソッド呼び出しを実行するよう更に構成されて良い。例えば、修復操作は、特定のパッチとして特定の障害位置に選択した合成メソッド呼び出しを実装し、特定のパッチに対してテストを実行することを含んで良い。修復モジュール106は、テストの合格に応答して、特定のパッチを保持するよう構成されて良い。追加又は代替で、1又は複数のテストが合格しないことに応答して、修復モジュール106は、パッチとして実装されるべき異なる合成メソッド呼び出しを選択するよう構成されて良い。上述又は他の実施形態では、修復モジュール106は、優先順位付けに基づき、他の合成メソッド呼び出しを選択して良い。
追加又は代替で、テストの合格に応答して、修復モジュール106は、変更被検査コード108を出力するよう構成されて良い。この変更被検査コード108は、合成メソッド呼び出しの1又は複数の実装を含み得る1又は複数のパッチを含んで良い。上述又は他の実施形態では、修復モジュール106は、被検査コード104の中に合成メソッド呼び出しの実装を保持することに応答して、変更被検査コード108を出力するよう構成されて良い。
本開示の範囲から逸脱することなく図1に対し変更、追加又は省略が行われて良い。例えば、環境100は、本開示で示され説明されたものより多くの又は少ない要素を有しても良い。さらに、幾つかの実施形態では、1又は複数のルーチン、1又は複数の命令、又は修復モジュール106の少なくとも一部のコード、テストスーツ、及び修復テンプレートは、結合され又は分離されて良い。幾つかの実施形態では、操作は、上述のものと異なる順序で実行されて良い。
図2は、本開示の特定の少なくとも一実施形態による例示的なコンピューティングシステム202のブロック図を示す。コンピューティングシステム202は、修復モジュール(例えば、図1の修復モジュール106)と関連する1又は複数の操作を実施し又は指示するよう構成されて良い。コンピューティングシステム202は、プロセッサ250、メモリ252、及びデータ記憶254を有して良い。プロセッサ250、メモリ252、及びデータ記憶装置254は、通信可能に結合されて良い。
概して、プロセッサ250は、任意の適切な特定用途向け又は汎用コンピュータ、コンピューティングエンティティ、又は種々のコンピュータハードウェア若しくはソフトウェアモジュールを有して良く、任意の適切なコンピュータ可読媒体に格納された命令を実行するよう構成され得る処理装置を用いて実施されて良い。例えば、プロセッサ250は、マイクロプロセッサ、マイクロコントローラ、デジタシグナルプロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)又はプログラム命令を解釈し及び/若しくは実行し並びに/又はデータを処理するよう構成された任意の他のデジタル若しくはアナログ回路を有して良い。図2には単一のプロセッサを示したが、プロセッサ250は、本開示で説明される任意の数の操作を個々に又は共同で実行する又は実行を指示するよう構成される任意の数のプロセッサを有して良い。さらに、プロセッサのうちの1又は複数は、異なるサーバのような1又は複数の異なる電子装置に存在して良い。
幾つかの実施形態では、プロセッサ250は、プログラム命令を解釈し及び/又は実行し、及び/又はメモリ252、データ記憶254又はメモリ252及びデータ記憶装置254に格納されたデータを処理して良い。幾つかの実施形態では、プロセッサ250は、データ記憶装置254からプログラム命令をフェッチし、該プログラム命令をメモリ252にロードして良い。プログラム命令がメモリ252にロードされた後、プロセッサ250は該プログラム命令を実行して良い。
例えば、幾つかの実施形態では、修復モジュールは、プログラム命令としてデータ記憶装置254に含まれて良い。プロセッサ250は、データ記憶装置254から修復モジュールのプログラム命令をフェッチして良く、修復モジュールのプログラム命令をメモリ252にロードして良い。修復モジュールのプログラム命令がメモリ252にロードされた後、プロセッサ250は、コンピューティングシステムが命令により指示されるように修復モジュールと関連する操作を実施できるように、プログラム命令を実行して良い。
メモリ252及びデータ記憶装置254は、コンピュータ実行可能命令又はデータ構造を伝える又は格納しているコンピュータ可読記憶媒体を含み得る。このようなコンピュータ可読媒体は、プロセッサ250のような汎用又は特定目的コンピュータによりアクセスできる任意の利用可能な媒体を含み得る。例として且つ限定ではなく、このようなコンピュータ可読媒体は、RAM(Random Access Memory)、ROM(Read−Only Memory)、EEPROM(Electrically Erasable Programmable Read−Only Memory)、CD−ROM(Compact Disc Read−Only Memory)又は他の光ディスク記憶装置、磁気ディスク記憶装置又は他の磁気記憶装置、フラッシュメモリ装置(例えば、固体メモリ素子)を含む有形又は非一時的コンピュータ可読記憶媒体、又はコンピュータにより実行可能な命令若しくはデータ構造の形式で特定のプログラムコード手段を伝える若しくは格納するために用いられ汎用若しくは特定目的コンピュータによりアクセス可能な他の記憶媒体を有し得る。上述の組合せも、コンピュータ可読記憶媒体の範囲に包含され得る。コンピュータ実行可能命令は、例えば、プロセッサ250に特定の工程又は工程のグループを実行させるよう構成される命令及びデータを含み得る。
本開示の範囲から逸脱することなくコンピューティングシステム202に対し変更、追加又は省略が行われて良い。例えば、幾つかの実施形態では、コンピューティングシステム202は、明示的に示され又は記載されてない任意の数の他のコンポーネントを有して良い。
図3は、本開示で説明される少なくとも一実施形態による、ソフトウェアプログラムを修復する例示的な方法300のフローチャートである。方法300は、ソフトウェアプログラムの被検査コード(例えば、図1の被検査コード104)に対して、任意の適切なシステム、機器、又は装置により実行されて良い。例えば、図1の修復モジュール106又は(例えば修復モジュールにより指示されるとき)図2のコンピューティングシステム202は、ソフトウェアプログラムに対して方法300に関連する工程のうちの1又は複数を実行し又は実行を指示して良い。別個のブロックとして示したが、特定の実装に依存して、方法300のブロックのうちの1又は複数に関連するステップ及び工程は、更なるブロックに分割され、少ないブロックに結合され、又は除去されて良い。
方法300は、ブロック302を含んで良い。ブロック302で、障害及び対応する障害位置が、ソフトウェアプログラム内で識別されて良い。障害識別は、任意の適切な技術を用いてソフトウェアプログラムに対して実行されて良い。例えば、幾つかの実施形態では、障害識別は、ソフトウェアプログラムに対して1又は複数のテストスーツのテスト実行を実行することに基づき実行されて良い。
ブロック304で、複数の合成メソッド呼び出しが、ブロック302で識別された障害位置に対する修復候補として取得されて良い。幾つかの実施形態では、合成メソッド呼び出しは、合成メソッド呼び出しを既に生成した別のシステムから取得されて良い。追加又は代替で、幾つかの実施形態では、合成メソッド呼び出しは、以下に詳述する図4の方法400の1又は複数の工程に基づき生成されることにより、取得されて良い。
ブロック306で、合成メソッド呼び出しは優先順位付けされて良い。優先順位付けは、ブロック302で識別された障害位置のためのパッチとしての、合成メソッド呼び出しの実装の優先度を示して良い。幾つかの実施形態では、合成メソッド呼び出しの優先順位付けは、合成メソッド呼び出しの各々の、コンテキストスコア、エラーレポートスコア、及び/又はコンテキストスコア及びエラーレポートスコアに基づく複合スコア、に基づいて良い。スコアの生成及び対応する優先順位付けは、幾つかの実施形態において方法400、500、及び/又は600の1又は複数の工程に基づき実行されて良い。
ブロック308で、特定の合成メソッド呼び出しは、特定の合成メソッド呼び出しの優先度に基づき選択されて良い。例えば、修復モジュールは、異なる合成メソッド呼び出しの各々の優先度を比較して良い。第1合成メソッド呼び出しは、他の合成メソッド呼び出しの各々より高い優先度を有する第1優先度を有して良い。優先度の比較に基づき、修復モジュールは、より低い優先度を有する第2合成メソッド呼び出しを選択する代わりに、より高い優先度を有する第1合成メソッド呼び出しを選択して良い。ブロック310で、特定の障害位置及び選択された合成メソッド呼び出しに関して、ソフトウェアプログラムに対して修復操作が実行されて良い。
本開示の範囲から逸脱することなく方法300に対し変更、追加又は省略が行われて良い。例えば、方法300の工程は、異なる順序で実施されて良い。追加又は代替で、2以上の工程が同時に実行されて良い。さらに、概略のステップ及び動作は、単に例として提供され、幾つかのステップ及び動作は、開示の実施形態の本質から逸脱することなく、任意であり、より少ないステップ及び動作に組み合わされ、又は追加ステップ及び動作に拡張されて良い。
さらに、幾つかの実施形態では、方法300は反復的に実行されて良く、ここで、1又は複数の工程が単一の障害位置に対して同時に実行されて良い。追加又は代替で、1又は複数のブロックに関連する1又は複数の工程は、複数の障害位置に関して一度に実行されて良い。
図4は、本開示に記載の少なくとも一実施形態による、修復候補として使用され得る合成メソッド呼び出しを生成し及び優先順位付けする例示的な方法のフローチャートを示す。方法400は、被検査コードに対して、任意の適切なシステム、機器、又は装置により実行されて良い。例えば、図1の修復モジュール106又は(例えば修復モジュールにより指示されるとき)図2のコンピューティングシステム202は、ソフトウェアプログラムの被検査コードに対して方法400に関連する工程のうちの1又は複数を実行し又は実行を指示して良い。別個のブロックとして示したが、特定の実装に依存して、方法400のブロックのうちの1又は複数に関連するステップ及び工程は、更なるブロックに分割され、少ないブロックに結合され、又は除去されて良い。上述のように、幾つかの例では、方法400の工程のうちの1又は複数は、方法300のブロック304及び/又はブロック306に関して実行されて良い。
方法400は、ブロック402で開始して良い。ブロック402で、識別された障害位置に対応するソフトウェアプログラムの特定の範囲内にある1又は複数のオブジェクトが識別されて良い。幾つかの実施形態では、特定の範囲内にあるオブジェクトの全部が識別されて良い。幾つかの実施形態では、オブジェクトの識別は、オブジェクト種類、コード内のオブジェクトの位置、オブジェクトに含まれる識別されたメソッドの署名、等のようなオブジェクト特性の識別を含んで良い。
ブロック404で、識別されたオブジェクトは、メソッド呼び出しの生成のために解決されて(resolved)良い。例えば、識別されたメソッドは、合成メソッド呼び出しの可能性のある対象メソッドであって良く、識別されたメソッドのメソッド署名が識別されて良い。メソッド署名に基づき、どの種類のオブジェクトが、対応する識別されたメソッドの定義オブジェクト及び/又は引数であり得るかが決定されて良い。上述又は他の実施形態では、識別されたメソッドの定義オブジェクトと互換性のある種類を有する識別されたオブジェクトは、各対応する識別されたメソッドの可能性のある定義オブジェクトとして指定されて良い。追加又は代替で、さらに、識別されたメソッドの定義オブジェクトと互換性のない識別されたオブジェクトは、各対応する識別されたメソッドの可能性のある定義オブジェクトではないとして指定されて良い。上述又は他の実施形態では、識別されたメソッドの引数種類と互換性のある種類を有する識別されたオブジェクトは、各対応する識別されたメソッドの可能性のある引数であるとして識別され指定されて良い。さらに、識別されたメソッドの引数種類と互換性のない種類を有する識別されたオブジェクトは、各対応する識別されたメソッドの可能性のある引数ではないとして識別され指定されて良い。
例えば、特定のメソッドの定義オブジェクトは、整数型であって良い。したがって、整数型である全ての識別されたオブジェクトは、特定のメソッドの可能性のある定義オブジェクトとして指定されて良い。上述及び他の実施形態では、整数型ではない全ての定義オブジェクトは、特定のメソッドの可能性のある定義オブジェクトではないとして指定されて良い。同様の工程が、特定のメソッドのメソッド署名により示される引数種類に基づき特定のメソッドの引数として使用され得るオブジェクトを識別することに関して、実行されて良い。
ブロック406で、対象メソッドとして使用され得る識別されたメソッド及び他の識別されたオブジェクトのうちの1又は複数に基づき、複数のメソッド呼び出しが生成されて良い。幾つかの実施形態では、複数のメソッド呼び出しが、特定の対象メソッドについて生成されて良い。例えば、特定の対象メソッドの各メソッド呼び出しは、定義オブジェクトとして互換性のあるオブジェクトを実装し及び解決により示されるとき引数として互換性のあるオブジェクトを実装することにより、生成されて良い。幾つかの実施形態では、メソッド呼び出しの全ての可能性のある順列が、特定の対象メソッドについて生成されて良い。追加又は代替で、メソッド呼び出しの全ての可能な順列が、識別され得る全ての対象メソッドについて生成されて良い。
ブロック408で、複数の合成メソッド呼び出しのうちの特定の合成メソッド呼び出しが選択されて良い。ブロック410で、幾つかの実施形態では、特定の合成メソッド呼び出しについてコンテキストスコアが決定されて良い。上述のように、コンテキストスコアは、特定の合成メソッド呼び出しの1又は複数の特性と障害位置との間の関係に基づいて良い。幾つかの実施形態では、コンテキストスコアは、図5の方法500に関して後述する1又は複数の工程に基づき生成されて良い。
ブロック412で、幾つかの実施形態では、特定の合成メソッド呼び出しについてエラーレポートスコアが決定されて良い。幾つかの例では、エラーレポートスコアは、特定の合成メソッド呼び出しの1又は複数の特性と特定の障害位置に対応するエラーレポートとの間の関係に基づいて良い。幾つかの実施形態では、エラーレポートスコアは、図6の方法600に関して後述する1又は複数の工程に基づき生成されて良い。
ブロック414で、幾つかの実施形態では、特定の合成メソッド呼び出しについて複合スコアが決定されて良い。幾つかの実施形態では、複合スコアは、特定の合成メソッド呼び出しのコンテキストスコア及び特定の合成メソッド呼び出しのエラーレポートスコアに基づいて良い。幾つかの実施形態では、複合スコアは、図7の方法700に関して後述する1又は複数の工程に基づき生成されて良い。
ブロック416で、スコア付けされていない(例えば、コンテキストスコア、エラーレポートスコア、及び/又は複合スコアを受けていない)合成メソッド呼び出しが存在するか否かが決定されて良い。スコア付けされていない合成メソッド呼び出しが存在すると決定することに応答して、方法400はブロック408に戻って良い。幾つかの実施形態では、方法400は、全部の合成メソッド呼び出しがスコア付けされるまで、ブロック408、410、412、414、及び416の工程を繰り返して良い。
ブロック418で、合成メソッド呼び出しは、スコア付けに基づき優先順位付けされて良い。例えば、幾つかの実施形態では、合成メソッド呼び出しの複合スコアは、「0」乃至「1」の範囲を有して良い。ここで、「1」のスコアは、対応する合成メソッド呼び出しが障害位置に対して有効な修復である可能性が高いことを示し、「0」のスコアは、対応する合成メソッド呼び出しが障害に対して有効な修復である可能性が低いことを示す。このように、幾つかの実施形態では、合成メソッド呼び出しの優先順位付けは、より高いスコアを有する合成メソッド呼び出しがより低いスコアを有する合成メソッド呼び出しより優先されるようにされて良い。例えば、合成メソッド呼び出しは、それら個々のスコアに従いリスト内に並べられて良い。ここで、最高スコアはリストの最上位にあり、最低スコアはリストの最下位にある。このような例では、優先順位付けは、最高優先度を有するリストの順序がリストの最上位に関連することに基づいて良い。
追加又は代替で、優先順位付けは、修復候補として合成メソッド呼び出しのうちの1又は複数を検討から廃棄する又は枝刈りすることを含んで良い。例えば、幾つかの実施形態では、閾値より低いスコア(例えば、特徴スコア、エラーレポートスコア、又は複合スコア)を有する合成メソッド呼び出しは、可能性のある修復候補としての検討から切り捨てられて良い。幾つかの実施形態では、閾値は、エラー修正操作のために利用可能であり得る時間及び計算リソースに基づき設定されて良い。例えば、無限の時間又は有限のリソースが利用可能である場合、閾はゼロであって良い。しかしながら、実際には、時間及びリソースの両方が限られている可能性が高い。したがって、閾値は、以前の実験に基づく知識、又は機械学習技術を用いるトレーニングデータセットからの学習に基づき設定されて良い。
本開示の範囲から逸脱することなく方法400に対し変更、追加又は省略が行われて良い。例えば、方法400の工程は、異なる順序で実施されて良い。追加又は代替で、2以上の工程が同時に実行されて良い。さらに、概略のステップ及び動作は、単に例として提供され、幾つかのステップ及び動作は、開示の実施形態の本質から逸脱することなく、任意であり、より少ないステップ及び動作に組み合わされ、又は追加ステップ及び動作に拡張されて良い。
例えば、幾つかの実施形態では、複合スコアの決定は、全てのコンテキストスコア及びエラーレポートスコアの生成の後に実行されて良い。追加又は代替で、幾つかの実施形態では、コンテキストスコアの決定又はエラーレポートスコアの決定は、省略されて良い。上述又は他の実施形態では、複合スコアの決定も省略されて良い。
さらに、幾つかの実施形態では、方法400は反復的に実行されて良く、ここで、一度に、単一の障害位置が分析されて良い。追加又は代替で、1又は複数のブロックに関連する1又は複数の工程は、複数の障害位置に関して一度に実行されて良い。さらに、幾つかの実施形態では、ブロック408、410、412、及び414に関連する工程は、一度に、単一の合成メソッド呼び出しに関して反復的に実行されて良い。追加又は代替で、ブロック408、410、412に関連する1又は複数の工程は、複数の合成メソッド呼び出しに関して一度に実行されて良い。さらに、幾つかの実施形態では、合成メソッド呼び出しは、既に生成されて良い。したがって、ブロック402、404、及び406に関する1又は複数の工程は、幾つかの例では省略されて良い。
図5は、本開示で説明される少なくとも一実施形態による、コンテキストスコアを決定する例示的な方法500のフローチャートである。方法500は、被検査コード(例えば、図1の被検査コード104)に対して、任意の適切なシステム、機器、又は装置により実行されて良い。例えば、図1の修復モジュール106又は(例えば修復モジュールにより指示されるとき)図2のコンピューティングシステム202は、ソフトウェアプログラムの被検査コードの障害位置のための可能性のある修復候補(「候補メソッド呼び出し」として参照される)であり得るメソッド呼び出し(例えば、上述のような合成メソッド呼び出し)に対して方法500に関連する工程のうちの1又は複数を実行し又は実行を指示して良い。別個のブロックとして示したが、特定の実装に依存して、方法500のブロックのうちの1又は複数に関連するステップ及び工程は、更なるブロックに分割され、少ないブロックに結合され、又は除去されて良い。
方法500は、ブロック502で開始して良い。ブロック502で、候補メソッド呼び出しについて、戻り型関係スコアが決定されて良い。戻り型関係スコアは、候補メソッド呼び出しの戻り型と障害位置との間の関係を示して良い。第1の例として、障害位置は、整数である変数を定めるコードの行に対応して良く、候補メソッド呼び出しは整数を返して良い。第1の例における戻り型関係スコアは、戻り型関係が障害位置と互換性があることに基づき、候補メソッド呼び出しがより高い優先度を与えられていることを反映して良い。第2の例として、障害位置は、整数である変数を定めるコードの行に対応して良いが、候補メソッド呼び出しは文字列を返して良い。第2の例における戻り型関係は、戻り型関係が互換性がないことに基づき、候補メソッド呼び出しがより低い優先度を与えられていることを反映して良い。本開示では、戻り型関係が障害位置と互換性があることへの言及は、候補メソッド呼び出しの戻り型が、障害位置にあるコードと互換性のある方法で障害位置において使用され得ることを示す。
幾つかの実施形態では、戻り型関係スコアは、「0」又は「1」の値を有して良い。ここで、「1」のスコアは、候補メソッド呼び出しの戻り型が障害位置と互換性があることを示し、「0」のスコアは、対応する合成メソッド呼び出しが障害に対して有効な修復である可能性が低いことを示す。例えば、上述の第1の例における候補メソッド呼び出しは、戻り型が障害位置と互換性があることに基づき、「1」の戻り型関係スコアを与えられて良い。これに対し、上述の第2の例における候補メソッド呼び出しは、戻り型が障害位置と互換性がないことに基づき、「0」の戻り型関係スコアを与えられて良い。
ブロック504で、障害位置に対する候補メソッド呼び出しのオブジェクトの相対位置に基づき、候補メソッド呼び出しについて1又は複数の距離スコアが決定されて良い。幾つかの実施形態では、距離スコアは、候補メソッド呼び出しにより使用され得る各オブジェクトについて決定されて良い。例えば、距離スコアは、候補メソッド呼び出しの定義オブジェクトについて、及び候補メソッド呼び出しの中で引数として使用されるオブジェクトの各々について、決定されて良い。
幾つかの例では、コード内でオブジェクトがコードの障害位置のより近くに置かれるほど、オブジェクトが障害位置にある障害を修復するのに有用である可能性が高い。このように、幾つかの実施形態では、障害位置の近くに置かれるオブジェクトを使用する候補メソッド呼び出しは、障害位置からより遠くに置かれるオブジェクトを使用する候補メソッド呼び出しよりも優先されて良い。幾つかの実施形態では、距離スコアは、この優先順位付けを反映して良い。本開示では、オブジェクトの位置への言及は、オブジェクト名が使用されるソフトウェアプログラムのコード内の位置を表して良い。さらに、障害位置に対するオブジェクトの位置の言及は、オブジェクトから障害位置まで何行のコードかに関する指示を表して良い。これは、オブジェクトと障害位置との間の距離としても参照され得る。
例として、幾つかの実施形態では、距離スコアは、単に障害位置とオブジェクトの各々の位置との間に存在し得るコードの行数を決定することにより、及び決定された行数を結果として生じる距離スコアとして使用することにより、決定されて良い。例えば、障害位置から2行の範囲内にあるオブジェクトは、「2」の距離スコアを与えられて良い。このような例では、より低い距離スコアは、より高い距離スコアよりも高い優先度を与えられて良い。
上述又は他の実施形態では、距離スコアは、「0」乃至「1」の間の値を有するよう正規化されて良い。ここで、「1」のスコアは、オブジェクトが障害位置に配置されることを示し、「0」のスコアは、オブジェクトが障害位置から可能な限り離れて配置されることを示す。例えば、幾つかの実施形態では、各オブジェクトの距離スコアは、次式を用いて決定されて良い。
(コードの合計行数−決定された距離)/(コードの合計行数)
上式では、「コードの合計行数」は、障害位置に対応するソフトウェアプログラムのメソッドの中のコードの行数を表し、「決定された距離」は、障害位置と最後に使用されたオブジェクトとの間の行数を表す。例えば、候補メソッド呼び出しは、第1オブジェクト、第2オブジェクト、及び第3オブジェクトを含んで良い。「コードの合計行数」は20であって良く、第1オブジェクトは障害位置から3行離れた位置を有して良く、第2オブジェクトは、障害位置から1行離れた位置を有して良く、第3オブジェクトは、障害位置から6行離れた位置を有して良い。第1オブジェクトの第1距離スコアは「0.85(「(20−3)/20」)」であって良く、第2オブジェクトの第2距離スコアは「0.95(「(20−1)/20」)」であって良く、第3オブジェクトの第3距離スコアは「0.70(「(20−6)/20」)」であって良い。
幾つかの例では、オブジェクトの1回より多くの発生がコードに含まれて良い。したがって、オブジェクトは、障害位置に対して1より多くの距離を有して良い。幾つかの実施形態では、オブジェクトの距離スコアは、障害位置に最も近いオブジェクトの発生、障害位置から最も遠いオブジェクトの発生、障害位置からの平均距離、又は任意の他の適切な距離若しくは距離の組合せに基づいて良い。
ブロック506で、候補メソッド呼び出しのオブジェクトの発生数に基づき、候補メソッド呼び出しについて1又は複数の発生スコアが決定されて良い。幾つかの実施形態では、発生スコアは、候補メソッド呼び出しにより使用され得る各オブジェクトについて決定されて良い。例えば、発生スコアは、候補メソッド呼び出しの定義オブジェクトについて、及び候補メソッド呼び出しの中で引数として使用されるオブジェクトの各々について、決定されて良い。
幾つかの例では、コード内でオブジェクトがコードの障害位置の近傍の範囲内に置かれる回数が多いほど、オブジェクトが障害位置にある障害を修復するのに有用である可能性が高い。このように、幾つかの実施形態では、障害位置の近傍の範囲内で複数回生じるオブジェクトを使用する候補メソッド呼び出しは、障害位置の近傍の範囲内でより少ない回数生じるオブジェクトを使用する候補メソッド呼び出しよりも優先されて良い。幾つかの実施形態では、発生スコアは、この優先順位付けを反映して良い。本開示では、障害位置の近傍の範囲内にあることの言及は、障害位置の特定行数のコードの範囲内にあることを表して良い。例えば、障害位置から特定行数を加算した又は減算した行における発生が、近傍の範囲内であると考えられて良い。このような決定のために使用され得る行数は、特定のソフトウェアプログラムに依存して変化して良く、以前の経験による知識に基づいて良く、及び/又は機械学習技術を用いてトレーニングデータセットから学習されて良い。
例として、幾つかの実施形態では、発生スコアは、単に、障害位置の近傍の範囲内にあり得る特定のオブジェクトの発生回数を決定することにより決定されて良い。例えば、近傍の範囲内で3回生じるオブジェクトは、「3」の発生スコアを与えられて良い。このような例では、より高い発生スコアは、より低い発生スコアよりも高い優先度を与えられて良い。
上述又は他の実施形態では、発生スコアは、「0」と「1」の間の値を有するよう正規化されて良い。ここで、発生スコアが「1」に近いほど、対応するオブジェクトが他のオブジェクトと比べて近傍でより多く発生して良い。「0」のスコアは、オブジェクトが近傍の範囲内で発生しないことを示す。例えば、幾つかの実施形態では、各オブジェクトの発生スコアは、次式を用いて決定されて良い。
(対象オブジェクトの発生回数)/(任意のオブジェクトの最大発生回数)
上式では、「対象オブジェクトの発生回数」は、障害位置の近傍の範囲内にあるとスコア付けされているオブジェクトの発生回数を表し、「任意のオブジェクトの最大発生回数」は、近傍の範囲内で生じる候補メソッド呼び出しの任意のオブジェクトの発生回数を表す。例えば、候補メソッド呼び出しは、第1オブジェクト、第2オブジェクト、及び第3オブジェクトを含んで良い。第1オブジェクトは近傍の範囲内で3回の発生を有して良く、第2オブジェクトは近傍の範囲内で5回の発生を有して良く、第3オブジェクトは近傍の範囲内で発生を有しなくて良い。第1オブジェクトの第1発生スコアは「0.6(「3/5」)」であって良く、第2オブジェクトの第2発生スコアは「1.0(「5/5」)」であって良く、第3オブジェクトの第3発生スコアは「0(「0/5+」)」であって良い。
ブロック508で、候補メソッド呼び出しについてセマンティック類似性スコアが決定されて良い。セマンティック類似性スコアは、候補メソッド呼び出しの対象メソッド名の障害があるメソッド(「障害位置メソッド」として参照される)の名称とのセマンティック類似性を示して良い。
幾つかの例では、ソフトウェアプログラムの中のオブジェクトは、それらの種類、機能、等を示す名称を与えられる場合が多い。したがって、類似する名称を有するオブジェクトは、異なる名称を有するオブジェクトよりも、互いにより関連し得る。したがって、修復として使用され得る候補メソッド呼び出しのメソッド名が、障害位置メソッドのメソッド名に近いほど、候補メソッド呼び出しが障害位置メソッドに関連する、したがって障害位置にある障害を修復するのにより有用であり得る可能性が高い。したがって、幾つかの実施形態では、障害位置メソッドのメソッド名にテキスト的に類似する(意味論的(semantically)に類似しているとしても参照される)メソッド名を有する候補メソッド呼び出しは、テキスト的にあまり類似しないメソッド名を有する候補メソッド呼び出しよりも優先されて良い。幾つかの実施形態では、候補メソッド呼び出しのセマンティック類似性スコアは、この優先順位を反映して良い。
例として、幾つかの実施形態では、テキスト類似性分析は、候補メソッド呼び出しのメソッド名及び障害位置メソッドのメソッド名に対して実行されて良い。例えば、幾つかの実施形態では、テキスト類似性は、最長共通部分列(Longest Common Subsequence:LCS)アルゴリズム又はジャカード係数(Jaccard Similarity Coeffiecient)により決定されて良い。テキスト類似性は、テキスト非類似性の反対としても考えられる。したがって、編集距離のようなテキスト非類似性決定に関連する任意の適切なアルゴリズムも使用されて良い。追加又は代替で、幾つかの実施形態では、テキスト類似性分析は、候補メソッド呼び出しのメソッド名と障害位置メソッドのメソッド名との間のセマンティック類似性を生成するために使用されて良い。セマンティック類似性スコアがより近い程度の類似性を示すほど、セマンティック類似性スコアに割り当てられ得る優先度はより高い。例えば、相対的に高い程度の類似性を示すセマンティック類似性スコアは、相対的に低い程度の類似性を示すスコアに優る優先度を与えられて良い。
上述又は他の実施形態では、セマンティック類似性スコアは、「0」乃至「1」の間の値を有するよう正規化されて良い。ここで、「1」のスコアは、候補メソッド呼び出しのメソッド名が障害位置メソッドのメソッド名と一致することを示し、「0」のスコアは、候補メソッド呼び出しのメソッド名が障害位置メソッドのメソッド名に少ししか乃至全く類似しないことを示す。例えば、幾つかの実施形態では、セマンティック類似性スコアは、次式を用いて決定されて良い。(対象オブジェクトのテキスト類似性)/(任意のオブジェクトの最大テキスト類似性)
上式では、「対象オブジェクトのテキスト類似性」は、対象オブジェクトと障害位置メソッドとの間の類似性スコアを表し、「任意のオブジェクトの最大テキスト類似性」は、障害位置メソッドに最も類似するオブジェクトの類似性スコアを表す。例えば、障害位置メソッドは、第1オブジェクト、第2オブジェクト、及び第3オブジェクトを含んで良い。第1オブジェクト、第2オブジェクト、及び第3オブジェクトの類似性スコアは、それぞれ0.3、0.0、0.5であって良い。したがって、第1オブジェクトの正規化類似性スコアは「0.6(「0.3/0.5」)」であって良く、第2オブジェクトの正規化類似性スコアは「0.0(「0.0/0.5」)」であって良く、第3オブジェクトの正規化類似性スコアは「1.0(「0.5/0.5」)」であって良い。
ブロック510で、幾つかの実施形態では、候補メソッド呼び出しについてコンテキストスコアが決定されて良い。幾つかの実施形態では、コンテキストスコアは、戻り型関係スコア、1又は複数の距離スコア、1又は複数の発生スコア、セマンティック類似性スコア、又はそれらの任意の適切な組み合わせに基づき又は含んで良い。幾つかの実施形態では、コンテキストスコアは、上述のスコア種類の全部の組合せを含んで良い。追加又は代替で、コンテキストスコアが述のスコア種類の組合せを含む例では、上述のスコア種類は正規化されて良い。
例えば、幾つかの実施形態では、候補メソッド呼び出しの戻り型関係スコアは、上述のように「0」又は「1」の値を有して良く、候補メソッド呼び出しの各オブジェクトの距離スコアは、上述のように「0」と「1」の間の値を有するよう正規化されて良く、候補メソッド呼び出しの各オブジェクトの発生スコアは、上述のように「0」と「1」の間の値を有するよう正規化されて良く、セマンティック類似性スコアは、上述のように「0」と「1」の間の値を有するよう正規化されて良い。幾つかの実施形態では、コンテキストスコアは、候補メソッド呼び出しの、戻り型関係スコア、距離スコア、発生スコア、及びセマンティック類似性スコアの平均を有して良い。
追加又は代替で、コンテキストスコアは加重平均を有して良い。ここで、上述のスコア種類のうちの1又は複数は、候補メソッド呼び出しを優先順位付けすることに関して対応する因子の決定された重要度に基づき、異なる重みを与えられる。例えば、幾つかの例では、候補メソッド呼び出しの戻り型が障害位置と互換性があるか否かは、メソッド名同士のセマンティック類似性よりも、候補メソッド呼び出しの有効性のより高い指示子であって良い。このような例では、戻り型関係スコアは、セマンティック類似性スコアよりも高い重みを与えられて良い。幾つかの実施形態では、特定の属性の重みは、該属性が前のパッチにどれだけ多く関連するかに依存して良い。追加又は代替で、幾つかの実施形態では、重みは、前のパッチに関連するデータに基づき決定されて良い。上述又は他の実施形態では、重みは、機械学習アルゴリズムを用いて決定されて良い。
追加又は代替で、幾つかの実施形態では、コンテキストスコアに関連するスコアのうちの2以上が、一次回帰、ロジスティック回帰、決定木技術、又はランダム予報技術のような種々の機械学習技術を用いて学習された数学的モデルを用いて結合されて良い。
本開示の範囲から逸脱することなく方法500に対し変更、追加又は省略が行われて良い。例えば、方法500の工程は、異なる順序で実施されて良い。追加又は代替で、2以上の工程が同時に実行されて良い。さらに、概略のステップ及び動作は、単に例として提供され、幾つかのステップ及び動作は、開示の実施形態の本質から逸脱することなく、任意であり、より少ないステップ及び動作に組み合わされ、又は追加ステップ及び動作に拡張されて良い。さらに、与えられるスコア付け技術は単なる例であり、スコア付けの任意の適切な変形が用いられて良い。
図6は、本開示で説明される少なくとも一実施形態による、エラーレポートスコアを決定する例示的な方法600のフローチャートである。方法600は、被検査コード(例えば、図1の被検査コード104)に対して、任意の適切なシステム、機器、又は装置により実行されて良い。例えば、図1の修復モジュール106又は(例えば修復モジュールにより指示されるとき)図2のコンピューティングシステム202は、ソフトウェアプログラムの被検査コードの障害位置のための可能性のある修復候補(「候補メソッド呼び出し」として参照される)であり得るメソッド呼び出し(例えば、上述のような合成メソッド呼び出し)に対して方法600に関連する工程のうちの1又は複数を実行し又は実行を指示して良い。別個のブロックとして示したが、特定の実装に依存して、方法600のブロックのうちの1又は複数に関連するステップ及び工程は、更なるブロックに分割され、少ないブロックに結合され、又は除去されて良い。
方法600は、ブロック602で開始して良い。ブロック602で、1又は複数のメソッド名セマンティック類似性スコアが、障害位置に対応し得るエラーレポートに対する候補メソッド呼び出しのメソッド名に関して決定されて良い。幾つかの例では、エラーレポートは、障害位置にある障害に起因する問題を経験し得るソフトウェアプログラムからの項目(例えば、オブジェクト名)を含んで良い。さらに、上述のように、ソフトウェアプログラムの中のオブジェクトは、それらの種類、機能、等を示す名称を与えられる場合が多い。したがって、類似する名称を有するオブジェクトは、異なる名称を有するオブジェクトよりも、互いにより関連し得る。したがって、修復として使用され得る候補メソッド呼び出しのメソッド名が、エラーレポートに含まれるワード(例えば、障害位置により影響されるオブジェクト)に近いほど、候補メソッド呼び出しがエラーレポートに対応する障害位置にある障害を修復するのにより有用であり得る可能性が高い。したがって、幾つかの実施形態では、エラーレポートに含まれる1又は複数のワードにテキスト的に類似する(意味論的に(semantically)類似しているとしても参照される)メソッド名を有する候補メソッド呼び出しは、エラーレポートのワードにテキスト的にあまり類似しないメソッド名を有する候補メソッド呼び出しよりも優先されて良い。
幾つかの実施形態では、メソッド名セマンティック類似性スコアは、候補メソッド呼び出しのメソッド名及びエラーレポートに含まれる全てのワードに対して決定されて良い。追加又は代替で、メソッド名セマンティック類似性スコアは、候補メソッド呼び出しのメソッド名及びエラーレポートに含まれるワードに対して決定されて良い。
幾つかの実施形態では、メソッド名セマンティック類似性スコアは、方法500のブロック508のセマンティック類似性スコアを決定するステップに関して上述したものと類似して、同様に、又は同じ方法で生成されて良い。追加又は代替で、メソッド名セマンティック類似性スコアは、ブロック508に関して上述したものと類似して、同様に、又は同じ方法で正規化されて良い。
追加又は代替で、幾つかの実施形態では、エラーレポートに対する候補メソッド呼び出しの複数のメソッド名セマンティック類似性スコアに関して、最高メソッド名セマンティック類似性スコアが、候補メソッド呼び出しのメソッド名セマンティック類似性スコアとして使用されて良い。上述又は他の実施形態では、全てのメソッド名セマンティック類似性スコアが平均化されて良く、平均が、候補メソッド呼び出しのメソッド名セマンティック類似性スコアとして使用されて良い。
ブロック604で、オブジェクト名セマンティック類似性スコアは、障害位置に対応するエラーレポートに関して、候補メソッド呼び出しにより使用されるオブジェクトの名称のうちの1又は複数に関して決定されて良い。
幾つかの例では、修復として使用され得る候補メソッド呼び出しのオブジェクト名が、エラーレポートに含まれるワード(例えば、障害位置により影響されるオブジェクト)に近いほど、候補メソッド呼び出しがエラーレポートに対応する障害位置にある障害を修復するのにより有用であり得る可能性が高い。したがって、幾つかの実施形態では、エラーレポートに含まれる1又は複数のワードにテキスト的に類似するオブジェクト名を有するオブジェクトを使用する候補メソッド呼び出しは、エラーレポートのワードにテキスト的にあまり類似しないオブジェクトを有するオブジェクトを使用する候補メソッド呼び出しよりも優先されて良い。
幾つかの実施形態では、1又は複数のオブジェクト名類似性スコアは、候補メソッド呼び出しにより使用され得る各オブジェクトについて決定されて良い。追加又は代替で、オブジェクト名セマンティック類似性スコアは、オブジェクト及びエラーレポートに含まれる全てのワードに関して決定されて良い。追加又は代替で、オブジェクト名セマンティック類似性スコアは、オブジェクト及びエラーレポートに含まれるワードの部分集合に関して決定されて良い。
幾つかの実施形態では、オブジェクト名セマンティック類似性スコアは、方法500のブロック508のセマンティック類似性スコアを決定するステップに関して上述したものと類似して、同様に、又は同じ方法で生成されて良い。追加又は代替で、オブジェクト名セマンティック類似性スコアは、ブロック508に関して上述したものと類似して、同様に、又は同じ方法で正規化されて良い。
追加又は代替で、幾つかの実施形態では、特定のオブジェクトの複数のオブジェクト名セマンティック類似性スコアに関して、最高オブジェクト名セマンティック類似性スコアが、特定のオブジェクトのオブジェクト名セマンティック類似性スコアとして使用されて良い。上述又は他の実施形態では、全てのオブジェクト名セマンティック類似性スコアが平均化されて良く、平均が、特定のオブジェクトのオブジェクト名セマンティック類似性スコアとして使用されて良い。
ブロック606で、オブジェクト種類セマンティック類似性スコアは、障害位置に対応し得るエラーレポートに関して、候補メソッド呼び出しにより使用されるオブジェクトに対応するオブジェクト種類の種類名のうちの1又は複数に関して決定されて良い。幾つかの例では、修復として使用され得る候補メソッド呼び出しのオブジェクトの種類名が、エラーレポートに含まれるワード(例えば、障害位置により影響されるオブジェクト)に近いほど、候補メソッド呼び出しがエラーレポートに対応する障害位置にある障害を修復するのにより有用であり得る可能性が高い。したがって、幾つかの実施形態では、エラーレポートに含まれる1又は複数のワードにテキスト的に類似する種類名を有する種類のオブジェクトを使用する候補メソッド呼び出しは、エラーレポートのワードにテキスト的にあまり類似しない種類名を有する種類のオブジェクトを使用する候補メソッド呼び出しよりも優先されて良い。
幾つかの実施形態では、1又は複数のオブジェクト種類名類似性スコアは、候補メソッド呼び出しにより使用され得る各オブジェクトについて決定されて良い。追加又は代替で、オブジェクト種類名セマンティック類似性スコアは、オブジェクト及びエラーレポートに含まれる全てのワードに関して決定されて良い。追加又は代替で、オブジェクト種類名セマンティック類似性スコアは、オブジェクト及びエラーレポートに含まれるワードの部分集合に関して決定されて良い。
幾つかの実施形態では、オブジェクト種類名セマンティック類似性スコアは、方法500のブロック508のセマンティック類似性スコアを決定するステップに関して上述したものと類似して、同様に、又は同じ方法で生成されて良い。追加又は代替で、オブジェクト種類名セマンティック類似性スコアは、ブロック508に関して上述したものと類似して、同様に、又は同じ方法で正規化されて良い。
追加又は代替で、幾つかの実施形態では、特定のオブジェクトの複数のオブジェクト種類名セマンティック類似性スコアに関して、最高オブジェクト種類名セマンティック類似性スコアが、特定のオブジェクトのオブジェクト種類名セマンティック類似性スコアとして使用されて良い。上述又は他の実施形態では、全てのオブジェクト種類名セマンティック類似性スコアが平均化されて良く、平均が、特定のオブジェクトのオブジェクト種類名セマンティック類似性スコアとして使用されて良い。
ブロック608で、幾つかの実施形態では、候補メソッド呼び出しについてエラーレポートスコアが生成されて良い。幾つかの実施形態では、エラーレポートスコアは、候補メソッド呼び出しに関連する1又は複数のメソッド名セマンティック類似性スコア、候補メソッド呼び出しに関連する1又は複数のオブジェクト名セマンティック類似性スコア、候補メソッド呼び出しに関連する1又は複数のオブジェクト名セマンティック類似性スコア、又はそれらの任意の適切な組合せに基づき又は含んで良い。幾つかの実施形態では、エラーレポートスコアは、上述のスコア種類の全部の組合せを含んで良い。追加又は代替で、エラーレポートスコアが述のスコア種類の組合せを含む例では、上述のスコア種類は正規化されて良い。追加又は代替で、幾つかの実施形態では、エラーレポートスコアは、使用される正規化されたスコアの平均を含んで良い。
追加又は代替で、エラーレポートスコアは加重平均を有して良い。ここで、上述のスコア種類のうちの1又は複数は、候補メソッド呼び出しを優先順位付けすることに関して対応する因子の決定された重要度に基づき、異なる重みを与えられる。例えば、幾つかの例では、エラーレポートに対するメソッド名セマンティック類似性は、エラーレポートに対するオブジェクト名セマンティック類似性よりも、候補メソッド呼び出しの有効性のより高い指示子であり得る。このような例では、メソッド名セマンティック類似性スコアは、オブジェクト種類セマンティック類似性スコアよりも高い重みを与えられて良い。幾つかの実施形態では、特定の属性の重みは、該属性が前のパッチにどれだけ多く関連するかに依存して良い。追加又は代替で、幾つかの実施形態では、重みは、前のパッチに関連するデータに基づき決定されて良い。上述又は他の実施形態では、重みは、機械学習アルゴリズムを用いて決定されて良い。
追加又は代替で、幾つかの実施形態では、コンテキストスコアに関連するスコアのうちの2以上が、一次回帰、ロジスティック回帰、決定木技術、又はランダム予報技術のような種々の機械学習技術を用いて学習された数学的モデルを用いて結合されて良い。
本開示の範囲から逸脱することなく方法600に対し変更、追加又は省略が行われて良い。例えば、方法600の工程は、異なる順序で実施されて良い。追加又は代替で、2以上の工程が同時に実行されて良い。さらに、概略のステップ及び動作は、単に例として提供され、幾つかのステップ及び動作は、開示の実施形態の本質から逸脱することなく、任意であり、より少ないステップ及び動作に組み合わされ、又は追加ステップ及び動作に拡張されて良い。さらに、与えられるスコア付け技術は単なる例であり、スコア付けの任意の適切な変形が用いられて良い。
図7は、本開示で説明される少なくとも一実施形態による、複合スコアを決定する例示的な方法700のフローチャートである。方法700は、被検査コード(例えば、図1の被検査コード104)に対して、任意の適切なシステム、機器、又は装置により実行されて良い。例えば、図1の修復モジュール106又は(例えば修復モジュールにより指示されるとき)図2のコンピューティングシステム202は、ソフトウェアプログラムの被検査コードの障害位置のための可能性のある修復候補(「候補メソッド呼び出し」として参照される)であり得るメソッド呼び出し(例えば、上述のような合成メソッド呼び出し)に対して方法700に関連する工程のうちの1又は複数を実行し又は実行を指示して良い。別個のブロックとして示したが、特定の実装に依存して、方法700のブロックのうちの1又は複数に関連するステップ及び工程は、更なるブロックに分割され、少ないブロックに結合され、又は除去されて良い。
方法700は、ブロック702で開始して良い。ブロック702で、候補メソッド呼び出しについて、戻り型関係スコアが取得されて良い。幾つかの実施形態で、戻り型関係スコアは、図5の方法500のブロック502に関して上述したものと同様であって良い。追加又は代替で、戻り型関係スコアは、図5の方法500のブロック502に関して上述したものと類似して、同様に、又は同じ方法で取得されて良い。上述又は他の実施形態では、戻り型関係スコアは正規化されて良い。例として、戻り型関係スコアは、図5の方法500のブロック502に関して上述したものと類似して、同様に、又は同じ方法で正規化されて良い。
ブロック704で、候補メソッド呼び出しについて平均距離スコアが取得されて良い。幾つかの実施形態では、候補メソッド呼び出しの1又は複数のオブジェクトについての距離スコアが取得されて良い。上述又は他の実施形態では、距離スコアは、候補メソッド呼び出しの全てのオブジェクトについて取得されて良く、距離スコアは、図5の方法500のブロック504に関して上述したものと同様であって良い。追加又は代替で、距離スコアは、図5の方法500のブロック504に関して上述したものと類似して、同様に、又は同じ方法で取得されて良い。上述又は他の実施形態では、距離スコアは正規化されて良い。例として、距離スコアは、図5の方法500のブロック504に関して上述したものと類似して、同様に、又は同じ方法で正規化されて良い。
追加又は代替で、幾つかの実施形態では、候補メソッド呼び出しのオブジェクトの距離スコアを平均することにより、平均距離スコアが取得されて良い。幾つかの実施形態では、平均は、加重平均であって良い。
ブロック706で、候補メソッド呼び出しについて平均発生スコアが取得されて良い。幾つかの実施形態では、候補メソッド呼び出しの1又は複数のオブジェクトについての発生スコアが取得されて良い。上述又は他の実施形態では、発生スコアは、候補メソッド呼び出しの全てのオブジェクトについて取得されて良く、発生スコアは、図5の方法500のブロック506に関して上述したものと同様であって良い。追加又は代替で、発生スコアは、図5の方法500のブロック506に関して上述したものと類似して、同様に、又は同じ方法で取得されて良い。上述又は他の実施形態では、発生スコアは正規化されて良い。例として、発生スコアは、図5の方法500のブロック506に関して上述したものと類似して、同様に、又は同じ方法で正規化されて良い。
追加又は代替で、幾つかの実施形態では、候補メソッド呼び出しのオブジェクトの発生スコアを平均することにより、平均発生スコアが取得されて良い。幾つかの実施形態では、平均は、加重平均であって良い。
ブロック708で、候補メソッド呼び出しについて平均コンテキストスコアが取得されて良い。幾つかの実施形態では、コンテキストスコアは、図5の方法500の1又は複数のブロックに関して上述したものと類似して、同様に、又は同じ方法で取得されて良い。
ブロック710で、候補メソッド呼び出しについてエラーレポートスコアが取得されて良い。幾つかの実施形態では、エラーレポートスコアは、図5の方法500の1又は複数のブロックに関して上述したものと類似して、同様に、又は同じ方法で取得されて良い。
ブロック712で、幾つかの実施形態では、候補メソッド呼び出しについて複合スコアが決定されて良い。幾つかの実施形態では、複合スコアは、戻り型関係スコア、平均距離スコア、平均発生スコア、コンテキストスコア、エラーレポートスコア、又はそれらの任意の適切な組み合わせに基づき又は含んで良い。幾つかの実施形態では、複合スコアは、上述のスコア種類の全部の組合せを含んで良い。追加又は代替で、複合スコアが述のスコア種類の組合せを含む例では、上述のスコア種類は正規化されて良い。追加又は代替で、幾つかの実施形態では、複合スコアは、使用される正規化されたスコアの平均を含んで良い。
上述又は他の実施形態では、複合スコアは加重平均を有して良い。ここで、上述のスコア種類のうちの1又は複数は、候補メソッド呼び出しを優先順位付けすることに関して対応する因子の決定された重要度に基づき、異なる重みを与えられる。幾つかの実施形態では、特定の属性の重みは、該属性が前のパッチにどれだけ多く関連するかに依存して良い。追加又は代替で、幾つかの実施形態では、重みは、前のパッチに関連するデータに基づき決定されて良い。上述又は他の実施形態では、重みは、機械学習アルゴリズムを用いて決定されて良い。
追加又は代替で、幾つかの実施形態では、コンテキストスコアに関連するスコアのうちの2以上が、一次回帰、ロジスティック回帰、決定木技術、又はランダム予報技術のような種々の機械学習技術を用いて学習された数学的モデルを用いて結合されて良い。
本開示の範囲から逸脱することなく方法700に対し変更、追加又は省略が行われて良い。例えば、方法700の工程は、異なる順序で実施されて良い。追加又は代替で、2以上の工程が同時に実行されて良い。さらに、概略のステップ及び動作は、単に例として提供され、幾つかのステップ及び動作は、開示の実施形態の本質から逸脱することなく、任意であり、より少ないステップ及び動作に組み合わされ、又は追加ステップ及び動作に拡張されて良い。さらに、与えられるスコア付け技術は単なる例であり、スコア付けの任意の適切な変形が用いられて良い。
上述のように、本開示で記載した実施形態は、以下に更に詳細に議論するように、種々のコンピュータハードウェア又はソフトウェアモジュールを備えた特定用途又は汎用コンピュータ(例えば、図2のプロセッサ250)の使用を含み得る。さらに、上述のように、本開示に記載の実施形態は、コンピュータ実行可能命令又はデータ構造を伝える又はそれを格納されたコンピュータ可読媒体(例えば、図2のメモリ252)を用いて実施されても良い。
本開示で用いられるように、用語「モジュール」又は「コンポーネント」は、モジュール若しくはコンポーネントのアクションを実行するよう構成される特定ハードウェア実装、及び/又はコンピューティングシステムの汎用ハードウェア(例えばコンピュータ可読媒体、処理装置、等)に格納され及び/又はそれらにより実行され得るソフトウェアオブジェクト又はソフトウェアルーチンを表して良い。幾つかの実施形態では、本開示に記載されたのと異なるコンポーネント、モジュール、エンジン及びサービスは、(例えば、別個のスレッドとして)コンピューティングシステムで実行されるオブジェクト又は処理として実施されて良い。本開示に記載のシステム及び方法の幾つかは概して(汎用ハードウェアに格納される及び/又はそれにより実行される)ソフトウェアで実装されるように記載されたが、専用ハードウェアの実装又はソフトウェアと専用ハードウェアの組み合わせの実装も可能であり考えられる。この説明では、「コンピュータエンティティ」は、本開示で先に定められたようにコンピューティングシステム、又はコンピューティングシステムで実行されるモジュール若しくはモジュールの組合せであって良い。
本開示で及び特に添付の特許請求の範囲(例えば、添付の特許請求の範囲の本体)で使用される用語は、概して、広義の(open)用語と考えられる(例えば、用語「含む(including)」は「含むが、限定されない」と解釈されるべきであり、用語「有する(having)」は「少なくとも有する」と解釈されるべきであり、用語「含む(includes)」は「含むが、限定されない」と解釈されるべきである)。
さらに、特定数の導入された請求項の引用が意図される場合、このような意図は、請求項の中に明示的に示され、このような引用が存在しない場合はこのような意図が存在しない。例えば、理解の助けとして、以下の添付の特許請求の範囲は、請求項の引用を導入するために、「少なくとも1つの」及び「1又は複数の」をいう前置語句の使用を含み得る。しかしながら、このような語句の使用は、同じ請求項が前置語句「1又は複数」又は「少なくとも1つの」及び「a又はan」のような不定冠詞を含むときでも、不定冠詞「a、an」による請求項引用の導入がこのような導入された請求項引用を含む任意の特定の請求項をこのような引用を1つだけ含む実施形態に限定することを示すと考えられてはならない(例えば、「a」及び/又は「an」は「少なくとも1つの」又は「1又は複数の」を意味すると解釈されるべきである)。同様のことは、請求項引用を導入するために使用される定冠詞の使用についても該当する。
さらに、特定数の導入された請求項引用が明示的に引用される場合、当業者は、このような引用が少なくとも引用された番号を意味することと解釈されるべきであることを認識するだろう(例えば、「2つの引用」はそのままで、他の変更が無ければ、少なくとも2つの引用、又は2以上の引用を意味する)。さらに、「A、B、C、等のうちの少なくとも1つ」又は「A、B、C、等のうちの1又は複数」に類似する慣例が用いられる例では、通常、このような構成は、Aのみ、Bのみ、Cのみ、A及びBを一緒に、A及びCを一緒に、B及びCを一緒に、又はA、B、Cを一緒に、等を含むと意図される。
さらに、2以上の代替用語を表す任意の離接語又は語句は、説明、請求項、又は図面の中であるかに係わらず、用語のうちの1つ、用語のうちのいずれか、又は両方の用語を含む可能性を包含すると理解されるべきである。例えば、語句「A又はB」は、「A」又は「B」又は「A及びB」の可能性を含むと理解されるべきである。
本開示に記載された全ての例及び条件文は、教育上の目的で、読者が本開示の原理及び発明者により考案された概念を理解するのを助け、技術を促進させるためであり、これらの特に記載された例及び条件に限定されないものと考えられるべきである。本開示の実施形態が詳細に記載されたが、種々の変更、置換及び修正が本開示の精神及び範囲から逸脱することなく行われ得る。
以上の実施形態に関し、さらに以下の付記を開示する。
(付記1) ソフトウェアプログラムの複数のオブジェクト及び複数のメソッドを用いて複数の合成メソッド呼び出しを取得するステップと、
前記複数の合成メソッド呼び出しの各々の1又は複数の特性と障害位置との間の関係、前記1又は複数の特性と前記障害位置に対応するエラーレポートとの間の関係、のうちの1又は複数に基づき、前記複数の合成メソッド呼び出しの優先順位を決定するステップと、
選択される合成メソッド呼び出しの対応する優先順位に基づき、前記障害位置に関する修復操作のために前記複数の合成メソッド呼び出しから合成メソッド呼び出しを選択するステップと、
前記障害位置に関する修復操作及び前記選択された合成メソッド呼び出しを実行するステップと、
を有する方法。
(付記2) 前記選択された合成メソッド呼び出しの前記1又は複数の特性は、前記選択された合成メソッド呼び出しにより使用されるオブジェクト、前記選択された合成メソッド呼び出しの戻り型、前記選択された合成メソッド呼び出しにより使用される前記オブジェクトのうちの1又は複数の各々の位置、前記選択された合成メソッド呼び出しのメソッド名、前記選択された合成メソッド呼び出しにより使用される前記オブジェクトのうちの1又は複数の各々の名称、前記選択された合成メソッド呼び出しにより使用される前記オブジェクトのうちの1又は複数の各々の種類、前記選択された合成メソッド呼び出しの中のオブジェクトのうちの1又は複数の各々の使用の種類、及び前記選択された合成メソッド呼び出しにより使用されるオブジェクトのうちの1又は複数の各々の発生回数、のうちの1又は複数を含む、付記1に記載の方法。
(付記3) 前記選択された合成メソッド呼び出しの前記特性のうちの前記1又は複数と前記障害位置との間の前記関係は、前記選択された合成メソッド呼び出しの前記戻り型と前記障害位置との間の戻り型関係、前記障害位置に関して前記選択された合成メソッド呼び出しにより使用される前記オブジェクトのうちの1又は複数の各々の位置、前記障害位置の特定行数の範囲内で前記選択された合成メソッド呼び出しにより使用される前記オブジェクトのうちの1又は複数の発生回数、前記障害位置に対応する現在実施されているメソッド呼び出しのメソッド名との前記選択された合成メソッド呼び出しのメソッド名のセマンティック類似性、のうちの1又は複数を含む、付記2に記載の方法。
(付記4) 前記選択された合成メソッド呼び出しの前記特性のうちの前記1又は複数と前記エラーレポートとの間の前記関係は、前記選択された合成メソッド呼び出しの前記メソッド名と前記エラーレポートに含まれる1又は複数のワードとの間のセマンティック類似性、前記オブジェクトのうちの1又は複数の名称と前記エラーレポートに含まれる1又は複数のワードとの間のセマンティック類似性、前記選択された合成メソッド呼び出しにより使用される前記オブジェクトのうちの1又は複数の種類の名称と前記エラーレポートに含まれる1又は複数のワードとの間のセマンティック類似性、のうちの1又は複数を含む、付記2に記載の方法。
(付記5) 前記複数の合成メソッド呼び出しを取得するステップは、
前記ソフトウェアプログラムの中の前記障害位置を識別するステップと、
前記ソフトウェアプログラムに含まれ且つ前記障害位置に対応する前記ソフトウェアプログラムの範囲内にあるオブジェクトを、前記複数のオブジェクトとして識別するステップと、
前記複数のオブジェクトを用いて前記複数の合成メソッド呼び出しを生成することにより、前記複数の合成メソッド呼び出しを取得するステップと、
を含む、付記1に記載の方法。
(付記6) 前記複数のオブジェクトからメソッドを識別するステップと、
前記識別したメソッドのメソッド署名を決定するステップと、
前記メソッド署名と互換性のある1又は複数の互換オブジェクトを識別するステップと、
前記識別したメソッド及び前記1又は複数の互換オブジェクトに基づき、1又は複数のメソッド呼び出しを生成するステップと、
を更に有する付記5に記載の方法。
(付記7) 前記複数の合成メソッド呼び出しの各々の1又は複数の特性と前記障害位置との間の関係、前記特性のうちの1又は複数と前記障害位置に対応するエラーレポートとの間の関係、のうちの1又は複数に基づき、前記複数の合成メソッド呼び出しの各々のスコアを生成するステップと、
前記メソッド呼び出しの前記スコアに基づき、前記複数の合成メソッド呼び出しの前記優先順位を決定するステップと、
を更に有する付記1に記載の方法。
(付記8) 前記メソッド呼び出しの前記スコアに基づき、前記複数の合成メソッド呼び出しの前記優先順位を決定するステップは、前記スコアが閾レベルを満たさないことに基づき、可能性のある修復候補から前記複数の合成メソッド呼び出しのうちの1又は複数を除去するステップを含む、付記7に記載の方法。
(付記9) 前記閾レベルは、エラー修正操作のために利用可能な時間及び利用可能な計算リソースに基づく、付記8に記載の方法。
(付記10) 少なくとも1つの非一時的コンピュータ可読媒体が、少なくとも1つのプロセッサにより実行されることに応答してシステムに付記1に記載の方法を実行させる1又は複数の命令を格納するよう構成される、付記1に記載の方法。
(付記11) ソフトウェアプログラムの中の障害位置を識別するステップと、
第1合成メソッド呼び出しの1又は複数の第1特性と前記障害位置との間の1又は複数の関係、前記第1特性のうちの1又は複数と前記障害位置に対応するエラーレポートとの間の1又は複数の関係、のうちの1又は複数に基づき、前記第1合成メソッド呼び出しの第1スコアを生成するステップと、
第2合成メソッド呼び出しの1又は複数の第2特性と前記障害位置との間の1又は複数の関係、前記第2特性のうちの1又は複数と前記障害位置に対応するエラーレポートとの間の1又は複数の関係、のうちの1又は複数に基づき、前記第2合成メソッド呼び出しの第2スコアを生成するステップと、
前記第1スコア及び前記第2スコアに基づき、前記第1合成メソッド呼び出しの前記第2合成メソッド呼び出しに対する優先順位を決定するステップと、
前記第1合成メソッド呼び出しの前記第2合成メソッド呼び出しに対する前記優先順位に基づき、前記障害位置に関する修復操作のために前記第1合成メソッド呼び出しを選択するステップと、
前記障害位置に関する修復操作及び前記第1合成メソッド呼び出しを実行するステップと、
を有する方法。
(付記12) 前記第1合成メソッド呼び出しの前記1又は複数の第1特性は、前記第1合成メソッド呼び出しにより使用されるオブジェクト、前記第1合成メソッド呼び出しの戻り型、前記第1合成メソッド呼び出しにより使用される前記オブジェクトのうちの1又は複数の各々の位置、前記第1合成メソッド呼び出しのメソッド名、前記第1合成メソッド呼び出しにより使用される前記オブジェクトのうちの1又は複数の各々の名称、前記第1合成メソッド呼び出しにより使用される前記オブジェクトのうちの1又は複数の各々の種類、前記第1合成メソッド呼び出しの中のオブジェクトのうちの1又は複数の各々の使用の種類、及び前記第1合成メソッド呼び出しにより使用されるオブジェクトのうちの1又は複数の各々の発生回数、のうちの1又は複数を含む、付記11に記載の方法。
(付記13) 前記第1スコアを決定するステップは、
前記第1合成メソッド呼び出しの前記戻り型と前記障害位置との間の戻り型関係スコアを決定するステップと、
前記障害位置に対する前記第1合成メソッド呼び出しの前記オブジェクトのうちの1又は複数の各々の位置に基づく距離スコアを決定するステップと、
前記障害位置の特定行数の範囲内における、前記第1合成メソッド呼び出しの前記オブジェクトのうちの1又は複数の発生回数を決定するステップと、
前記第1合成メソッド呼び出しのメソッド名と前記障害位置に対応する現在実施されているメソッド呼び出しのメソッド名との間のセマンティック類似性を決定するステップと、
前記対応するメソッド呼び出しの前記メソッド名と前記エラーレポートに含まれる1又は複数のワードとの間のセマンティック類似性を決定するステップと、
前記第1合成メソッド呼び出しの前記オブジェクトのうちの1又は複数の名称と前記エラーレポートに含まれる1又は複数のワードとの間のセマンティック類似性を決定するステップと、
前記第1合成メソッド呼び出しの前記オブジェクトのうちの1又は複数の種類の名称と前記エラーレポートに含まれる1又は複数のワードとの間のセマンティック類似性を決定するステップと、
のうちの1又は複数を実行するステップを含む、付記12に記載の方法。
(付記14) 前記ソフトウェアプログラムに含まれ且つ前記障害位置に対応する前記ソフトウェアプログラムの範囲内にある、複数のオブジェクトを識別するステップと、
前記障害位置に対応する前記ソフトウェアプログラムの範囲内にある、前記ソフトウェアプログラムの複数のメソッドを識別するステップと、
前記複数のオブジェクト及び前記複数のメソッドを用いて複数の合成メソッド呼び出しを生成するステップであって、前記複数の合成メソッド呼び出しは、前記第1合成メソッド呼び出し及び前記第2合成メソッド呼び出しを含む、ステップと、
を更に有する付記11に記載の方法。
(付記15) 少なくとも1つの非一時的コンピュータ可読媒体が、少なくとも1つのプロセッサにより実行されることに応答してシステムに付記11に記載の方法を実行させる1又は複数の命令を格納するよう構成される、付記11に記載の方法。
(付記16) ソフトウェアプログラムの中の障害位置を識別するステップと、
複数の合成メソッド呼び出しの各々の1又は複数の特性と前記障害位置との間の1又は複数の関係に基づき、前記複数の合成メソッド呼び出しの各々のコンテキストスコアを生成するステップと、
前記特性のうちの1又は複数と前記障害位置に対応するエラーレポートとの間の1又は複数の関係に基づき、前記複数の合成メソッド呼び出しの各々のエラーレポートスコアを決定するステップと、
前記複数の合成メソッド呼び出しの各々の前記コンテキストスコア及び前記エラーレポートスコアに基づき、前記複数の合成メソッド呼び出しの優先順位を決定するステップと、
選択される合成メソッド呼び出しの対応する優先順位に基づき、前記障害位置に対する修復操作のために、前記複数の合成メソッド呼び出しから合成メソッド呼び出しを選択するステップと、
前記障害位置に対する修復操作及び前記選択された合成メソッド呼び出しを実行するステップと、
を有する方法。
(付記17) 前記選択された合成メソッド呼び出しの前記1又は複数の特性は、前記選択された合成メソッド呼び出しにより使用されるオブジェクト、前記選択された合成メソッド呼び出しの戻り型、前記選択された合成メソッド呼び出しにより使用される前記オブジェクトのうちの1又は複数の各々の位置、前記選択された合成メソッド呼び出しのメソッド名、前記選択された合成メソッド呼び出しにより使用される前記オブジェクトのうちの1又は複数の各々の名称、前記選択された合成メソッド呼び出しにより使用される前記オブジェクトのうちの1又は複数の各々の種類、前記選択された合成メソッド呼び出しの中のオブジェクトのうちの1又は複数の各々の使用の種類、及び前記選択された合成メソッド呼び出しにより使用されるオブジェクトのうちの1又は複数の各々の発生回数、のうちの1又は複数を含む、付記16に記載の方法。
(付記18) 前記選択された合成メソッド呼び出しの前記特性のうちの前記1又は複数と前記障害位置との間の前記関係は、前記選択された合成メソッド呼び出しの前記戻り型と前記障害位置との間の戻り型関係、前記障害位置に関して前記選択された合成メソッド呼び出しにより使用される前記オブジェクトのうちの1又は複数の各々の位置、前記障害位置の特定数の行の範囲内で前記選択された合成メソッド呼び出しにより使用される前記オブジェクトのうちの1又は複数の発生回数、前記障害位置に対応する現在実施されているメソッド呼び出しのメソッド名との前記選択された合成メソッド呼び出しのメソッド名のセマンティック類似性、のうちの1又は複数を含む、付記17に記載の方法。
(付記19) 前記選択された合成メソッド呼び出しの前記特性のうちの前記1又は複数と前記エラーレポートとの間の前記関係は、前記選択された合成メソッド呼び出しの前記メソッド名と前記エラーレポートに含まれる1又は複数のワードとの間のセマンティック類似性、前記オブジェクトのうちの1又は複数の名称と前記エラーレポートに含まれる1又は複数のワードとの間のセマンティック類似性、前記選択された合成メソッド呼び出しにより使用される前記オブジェクトのうちの1又は複数の種類の名称と前記エラーレポートに含まれる1又は複数のワードとの間のセマンティック類似性、のうちの1又は複数を含む、付記17に記載の方法。
(付記20) 少なくとも1つの非一時的コンピュータ可読媒体が、少なくとも1つのプロセッサにより実行されることに応答してシステムに付記16に記載の方法を実行させる1又は複数の命令を格納するよう構成される、付記16に記載の方法。
100 環境
104 被検査コード
106 修復モジュール
108 変更被検査コード
202 コンピューティングシステム
250 プロセッサ
252 メモリ
254 データ記憶装置

Claims (20)

  1. ソフトウェアプログラムの複数のオブジェクト及び複数のメソッドを用いて複数の合成メソッド呼び出しを取得するステップと、
    前記複数の合成メソッド呼び出しの各々の1又は複数の特性と障害位置との間の関係、前記1又は複数の特性と前記障害位置に対応するエラーレポートとの間の関係、のうちの1又は複数に基づき、前記複数の合成メソッド呼び出しの優先順位を決定するステップと、
    選択される合成メソッド呼び出しの対応する優先順位に基づき、前記障害位置に関する修復操作のために前記複数の合成メソッド呼び出しから合成メソッド呼び出しを選択するステップと、
    前記障害位置に関する修復操作及び前記選択された合成メソッド呼び出しを実行するステップと、
    を有する方法。
  2. 前記選択された合成メソッド呼び出しの前記1又は複数の特性は、前記選択された合成メソッド呼び出しにより使用されるオブジェクト、前記選択された合成メソッド呼び出しの戻り型、前記選択された合成メソッド呼び出しにより使用される前記オブジェクトのうちの1又は複数の各々の位置、前記選択された合成メソッド呼び出しのメソッド名、前記選択された合成メソッド呼び出しにより使用される前記オブジェクトのうちの1又は複数の各々の名称、前記選択された合成メソッド呼び出しにより使用される前記オブジェクトのうちの1又は複数の各々の種類、前記選択された合成メソッド呼び出しの中のオブジェクトのうちの1又は複数の各々の使用の種類、及び前記選択された合成メソッド呼び出しにより使用されるオブジェクトのうちの1又は複数の各々の発生回数、のうちの1又は複数を含む、請求項1に記載の方法。
  3. 前記選択された合成メソッド呼び出しの前記特性のうちの前記1又は複数と前記障害位置との間の前記関係は、前記選択された合成メソッド呼び出しの前記戻り型と前記障害位置との間の戻り型関係、前記障害位置に関して前記選択された合成メソッド呼び出しにより使用される前記オブジェクトのうちの1又は複数の各々の位置、前記障害位置の特定行数の範囲内で前記選択された合成メソッド呼び出しにより使用される前記オブジェクトのうちの1又は複数の発生回数、前記障害位置に対応する現在実施されているメソッド呼び出しのメソッド名との前記選択された合成メソッド呼び出しのメソッド名のセマンティック類似性、のうちの1又は複数を含む、請求項2に記載の方法。
  4. 前記選択された合成メソッド呼び出しの前記特性のうちの前記1又は複数と前記エラーレポートとの間の前記関係は、前記選択された合成メソッド呼び出しの前記メソッド名と前記エラーレポートに含まれる1又は複数のワードとの間のセマンティック類似性、前記オブジェクトのうちの1又は複数の名称と前記エラーレポートに含まれる1又は複数のワードとの間のセマンティック類似性、前記選択された合成メソッド呼び出しにより使用される前記オブジェクトのうちの1又は複数の種類の名称と前記エラーレポートに含まれる1又は複数のワードとの間のセマンティック類似性、のうちの1又は複数を含む、請求項2に記載の方法。
  5. 前記複数の合成メソッド呼び出しを取得するステップは、
    前記ソフトウェアプログラムの中の前記障害位置を識別するステップと、
    前記ソフトウェアプログラムに含まれ且つ前記障害位置に対応する前記ソフトウェアプログラムの範囲内にあるオブジェクトを、前記複数のオブジェクトとして識別するステップと、
    前記複数のオブジェクトを用いて前記複数の合成メソッド呼び出しを生成することにより、前記複数の合成メソッド呼び出しを取得するステップと、
    を含む、請求項1に記載の方法。
  6. 前記複数のオブジェクトからメソッドを識別するステップと、
    前記識別したメソッドのメソッド署名を決定するステップと、
    前記メソッド署名と互換性のある1又は複数の互換オブジェクトを識別するステップと、
    前記識別したメソッド及び前記1又は複数の互換オブジェクトに基づき、1又は複数のメソッド呼び出しを生成するステップと、
    を更に有する請求項5に記載の方法。
  7. 前記複数の合成メソッド呼び出しの各々の1又は複数の特性と前記障害位置との間の関係、前記特性のうちの1又は複数と前記障害位置に対応するエラーレポートとの間の関係、のうちの1又は複数に基づき、前記複数の合成メソッド呼び出しの各々のスコアを生成するステップと、
    前記メソッド呼び出しの前記スコアに基づき、前記複数の合成メソッド呼び出しの前記優先順位を決定するステップと、
    を更に有する請求項1に記載の方法。
  8. 前記メソッド呼び出しの前記スコアに基づき、前記複数の合成メソッド呼び出しの前記優先順位を決定するステップは、前記スコアが閾レベルを満たさないことに基づき、可能性のある修復候補から前記複数の合成メソッド呼び出しのうちの1又は複数を除去するステップを含む、請求項7に記載の方法。
  9. 前記閾レベルは、エラー修正操作のために利用可能な時間及び利用可能な計算リソースに基づく、請求項8に記載の方法。
  10. 少なくとも1つの非一時的コンピュータ可読媒体が、少なくとも1つのプロセッサにより実行されることに応答してシステムに請求項1に記載の方法を実行させる1又は複数の命令を格納するよう構成される、請求項1に記載の方法。
  11. ソフトウェアプログラムの中の障害位置を識別するステップと、
    第1合成メソッド呼び出しの1又は複数の第1特性と前記障害位置との間の1又は複数の関係、前記第1特性のうちの1又は複数と前記障害位置に対応するエラーレポートとの間の1又は複数の関係、のうちの1又は複数に基づき、前記第1合成メソッド呼び出しの第1スコアを生成するステップと、
    第2合成メソッド呼び出しの1又は複数の第2特性と前記障害位置との間の1又は複数の関係、前記第2特性のうちの1又は複数と前記障害位置に対応するエラーレポートとの間の1又は複数の関係、のうちの1又は複数に基づき、前記第2合成メソッド呼び出しの第2スコアを生成するステップと、
    前記第1スコア及び前記第2スコアに基づき、前記第1合成メソッド呼び出しの前記第2合成メソッド呼び出しに対する優先順位を決定するステップと、
    前記第1合成メソッド呼び出しの前記第2合成メソッド呼び出しに対する前記優先順位に基づき、前記障害位置に関する修復操作のために前記第1合成メソッド呼び出しを選択するステップと、
    前記障害位置に関する修復操作及び前記第1合成メソッド呼び出しを実行するステップと、
    を有する方法。
  12. 前記第1合成メソッド呼び出しの前記1又は複数の第1特性は、前記第1合成メソッド呼び出しにより使用されるオブジェクト、前記第1合成メソッド呼び出しの戻り型、前記第1合成メソッド呼び出しにより使用される前記オブジェクトのうちの1又は複数の各々の位置、前記第1合成メソッド呼び出しのメソッド名、前記第1合成メソッド呼び出しにより使用される前記オブジェクトのうちの1又は複数の各々の名称、前記第1合成メソッド呼び出しにより使用される前記オブジェクトのうちの1又は複数の各々の種類、前記第1合成メソッド呼び出しの中のオブジェクトのうちの1又は複数の各々の使用の種類、及び前記第1合成メソッド呼び出しにより使用されるオブジェクトのうちの1又は複数の各々の発生回数、のうちの1又は複数を含む、請求項11に記載の方法。
  13. 前記第1スコアを決定するステップは、
    前記第1合成メソッド呼び出しの前記戻り型と前記障害位置との間の戻り型関係スコアを決定するステップと、
    前記障害位置に対する前記第1合成メソッド呼び出しの前記オブジェクトのうちの1又は複数の各々の位置に基づく距離スコアを決定するステップと、
    前記障害位置の特定行数の範囲内における、前記第1合成メソッド呼び出しの前記オブジェクトのうちの1又は複数の発生回数を決定するステップと、
    前記第1合成メソッド呼び出しのメソッド名と前記障害位置に対応する現在実施されているメソッド呼び出しのメソッド名との間のセマンティック類似性を決定するステップと、
    前記対応するメソッド呼び出しの前記メソッド名と前記エラーレポートに含まれる1又は複数のワードとの間のセマンティック類似性を決定するステップと、
    前記第1合成メソッド呼び出しの前記オブジェクトのうちの1又は複数の名称と前記エラーレポートに含まれる1又は複数のワードとの間のセマンティック類似性を決定するステップと、
    前記第1合成メソッド呼び出しの前記オブジェクトのうちの1又は複数の種類の名称と前記エラーレポートに含まれる1又は複数のワードとの間のセマンティック類似性を決定するステップと、
    のうちの1又は複数を実行するステップを含む、請求項12に記載の方法。
  14. 前記ソフトウェアプログラムに含まれ且つ前記障害位置に対応する前記ソフトウェアプログラムの範囲内にある、複数のオブジェクトを識別するステップと、
    前記障害位置に対応する前記ソフトウェアプログラムの範囲内にある、前記ソフトウェアプログラムの複数のメソッドを識別するステップと、
    前記複数のオブジェクト及び前記複数のメソッドを用いて複数の合成メソッド呼び出しを生成するステップであって、前記複数の合成メソッド呼び出しは、前記第1合成メソッド呼び出し及び前記第2合成メソッド呼び出しを含む、ステップと、
    を更に有する請求項11に記載の方法。
  15. 少なくとも1つの非一時的コンピュータ可読媒体が、少なくとも1つのプロセッサにより実行されることに応答してシステムに請求項11に記載の方法を実行させる1又は複数の命令を格納するよう構成される、請求項11に記載の方法。
  16. ソフトウェアプログラムの中の障害位置を識別するステップと、
    複数の合成メソッド呼び出しの各々の1又は複数の特性と前記障害位置との間の1又は複数の関係に基づき、前記複数の合成メソッド呼び出しの各々のコンテキストスコアを生成するステップと、
    前記特性のうちの1又は複数と前記障害位置に対応するエラーレポートとの間の1又は複数の関係に基づき、前記複数の合成メソッド呼び出しの各々のエラーレポートスコアを決定するステップと、
    前記複数の合成メソッド呼び出しの各々の前記コンテキストスコア及び前記エラーレポートスコアに基づき、前記複数の合成メソッド呼び出しの優先順位を決定するステップと、
    選択される合成メソッド呼び出しの対応する優先順位に基づき、前記障害位置に対する修復操作のために、前記複数の合成メソッド呼び出しから合成メソッド呼び出しを選択するステップと、
    前記障害位置に対する修復操作及び前記選択された合成メソッド呼び出しを実行するステップと、
    を有する方法。
  17. 前記選択された合成メソッド呼び出しの前記1又は複数の特性は、前記選択された合成メソッド呼び出しにより使用されるオブジェクト、前記選択された合成メソッド呼び出しの戻り型、前記選択された合成メソッド呼び出しにより使用される前記オブジェクトのうちの1又は複数の各々の位置、前記選択された合成メソッド呼び出しのメソッド名、前記選択された合成メソッド呼び出しにより使用される前記オブジェクトのうちの1又は複数の各々の名称、前記選択された合成メソッド呼び出しにより使用される前記オブジェクトのうちの1又は複数の各々の種類、前記選択された合成メソッド呼び出しの中のオブジェクトのうちの1又は複数の各々の使用の種類、及び前記選択された合成メソッド呼び出しにより使用されるオブジェクトのうちの1又は複数の各々の発生回数、のうちの1又は複数を含む、請求項16に記載の方法。
  18. 前記選択された合成メソッド呼び出しの前記特性のうちの前記1又は複数と前記障害位置との間の前記関係は、前記選択された合成メソッド呼び出しの前記戻り型と前記障害位置との間の戻り型関係、前記障害位置に関して前記選択された合成メソッド呼び出しにより使用される前記オブジェクトのうちの1又は複数の各々の位置、前記障害位置の特定数の行の範囲内で前記選択された合成メソッド呼び出しにより使用される前記オブジェクトのうちの1又は複数の発生回数、前記障害位置に対応する現在実施されているメソッド呼び出しのメソッド名との前記選択された合成メソッド呼び出しのメソッド名のセマンティック類似性、のうちの1又は複数を含む、請求項17に記載の方法。
  19. 前記選択された合成メソッド呼び出しの前記特性のうちの前記1又は複数と前記エラーレポートとの間の前記関係は、前記選択された合成メソッド呼び出しの前記メソッド名と前記エラーレポートに含まれる1又は複数のワードとの間のセマンティック類似性、前記オブジェクトのうちの1又は複数の名称と前記エラーレポートに含まれる1又は複数のワードとの間のセマンティック類似性、前記選択された合成メソッド呼び出しにより使用される前記オブジェクトのうちの1又は複数の種類の名称と前記エラーレポートに含まれる1又は複数のワードとの間のセマンティック類似性、のうちの1又は複数を含む、請求項17に記載の方法。
  20. 少なくとも1つの非一時的コンピュータ可読媒体が、少なくとも1つのプロセッサにより実行されることに応答してシステムに請求項16に記載の方法を実行させる1又は複数の命令を格納するよう構成される、請求項16に記載の方法。
JP2017246216A 2017-02-17 2017-12-22 ソフトウェアプログラム修復のためのメソッド呼び出し合成 Active JP7056139B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/436,595 2017-02-17
US15/436,595 US10496519B2 (en) 2017-02-17 2017-02-17 Method invocation synthesis for software program repair

Publications (2)

Publication Number Publication Date
JP2018133081A true JP2018133081A (ja) 2018-08-23
JP7056139B2 JP7056139B2 (ja) 2022-04-19

Family

ID=63167222

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017246216A Active JP7056139B2 (ja) 2017-02-17 2017-12-22 ソフトウェアプログラム修復のためのメソッド呼び出し合成

Country Status (2)

Country Link
US (1) US10496519B2 (ja)
JP (1) JP7056139B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7409197B2 (ja) 2019-06-20 2024-01-09 富士通株式会社 ソフトウェアプログラムにおける静的分析違反の修復パターンの精緻化

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102452457B1 (ko) * 2017-11-13 2022-10-12 현대자동차주식회사 테스트 케이스 관리 시스템 및 테스트 케이스 관리 방법
CN110058126A (zh) * 2019-05-29 2019-07-26 国网北京市电力公司 配电网故障判断方法和装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008250914A (ja) * 2007-03-30 2008-10-16 Canon Software Inc プログラム修正装置及び方法、並びにプログラム
US20100050160A1 (en) * 2008-08-20 2010-02-25 International Business Machines Corporation System, method and program product for ranking peer submitted code snippets using execution feedback
JP2010097426A (ja) * 2008-10-16 2010-04-30 Autonetworks Technologies Ltd コンピュータプログラム、ソースプログラム入力受付装置及びソースプログラム入力受付方法
JP2011086147A (ja) * 2009-10-16 2011-04-28 Nippon Telegr & Teleph Corp <Ntt> 類似性算出装置、類似性算出方法および類似性算出プログラム
JP2016038718A (ja) * 2014-08-07 2016-03-22 日本電気株式会社 修正装置、翻訳装置、修正方法、および、コンピュータ・プログラム

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8516446B2 (en) * 2010-05-21 2013-08-20 Apple Inc. Automated qualification of a binary application program
US9383973B2 (en) * 2011-06-29 2016-07-05 Microsoft Technology Licensing, Llc Code suggestions

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008250914A (ja) * 2007-03-30 2008-10-16 Canon Software Inc プログラム修正装置及び方法、並びにプログラム
US20100050160A1 (en) * 2008-08-20 2010-02-25 International Business Machines Corporation System, method and program product for ranking peer submitted code snippets using execution feedback
JP2010097426A (ja) * 2008-10-16 2010-04-30 Autonetworks Technologies Ltd コンピュータプログラム、ソースプログラム入力受付装置及びソースプログラム入力受付方法
JP2011086147A (ja) * 2009-10-16 2011-04-28 Nippon Telegr & Teleph Corp <Ntt> 類似性算出装置、類似性算出方法および類似性算出プログラム
JP2016038718A (ja) * 2014-08-07 2016-03-22 日本電気株式会社 修正装置、翻訳装置、修正方法、および、コンピュータ・プログラム

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
薄羽 大樹, 宮下 芳明: ""コメントイン:コメントを先に書くことによる新形態のAPIリファレンス"", 第23回インタラクティブシステムとソフトウェアに関するワークショップ, JPN6021035170, 4 December 2015 (2015-12-04), ISSN: 0004588574 *
青柳 龍也: ""理論で学ぶJavaプログラミング [第27回]Eclipseによるプログラム作成、デバッグの基本"", JAVA WORLD 2004年4月号, vol. 第8巻、第4号, JPN6021035173, 1 April 2004 (2004-04-01), pages 98 - 112, ISSN: 0004588573 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7409197B2 (ja) 2019-06-20 2024-01-09 富士通株式会社 ソフトウェアプログラムにおける静的分析違反の修復パターンの精緻化

Also Published As

Publication number Publication date
US10496519B2 (en) 2019-12-03
JP7056139B2 (ja) 2022-04-19
US20180239687A1 (en) 2018-08-23

Similar Documents

Publication Publication Date Title
JP6878933B2 (ja) ソフトウエアプログラムの修復のための方法及びプログラム
JP6787046B2 (ja) 機械学習ベースのソフトウェアプログラム修復
JP7095408B2 (ja) ソフトウェアプログラムフォールト位置特定
US8621441B2 (en) System and method for software immunization based on static and dynamic analysis
US20180165182A1 (en) Automated software program repair
US10664383B2 (en) Automated software program repair of similar code snippets
US20150370685A1 (en) Defect localization in software integration tests
JP7110789B2 (ja) 自動化されたソフトウェアプログラム修復候補の選択
JP7056139B2 (ja) ソフトウェアプログラム修復のためのメソッド呼び出し合成
US20190258803A1 (en) Guiding automated testing of binary programs
Xue et al. Trimming test suites with coincidentally correct test cases for enhancing fault localizations
US10761961B2 (en) Identification of software program fault locations
US10268572B2 (en) Interactive software program repair
CN109643271B (zh) 识别不稳定测试
JP2016115175A (ja) ソフトウェアテスト装置およびソフトウェアテストプログラム
JP6891703B2 (ja) 自動ソフトウェアプログラム修復
Hegedűs et al. Static code analysis alarms filtering reloaded: A new real-world dataset and its ML-based utilization
JP7384054B2 (ja) 自動化されたソフトウェアプログラム修復
JP2020129372A (ja) 自動化されたソフトウェアプログラム修復
JP2017041196A (ja) スタブ化対象判定装置、方法、及びプログラム
US20220108216A1 (en) Machine learning apparatus, method, and non-transitory computer readable medium storing program
US11599434B2 (en) System for recommending tests for mobile communication devices maintenance release certification
CN116383834A (zh) 针对源码漏洞检测工具异常的检测方法以及相关设备
CN117555805A (zh) 一种基于符号执行的dnn测试用例生成方法
Gračić et al. Users, Developers and Managers vs. Traditional and Non-traditional Computing Mechanisms in Automated Software Testing: A Systematic Literature

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200911

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210825

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210907

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211021

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220308

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220321

R150 Certificate of patent or registration of utility model

Ref document number: 7056139

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150