JP6742556B1 - ソフトウェア解析装置 - Google Patents

ソフトウェア解析装置 Download PDF

Info

Publication number
JP6742556B1
JP6742556B1 JP2020512064A JP2020512064A JP6742556B1 JP 6742556 B1 JP6742556 B1 JP 6742556B1 JP 2020512064 A JP2020512064 A JP 2020512064A JP 2020512064 A JP2020512064 A JP 2020512064A JP 6742556 B1 JP6742556 B1 JP 6742556B1
Authority
JP
Japan
Prior art keywords
execution
unit
execution history
designated
display information
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
JP2020512064A
Other languages
English (en)
Other versions
JPWO2021079408A1 (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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Application granted granted Critical
Publication of JP6742556B1 publication Critical patent/JP6742556B1/ja
Publication of JPWO2021079408A1 publication Critical patent/JPWO2021079408A1/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • 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/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/87Monitoring of transactions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2354/00Aspects of interface with display user

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

本発明は、開発者がソフトウェア全体を容易に把握することが可能なソフトウェア解析装置を提供することを目的とする。本発明によるソフトウェア解析装置は、ソフトウェアの構造情報と、ソフトウェアの複数の実行履歴とを取得する取得部と、取得部が取得した構造情報および複数の実行履歴に基づいて、構造情報に含まれる複数の構造要素の重みと、各構造要素の依存関係の重みとを解析する解析部と、構造情報に含まれる各構造要素のうち、一の構造要素を指定構造要素として指定する構造要素指定部と、指定構造要素と依存関係がある構造要素である依存構造要素および当該依存構造要素の重みと、指定構造要素と依存構造要素との対応関係および当該対応関係の重みとを含む表示情報を算出する表示情報算出部と、表示情報算出部が算出した表示情報を表示する表示部とを備える。

Description

本発明は、ソフトウェアを解析するソフトウェア解析装置に関する。
ソフトウェア開発では、大規模かつ短納期の流用開発が主流になっている。また、ソフトウェア開発の途中で顧客の要望が変更された場合、変更後のソフトウェア開発に作業を集中させるために、変更後のソフトウェア開発に係る設計書などのドキュメントの作成および修正が省略されることがある。このような変更後のソフトウェア開発に係るドキュメントが不足している状況において、当該ソフトウェア開発に新たな開発者が参加する場合、新たな開発者はドキュメントを確認することなく既存のソフトウェアを理解する必要がある。
既存のソフトウェアを理解する方法としては、開発者自身がソースコードを読み込んで確認する方法が主流であった。しかし、開発者自身がソースコードを読み込んで確認する場合は、確認に要する工数が多いため、全てのソースコードを把握できない懸念があった。これに対して、ソースコードを静的解析して得られたソフトウェア構造をグラフとして表示する技術が開発されている。当該技術によれば、開発者は、ソースコードを読み込んで確認することなく一見してソフトウェア構造を理解することができる。他に、ソースコードを実行してソフトウェアの処理の流れを動的解析する技術が開発されている。当該技術によれば、開発者は、ソースコードを読み込むことなく一見してソフトウェアの処理の流れを理解することができる。
例えば、ソフトウェアの構造情報および影響範囲を簡素化して可視化する技術が開示されている(例えば、特許文献1参照)。ここで、影響範囲とは、ある関数に対して依存関係にある他の関数の範囲のことをいう。
また、ソフトウェアの構造情報および実行履歴情報に基づいて、ソフトウェアの依存関係の実行回数を算出し、コールグラフ上で実行回数が多い依存関係の箇所を強調して表示する技術が開示されている(例えば、特許文献2参照)。
特開2018−73054号公報 特開2001−290639号公報
上述の新たな開発者が既存のソフトウェアの処理の流れを理解する場合、当該ソフトウェアの全体的な処理の流れを把握する必要がある。しかし、従来の技術では、1つのソフトウェアの構造情報に対して1つの動的解析の結果である実行履歴を表示することしかできない。このように1つの実行履歴を表示するだけでは、開発者はソフトウェアの一部しか把握することができない。また、当該実行履歴が普段とは異なるパスを通っていたとしても、そのことを開発者が把握することは困難である。
特許文献1に開示されている技術では、影響範囲を強調して表示することによって、開発者が影響範囲を把握することを容易にしている。しかし、特許文献1では、ソフトウェアの動的解析について言及されていないため、開発者はソフトウェアの処理の流れを理解することができないという問題がある。また、特許文献2では、複数の実行履歴情報を解析することについて言及されていないため、開発者はソフトウェアの一部しか把握することができないなどの問題がある。このように、従来の技術では、開発者がソフトウェア全体を容易に把握することができるとはいえず改善の余地があった。
本発明は、このような問題を解決するためになされたものであり、開発者がソフトウェア全体を容易に把握することが可能なソフトウェア解析装置を提供することを目的とする。
上記の課題を解決するために、本発明によるソフトウェア解析装置は、ソフトウェアの構造情報と、ソフトウェアの複数の実行履歴とを取得する取得部と、取得部が取得した構造情報および複数の実行履歴に基づいて、構造情報に含まれる複数の構造要素の重みと、各構造要素の依存関係の重みとを解析する解析部と、構造情報に含まれる各構造要素のうち、一の構造要素を指定構造要素として指定する構造要素指定部と、指定構造要素と依存関係がある構造要素である依存構造要素および当該依存構造要素の重みと、指定構造要素と依存構造要素との対応関係および当該対応関係の重みとを含む表示情報を算出する表示情報算出部と、表示情報算出部が算出した表示情報を表示する表示部とを備える。
本発明によると、ソフトウェア解析装置は、取得部が取得した構造情報および複数の実行履歴に基づいて、構造情報に含まれる複数の構造要素の重みと、各構造要素の依存関係の重みとを解析する解析部と、構造情報に含まれる各構造要素のうち、一の構造要素を指定構造要素として指定する構造要素指定部と、指定構造要素と依存関係がある構造要素である依存構造要素および当該依存構造要素の重みと、指定構造要素と依存構造要素との対応関係および当該対応関係の重みとを含む表示情報を算出する表示情報算出部と、表示情報算出部が算出した表示情報を表示する表示部とを備えるため、開発者がソフトウェア全体を容易に把握することが可能となる。
本発明の目的、特徴、態様、および利点は、以下の詳細な説明と添付図面とによって、より明白となる。
本発明の実施の形態1によるソフトウェア解析装置の構成の一例を示すブロック図である。 本発明の実施の形態1による構造情報の一例を示す図である。 本発明の実施の形態1による複数の実行履歴の一例を示す図である。 本発明の実施の形態1による解析情報の一例を示す図である。 本発明の実施の形態1による解析部の動作の一例を示すフローチャートである。 本発明の実施の形態1による解析部の動作の一例を示すフローチャートである。 本発明の実施の形態1による表示部が表示するグラフの一例である。 本発明の実施の形態2によるソフトウェア解析装置の構成の一例を示すブロック図である。 本発明の実施の形態2による実行履歴の指定の一例を示す図である。 本発明の実施の形態2による表示部が表示するグラフの一例である。 本発明の実施の形態2による実行履歴の指定の一例を示す図である。 本発明の実施の形態2による表示部が表示するグラフの一例である。 本発明の実施の形態3によるソフトウェア解析装置の構成の一例を示すブロック図である。 本発明の実施の形態3による実行履歴の指定の一例を示す図である。 本発明の実施の形態3による表示部が表示するグラフの一例である。 本発明の実施の形態4によるソフトウェア解析装置の構成の一例を示すブロック図である。 本発明の実施の形態4による表示部が表示するグラフの一例である。 本発明の実施の形態5によるソフトウェア解析装置の構成の一例を示すブロック図である。 本発明の実施の形態5による実行履歴の指定の一例を示す図である。 本発明の実施の形態5による表示部が表示するグラフの一例である。 本発明の実施の形態6によるソフトウェア解析装置の構成の一例を示すブロック図である。 本発明の実施の形態6による表示部が表示するグラフの一例である。 本発明の実施の形態によるソフトウェア解析装置のハードウェア構成の一例を示すブロック図である。 本発明の実施の形態によるソフトウェア解析装置のハードウェア構成の一例を示すブロック図である。
本発明の実施の形態について、図面に基づいて以下に説明する。
<実施の形態1>
図1は、本実施の形態1によるソフトウェア解析装置1の構成の一例を示すブロック図である。図1に示すように、ソフトウェア解析装置1は、制御部2と、記憶部3と、出力部4とを備えている。
制御部2は、取得部5と、解析部6と、構造要素指定部7と、表示情報算出部8とを備えている。
取得部5は、ソフトウェアの構造情報11と、ソフトウェアの複数の実行履歴12とを取得する。実行履歴12は、ソフトウェアを実行したときの処理の流れを示したものである。ユーザは、取得部5が取得すべき構造情報11および複数の実行履歴12を指定することができる。すなわち、ユーザは、解析対象のソフトウェアの構造情報11および複数の実行履歴12を指定することができる。なお、ユーザは、例えばソフトウェアの開発者である。
ここで、構造情報11および複数の実行履歴12について説明する。
図2は、構造情報11の一例を示す図である。図2に示すように、構造情報11は、関数一覧13と、依存関係一覧14とを含んでいる。
関数一覧13には、解析対象のソフトウェアに含まれている全ての関数(実行関数)が示されている。また、依存関係一覧14には、解析対象のソフトウェアに含まれている全ての依存関係が示されている。具体的には、依存関係一覧14では、依存元の実行関数名と依存先の実行関数名とが対応付けられている。このような関数および依存関係は、周知の静的解析ツールを用いることによって取得することができる。なお、関数は、構造要素ともいう。
図3は、複数の実行履歴12の一例を示す図である。図3に示すように、複数の実行履歴12は、実行履歴A15および実行履歴B16を含んでいる。実行履歴A15および実行履歴B16のそれぞれには、解析対象のソフトウェアを実行したときに、実行された関数の一覧(呼び出された関数の一覧)が、実行された順に示されている。このような関数は、周知の動的解析ツールを用いることによって取得することができる。また、例えば、実行履歴A15におけるNo.1とNo.2、およびNo.2とNo.3などといった実行関数の前後を解析することによって、実行関数の依存関係を解析することが可能となる。
図1の説明に戻り、解析部6は、取得部5が取得した構造情報11および複数の実行履歴12に基づいて、各関数の実行回数と依存関係の実行回数とを実行履歴ごとに解析する。そして、解析部6は、解析結果を解析情報9として記憶部3に記憶する。
図4は、記憶部3が記憶する解析情報9の一例を示す図である。図4に示すように、解析情報9は、関数テーブル17および依存関係テーブル18を含む。なお、図4において、「実行回数A」は、実行履歴A15における各関数の実行回数を示している。また、「実行回数B」は、実行履歴B16における各関数の実行回数を示している。
関数テーブル17には、各関数の実行回数の合計値が実行履歴ごとに記憶されている。依存関係テーブル18には、各依存関係の実行回数の合計値が実行履歴ごとに記憶されている。
図5,6は、解析部6の動作の一例を示すフローチャートである。以下では、解析部6の動作について図2〜3を参照しつつ説明する。
ステップS101において、解析部6は、構造情報11に含まれている関数一覧13を、解析情報9の関数テーブル17としてコピーする。
ステップS102において、解析部6は、取得部5が取得した複数の実行履歴12のうち、一の実行履歴を読み込む。例えば、解析部6は、複数の実行履歴12のうち、実行履歴A15を読み込む。
ステップS103において、解析部6は、ステップS102で読み込んだ実行履歴における1行目の実行関数を読み込む。そして、解析部6は、1行目の実行関数名と一致する、関数テーブル17における実行関数名の実行回数をインクリメントする。例えば、解析部6は、実行履歴A15における「No.1」の「Func_A」を読み込む。そして、解析部6は、実行履歴A15における「No.1」の「Func_A」と一致する、関数テーブル17における「Func_A」の「実行回数A」に「1」をインクリメントする。なお、後述のステップS105で次の行が読み込まれた場合、解析部6は、ステップS105で読み込まれた行の実行関数を読み込む。
ステップS104において、解析部6は、ステップS102で読み込んだ実行履歴の全ての行を読み込んだか否かを判断する。実行履歴の全ての行を読み込んだ場合は、ステップS106に移行する。一方、実行履歴の全ての行を読み込んでいない場合は、ステップS105に移行する。
ステップS105において、解析部6は、ステップS103で読み込んだ実行履歴の次の行の実行関数名を読み込む。例えば、解析部6は、実行履歴A15における「No.2」の「Func_B」を読み込む。その後、ステップS103に戻る。
ステップS106において、解析部6は、ステップS102で取得部5が取得した複数の実行履歴12の全てを読み込んだか否かを判断する。複数の実行履歴12の全てを読み込んだ場合は、ステップS108に移行する。一方、複数の実行履歴12の全てを読み込んでいない場合は、ステップS107に移行する。
ステップS107において、解析部6は、ステップS102で取得部5が取得した複数の実行履歴12のうち、まだ読み込んでいない実行履歴を読み込む。例えば、解析部6は、複数の実行履歴12のうち、実行履歴B16を読み込む。その後、ステップS103に戻る。
ステップS108において、解析部6は、構造情報11に含まれている依存関係一覧14を、解析情報9の依存関係テーブル18としてコピーする。
ステップS109において、解析部6は、取得部5が取得した複数の実行履歴12のうち、一の実行履歴を読み込む。例えば、解析部6は、複数の実行履歴12のうち、実行履歴A15を読み込む。
ステップS110において、解析部6は、ステップS109で読み込んだ実行履歴における1行目および2行目の各実行関数を読み込む。そして、解析部6は、読み込んだ各実行関数間の依存関係を解析する。例えば、解析部6は、実行履歴A15における「No.1」の「Func_A」、および「No.2」の「Func_B」を読み込む。そして、解析部6は、「Func_A」と「Func_B」との依存関係を解析する。なお、後述のステップS113で次の行が読み込まれた場合、解析部6は、ステップS113で読み込まれた行と、その次の行の各実行関数を読み込む。
ステップS111において、解析部6は、ステップS110で解析した依存間関係と一致する、依存関係テーブル18における依存関係の実行回数をインクリメントする。例えば、解析部6は、実行履歴A15における「Func_A」と「Func_B」との依存関係と一致する依存関係テーブル18における「No.1」の「実行回数A」に「1」をインクリメントする。
ステップS112において、解析部6は、ステップS109で読み込んだ実行履歴の全ての行を読み込んだか否かを判断する。実行履歴の全ての行を読み込んだ場合は、ステップS114に移行する。一方、実行履歴の全ての行を読み込んでいない場合は、ステップS113に移行する。
ステップS113において、解析部6は、ステップS109で読み込んだ実行履歴の次の行の実行関数名を読み込む。例えば、解析部6は、実行履歴A15における「No.2」の「Func_B」を読み込む。その後、ステップS110に戻る。
ステップS114において、解析部6は、ステップS109で取得部5が取得した複数の実行履歴12の全てを読み込んだか否かを判断する。複数の実行履歴12の全てを読み込んだ場合は、処理を終了する。一方、複数の実行履歴12の全てを読み込んでいない場合は、ステップS115に移行する。
ステップS115において、解析部6は、ステップS109で取得部5が取得した複数の実行履歴12のうち、まだ読み込んでいない実行履歴を読み込む。例えば、解析部6は、複数の実行履歴12のうち、実行履歴B16を読み込む。その後、ステップS110に戻る。
上記より、図4の例では、実行履歴A15における各関数の実行回数の合計値が関数テーブル17の実行回数Aに記憶され、実行履歴B16における各関数の実行回数の合計値が関数テーブル17の実行回数Bに記憶される。また、実行履歴A15における各関数の依存関係の実行回数の合計値が依存関係テーブル18の実行回数Aに記憶され、実行履歴B16における各関数の依存関係の実行回数の合計値が依存関係テーブル18の実行回数Bに記憶される。
図1の説明に戻り、構造要素指定部7は、取得部5が取得した構造情報11に含まれる各関数のうち、一の関数を指定する。具体的には、構造要素指定部7は、ユーザが選択した一の関数を指定する。なお、構造要素指定部7が指定した関数は指定構造要素ともいう。
表示情報算出部8は、解析情報9を用いて、構造要素指定部7が指定した関数と依存関係がある関数および当該関数の重みと、構造要素指定部7が指定した関数と依存関係がある関数との対応関係および当該対応関係の重みとを含む表示情報を算出する。
例えば、関数テーブル17における実行回数Aについて、実行回数の値を各実行関数の重みとする場合、「Func_A」および「Func_B」の重みはそれぞれ「2」となり、「Func_C」の重みは「1」となる。また、依存関係テーブル18における実行回数Aについて、実行回数の値を各依存関係の重みとする場合、依存元が「Func_A」であり依存先が「Func_B」である依存関係の重みは「2」となり、依存元が「Func_B」であり依存先が「Func_C」である依存関係の重みは「1」となる。表示情報算出部8は、このような関数および依存関係のそれぞれの重みを表示情報として算出する。
表示部10は、表示情報算出部8が算出した表示情報を表示する。具体的には、表示部10は、表示情報算出部8が算出した各関数およびそれらの重みと、各関数の依存関係およびそれらの重みとをグラフ上に示すように表示する。
図7は、表示部10が表示するグラフ19の一例である。グラフ19は、コールグラフである。なお、図7の例では、構造要素指定部7が関数名として「Func_B」を指定した場合を示している。
図7に示すように、表示部10は、表示情報算出部8から提供された「Func_B」を含む複数の関数およびそれらの重み、各関数の依存関係およびそれらの重みをコールグラフ上に示している。図7において、例えば、「Func_B(A:2,B:1)」は、関数名が「Func_B」の実行回数Aの重みが「2」であり、実行回数Bの重みが「1」であることを示している。また、例えば、「Func_B」と「Func_C」との間の「(A:1,B:0)」は、依存元が「Func_B」であり依存先が「Func_C」である依存関係の実行回数Aの重みが「1」であり、実行回数Bの重みが「0」であることを示している。
以上のことから、本実施の形態1によれば、複数の実行履歴12を用いることによって、下記(1)〜(3)の実行履歴を解析することが可能となる。
(1)ソフトウェアの途中で分割された複数の実行履歴を結合して解析し、当該解析結果を表示することができる。
(2)同一の操作を行った複数の実行履歴を解析し、当該解析結果を表示することができる。
(3)複数の開発者が操作した実行履歴を解析し、当該解析結果を表示することができる。
実行履歴を用いて影響範囲を解析する場合、1つの実行履歴だけではその実行回数(重み)が正確でないことがある。ある操作を行った際、本来は実行関数および依存関係のそれぞれの実行回数(重み)は大きくないが、何らかの原因で処理の経路が通常とは異なると、解析結果として重みが大きくなる。サンプルとなる実行履歴が多い方が、得られる重みの不正確性のブレが小さくなり、正確な重みを得ることができる。本実施の形態1によれば、複数の実行履歴を解析することが可能であるため、従来の技術よりも高精度な重みを得ることができる。これにより、開発者がソフトウェア全体を容易に把握することが可能となる。
<実施の形態2>
図8は、本実施の形態2によるソフトウェア解析装置20の構成の一例を示すブロック図である。
図8に示すように、ソフトウェア解析装置20は、実行履歴指定部21および表示情報算出部22を備えることを特徴としている。その他の基本的な構成および動作は、実施の形態1と同様であるため、ここでは詳細な説明を省略する。
実行履歴指定部21は、取得部5が取得した複数の実行履歴12のうち、解析で使用する1つの実行履歴を指定する。具体的には、実行履歴指定部21は、ユーザが選択した一の実行履歴を指定する。なお、実行履歴指定部21が指定した実行履歴は指定実行履歴ともいう。
図9は、実行履歴の指定の一例を示す図である。ユーザは、図示しない表示部に表示された図9に示す実行履歴の選択画面を参照し、1つの実行履歴を選択する。図9の例では、実行履歴Aが選択されている。この場合、実行履歴指定部21は、実行履歴Aを指定する。なお、図9における「Func_B」は、構造要素指定部7が指定した関数が「Func_B」であることを示している。また、図9に示す選択画面は、表示部10に表示してもよい。
表示情報算出部22は、実行履歴指定部21が指定した1つの実行履歴における表示情報を算出する。
例えば、実行履歴指定部21が実行履歴A15を指定した場合、表示情報算出部22は、解析情報9に含まれる関数テーブル17および依存関係テーブル18のそれぞれにおける実行回数Aの値を重みとした表示情報を算出する。このとき、表示情報算出部22は、実行回数Bに関する重みは算出しない。すなわち、表示情報算出部22が算出した表示情報には、実行回数Bに関する重みは含まれていない。
図10は、表示部10が表示するグラフ23の一例である。グラフ23は、コールグラフである。なお、図10の例では、図9に示すように、構造要素指定部7が関数名として「Func_B」を指定し、実行履歴指定部21が「実行履歴A」を指定した場合を示している。
図10において、例えば、「Func_B(2)」は、関数名が「Func_B」の実行回数Aの重みが「2」であることを示している。また、例えば、「Func_B」と「Func_C」との間の「(1)」は、依存元が「Func_B」であり依存先が「Func_C」である依存関係の実行回数Aの重みが「1」であることを示している。
図10に示すように、表示部10は、関数の重みが大きいほど、当該関数のノードを濃い色で表示する。また、表示部10は、依存関係の重みが大きいほど、矢印線を太くして表示する。これにより、各重みに対するユーザの視認性を向上させることができる。
図11は、実行履歴の指定の一例を示す図である。ユーザは、図11に示す実行履歴の選択画面を参照し、1つの実行履歴を選択する。図11の例では、実行履歴Bが選択されている。この場合、実行履歴指定部21は、実行履歴Bを指定する。
図12は、表示部10が表示するグラフ24の一例である。グラフ24は、コールグラフである。なお、図12の例では、図11に示すように、構造要素指定部7が関数名として「Func_B」を指定し、実行履歴指定部21が「実行履歴B」を指定した場合を示している。
図12において、例えば、「Func_B(1)」は、関数名が「Func_B」の実行回数Bの重みが「1」であることを示している。また、例えば、「Func_B」と「Func_C」との間の「(0)」は、依存元が「Func_B」であり依存先が「Func_C」である依存関係の実行回数Bの重みが「0」であることを示している。なお、図12における関数のノードの色の濃さ、および依存関係を示す矢印線の太さは、図10と同様の方法で決定すればよい。
以上のことから、本実施の形態2によれば、複数の実行履歴12からユーザが選択した実行履歴の解析結果を表示することができる。これにより、ユーザは、異なる実行履歴を表示するときに、再度解析を行うことなく、実行履歴指定部21で実行履歴を切り替えるだけで所望の実行履歴の解析結果を確認することができる。
<実施の形態3>
図13は、本実施の形態3によるソフトウェア解析装置25の構成の一例を示すブロック図である。
図13に示すように、ソフトウェア解析装置25は、実行履歴指定部26および表示情報算出部27を備えることを特徴としている。その他の基本的な構成および動作は、実施の形態2と同様であるため、ここでは詳細な説明を省略する。
実行履歴指定部26は、取得部5が取得した複数の実行履歴12のうち、解析で使用する複数の実行履歴を指定する。具体的には、実行履歴指定部26は、ユーザが選択した複数の実行履歴を指定する。
図14は、実行履歴の指定の一例を示す図である。ユーザは、図14に示す実行履歴の選択画面を参照し、複数の実行履歴を選択する。図14の例では、実行履歴Aおよび実行履歴Bが選択されている。この場合、実行履歴指定部26は、実行履歴Aおよび実行履歴Bを指定する。なお、図14における「Func_B」は、構造要素指定部7が指定した関数が「Func_B」であることを示している。
表示情報算出部27は、実行履歴指定部26が指定した複数の実行履歴における表示情報を算出する。具体的には、表示情報算出部27は、実行履歴指定部26が指定した各実行履歴における各関数および依存関係のそれぞれの重みの合計を含む表示情報を算出する。
例えば、実行履歴指定部26が実行履歴A15および実行履歴B16を指定した場合、表示情報算出部27は、解析情報9に含まれる関数テーブル17および依存関係テーブル18のそれぞれにおける実行回数Aと実行回数Bの合計値を重みとした表示情報を算出する。この場合、関数テーブル17において、「Func_A」の重みは「3」となり、「Func_C」の重みは「1」となる。依存関係テーブル18についても同様である。
図15は、表示部10が表示するグラフ28の一例である。グラフ28は、コールグラフである。なお、図15の例では、図14に示すように、構造要素指定部7が関数名として「Func_B」を指定し、実行履歴指定部26が「実行履歴A」および「実行履歴B」を指定した場合を示している。
図15において、例えば、「Func_B(3)」は、関数名が「Func_B」の実行回数Aおよび実行回数Bの合計の重みが「3」であることを示している。また、例えば、「Func_B」と「Func_C」との間の「(1)」は、依存元が「Func_B」であり依存先が「Func_C」である依存関係の実行回数Aおよび実行回数Bの合計の重みが「1」であることを示している。なお、図15における関数のノードの色の濃さ、および依存関係を示す矢印線の太さは、実施の形態2と同様の方法で決定すればよい。
以上のことから、本実施の形態3によれば、分割された複数の実行履歴を選択することによって、複数の実行履歴を仮想的に繋げた1つの実行履歴として解析することができる。また、異なる処理であっても複数の実行履歴を用いれば、各実行履歴における各関数および各依存関係のそれぞれの重みの合計をグラフで表示することができるため、正確な解析結果を表示することができる。
<実施の形態4>
図16は、本実施の形態4によるソフトウェア解析装置29の構成の一例を示すブロック図である。
図16に示すように、ソフトウェア解析装置29は、表示情報算出部30を備えることを特徴としている。その他の基本的な構成および動作は、実施の形態3と同様であるため、ここでは詳細な説明を省略する。
実行履歴指定部26は、実施の形態3と同様、取得部5が取得した複数の実行履歴12のうち、解析で使用する複数の実行履歴を指定する。例えば、実行履歴指定部26は、図14に示すように、ユーザが選択した実行履歴Aおよび実行履歴Bを指定する。
表示情報算出部30は、実行履歴指定部26が指定した各実行履歴の全てで実行された関数および依存関係のそれぞれの重みを含む表示情報を算出する。なお、各実行履歴の全てで実行された関数および依存関係のそれぞれの重みは、共通情報ともいう。
例えば、実行履歴指定部26が実行履歴A15および実行履歴B16を指定した場合、表示情報算出部30は、解析情報9に含まれる関数テーブル17における実行回数Aと実行回数Bの両方の値が1以上である関数の重みを「1」とし、それ以外の関数の重みを「0」とする。すなわち、実行履歴A15および実行履歴B16の両方で実行された関数の重みを「1」とし、それ以外の関数の重みを「0」とする。依存関係テーブル18についても同様である。
図17は、表示部10が表示するグラフ31の一例である。グラフ31は、コールグラフである。なお、図17の例では、図14に示すように、構造要素指定部7が関数名として「Func_B」を指定し、実行履歴指定部26が「実行履歴A」および「実行履歴B」を指定した場合を示している。
図17において、例えば、「Func_B(1)」は、実行履歴A15および実行履歴B16の両方において「Func_B」が少なくとも1回実行されたことを示している。また、例えば、「Func_A」と「Func_B」との間の「(1)」は、実行履歴A15および実行履歴B16の両方において依存元が「Func_A」であり依存先が「Func_B」である依存関係が少なくとも1回実行されたことを示している。なお、図17における関数のノードの色の濃さ、および依存関係を示す矢印線の太さは、実施の形態2と同様の方法で決定すればよい。
以上のことから、本実施の形態4によれば、操作が異なる複数の実行履歴において共通する処理を表示することができる。従って、共通する処理とその先で分岐されることとを明確化することができるため、ユーザはソフトウェアを理解するために必要な工数を削減することが可能となる。
<実施の形態5>
図18は、本実施の形態5によるソフトウェア解析装置32の構成の一例を示すブロック図である。
図18に示すように、ソフトウェア解析装置32は、実行履歴指定部33および表示情報算出部34を備えることを特徴としている。その他の基本的な構成および動作は、実施の形態2と同様であるため、ここでは詳細な説明を省略する。
実行履歴指定部33は、取得部5が取得した複数の実行履歴12のうち、解析で使用する2つの実行履歴を指定する。具体的には、実行履歴指定部33は、ユーザが選択した2つの実行履歴を指定する。
図19は、実行履歴の指定の一例を示す図である。ユーザは、図19に示す実行履歴の選択画面を参照し、2つの実行履歴を選択する。図19の例では、第1実行履歴として実行履歴Aが選択され、第2実行履歴として実行履歴Bが選択されている。この場合、実行履歴指定部33は、実行履歴Aおよび実行履歴Bを指定する。なお、図19における「Func_B」は、構造要素指定部7が指定した関数が「Func_B」であることを示している。
表示情報算出部34は、実行履歴指定部33が指定した複数の実行履歴における表示情報を算出する。具体的には、表示情報算出部34は、第1実行履歴における各関数および各依存関係のそれぞれの重みと、第2実行履歴における各関数および各依存関係のそれぞれの重みとの差分を示す差分情報を含む表示情報を算出する。
例えば、実行履歴指定部33が実行履歴A15および実行履歴B16を指定した場合、表示情報算出部34は、解析情報9に含まれる関数テーブル17における実行回数Aが0であり、かつ実行回数Bが1以上である関数の重みを「1」とし、それ以外の関数の重みを「0」とする。すなわち、「Func_E」の重みは「1」であり、それ以外の関数の重みは「0」である。
依存関係テーブル18についても同様である。すなわち、依存元が「Func_B」であり依存先が「Func_E」である依存関係の重みは「1」であり、それ以外の依存関係の重みは「0」である。
図20は、表示部10が表示するグラフ35の一例である。グラフ35は、コールグラフである。なお、図20の例では、図19に示すように、構造要素指定部7が関数名として「Func_B」を指定し、実行履歴指定部33が第1実行履歴として「実行履歴A」を指定し、第2実行履歴として「実行履歴B」を指定した場合を示している。
図20において、例えば、「Func_E(1)」は、実行回数Aが0であり、かつ実行回数Bが1以上であることを示している。また、例えば、「Func_B」と「Func_E」との間の「(1)」は、依存元が「Func_B」であり依存先が「Func_E」である依存関係が、実行回数Aが0であり、かつ実行回数Bが1以上であることを示している。なお、図20における関数のノードの色の濃さ、および依存関係を示す矢印線の太さは、実施の形態2と同様の方法で決定すればよい。
以上のことから、本実施の形態5によれば、異なる処理を実行した複数の実行履歴の差分を表示することができる。例えば、多くの実行履歴は正しく処理を実行し、一部の実行履歴のみが通常とは異なる処理を実行していたとする。この場合、通常とは異なる処理について、正常な処理との差分を表示することによって、どの関数から通常とは異なる処理が開始されたのか、そして当該通常とは異なる処理がどのような経路を通ったのかを表示することができる。
<実施の形態6>
図21は、本実施の形態6によるソフトウェア解析装置36の構成の一例を示すブロック図である。
図21に示すように、ソフトウェア解析装置36は、表示情報算出部37を備えることを特徴としている。その他の基本的な構成および動作は、実施の形態5と同様であるため、ここでは詳細な説明を省略する。
表示情報算出部37は、実施の形態5で説明した表示情報算出部34と同様、解析情報9に含まれる関数テーブル17における実行回数Aが0であり、かつ実行回数Bが1以上である関数の重みを「1」とし、それ以外の関数の重みを「0」とする。このとき、表示情報算出部37は、重みが「1」である関数とその重みを表示情報に含める。依存関係テーブル18についても同様である。
例えば、実施の形態5と同様、「Func_E」の重みは「1」であり、それ以外の関数の重みは「0」である。この場合、表示情報算出部37は、「Func_E」とその重みを含む表示情報を表示部10に提供する。依存関係テーブル18についても同様である。
図22は、表示部10が表示するグラフ38の一例である。グラフ38は、コールグラフである。なお、図22の例では、図19に示すように、構造要素指定部7が関数名として「Func_B」を指定し、実行履歴指定部33が第1実行履歴として「実行履歴A」を指定し、第2実行履歴として「実行履歴B」を指定した場合を示している。
図22において、「Func_E(1)」が強調して表示されている。また、「Func_B」と「Func_E」との依存関係を示す矢印線が太線となっている。
以上のことから、本実施の形態6によれば、異なる実行履歴の差分となる関数とその重みを表示することによって、差分となる関数の影響範囲をグラフで表示することができる。
<ハードウェア構成>
図23は、本実施の形態1によるソフトウェア解析装置1のハードウェア構成の一例を示す図である。なお、以下では、実施の形態1によるソフトウェア解析装置1を一例として説明するが、実施の形態2によるソフトウェア解析装置20、実施の形態3によるソフトウェア解析装置25、実施の形態4によるソフトウェア解析装置29、実施の形態5によるソフトウェア解析装置32、および実施の形態6によるソフトウェア解析装置36についても同様である。
ソフトウェア解析装置1における記憶部3は記憶装置40であり、出力部4はディスプレイ41である。ソフトウェア解析装置1における取得部5、解析部6、構造要素指定部7、および表示情報算出部8の各機能は、処理回路39により実現される。すなわち、ソフトウェア解析装置1は、構造情報および複数の実行履歴を取得し、複数の構造要素の重みと依存関係の重みとを解析し、構造要素を指定し、表示情報を算出するための処理回路39を備える。処理回路39は、専用のハードウェアであってもよく、メモリに格納されるプログラムを実行するプロセッサ(CPU(Central Processing Unit)、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、DSP(Digital Signal Processor)ともいう)であってもよい。
処理回路39が専用のハードウェアである場合、処理回路39は、例えば、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)、またはこれらを組み合わせたものが該当する。取得部5、解析部6、構造要素指定部7、および表示情報算出部8の各機能をそれぞれ処理回路39で実現してもよく、各機能をまとめて1つの処理回路39で実現してもよい。
処理回路39が図24に示すプロセッサ42である場合、取得部5、解析部6、構造要素指定部7、および表示情報算出部8の各機能は、ソフトウェア、ファームウェア、またはソフトウェアとファームウェアとの組み合わせにより実現される。ソフトウェアまたはファームウェアは、プログラムとして記述され、メモリ43に格納される。プロセッサ42は、メモリ43に記録されたプログラムを読み出して実行することにより、各機能を実現する。すなわち、ソフトウェア解析装置1は、構造情報および複数の実行履歴を取得するステップ、複数の構造要素の重みと依存関係の重みとを解析するステップ、構造要素を指定するステップ、表示情報を算出するステップが結果的に実行されることになるプログラムを格納するためのメモリ43を備える。また、これらのプログラムは、取得部5、解析部6、構造要素指定部7、および表示情報算出部8の手順または方法をコンピュータに実行させるものであるともいえる。ここで、メモリとは、例えば、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ、EPROM(Erasable Programmable Read Only Memory)、EEPROM(Electrically Erasable Programmable Read Only Memory)等の不揮発性または揮発性の半導体メモリ、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、DVD(Digital Versatile Disc)等、または、今後使用されるあらゆる記憶媒体であってもよい。
なお、取得部5、解析部6、構造要素指定部7、および表示情報算出部8の各機能について、一部の機能を専用のハードウェアで実現し、他の機能をソフトウェアまたはファームウェアで実現するようにしてもよい。
このように、処理回路は、ハードウェア、ソフトウェア、ファームウェア、またはこれらの組み合わせによって、上述の各機能を実現することができる。
なお、本発明は、その発明の範囲内において、各実施の形態を自由に組み合わせたり、各実施の形態を適宜、変形、省略することが可能である。
本発明は詳細に説明されたが、上記した説明は、すべての態様において、例示であって、この発明がそれに限定されるものではない。例示されていない無数の変形例が、この発明の範囲から外れることなく想定され得るものと解される。
1 ソフトウェア解析装置、2 制御部、3 記憶部、4 出力部、5 取得部、6 解析部、7 構造要素指定部、8 表示情報算出部、9 解析情報、10 表示部、11 構造情報、12 実行履歴、13 関数一覧、14 依存関係一覧、15 実行履歴A、16 実行履歴B、17 関数テーブル、18 依存関係テーブル、19 グラフ、20 ソフトウェア解析装置、21 実行履歴指定部、22 表示情報算出部、23,24 グラフ、25 ソフトウェア解析装置、26 実行履歴指定部、27 表示情報算出部、28 グラフ、29 ソフトウェア解析装置、30 表示情報算出部、31 グラフ、32 ソフトウェア解析装置、33 実行履歴指定部、34 表示情報算出部、35 グラフ、36 ソフトウェア解析装置、37 表示情報算出部、38 グラフ、39 処理回路、40 ディスプレイ、41 プロセッサ、42 メモリ。

