Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP7664779B2 - 不具合解析支援装置及び不具合解析支援方法 - Google Patents
[go: Go Back, main page]

JP7664779B2 - 不具合解析支援装置及び不具合解析支援方法 - Google Patents

不具合解析支援装置及び不具合解析支援方法 Download PDF

Info

Publication number
JP7664779B2
JP7664779B2 JP2021114875A JP2021114875A JP7664779B2 JP 7664779 B2 JP7664779 B2 JP 7664779B2 JP 2021114875 A JP2021114875 A JP 2021114875A JP 2021114875 A JP2021114875 A JP 2021114875A JP 7664779 B2 JP7664779 B2 JP 7664779B2
Authority
JP
Japan
Prior art keywords
defect
fault
occurrence
failure
path
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.)
Active
Application number
JP2021114875A
Other languages
English (en)
Other versions
JP2023011182A (ja
Inventor
ティタン フエン ファン
直人 佐藤
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2021114875A priority Critical patent/JP7664779B2/ja
Priority to EP22182876.7A priority patent/EP4120085B1/en
Publication of JP2023011182A publication Critical patent/JP2023011182A/ja
Application granted granted Critical
Publication of JP7664779B2 publication Critical patent/JP7664779B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/3604Analysis of software for verifying properties of programs
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/362Debugging of software
    • G06F11/3624Debugging of software by performing operations on the source code, e.g. via a compiler
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/362Debugging of software
    • G06F11/3644Debugging of software by instrumenting at runtime

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、不具合解析支援装置及び不具合解析支援方法に関するものである。
種々のソフトウェアのうち、例えば組み込み制御ソフトウェアは、産業用機器などを制御するもので、不具合の発生が歩留まりやリコールなどの製造品質に直結するものである。
そのため、当該ソフトウェアの開発に際しては、リリース前に不具合を特定し、それを修正するため、テストを実施する。このテストでは、ソフトウェアにおける入力と出力をテストケースとして予め作成し、当該ソフトウェアがテストケースの入力に対して想定している正しい出力を返すか確認することになる。
こうしたテストで不具合が判明した場合、開発者は、ソフトウェアのどの部分で想定外の処理をしたかを解析し、原因箇所を特定して、適切な入出力を行うようにプログラムのロジックを修正する。
こうした不具合の検証に関連する従来技術としては、ソフトウェアコンポーネントの仕様から、ソフトウェアコンポーネントにおける故障がどのように伝播するかを評価する技術(特許文献1参照)などが提案されている。
この技術は、モデルの形式検証機能を有するコンピュータが、ソフトウェアコンポーネントの入力インターフェイス仕様、出力インターフェイス仕様、内部仕様を含む仕様情報を取得する仕様情報取得ステップと、前記仕様情報中の入力インターフェイス仕様を正常値以外に変更した仕様情報に従って、前記形式検証機能によって前記ソフトウェアコンポーネントを検証する検証ステップと、前記検証ステップにおいて前記出力インターフェイス仕様を満足しない出力値となる例が発見された場合には、前記正常値以外に変更した入力と、前記出力インターフェイス仕様を満たさない出力を、対応づけて記憶する故障伝播路記憶ステップと、を実行するソフトウェアコンポーネントの信頼性評価方法である。
特開2012-128727号公報
入力から出力を計算する制御プログラムにおいて、殆どの入力に対しては正しく処理するが、非常にまれな条件で不正な処理を行う場合がある。このような不具合は、非再現性不具合と呼ばれ、不具合が起きるまれな条件を特定するのが困難である。
従来技術によれば、こうした状況の出現を効果的に回避し、不具合解析を効率的なものとすることが期待される。ところが、不具合解析に用いられるログに、多くの不具合に関する情報が含まれているケース、すなわち多くの不具合が同時発生するケースに対処する点に関しては課題が残されていた。
例えば、不具合を1つ1つ順番に分析する運用のため、一度に1つの不具合だけが分析
、修正されることになる。その場合、例えば、或る機能に含まれる不具合Aに対処するために分析および修正が実施されたとしても、同機能に含まれる障害Bについては、もう一度分析および修正が必要となり、当該不具合に関して重複する分析や修正が行われてしま
う可能性がある。
また、異なる機能同士が連携する状況において、それらの各機能が抱える不具合も連動する関係にある場合、一方の不具合に対する修正が他方の不具合に対する修正と矛盾した内容で実施されると、その他方の不具合が再出する可能性がある。こうした問題は、担当者それぞれが、自分の担当以外の他不具合とその分析結果及び修正内容を認識せずに、不具合の分析、修正を実施する場合、より深刻化する。
そこで本発明の目的は、1つのプログラムが含む複数の不具合に関して、分析および修正の重複を効果的に回避し、一貫性のある修正を支援可能とする技術を提供することにある。
上記課題を解決する本発明の不具合解析支援装置は、処理対象となるソフトウェアのソースコードを格納した記憶装置と、前記ソースコードにおける関数呼び出し関係に基づき、不具合位置を含む関数であるすべてのターゲット関数を通過する記号実行分析ルートを計算し、前記記号実行分析ルートにおける前記ターゲット関数に不具合条件を統合後、実行順序が最小となる前記記号実行分析ルートの関数から記号実行を行うことで、実行パス及び制約を含む情報を取得する処理を、前記記号実行分析ルートのすべての機能について実行し、前記統合後の不具合位置によって終了する実行パスである不具合発生パスを取得することで、全ての不具合の発生パスを再生成する処理と、前記不具合発生パスの変数の定義情報をノードに設定し、前記ノードに設定された前記変数の使用方法をデータフローとして設定し、前記ノードを、前記不具合発生パスで記述された順序に沿ってエッジで接続することで、不具合発生グラフを生成する処理と、前記不具合発生グラフにおいて、不具合同士の関係性として共有ノード又は共有エッジの有無で互いの依存関係を規定した不具合関係パターンに対応するインスタンスを検索する処理と、前記検索の結果を所定装置に出力する処理を実行する演算装置と、を含むことを特徴とする。
また、本発明の不具合解析支援方法は、情報処理装置が、処理対象となるソフトウェアのソースコードを記憶装置で格納し、前記ソースコードにおける関数呼び出し関係に基づき、不具合位置を含む関数であるすべてのターゲット関数を通過する記号実行分析ルートを計算し、前記記号実行分析ルートにおける前記ターゲット関数に不具合条件を統合後、実行順序が最小となる前記記号実行分析ルートの関数から記号実行を行うことで、実行パス及び制約を含む情報を取得する処理を、前記記号実行分析ルートのすべての機能について実行し、前記統合後の不具合位置によって終了する実行パスである不具合発生パスを取得することで、全ての不具合の発生パスを再生成する処理と、前記不具合発生パスの変数の定義情報をノードに設定し、前記ノードに設定された前記変数の使用方法をデータフローとして設定し、前記ノードを、前記不具合発生パスで記述された順序に沿ってエッジで接続することで、不具合発生グラフを生成する処理と、前記不具合発生グラフにおいて、不具合同士の関係性として共有ノード又は共有エッジの有無で互いの依存関係を規定した不具合関係パターンに対応するインスタンスを検索する処理と、前記検索の結果を所定装置に出力する処理を実行する、ことを特徴とする。
本発明によれば、1つのプログラムが含む複数の不具合に関して、分析および修正の重複を効果的に回避し、一貫性のある修正の支援が可能となる。
本実施形態の不具合解析支援装置を含むシステム構成図である。 本実施形態における不具合解析支援装置のハードウェア構成例を示す図である。 本実施形態の不具合解析支援方法のフロー例を示す図である。 本実施形態におけるソースコード例を示す図である。 本実施形態の不具合発生パス再生成の概念例を示す図である。 本実施形態の不具合解析支援方法のフロー例を示す図である。 本実施形態の不具合解析支援方法のフロー例を示す図である。 本実施形態の記号実行分析ルートの例を示す図である。 本実施形態における記号実行分析ルートの例を示す図である。 本実施形態における不具合情報をターゲット関数に統合する例を示す図である。 本実施形態における実行パスの例を示す図である。 本実施形態における不具合発生パスの例を示す図である。 本実施形態の不具合解析支援方法のフロー例を示す図である。 本実施形態におけるコード例を示す図である。 本実施形態における不具合発生パスの抽出例を示す図である。 本実施形態における不具合発生グラフの例を示す図である。 本実施形態の不具合解析支援方法のフロー例を示す図である。 本実施形態の不具合解析支援方法のフロー例を示す図である。 本実施形態の不具合発生グラフの例を示す図である。 本実施形態の不具合関係パターンの例を示す図である。 本実施形態の不具合関係パターンの例を示す図である。 本実施形態の不具合関係パターンの例を示す図である。 本実施形態におけるデータ相関の算定例を示す図である。 本実施形態における結果表示例を示す図である。 本実施形態における結果表示例を示す図である。
<不具合解析支援装置を含む構成>
以下に本発明の実施形態について図面を用いて詳細に説明する。図1は、本実施形態の不具合解析支援装置100を含むシステムの構成図である。図1に示す不具合解析支援装置100は、1つのプログラムが含む複数の不具合に関して、分析および修正の重複を効果的に回避し、一貫性のある修正を支援可能とするコンピュータである。
本実施形態の不具合解析支援装置100は、図1で示すように、適宜なインターフェイス1(または通信回線)を介して接続された端末5と通信可能に接続されている。よって、これらを総称して不具合解析支援システム10としてもよい。
不具合解析支援装置100は、例えば、システム開発を担う事業者または当該事業者を支援するベンダー等により運用されている、不具合解析支援サービスの提供サーバとも言える。
この不具合解析支援装置100は、端末5から、ソースコード125、不具合ログ136、及び不具合関係パターン定義127の情報を取得し、これらに基づき生成した各種情報130~134を、自身の記憶装置101に格納する。各種情報130~134は、例えば、不具合発生パス130、不具合発生グラフ131、不具合の変数定義132、不具合関係パターン定義133、及び不具合関係パターンインスタンス134である。これらについては後述する。
また、不具合解析支援装置100は、不具合発生パス再生成部110、不具合発生グラフ生成部111、不具合の変数定義抽出部112、不具合関係パターンインスタンス検索部113、及び分析結果表示部114といった各機能部を備えている。
このうち不具合発生パス再生成部110は、端末5から得たソースコード125に基づき、全ての不具合の発生パス130を再生成する機能部である。こうして再生成された不具合発生パス130はメモリ103に一旦格納される。
また、不具合発生グラフ生成部111は、上述の不具合発生パス再生成部110が生成した全ての不具合の発生パス130をマージし、当該発生パス130での変数定義と使用法に関する情報を統合した不具合発生グラフ131を生成する機能部である。こうして生成された不具合発生グラフ131は、メモリ103に一旦格納される。なお、上述の不具合発生グラフ生成部111は、不具合の変数定義抽出部112が抽出する、不具合データにおける変数定義132や使用法の情報を上述の統合に利用するものとする。
また、不具合関係パターンインスタンス検索部113、上述の不具合発生グラフ131において、不具合関係パターン定義133に対応するインスタンスを検索する機能部であ
る。不具合関係パターン定義133は、端末5から得た不具合関係パターン127をメモリ103に格納したものであって、不具合同士の関係性に関する定義である。
また、分析結果表示部114は、上述の不具合関係パターンインスタンス検索部113による検索の結果を、端末5や所定の出力インターフェイスに出力する機能部となる。
一方、端末5は、上述の不具合解析支援サービスを利用する業者担当者らが使用する端末である。具体的には、パーソナルコンピュータ、スマートフォン、タブレット端末、などを想定できる。
<ハードウェア構成>
また、本実施形態の不具合解析支援装置100のハードウェア構成は、図2に以下の如くとなる。
すなわち不具合解析支援装置100は、記憶装置101、メモリ103、演算装置104、および通信装置105、を備える。
このうち記憶装置101は、SSD(Solid State Drive)やハードディスクドライブなど適宜な不揮発性記憶素子で構成される。
また、メモリ103は、RAMなど揮発性記憶素子で構成される。
また、演算装置104は、記憶装置101に保持されるプログラム102をメモリ103に読み出すなどして実行し装置自体の統括制御を行なうとともに各種判定、演算及び制御処理を行なうCPUである。こうしたプログラム102の実行で得られる機能部が、上述の不具合発生パス再生成部110、不具合発生グラフ生成部111、不具合の変数定義抽出部112、不具合関係パターンインスタンス検索部113、及び分析結果表示部114となる。
また、通信装置105は、ネットワーク1と接続して端末5との通信処理を担うネットワークインターフェイスカード等を想定する。
なお、不具合解析支援装置100がスタンドアロンマシンである場合、ユーザからのキー入力や音声入力を受け付ける入力装置、処理データの表示を行うディスプレイ等の出力装置、を更に備えるとすれば好適である。
また、記憶装置101内には、本実施形態の不具合解析支援装置として必要な機能を実装する為のプログラム102に加えて、端末5から得たソースコード125、不具合ログ126、及び不具合関係パターン定義127が少なくとも記憶されている。
<フロー例:メインフロー>
以下、本実施形態における不具合解析支援方法の実際手順について図に基づき説明する。以下で説明する不具合解析支援方法に対応する各種動作は、不具合解析支援装置100がメモリ等に読み出して実行するプログラムによって実現される。そして、このプログラムは、以下に説明される各種の動作を行うためのコードから構成されている。
図3は、本実施形態における不具合解析支援方法のフロー例を示す図である。この場合、不具合解析支援装置100は、ソースコー125(図4参照)ドに基づき、全ての不具合の発生パス130を再生成する(s1)。
続いて、不具合解析支援装置100は、s1で得た全ての不具合の発生パス130をマージし、当該発生パス130での変数定義132と使用法に関する情報を統合した不具合
発生グラフ131を生成する(s2)。
また、不具合解析支援装置100は、上述の不具合発生グラフ131において、不具合関係パターン定義133に対応するインスタンスを検索する(s3)。
また、不具合解析支援装置100は、s3での検索の結果を、端末5などの装置に出力し(s4)、処理を終了する。
<フロー例:記号実行による不具合発生パス再生成>
続いて、上述のメインフローにおける不具合発生パス再生成(s1)を構成する、記号実行による不具合発生パス再生成処理について、図5~図11に基づき説明する。なお、ここでは、不具合発生グラフ131の生成(s2)についても説明する。
この場合、不具合発生パス再生成部110は、対象となるソースコード125における関数呼び出しの関係を用いて、不具合位置を含む関数であるすべてのターゲット関数を通過する記号実行分析ルートを計算する(s21)。
このs21の詳細を、図7Aのフロー及び図7Bの記号実行分析ルートの例にて示す。図7Aのフローにおいて、不具合発生パス再生成部110は、不具合位置を含む関数であるターゲット関数のリストを取得する(s211)。
また、不具合発生パス再生成部110は、ターゲット関数間の関数呼び出し関係(呼び出し元と呼び出し先の関係)を分析する(s212)。
続いて、不具合発生パス再生成部110は、関数呼び出し関係によって接続されているターゲット関数について、それらを接続する最短ルートを探索する(s213)。
また、不具合発生パス再生成部110は、s213で得たルートごとに、ルート内の各機能に対し、呼び出し先と呼び出し元の順序を介した実行順序を割り当て(s214)、処理を終了する。
ここで、図6のフローの説明に戻る。この場合、不具合発生パス再生成部110は、不具合位置のステートメントの前に、例えば、「assert(!failure condition)」のコー
ドを追加し(図9参照)、不具合条件を、それらを含むターゲット関数に統合する(s22)。ここで 追加されたコードの位置は、統合不具合位置と称する。
また、不具合発生パス再生成部110は、実行順序が最小の記号実行解析ルートの関数から記号実行を行う(s23)。なお、異なるサブルートの機能を並行して実行できるものとする。続いて、不具合発生パス再生成部110は、実行パス、制約等の情報を記憶装置101に格納する(s24)。なお、こうした記号実行で得た実行パスの例を図10に示す。
また、不具合発生パス再生成部110は、記号実行分析ルートのすべての機能が実行されたか判定する(s25)。
上述の判定の結果、すべての機能が実行されてはいない場合(s25:No)、不具合発生パス再生成部110は、実行順序が後続する関数の記号実行を続行する(s26)。
一方、上述の判定の結果、すべての機能が実行されている場合(s25:Yes)、不具合発生パス再生成部110は、統合された不具合位置によって終了する実行パスである不具合発生パス130を取得(図11参照)し(s27)、処理を終了する。
<フロー例:ログ解析による不具合発生パス再生成>
続いて、上述のメインフローにおける不具合発生パス再生成(s1)を構成する、ログ解析による不具合発生パス再生成処理について、図12~図15に基づき説明する。なお、ここでは、不具合発生グラフ131の生成(s2)についても説明する。
この場合、不具合発生パス再生成部110は、不具合ログ126から、ターゲット関数で不具合の原因となっている入力値を探索する(s32)。なお、関数の入力値をログに出力するlog関数を持つ元のソースコード125を想定するものとする。
また、不具合発生パス再生成部110は、実行されたステートメントとその実行順序の情報を含む実行トレースを記録するためターゲット関数をインストルメント(図13参照)する(s32)。
続いて、不具合発生パス再生成部110は、s31で探索済みの不具合原因となる入力値を使用して、上述のターゲット関数を実行する(s33)。
また、不具合発生パス再生成部110は、s33で得た実行トレースのログから不具合発生パスを抽出(図14参照)し(s34)、処理を終了する。
上述のごとき、不具合発生パスの再生成を経た、不具合解析支援装置100は、s1で得た全ての不具合の発生パス130をマージし、当該発生パス130での変数定義132と使用法に関する情報を統合した不具合発生グラフ131(図15参照)を生成することとなる。
この不具合発生グラフ131の基本構造は、不具合発生パスの定義情報(ステートメント)を設定したノード、このノードを通過する不具合発生パスの情報(不具合ID,パスIDなど)、各ノードでの変数定義と使用法(述語、計算)の情報であるデータフロー情報、および不具合発生パスで記述された順序に沿ってノードを接続するエッジ、から構成されている。なお、上述の変数は、新しい値(初期化または値変更)を受け取り(def = {v})、述語の計算に使用される(p-use= {v})。また、変数は、別の変数の値を計算す
るために使用される(c-use= {v})。
<フロー例:インスタンスの検索>
続いて、上述のメインフローにおけるインスタンス検索(s3)の処理について、図16~図20に基づき説明する。
この場合、不具合関係パターンインスタンス検索部113は、不具合ごとに、不具合発生グラフ131から不具合データを抽出する(s50)。こうした不具合発生グラフ131の例を図18に示す。また、このs50の詳細について図17のフローで示す。
この場合、不具合関係パターンインスタンス検索部113は、統合された不具合発生パスに、対応するノードを追加するs501)。
また、不具合関係パターンインスタンス検索部113は、現在のノードの変数使用情報、c-useまたはp-useを取得する(s502)。
続いて、不具合関係パターンインスタンス検索部113は、ノードに複数の可変使用情報があり、不具合発生パスの最初のノードではないか判定する(s503)。
上述の判定の結果、最初のノードである場合(s503:No)、不具合関係パターンインスタンス検索部113は、処理をs506に遷移させる。
一方、上述の判定の結果、最初のノードではない場合(s503:Yes)、不具合関係パターンインスタンス検索部113は、現在のノードの変数使用情報で未処理の各変数xについて、xを定義する不具合Aの不具合発生パスで最も近い変数定義Xを探索する(
s504)。
続いて、不具合関係パターンインスタンス検索部113は、Xと、Xからxというラベルの付いたエッジをグラフの新しいノードおよび新しい頂点として現在のノードに追加する(s505)。
また、不具合関係パターンインスタンス検索部113は、検討中のノードのリストにノードはあるか判定する(s506)。
上述の判定の結果、ノードがある場合(s506:Yes)、不具合関係パターンインスタンス検索部113は、検討中のノードのリストからノードを選択し、それを現在の調査対象ノードとして設定し(s507)、処理をs502に戻す。
一方、上述の判定の結果、ノードがないとされた場合(s506:No)、不具合関係パターンインスタンス検索部113は、処理を終了する。
ここで図16のフローの説明にもどる。不具合関係パターンインスタンス検索部113は、未処理の不具合ペアを取得する(s51)。
続いて、不具合関係パターンインスタンス検索部113は、不具合ペアらの不具合の変数定義等をマージしたものを不具合関係パターン定義127に照合しパターン特定する(s52)。
また、不具合関係パターンインスタンス検索部113は、ペアの不具合同士で共有エッジを持っているか判定する(s53)。
上述の判定の結果、共有エッジを持っている場合(s53:Yes)、不具合関係パターンインスタンス検索部113は、当該ペアはデータ依存の不具合関係パターン(図19A)と特定し(s54)、処理をs59に遷移させる。なお、当該ペアに関しては、不具合間のデータ相関を例えばデータ相関の算定式201に基づき計算するものとする(図20)。
一方、上述の判定の結果、共有エッジを持っていない場合(s53:No)、不具合関係パターンインスタンス検索部113は、当該ペアの不具合の不具合発生パスの比較を行う(s55)。
続いて、不具合関係パターンインスタンス検索部113は、不具合発生パスには共有ノードがあるか判定する(s56)。
上述の判定の結果、不具合発生パスには共有ノードがある場合(s56:Yes)、不具合関係パターンインスタンス検索部113は、当該ペアは制御依存の不具合関係パターン(図19C)と特定し(s57)、処理をs59に遷移させる
一方、上述の判定の結果、不具合発生パスには共有ノードがない場合(s56:No)、不具合関係パターンインスタンス検索部113は、当該ペアは、独立した関係の不具合関係パターンと特定する(s58)。
また、不具合関係パターンインスタンス検索部113は、すべてのペアについて処理済
みか判定する(s59)。
上述の判定の結果、すべてのペアについて処理済みとなっていない場合(s59:No)、不具合関係パターンインスタンス検索部113は、処理をs51に戻す。一方、上述の判定の結果、すべてのペアについて処理済みである場合(s56:Yes)、不具合関係パターンインスタンス検索部113は、処理を終了する。
なお、本実施形態の不具合解析支援装置100における分析結果表示部114は、ここまでで得ている不具合発生グラフ131のデータを、例えば端末5に配信し表示(図21)させるとすれば好適である。同様に、上述のように全ての不具合の発生パスをマージしたソースコード(図22)を端末5に配信し表示させるとしてもよい。
以上、本発明を実施するための最良の形態などについて具体的に説明したが、本発明はこれに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。
こうした本実施形態によれば、1つのプログラムが含む複数の不具合に関して、分析および修正の重複を効果的に回避し、一貫性のある修正の支援が可能となる。
本明細書の記載により、少なくとも次のことが明らかにされる。すなわち、本実施形態の不具合解析支援装置において、前記演算装置は、前記不具合発生グラフの生成に際し、不具合の発生パスの変数の定義情報をノードに設定し、前記ノードに設定された前記変数の使用方法をデータフローとして設定し、前記ノードを、前記発生パスで記述された順序に沿ってエッジで接続することで、前記不具合発生グラフを生成するものである、としてもよい。
これによれば、不具合の発生状況を示すパスを効率的に生成可能となる。ひいては、1つのプログラムが含む複数の不具合に関して、分析および修正の重複をより効果的に回避し、一貫性のある修正の支援が可能となる。
本実施形態の不具合解析支援装置において、前記演算装置は、前記インスタンスの検索に際し、前記不具合ごとに、前記不具合発生グラフから、当該不具合の前記変数の定義、当該変数の定義の説明に使用するグラフ要素、及び不具合状態に現れるすべての変数の使用法、の各情報を抽出する処理と、未処理の不具合ペアを特定し、当該不具合ペアにおける不具合の前記変数の定義、及び前記グラフ要素をマージしたものを、前記不具合関係パターンと比較し、該当する不具合関係パターンについて判定する処理と、前記不具合ペアの前記変数の定義及び前記グラフ要素は、共有エッジを含んでいるか判定する処理と、前記共有エッジに関する判定の結果、前記共有エッジを含んでいない場合、前記不具合ペアの各不具合の発生パスを比較し、当該発生パスに共有ノードが含まれるか判定し、前記共有ノードが含まれない場合、互いに独立した不具合であると特定する処理と、前記共有エッジに関する判定の結果、前記共有エッジを含んでいる場合、前記不具合ペアの各不具合の間のデータ相関を算定する処理と、前記共有ノードに関する判定の結果、前記共有ノードが含まれる場合、コントロール依存の不具合関係にあると特定する処理と、を実行するものである、としてもよい。
これによれば、不具合の発生要素の間の関係性を踏まえた、分析、検討の対象の効率的な特定が可能となる。ひいては、1つのプログラムが含む複数の不具合に関して、分析および修正の重複をより効果的に回避し、一貫性のある修正の支援が可能となる。
本実施形態の不具合解析支援方法において、前記情報処理装置が、前記不具合発生グラフの生成に際し、不具合の発生パスの変数の定義情報をノードに設定し、前記ノードに設
定された前記変数の使用方法をデータフローとして設定し、前記ノードを、前記発生パスで記述された順序に沿ってエッジで接続することで、前記不具合発生グラフを生成する、としてもよい。
本実施形態の不具合解析支援方法において、前記情報処理装置が、前記インスタンスの検索に際し、前記不具合ごとに、前記不具合発生グラフから、当該不具合の前記変数の定義、当該変数の定義の説明に使用するグラフ要素、及び不具合状態に現れるすべての変数の使用法、の各情報を抽出する処理と、未処理の不具合ペアを特定し、当該不具合ペアにおける不具合の前記変数の定義、及び前記グラフ要素をマージしたものを、前記不具合関係パターンと比較し、該当する不具合関係パターンについて判定する処理と、前記不具合ペアの前記変数の定義及び前記グラフ要素は、共有エッジを含んでいるか判定する処理と、前記共有エッジに関する判定の結果、前記共有エッジを含んでいない場合、前記不具合ペアの各不具合の発生パスを比較し、当該発生パスに共有ノードが含まれるか判定し、前記共有ノードが含まれない場合、互いに独立した不具合であると特定する処理と、前記共有エッジに関する判定の結果、前記共有エッジを含んでいる場合、前記不具合ペアの各不具合の間のデータ相関を算定する処理と、前記共有ノードに関する判定の結果、前記共有ノードが含まれる場合、コントロール依存の不具合関係にあると特定する処理と、を実行するとしてもよい。
1 ネットワーク(インターフェイス)
5 端末
10 不具合解析支援システム
100 不具合解析支援装置
101 記憶装置
102 プログラム
103 メモリ
104 演算装置
105 通信装置
110 不具合発生パス再生成部
111 不具合発生グラフ生成部
112 不具合の変数定義抽出部
113 不具合関係パターンインスタンス検索部
114 分析結果表示部
125 ソースコード
126 不具合ログ
127 不具合関係パターン定義
130 不具合発生パス
131 不具合発生グラフ
132 不具合の変数定義
133 不具合関係パターン定義
134 不具合関係パターンインスタンス