Claims (6)

  1. ソフトウェアの構造情報と、前記ソフトウェアの複数の実行履歴とを取得する取得部と、
    前記取得部が取得した前記構造情報および前記複数の実行履歴に基づいて、前記構造情報に含まれる複数の構造要素の重みと、各前記構造要素の依存関係の重みとを解析する解析部と、
    前記構造情報に含まれる各前記構造要素のうち、一の前記構造要素を指定構造要素として指定する構造要素指定部と、
    前記指定構造要素と依存関係がある構造要素である依存構造要素および当該依存構造要素の重みと、前記指定構造要素と前記依存構造要素との対応関係および当該対応関係の重みとを含む表示情報を算出する表示情報算出部と、
    前記表示情報算出部が算出した前記表示情報を表示する表示部と、
    を備える、ソフトウェア解析装置。
  2. 前記取得部が取得した前記複数の実行履歴のうち、一の前記実行履歴を指定実行履歴として指定する実行履歴指定部をさらに備え、
    前記表示情報算出部は、前記実行履歴指定部が指定した一の前記指定実行履歴における前記表示情報を算出することを特徴とする、請求項1に記載のソフトウェア解析装置。
  3. 前記取得部が取得した前記複数の実行履歴のうち、複数の前記実行履歴を指定実行履歴として指定する実行履歴指定部をさらに備え、
    前記表示情報算出部は、前記実行履歴指定部が指定した各前記指定実行履歴における前記指定構造要素および前記依存構造要素のそれぞれの重みの合計と、前記指定構造要素および前記依存構造要素の前記依存関係の重みの合計とを含む前記表示情報を算出し、
    前記表示部は、各前記重みの合計に応じて前記表示情報を表示することを特徴とする、請求項1に記載のソフトウェア解析装置。
  4. 前記取得部が取得した前記複数の実行履歴のうち、複数の前記実行履歴を指定実行履歴として指定する実行履歴指定部をさらに備え、
    前記表示情報算出部は、前記実行履歴指定部が指定した各前記指定実行履歴の全てで実行された前記指定構造要素、前記依存構造要素、および前記依存関係のそれぞれの重みを共通情報として前記表示情報に含め、
    前記表示部は、前記共通情報を強調して表示することを特徴とする、請求項1に記載のソフトウェア解析装置。
  5. 前記取得部が取得した前記複数の実行履歴のうち、第1実行履歴および第2実行履歴を指定する実行履歴指定部をさらに備え、
    前記表示情報算出部は、前記第1実行履歴における前記指定構造要素、前記依存構造要素、および前記依存関係のそれぞれの重みと、前記第2実行履歴における前記指定構造要素、前記依存構造要素、および前記依存関係のそれぞれの重みとの差分を示す差分情報を前記表示情報に含め、
    前記表示部は、前記差分情報を強調して表示することを特徴とする、請求項1に記載のソフトウェア解析装置。
  6. 前記表示部は、前記差分を有する前記指定構造要素および前記依存構造要素のうちの少なくとも一方とその重みとを強調して表示することを特徴とする、請求項に記載のソフトウェア解析装置。