Claims (4)

  1. 処理対象となるソフトウェアのソースコードを格納した記憶装置と、
    前記ソースコードにおける関数呼び出し関係に基づき、不具合位置を含む関数であるすべてのターゲット関数を通過する記号実行分析ルートを計算し、前記記号実行分析ルートにおける前記ターゲット関数に不具合条件を統合後、実行順序が最小となる前記記号実行分析ルートの関数から記号実行を行うことで、実行パス及び制約を含む情報を取得する処理を、前記記号実行分析ルートのすべての機能について実行し、前記統合後の不具合位置によって終了する実行パスである不具合発生パスを取得することで、全ての不具合の発生パスを再生成する処理と、前記不具合発生パスの変数の定義情報をノードに設定し、前記ノードに設定された前記変数の使用方法をデータフローとして設定し、前記ノードを、前記不具合発生パスで記述された順序に沿ってエッジで接続することで、不具合発生グラフを生成する処理と、前記不具合発生グラフにおいて、不具合同士の関係性として共有ノード又は共有エッジの有無で互いの依存関係を規定した不具合関係パターンに対応するインスタンスを検索する処理と、前記検索の結果を所定装置に出力する処理を実行する演算装置と、
    を含むことを特徴とする不具合解析支援装置。
  2. 前記演算装置は、
    前記インスタンスの検索に際し、
    前記不具合ごとに、前記不具合発生グラフから、当該不具合の前記変数の定義、当該変数の定義の説明に使用するグラフ要素、及び不具合状態に現れるすべての変数の使用法、の各情報を抽出する処理と、
    未処理の不具合ペアを特定し、当該不具合ペアにおける不具合の前記変数の定義、及び前記グラフ要素をマージしたものを、前記不具合関係パターンと比較し、該当する不具合関係パターンについて判定する処理と、
    前記不具合ペアの前記変数の定義及び前記グラフ要素は、共有エッジを含んでいるか判定する処理と、
    前記共有エッジに関する判定の結果、前記共有エッジを含んでいない場合、前記不具合ペアの各不具合の発生パスを比較し、当該発生パスに共有ノードが含まれるか判定し、前記共有ノードが含まれない場合、互いに独立した不具合であると特定する処理と、
    前記共有エッジに関する判定の結果、前記共有エッジを含んでいる場合、前記不具合ペアの各不具合の間のデータ相関を算定する処理と、
    前記共有ノードに関する判定の結果、前記共有ノードが含まれる場合、コントロール依存の不具合関係にあると特定する処理と、
    を実行するものである、
    ことを特徴とする請求項に記載の不具合解析支援装置。
  3. 情報処理装置が、
    処理対象となるソフトウェアのソースコードを記憶装置で格納し、
    前記ソースコードにおける関数呼び出し関係に基づき、不具合位置を含む関数であるすべてのターゲット関数を通過する記号実行分析ルートを計算し、前記記号実行分析ルートにおける前記ターゲット関数に不具合条件を統合後、実行順序が最小となる前記記号実行分析ルートの関数から記号実行を行うことで、実行パス及び制約を含む情報を取得する処理を、前記記号実行分析ルートのすべての機能について実行し、前記統合後の不具合位置によって終了する実行パスである不具合発生パスを取得することで、全ての不具合の発生パスを再生成する処理と、前記不具合発生パスの変数の定義情報をノードに設定し、前記ノードに設定された前記変数の使用方法をデータフローとして設定し、前記ノードを、前記不具合発生パスで記述された順序に沿ってエッジで接続することで、不具合発生グラフを生成する処理と、前記不具合発生グラフにおいて、不具合同士の関係性として共有ノード又は共有エッジの有無で互いの依存関係を規定した不具合関係パターンに対応するインスタンスを検索する処理と、前記検索の結果を所定装置に出力する処理を実行する、
    ことを特徴とする不具合解析支援方法。
  4. 前記情報処理装置が、
    前記インスタンスの検索に際し、
    前記不具合ごとに、前記不具合発生グラフから、当該不具合の前記変数の定義、当該変数の定義の説明に使用するグラフ要素、及び不具合状態に現れるすべての変数の使用法、の各情報を抽出する処理と、
    未処理の不具合ペアを特定し、当該不具合ペアにおける不具合の前記変数の定義、及び前記グラフ要素をマージしたものを、前記不具合関係パターンと比較し、該当する不具合関係パターンについて判定する処理と、
    前記不具合ペアの前記変数の定義及び前記グラフ要素は、共有エッジを含んでいるか判定する処理と、
    前記共有エッジに関する判定の結果、前記共有エッジを含んでいない場合、前記不具合ペアの各不具合の発生パスを比較し、当該発生パスに共有ノードが含まれるか判定し、前記共有ノードが含まれない場合、互いに独立した不具合であると特定する処理と、
    前記共有エッジに関する判定の結果、前記共有エッジを含んでいる場合、前記不具合ペアの各不具合の間のデータ相関を算定する処理と、
    前記共有ノードに関する判定の結果、前記共有ノードが含まれる場合、コントロール依存の不具合関係にあると特定する処理と、
    を実行することを特徴とする請求項に記載の不具合解析支援方法。
JP2021114875A 2021-07-12 2021-07-12 不具合解析支援装置及び不具合解析支援方法 Active JP7664779B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2021114875A JP7664779B2 (ja) 2021-07-12 2021-07-12 不具合解析支援装置及び不具合解析支援方法
EP22182876.7A EP4120085B1 (en) 2021-07-12 2022-07-04 Failure analysis support device and failure analysis support method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021114875A JP7664779B2 (ja) 2021-07-12 2021-07-12 不具合解析支援装置及び不具合解析支援方法

Publications (2)

Publication Number Publication Date
JP2023011182A JP2023011182A (ja) 2023-01-24
JP7664779B2 true JP7664779B2 (ja) 2025-04-18

Family

ID=82547637

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021114875A Active JP7664779B2 (ja) 2021-07-12 2021-07-12 不具合解析支援装置及び不具合解析支援方法

Country Status (2)

Country Link
EP (1) EP4120085B1 (ja)
JP (1) JP7664779B2 (ja)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001249828A (ja) 1999-12-28 2001-09-14 Toshiba Lsi System Support Kk 情報処理装置、不具合解析プログラムを格納したコンピュータ読み取り可能な記憶媒体、不具合解析方法、及びアプリケーションプログラム開発支援システム
JP2010079447A (ja) 2008-09-24 2010-04-08 Fujitsu Ltd バグ検出支援プログラム、類似構文識別情報一覧出力プログラム、バグ検出支援装置およびバグ検出支援方法
JP2011253363A (ja) 2010-06-02 2011-12-15 Hitachi Ltd アプリケーションの解析方法、解析システム及び解析プログラム
JP2016071774A (ja) 2014-10-01 2016-05-09 日本電気株式会社 検証支援装置、検証支援方法およびコンピュータプログラム
JP2017187999A (ja) 2016-04-08 2017-10-12 株式会社日立製作所 ジョブネット検証装置及びジョブネット検証方法
US20200310949A1 (en) 2016-07-01 2020-10-01 Hitachi, Ltd. Control Device

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012128727A (ja) 2010-12-16 2012-07-05 Toyota Infotechnology Center Co Ltd ソフトウェアコンポーネントの信頼性評価方法および装置
US8516443B2 (en) * 2011-05-26 2013-08-20 Oracle International Corporation Context-sensitive analysis framework using value flows
US8893102B2 (en) * 2011-07-27 2014-11-18 Oracle International Corporation Method and system for performing backward-driven path-sensitive dataflow analysis
US10599852B2 (en) * 2014-08-15 2020-03-24 Securisea, Inc. High performance software vulnerabilities detection system and methods
CN106294156B (zh) * 2016-08-11 2018-12-07 北京邮电大学 一种静态代码缺陷检测分析方法及装置
JP7459522B2 (ja) 2020-01-21 2024-04-02 沖電気工業株式会社 負荷制御装置および画像形成装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001249828A (ja) 1999-12-28 2001-09-14 Toshiba Lsi System Support Kk 情報処理装置、不具合解析プログラムを格納したコンピュータ読み取り可能な記憶媒体、不具合解析方法、及びアプリケーションプログラム開発支援システム
JP2010079447A (ja) 2008-09-24 2010-04-08 Fujitsu Ltd バグ検出支援プログラム、類似構文識別情報一覧出力プログラム、バグ検出支援装置およびバグ検出支援方法
JP2011253363A (ja) 2010-06-02 2011-12-15 Hitachi Ltd アプリケーションの解析方法、解析システム及び解析プログラム
JP2016071774A (ja) 2014-10-01 2016-05-09 日本電気株式会社 検証支援装置、検証支援方法およびコンピュータプログラム
JP2017187999A (ja) 2016-04-08 2017-10-12 株式会社日立製作所 ジョブネット検証装置及びジョブネット検証方法
US20200310949A1 (en) 2016-07-01 2020-10-01 Hitachi, Ltd. Control Device