JP2020512064A 2019-10-21 2019-10-21 ソフトウェア解析装置 Active JP6742556B1 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2019/041331 WO2021079408A1 (ja) 2019-10-21 2019-10-21 ソフトウェア解析装置

Publications (2)

Publication Number Publication Date
JP6742556B1 true JP6742556B1 (ja) 2020-08-19
JPWO2021079408A1 JPWO2021079408A1 (ja) 2021-04-29

Family

ID=72047995

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020512064A Active JP6742556B1 (ja) 2019-10-21 2019-10-21 ソフトウェア解析装置

Country Status (3)

Country Link
US (1) US11880681B2 (ja)
JP (1) JP6742556B1 (ja)
WO (1) WO2021079408A1 (ja)

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001290639A (ja) 2000-04-07 2001-10-19 Hitachi Ltd ソフトウェア再構成方式
JP2009086791A (ja) * 2007-09-28 2009-04-23 Hitachi Ltd ソフトウェア製品系列分析装置
JP5156491B2 (ja) * 2008-06-09 2013-03-06 株式会社プロフィールド 情報処理装置、情報処理方法、およびプログラム
JP5598375B2 (ja) * 2011-02-22 2014-10-01 富士通株式会社 プログラムに含まれるコードをメモリ領域に割り当てる割当方法及びその方法を実行するメモリシステム
JP5687122B2 (ja) * 2011-04-26 2015-03-18 三菱電機株式会社 ソフトウェア評価装置、ソフトウェア評価方法およびシステム評価装置
JP6310527B1 (ja) 2016-10-27 2018-04-11 株式会社Dtsインサイト オブジェクト分析装置、オブジェクト分析方法、及びプログラム
JP6906677B2 (ja) * 2018-02-15 2021-07-21 三菱電機株式会社 ソフトウェア可視化装置、ソフトウェア可視化方法およびソフトウェア可視化プログラム

Also Published As

Publication number Publication date
US11880681B2 (en) 2024-01-23
JPWO2021079408A1 (ja) 2021-04-29
US20220276864A1 (en) 2022-09-01
WO2021079408A1 (ja) 2021-04-29

Similar Documents

Publication Publication Date Title
JP6320475B2 (ja) 誤検出の効率的な排除に基づく静的解析
JP5933762B2 (ja) コード網羅率決定方法およびシステム
US8589884B2 (en) Method and system for identifying regression test cases for a software
CN111104335B (zh) 一种基于多层次分析的c语言缺陷检测方法及装置
KR100921514B1 (ko) 성능 예측 기능을 제공하는 소프트웨어 개발 장치 및 방법
US20140365990A1 (en) Software evaluation device and method
JP6253521B2 (ja) プログラム可視化装置、プログラム可視化方法、及びプログラム可視化プログラム
JP2008204405A (ja) ソフトウェアのリグレッションテストシステム、リグレッションテストプログラムおよびリグレッションテスト方法
US10872025B1 (en) Automatic performance testing and performance regression analysis in a continuous integration environment
JP6742556B1 (ja) ソフトウェア解析装置
WO2019142266A1 (ja) テストケース生成装置、テストケース生成方法およびテストケース生成プログラム
US20100250225A1 (en) Date and time simulation for time-sensitive applications
US20080052587A1 (en) Unit Test Extender
JP2011258058A (ja) 性能予測装置及びコンピュータプログラム及び性能予測方法
JP7046217B2 (ja) ソフトウェア解析装置、ソフトウェア解析方法およびソフトウェア解析プログラム
US11593249B2 (en) Scalable points-to analysis via multiple slicing
CN110309054B (zh) 代码有效性测试方法、计算设备及存储介质
JP2014059805A (ja) モデルベースの制御装置用のテストケース生成装置およびテストケース生成方法
Groenda Improving performance predictions by accounting for the accuracy of composed performance models
WO2012111167A1 (ja) トレース情報取得方法、コンピュータシステム及びプログラム
JPH06119205A (ja) ソフトウェアの品質分析装置およびその高品質化支援装置
JP4536576B2 (ja) ソフトウェアカバレッジ測定装置及び方法
JP2017142733A (ja) ドライバ生成プログラム、装置、及び方法
JP2005090959A (ja) 制御プログラムおよび測定システム
KR20230006998A (ko) 소프트웨어의 기능점수를 산출하는 방법 및 장치

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200227

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20200227

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20200316

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200324

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200427

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200728

R150 Certificate of patent or registration of utility model

Ref document number: 6742556

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250