Also Published As

Publication number Publication date
EP4120085A1 (en) 2023-01-18
EP4120085B1 (en) 2025-01-22
JP2023011182A (ja) 2023-01-24

Similar Documents

Publication Publication Date Title
JP7743403B2 (ja) データフローグラフのコンポーネントのユニットテスト
US20080126867A1 (en) Method and system for selective regression testing
US20150186251A1 (en) Control flow error localization
JP2000222244A (ja) コンピュ―タプログラムの微細でない変異のフィルタリングによる強化された機能テスト
CN111949551A (zh) 应用程序测试方法、装置、设备及存储介质
CN111108481A (zh) 故障分析方法及相关设备
JP7611927B2 (ja) 決定論的順序でテストを実行すること
CN120409376A (zh) 回归测试方法、系统、计算机设备和可读存储介质
CN115587048A (zh) 回归测试方法、终端设备及计算机可读存储介质
JP7190246B2 (ja) ソフトウェア不具合予測装置
US11194704B2 (en) System testing infrastructure using combinatorics
JP7664779B2 (ja) 不具合解析支援装置及び不具合解析支援方法
JP6451417B2 (ja) デバッグ支援装置、デバッグ支援システム、デバッグ支援方法、および、デバッグ支援プログラム
JP7447044B2 (ja) プログラム分析装置、プログラム分析方法およびトレース処理追加装置
CN118642717A (zh) 前端工程代码的清洗方法、设备及存储介质
CN113297038B (zh) 监控与数据处理方法、装置、设备及监控系统、数据中心
CN115114156B (zh) 流程失效状态的分析方法及其系统、计算机设备
Trivedi et al. Modelling and analysing of software defect prevention using ODC
Tomar et al. Regression Testing Approaches, Tools, and Applications in Various Environments
Vasudevan et al. Automated low-cost sbst optimization techniques for processor testing
JP5516277B2 (ja) テストケース関係抽出方法、テストケース関係抽出装置及びテストケース関係抽出プログラム
JP2023042058A (ja) 情報処理装置及び情報処理方法
JP7228374B2 (ja) シミュレーションシステム及びシミュレート方法
JP7631164B2 (ja) 不具合解析装置及び不具合解析方法
JP7760317B2 (ja) ソフトウェア不具合分析装置及びソフトウェア不具合分析方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240213

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20241211

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20241224

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20250129

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: 20250401

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20250408

R150 Certificate of patent or registration of utility model

Ref document number: 7664779

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150