JP6548819B2 - 依存関係抽出装置および依存関係抽出プログラム - Google Patents

依存関係抽出装置および依存関係抽出プログラム Download PDF

Info

Publication number
JP6548819B2
JP6548819B2 JP2018514004A JP2018514004A JP6548819B2 JP 6548819 B2 JP6548819 B2 JP 6548819B2 JP 2018514004 A JP2018514004 A JP 2018514004A JP 2018514004 A JP2018514004 A JP 2018514004A JP 6548819 B2 JP6548819 B2 JP 6548819B2
Authority
JP
Japan
Prior art keywords
direct
dependency
indirect
relationship
source
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.)
Expired - Fee Related
Application number
JP2018514004A
Other languages
English (en)
Other versions
JPWO2017187537A1 (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
Publication of JPWO2017187537A1 publication Critical patent/JPWO2017187537A1/ja
Application granted granted Critical
Publication of JP6548819B2 publication Critical patent/JP6548819B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • 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/3624Software debugging by performing operations on the source code, e.g. via a compiler
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/10Requirements analysis; Specification techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Description

本発明は、ソフトウェアに含まれる要素間の間接的な依存関係を抽出するための技術に関するものである。
ソフトウェアを変更する際、変更箇所とは別の箇所に変更の影響が及ぶ場合がある。変更の影響が及ぶ箇所の抽出漏れは、障害の作り込みの要因となりうる。そのため、変更の影響が及ぶ箇所を漏れなく抽出する必要がある。
しかし、ソフトウェアの複雑化および大規模化により、変更の影響が及ぶ箇所を目視で漏れなく抽出することは困難である。
特許文献1、特許文献2および特許文献3には、変更の影響が及ぶ直接的な依存関係を抽出する技術が開示されている。また、直接的な依存関係を順に辿って間接的な依存関係を抽出する技術も開示されている。
これら特許文献に開示された技術では、直接的な依存関係を順に辿ることで到達可能な間接的な依存関係を抽出することはできるが、直接的な依存関係を順に辿っても到達しない間接的な依存関係を抽出することはできない。
例えば、部品Aから部品Bへ依存関係があり、かつ、部品Bから部品Cへの依存関係がある場合、部品Aから部品Cへの間接的な依存関係を抽出することは可能である。しかし、部品Aから部品Bへ依存関係があり、かつ、部品Cから部品Bへの依存関係がある場合、部品Aから部品Cへの間接的な依存関係を抽出することはできない。
特開2015−069332号公報 特開2013−069086号公報 特開2012−230538号公報
本発明は、直接的な依存関係を順に辿っても到達しない間接的な依存関係を抽出できるようにすることを目的とする。
本発明の依存関係抽出装置は、
ソフトウェアに含まれる要素のうち前記ソフトウェアに含まれる他の要素を使用する要素である直接依存元と、前記ソフトウェアに含まれる要素のうち直接依存元に使用される要素である直接依存先と、直接依存元が直接依存先を使用する方法を示す直接依存種類との組を含んだ直接関係リストを記憶する記憶部と、
前記ソフトウェアに含まれる要素のうち前記ソフトウェアに含まれる他の要素から影響を受ける要素である間接依存元と、前記ソフトウェアに含まれる要素のうち間接依存元に影響を与える要素である間接依存先とのルールである間接関係ルールと、前記直接関係リストとを用いて、前記間接依存元と前記間接依存先との組を抽出する間接関係抽出部とを備える。
本発明によれば、間接関係ルールに従って間接的な依存関係を有する間接依存元と間接依存先との組を抽出することができる。
したがって、直接的な依存関係を順に辿っても到達しない間接的な依存関係に対応する間接関係ルールを用意すれば、直接的な依存関係を順に辿っても到達しない間接的な依存関係を有する間接依存元と間接依存先との組を抽出することが可能となる。
実施の形態1における依存関係抽出装置100の構成図。 実施の形態1における依存関係抽出方法のフローチャート。 実施の形態1におけるソースコード210を示す図。 実施の形態1における直接関係リスト220を示す図。 実施の形態1における間接関係ルールリスト230を示す図。 実施の形態1における間接関係リスト240を示す図。 実施の形態1における間接関係抽出処理(S210)のフローチャート。 実施の形態1における直接関係情報と到達不可の間接関係ルールとの関係図。 実施の形態1における直接関係情報と到達可能な間接関係ルールとの関係図。 実施の形態2における依存関係抽出方法のフローチャート。 実施の形態2におけるシステム毎のソースコード210を示す図。 実施の形態2におけるシステム毎の直接関係リスト220を示す図。 実施の形態2における間接関係ルールリスト250を示す図。 実施の形態2における間接関係リスト240を示す図。 実施の形態2における間接関係抽出処理(S220)のフローチャート。 実施の形態3における依存関係抽出装置100の構成図。 実施の形態3における依存関係抽出方法のフローチャート。 実施の形態3における事象データ260を示す図。 実施の形態3における間接関係リスト240を示す図。 実施の形態3における無効関係抽出処理(S230)のフローチャート。 実施の形態における依存関係抽出装置100のハードウェア構成図。
実施の形態および図面において、同じ要素または互いに相当する要素には同じ符号を付している。同じ符号が付された要素の説明は適宜に省略または簡略する。
実施の形態1.
間接的な依存関係を抽出する依存関係抽出装置100について、図1から図9に基づいて説明する。
***構成の説明***
図1に基づいて、依存関係抽出装置100の構成を説明する。
依存関係抽出装置100は、プロセッサ901とメモリ902と補助記憶装置903といったハードウェアを備えるコンピュータである。これらのハードウェアは、信号線を介して互いに接続されている。
プロセッサ901は、プロセッシングを行うIC(Integrated Circuit)であり、他のハードウェアを制御する。具体的には、プロセッサ901は、CPU、DSPまたはGPUである。CPUはCentral Processing Unitの略称であり、DSPはDigital Signal Processorの略称であり、GPUはGraphics Processing Unitの略称である。
メモリ902は揮発性の記憶装置である。メモリ902は、主記憶装置またはメインメモリとも呼ばれる。具体的には、メモリ902はRAM(Random Access Memory)である。
補助記憶装置903は不揮発性の記憶装置である。具体的には、補助記憶装置903は、ROM、HDDまたはフラッシュメモリである。ROMはRead Only Memoryの略称であり、HDDはHard Disk Driveの略称である。
プロセッサ901とメモリ902と補助記憶装置903とをまとめたハードウェアを「プロセッシングサーキットリ」という。
依存関係抽出装置100は、直接関係抽出部110と間接関係抽出部120といった「部」を機能構成の要素として備える。「部」の機能はソフトウェアで実現される。「部」の機能については後述する。
補助記憶装置903には、「部」の機能を実現するプログラムが記憶されている。「部」の機能を実現するプログラムは、メモリ902にロードされて、プロセッサ901によって実行される。
さらに、補助記憶装置903にはOS(Operating System)が記憶されている。OSの少なくとも一部は、メモリ902にロードされて、プロセッサ901によって実行される。
つまり、プロセッサ901は、OSを実行しながら、「部」の機能を実現するプログラムを実行する。
「部」の機能を実現するプログラムを実行して得られるデータは、メモリ902、補助記憶装置903、プロセッサ901内のレジスタまたはプロセッサ901内のキャッシュメモリといった記憶装置に記憶される。
メモリ902は、依存関係抽出装置100で使用、生成、入出力または送受信されるデータが記憶される記憶部191として機能する。但し、他の記憶装置が記憶部191として機能してもよい。
依存関係抽出装置100は、プロセッサ901を代替する複数のプロセッサを備えてもよい。複数のプロセッサは、「部」の機能を実現するプログラムの実行を分担する。
「部」の機能を実現するプログラムは、磁気ディスク、光ディスクまたはフラッシュメモリ等の不揮発性の記憶媒体にコンピュータ読み取り可能に記憶することができる。不揮発性の記憶媒体は、一時的でない有形の媒体である。
「部」は「処理」または「工程」に読み替えてもよい。「部」の機能はファームウェアで実現してもよい。
***動作の説明***
依存関係抽出装置100の動作は依存関係抽出方法に相当する。また、依存関係抽出方法の手順は依存関係抽出プログラムの手順に相当する。
図2に基づいて、依存関係抽出方法を説明する。
ステップS110は直接関係抽出処理である。
ステップS110において、直接関係抽出部110は、ソースコード210から直接関係を抽出し、抽出された直接関係を示す直接関係リスト220を生成する。
ソースコード210は、記憶部191に予め記憶される。記憶部191は、生成された直接関係リスト220を記憶する。
ソースコード210は、ソフトウェアの処理が記載されたファイルであり、ソースプログラムまたはソースファイルともいう。ソースコード210には、ソフトウェアを構成する要素を使用するための記載が含まれる。ソフトウェアを構成する具体的な要素は、ソースコード、関数、変数および定数などである。
直接関係は、ソフトウェアを構成する要素間の直接的な依存関係を意味する。
直接関係リスト220は、直接関係情報のリストである。直接関係情報は、直接関係を示す情報である。具体的な直接関係情報は、直接依存元と直接依存先と直接依存種類と直接依存頻度との組である。
直接依存元は、ソフトウェアに含まれる要素のうちソフトウェアに含まれる他の要素を使用する要素である。
直接依存先は、ソフトウェアに含まれる要素のうち直接依存元に使用される要素である。
直接依存種類は、直接依存元が直接依存先を使用する方法の種類である。
直接依存頻度は、直接依存元が直接依存先を使用する回数に対応する値である。
具体的には、直接関係抽出部110は、ソースコード210に対して構文解析および字句解析などの解析を行い、解析結果に基づいて直接関係を抽出する。そして、直接関係抽出部110は、抽出された直接関係を示す直接関係リスト220を生成する。
直接関係を抽出する方法は従来技術であるため、直接関係を抽出する方法の詳細については説明を省略する。
図3に、具体的なソースコード210を示す。
図3の(1)は、「file1.c」というファイル名を持つソースコード210である。「file1.c」のソースコード210には、ソースコード「file2.h」、関数「func1()」、「func2()」、「func3()」、「func4()」、変数「variable1」および定数「MAX」などの要素を使用するための記載が含まれている。
図3の(2)は、「file2.h」というファイル名を持つソースコード210である。「file2.h」のソースコード210には、定数「MAX」という要素を使用するための記載が含まれている。
図4に、図3のソースコード210を用いて生成される直接関係リスト220を示す。
直接関係リスト220は、6つの直接関係情報を含んでいる。直接関係情報は、直接依存元と直接依存先と直接依存種類と直接依存頻度との組である。
1つ目の直接関係情報は、ソースコード「file1.c」がソースコード「file2.h」をインクルードする、という直接関係を示している。直接依存頻度は1である。
2つ目の直接関係情報は、ソースコード「file1.c」がソースコード「file2.h」の定数「MAX」をマクロで読み込む、という直接関係を示している。直接依存頻度は2である。
3つ目の直接関係情報は、ソースコード「file1.c」の関数「func1()」がソースコード「file1.c」の変数「variable1」に対して書込みを行う、という直接関係を示している。直接依存頻度は1である。
4つ目の直接関係情報は、ソースコード「file1.c」の関数「func2()」がソースコード「file1.c」の変数「variable1」を参照する、という直接関係を示している。直接依存頻度は1である。
5つ目の直接関係情報は、ソースコード「file1.c」の関数「func2()」がソースコード「file1.c」の関数「func3()」を呼び出す、という直接関係を示している。直接依存頻度は3である。
6つ目の直接関係情報は、ソースコード「file1.c」の関数「func3()」がソースコード「file1.c」の関数「func4()」を呼び出す、という直接関係を示している。直接依存頻度は1である。
図2に戻り、ステップS120を説明する。
ステップS120は間接関係抽出処理である。
ステップS120において、間接関係抽出部120は、直接関係リスト220を用いて間接関係を抽出し、抽出された間接関係を示す間接関係リスト240を生成する。記憶部191は、生成された間接関係リスト240を記憶する。
間接関係は、ソフトウェアを構成する要素間の間接的な依存関係を意味する。
間接関係リスト240は、間接関係情報のリストである。間接関係情報は、間接関係を示す情報である。具体的な間接関係情報は、間接依存元と間接依存先と間接依存種類と間接依存頻度との組である。
間接依存元は、ソフトウェアに含まれる要素のうちソフトウェアに含まれる他の要素から影響を受ける要素である。但し、直接依存元は除く。
間接依存先は、ソフトウェアに含まれる要素のうち間接依存元に影響を与える要素である。但し、直接依存先は除く。
間接依存種類は、間接依存先が間接依存元に影響を与える方法の種類である。
間接依存頻度は、間接依存先が間接依存元に影響を与える回数に対応する値である。
具体的には、間接関係抽出部120は、直接関係リスト220と間接関係ルールリスト230とを用いて、間接関係を抽出する。そして、間接関係抽出部120は、抽出された間接関係を示す間接関係リスト240を生成する。間接関係ルールリスト230は、記憶部191に予め記憶される。
間接関係ルールリスト230は、間接関係ルールのリストである。
間接関係ルールは、間接関係がある要素間におけるルールである。
間接関係ルールは、複数の直接依存種類と、要素関係と、依存元要素と、依存先要素と、間接依存種類とを含む。
要素関係は、複数の要素に成り立つ関係である。
依存元要素は、間接依存元となる要素である。
依存先要素は、間接依存先となる要素である。
具体的には、間接関係抽出部120は、以下のように間接依存元と間接依存先とを抽出する。
間接関係抽出部120は、間接関係ルールに含まれる複数の直接依存種類と要素関係とに対応する複数の直接関係情報を直接関係リスト220から抽出する。
そして、間接関係抽出部120は、抽出された複数の直接関係情報に含まれる複数の直接依存元と複数の直接依存先との中から、間接関係ルールに含まれる依存元要素に対応する要素を間接依存元として抽出する。
また、間接関係抽出部120は、抽出された複数の直接関係情報に含まれる複数の直接依存元と複数の直接依存先との中から、間接関係ルールに含まれる依存先要素に対応する要素を間接依存先として抽出する。
直接関係リスト220から抽出される複数の直接関係情報は、以下の(1)から(3)の全ての条件を満たす。
(1)複数の直接関係情報は、間接関係ルール内の複数の直接依存種類に含まれる直接依存種類の数と同じ数の直接関係情報から成る。
(2)複数の直接関係情報は、複数の直接依存元と複数の直接依存先と間接関係ルール内の複数の直接依存種類とを含む。
(3)複数の直接関係条件は、複数の直接依存元と複数の直接依存先とのうち間接関係ルール内の要素関係に対応する複数の要素に要素関係がある。
図5に、具体的な間接関係ルールリスト230を示す。
間接関係ルールリスト230は、2つの間接関係ルールを含んでいる。
それぞれの間接関係ルールは、間接関係条件と間接関係とを含んでいる。
間接関係条件は、複数の直接依存種類と要素関係とを含んでいる。
間接関係は、依存元要素と依存先要素と間接依存種類とを含んでいる。
「No.1」の間接関係ルールを説明する。
第1直接依存種類は、関数αから変数γへの書込みである。関数αは第1直接依存種類に対応する直接依存元であり、変数γは第1直接依存種類に対応する直接依存先である。
第2直接依存種類は、関数βから変数ωの参照である。関数βは第2直接依存種類に対応する直接依存元であり、変数ωは第2直接依存種類に対応する直接依存先である。
要素関係は、第1直接依存種類に対応する直接依存先と第2直接依存種類に対応する直接依存先との関係である。具体的には、要素関係は、変数γと変数ωとの一致である。
依存元要素は、第2直接依存種類に対応する直接依存元である。具体的には、依存元要素は、関数βである。
依存先要素は、第1直接依存種類に対応する直接依存元である。具体的には、依存先要素は、関数αである。
間接依存種類は、変数媒介である。変数媒介は、変数を媒介とする間接的な依存関係を意味する。
「No.2」の間接関係ルールを説明する。
第1直接依存種類は、関数αから関数γの呼出しである。関数αは第1直接依存種類に対応する直接依存元であり、関数γは第1直接依存種類に対応する直接依存先である。
第2直接依存種類は、関数βから関数ωの呼出しである。関数βは第2直接依存種類に対応する直接依存元であり、関数ωは第2直接依存種類に対応する直接依存先である。
要素関係は、第1直接依存種類に対応する直接依存先と第2直接依存種類に対応する直接依存元との関係である。具体的には、要素関係は、関数γと関数βとの一致である。
依存元要素は、第1直接依存種類に対応する直接依存元である。具体的には、依存元要素は、関数αである。
依存先要素は、第2直接依存種類に対応する直接依存先である。具体的には、依存先要素は、関数ωである。
間接依存種類は、関数媒介である。関数媒介は、関数を媒介とする間接的な依存関係を意味する。
図6に、図5の間接関係ルールリスト230を用いて生成される間接関係リスト240を示す。
間接関係リスト240は、2つの間接関係情報を含んでいる。
それぞれの間接関係情報は、間接依存元と間接依存先と間接依存種類と間接依存頻度との組である。
1つ目の間接関係情報は、ソースコード「file1.c」の関数「func2()」が、変数を媒介にして、ソースコード「file1.c」の関数「func1()」から影響を受ける、という間接関係を示している。間接依存頻度は1である。
2つ目の間接関係情報は、ソースコード「file1.c」の関数「func2()」が、関数を媒介にして、ソースコード「file1.c」の関数「func4()」から影響を受ける、という間接関係を示している。間接依存頻度は3である。
図7に基づいて、間接関係抽出処理(S120)の手順を説明する。
ステップS121において、間接関係抽出部120は、間接関係ルールリスト230から、未選択の間接関係ルールを1つ選択する。
ステップS122からステップS127は、ステップS121で選択された間接関係ルールを対象に実行される。
ステップS122において、間接関係抽出部120は、直接関係リスト220から、対応情報群を抽出する。
対応情報群は、間接関係ルール内の複数の直接依存種類に対応する複数の直接関係情報である。つまり、対応情報群は、間接関係ルール内の直接依存種類と同じ数の直接関係情報から成る。そして、対応情報群には、間接関係ルール内の直接依存種類毎に、間接関係ルール内の直接依存種類と同じ直接依存種類を含んだ直接関係情報が1つ含まれる。
対応情報群が複数ある場合、間接関係抽出部120は複数の対応情報群を抽出する。
具体的には、間接関係抽出部120は、対応情報群を以下のように抽出する。
間接関係抽出部120は、間接関係ルール内の直接依存種類毎に、直接依存種類に対応する直接関係情報を直接関係リスト220から抽出する。直接依存種類に対応する直接関係情報とは、その直接依存種類を含んだ直接関係情報である。
そして、間接関係抽出部120は、間接関係ルール内の直接依存種類毎に、抽出された直接関係情報から直接関係情報を1つ選択する。選択された直接関係情報の組が対応情報群を成す。
図4および図5に基づいて、ステップS122を具体的に説明する。
図5に含まれる「No.1」の間接関係ルールにおいて、第1直接依存種類は「変数への書込み」である。したがって、間接関係抽出部120は、図4の直接関係リスト220から、3つ目の直接関係情報を第1直接関係情報として抽出する。
図5に含まれる「No.1」の間接関係ルールにおいて、第2直接依存種類は「変数の参照」である。したがって、間接関係抽出部120は、図4の直接関係リスト220から、4つ目の直接関係情報を第2直接関係情報として抽出する。
その結果、第1直接関係情報と第2直接関係情報とが対応情報群を成す。
図7に戻り、ステップS123から説明を続ける。
ステップS123において、間接関係抽出部120は、対応情報群があるか判定する。S122で少なくとも1つの対応情報群が抽出された場合、間接関係抽出部120は、対応情報群があると判定する。
対応情報群がある場合、処理はステップS124に進む。
対応情報群がない場合、処理はステップS128に進む。
ステップS124において、間接関係抽出部120は、未選択の対応情報群を1つ選択する。
ステップS125およびステップS126は、ステップS124で選択された対応情報群を対象に実行される。
ステップS125において、間接関係抽出部120は、間接関係ルール内の要素関係に対応する複数の要素に、間接関係ルール内の要素関係があるか判定する。
具体的には、間接関係抽出部120は、間接関係ルール内の要素関係に対応する複数の要素を対応情報群から抽出する。そして、間接関係抽出部120は、間接関係ルール内の要素関係が、抽出された複数の要素にあるか判定する。
間接関係ルール内の要素関係に対応する複数の要素に、間接関係ルール内の要素関係がある場合、処理はステップS126に進む。
間接関係ルール内の要素関係に対応する複数の要素に、間接関係ルール内の要素関係がない場合、処理はステップS127に進む。
図4および図5に基づいて、ステップS125を具体的に説明する。
図5に含まれる「No.1」の間接関係ルールにおいて、第1直接依存種類に対応する第1直接関係情報は図4に含まれる3つ目の直接関係情報であり、第2直接依存種類に対応する第2直接関係情報は図4に含まれる4つ目の直接関係情報である。
「No.1」の間接関係ルールにおいて、要素関係に対応する複数の要素は変数γと変数ωとの2つの要素である。
変数γは、第1直接依存種類に対応する直接依存先である。第1直接依存種類に対応する直接依存先とは、第1直接関係情報に含まれる直接依存先である。つまり、変数γは、ソースコード「file1.c」の変数「variable1」である。
変数ωは、第2直接依存種類に対応する直接依存先である。第2直接依存種類に対応する直接依存先とは、第2直接関係情報に含まれる直接依存先である。つまり、変数ωは、ソースコード「file1.c」の変数「variable1」である。
「No.1」の間接関係ルールにおいて、要素関係は変数γと変数ωとの一致である。上記の通り、変数γと変数ωとは一致するため、要素関係が変数γと変数ωとにある。
したがって、間接関係抽出部120は、間接関係ルール内の要素関係が、抽出された複数の要素にあると判定する。
図7に戻り、ステップS126から説明を続ける。
ステップS126において、間接関係抽出部120は、間接関係情報を生成し、生成された間接関係情報を間接関係リスト240に追加する。
具体的には、間接関係抽出部120は、間接関係情報を以下のように生成する。
まず、間接関係抽出部120は、間接関係ルール内の依存元要素に対応する要素と、間接関係ルール内の依存先要素に対応する要素と、を対応情報群から抽出する。間接関係ルール内の依存元要素に対応する要素は間接依存元となり、間接関係ルール内の依存先要素に対応する要素は間接依存先となる。
また、間接関係抽出部120は、間接関係ルールから間接依存種類を抽出する。
さらに、間接関係抽出部120は、対応情報群に含まれるそれぞれの直接関係情報から直接依存頻度を抽出し、抽出された直接依存頻度を用いて間接依存頻度を算出する。
そして、間接関係抽出部120は、間接依存元と間接依存先と間接依存種類と間接依存頻度とを含んだ間接関係情報を生成する。
図4、図5および図6に基づいて、ステップS126を具体的に説明する。
図5に含まれる「No.1」の間接関係ルールにおいて、第1直接依存種類に対応する第1直接関係情報は図4に含まれる3つ目の直接関係情報であり、第2直接依存種類に対応する第2直接関係情報は図4に含まれる4つ目の直接関係情報である。
第1直接関係情報に含まれる直接依存頻度は1であり、第2直接関係情報に含まれる直接依存頻度は1であり、これらの直接依存頻度を用いて算出される間接依存頻度は1(=1×1)である。
「No.1」の間接関係ルールにおいて、依存元要素は関数βであり、依存先要素は関数αである。
関数βは、第2直接依存種類に対応する直接依存元である。第2直接依存種類に対応する直接依存元とは、第2直接関係情報に含まれる直接依存元である。つまり、変数βは、ソースコード「file1.c」の関数「func2()」である。
変数αは、第1直接依存種類に対応する直接依存元である。第1直接依存種類に対応する直接依存元とは、第1直接関係情報に含まれる直接依存元である。つまり、変数αは、ソースコード「file1.c」の関数「func1()」である。
間接関係抽出部120は、間接依存元と間接依存先と間接依存種類と間接依存頻度とを含んだ間接関係情報を生成し、生成された間接関係情報を間接関係リスト240に追加する。これにより、図6の間接関係リスト240に1つ目の間接関係情報が追加される。
図7に戻り、ステップS127から説明を続ける。
ステップS127において、間接関係抽出部120は、未選択の対応情報群があるか判定する。
未選択の対応情報群がある場合、処理はステップS124に戻る。
未選択の対応情報群がない場合、処理はステップS128に進む。
ステップS128において、間接関係抽出部120は、未選択の間接関係ルールがあるか判定する。
未選択の間接関係ルールがある場合、処理はステップS121に戻る。
未選択の間接関係ルールがない場合、間接関係抽出処理(S120)は終了する。
***実施の形態1の効果***
直接的な依存関係を順に辿っても到達しない間接的な依存関係を抽出することが可能になる。
具体的には、図8に示すような間接関係を抽出することが可能である。実線の矢印は直接関係を意味し、上下矢印はパターンマッチを意味し、一点鎖線の矢印は間接関係を意味する。
図8において、直接関係情報は、関数「func1()」から変数「variable」への書込み、および、関数「func2()」から変数「variable1」の参照である。
また、間接関係ルールは、関数αから変数γへの書込み、関数βから変数ωの参照、および、変数γと変数ωとの一致である。この間接関係ルールが成立する場合の間接関係は、関数βから関数αへの間接関係である。
直接関係情報を間接関係ルールとパターンマッチングすると、関数「func2()」から関数「func1()」への間接関係が得られる。
さらに、直接的な依存関係を順に辿ることで到達可能な間接的な依存関係を抽出することも可能である。
具体的には、図9に示すような間接関係を抽出することが可能である。実線の矢印、上下矢印および一点鎖線の矢印の意味は、図8と同じである。
図9において、直接関係情報は、関数「func2()」から関数「func3()」の呼出し、および、関数「func3()」から関数「func4()」の呼出しである。
また、間接関係ルールは、関数αから関数γの呼出し、関数βから関数ωの呼出し、および、関数γと関数βとの一致である。この間接関係ルールが成立する場合の間接関係は、関数αから関数ωへの間接関係である。
直接関係情報を間接関係ルールとパターンマッチングすると、関数「func2()」から関数「func4()」への間接関係が得られる。
***他の構成***
間接関係ルールは、図5に示したルールに限られるものではない。
間接関係ルール内の直接依存種類の数は、3つ以上であってもよい。
間接関係ルール内の要素関係は、3つ以上の要素の関係であってもよい。
間接関係ルール内の依存元要素と依存先要素とのそれぞれは、複数の要素であってもよい。
間接関係ルールリスト230に含まれる間接関係ルールの種類は、到達不可の間接関係ルールと到達可能な間接関係ルールとのいずれか一方であってもよい。到達不可の間接関係ルールとは、直接的な依存関係を順に辿っても到達しない間接的な依存関係を対象とする間接関係ルールであり、到達可能な間接関係ルールとは、直接的な依存関係を順に辿ることで到達可能な間接的な依存関係を対象とする間接関係ルールである。
実施の形態2.
システム間の間接的な依存関係を抽出する形態について、主に実施の形態1と異なる点を、図10から図15に基づいて説明する。
***構成の説明***
依存関係抽出装置100の構成は、実施の形態1と同じである。
但し、記憶部191には、互いに通信する複数のシステムに対応する複数のソースコード210が予め記憶される。
***動作の説明***
図10に基づいて、依存関係抽出方法を説明する。
ステップS210は直接関係抽出処理である。
ステップS210において、直接関係抽出部110は、複数のソースコード210を用いて、複数のシステムに対応する複数の直接関係リスト220を生成する。記憶部191は、生成された複数の直接関係リスト220を記憶する。
具体的には、直接関係抽出部110は、システム毎に、システムに対応するソースコード210を用いて、システムに対応する直接関係リスト220を生成する。これにより、システム毎の直接関係リスト220が生成される。
それぞれの直接関係リスト220を生成する方法は、実施の形態1と同じである。
それぞれの直接関係リスト220の構成は、実施の形態1と同じである。
図11に、具体的なソースコード210を示す。
図11の(1)は、システム1のソースコード210である。システム1のソースコード210には、関数「func5()」および関数「send()」といった要素を使用するための記載が含まれている。関数「send()」は、データを送信するための送信関数である。
図11の(2)は、システム2のソースコード210である。システム2のソースコード210には、関数「func6()」、関数「func7()」、関数「recv()」および関数「send()」といった要素を使用するための記載が含まれている。関数「recv()」は、データを受信するための受信関数である。
図11の(3)は、システム3のソースコード210である。システム3のソースコード210には、関数「func8()」および関数「recv()」といった要素を使用するための記載が含まれている。
図12に、図11のソースコード210を用いて生成される直接関係リスト220を示す。
図12の(1)は、システム1に対応する直接関係リスト220である。システム1に対応する直接関係リスト220は、1つの直接関係情報を含んでいる。その直接関係情報は、ソースコード「file3.c」の関数「func5()」が送信関数「send()」を呼び出す、という直接関係を示している。直接依存頻度は1である。
図12の(2)は、システム2に対応する直接関係リスト220である。システム2に対応する直接関係リスト220は、2つの直接関係情報を含んでいる。1つ目の直接関係情報は、ソースコード「file4.c」の関数「func6()」が受信関数「recv()」を呼び出す、という直接関係を示している。直接依存頻度は1である。2つ目の直接関係情報は、ソースコード「file4.c」の関数「func7()」が送信関数「send()」を呼び出す、という直接関係を示している。直接依存頻度は1である。 図12の(3)は、システム3に対応する直接関係リスト220である。システム3に対応する直接関係リスト220は、1つの直接関係情報を含んでいる。その直接関係情報は、ソースコード「file5.c」の関数「func8()」が受信関数「recv()」を呼び出す、という直接関係を示している。直接依存頻度は1である。
ステップS220は間接関係抽出処理である。
ステップS220において、間接関係抽出部120は、複数の直接関係リスト220と間接関係ルールリスト250とを用いてシステム間の間接関係を抽出し、抽出された間接関係を示す間接関係リスト240を生成する。記憶部191は、生成された間接関係リスト240を記憶する。間接関係ルールリスト250は、記憶部191に予め記憶される。
間接関係ルールリスト250は、実施の形態1で説明した間接関係ルールリスト230と同じく、間接関係ルールのリストである。
間接関係ルールは、複数の直接依存種類と、システム関係と、依存元要素と、間接依存先となる依存先要素とを含む。
システム関係は、システム間に成り立つ関係である。
具体的には、間接関係抽出部120は、以下のように間接依存元と間接依存先とを抽出する。
間接関係抽出部120は、間接関係ルールに含まれる複数の直接依存種類とシステム関係とに対応する複数の直接関係情報を複数の直接関係リスト220から抽出する。
そして、間接関係抽出部120は、抽出された複数の直接関係情報に含まれる複数の直接依存元と複数の直接依存先との中から、間接関係ルールに含まれる依存元要素に対応する要素を前記間接依存元として抽出する。
また、間接関係抽出部120は、抽出された複数の直接関係情報に含まれる複数の直接依存元と複数の直接依存先との中から、間接関係ルールに含まれる依存先要素に対応する要素を間接依存先として抽出する。
図13に、具体的な間接関係ルールリスト250を示す。
間接関係ルールリスト250は、1つの間接関係ルールを含んでいる。
その間接関係ルールは、間接関係条件と間接関係とを含んでいる。
間接関係条件は、複数の直接依存種類とシステム関係とを含んでいる。
間接関係は、依存元要素と依存先要素と間接依存種類とを含んでいる。
第1直接依存種類は、システムAの関数Bから送信関数Cの呼出しである。システムAは第1直接依存種類を含む第1直接関係情報に対応するシステムであり、関数Bは第1直接関係情報に含まれる直接依存元であり、送信関数Cは第1直接関係情報に含まれる直接依存先である。
第2直接依存種類は、システムDの関数Eから受信関数Fの呼出しである。システムDは第2直接依存種類を含む第2直接関係情報に対応するシステムであり、関数Eは第2直接関係情報に含まれる直接依存元であり、受信関数Fは第2直接関係情報に含まれる直接依存先である。
システム関係は、第1直接関係情報に対応するシステムと第2直接関係情報に対応するシステムとの関係である。具体的には、システム関係は、システムAとシステムDとの不一致である。
依存元要素は、第2直接関係情報に含まれる直接依存元である。具体的には、依存元要素は、関数Eである。
依存先要素は、第1直接関係情報に含まれる直接依存元である。具体的には、依存先要素は、関数Bである。
間接依存種類は、通信媒介である。通信媒介は、通信を媒介とする間接的な依存関係を意味する。
図14に、図13の間接関係ルールリスト250を用いて生成される間接関係リスト240を示す。
間接関係リスト240は、3つの間接関係情報を含んでいる。
それぞれの間接関係情報は、間接依存元と間接依存先と間接依存種類と間接依存頻度との組である。
1つ目の間接関係情報は、システム2のソースコード「file4.c」の関数「func6()」が、通信を媒介にして、システム1のソースコード「file3.c」の関数「func5()」から影響を受ける、という間接関係を示している。間接依存頻度は1である。
2つ目の間接関係情報は、システム3のソースコード「file5.c」の関数「func8()」が、通信を媒介にして、システム1のソースコード「file3.c」の関数「func5()」から影響を受ける、という間接関係を示している。間接依存頻度は1である。
3つ目の間接関係情報は、システム3のソースコード「file5.c」の関数「func8()」が、通信を媒介にして、システム2のソースコード「file4.c」の関数「func7()」から影響を受ける、という間接関係を示している。間接依存頻度は1である。
図15に基づいて、間接関係抽出処理(S220)の手順を説明する。
ステップS221において、間接関係抽出部120は、間接関係ルールリスト250から、未選択の間接関係ルールを1つ選択する。
ステップS222からステップS227は、ステップS221で選択された間接関係ルールを対象に実行される。
ステップS222において、間接関係抽出部120は、複数の直接関係リスト220から、対応情報群を抽出する。対応情報群を抽出する方法は、実施の形態1で説明したステップS122と同じである。
ステップS223において、間接関係抽出部120は、対応情報群があるか判定する。S222で少なくとも1つの対応情報群が抽出された場合、間接関係抽出部120は、対応情報群があると判定する。
対応情報群がある場合、処理はステップS224に進む。
対応情報群がない場合、処理はステップS228に進む。
ステップS224において、間接関係抽出部120は、未選択の対応情報群を1つ選択する。
ステップS225およびステップS226は、ステップS224で選択された対応情報群を対象に実行される。
ステップS225において、間接関係抽出部120は、間接関係ルール内のシステム関係に対応する複数のシステムに、間接関係ルール内のシステム関係があるか判定する。
具体的には、間接関係抽出部120は、間接関係ルール内のシステム関係に対応する複数のシステムを選択する。そして、間接関係抽出部120は、間接関係ルール内の要素関係が、選択された複数のシステムにあるか判定する。
間接関係ルール内のシステム関係に対応する複数のシステムに、間接関係ルール内のシステム関係がある場合、処理はステップS226に進む。
間接関係ルール内のシステム関係に対応する複数のシステムに、間接関係ルール内のシステム関係がない場合、処理はステップS227に進む。
ステップS226において、間接関係抽出部120は、間接関係情報を生成し、生成された間接関係情報を間接関係リスト240に追加する。間接関係情報を生成する方法は、実施の形態1で説明したステップS126と同じである。
ステップS227において、間接関係抽出部120は、未選択の対応情報群があるか判定する。
未選択の対応情報群がある場合、処理はステップS224に戻る。
未選択の対応情報群がない場合、処理はステップS228に進む。
ステップS228において、間接関係抽出部120は、未選択の間接関係ルールがあるか判定する。
未選択の間接関係ルールがある場合、処理はステップS221に戻る。
未選択の間接関係ルールがない場合、間接関係抽出処理(S220)は終了する。
***実施の形態2の効果***
システム間の間接的な依存関係を抽出することが可能になる。
***他の構成***
一般的に、システムは、コンピュータまたはコンピュータの集合である。但し、実施の形態2におけるシステムは、タスク、プロセスまたはスレッドであってもよい。つまり、実施の形態2は、タスク間、プロセス間またはスレッド間の間接的な依存関係を抽出するために利用することも可能である。
実施の形態3.
システム間の間接的な依存関係から、通信が行われないシステム間の間接的な依存関係を除去する形態について、主に実施の形態2と異なる点を、図16から図20に基づいて説明する。
***構成の説明***
図16に基づいて、依存関係抽出装置100の構成を説明する。
依存関係抽出装置100は、無効関係除去部130を機能構成の要素として備える。無効関係除去部130の機能については後述する。
***動作の説明***
図17に基づいて、依存関係抽出方法を説明する。
ステップS210およびステップS220は、実施の形態2と同じである。
ステップS230は無効関係抽出処理である。
ステップS230において、無効関係除去部130は、事象データ260を用いて、間接関係リスト240から、無効関係を除去する。
事象データ260は、第1通信システムと第2通信システムとの組を示すデータである。事象データ260は、記憶部191に予め記憶される。
第1通信システムは、互いに通信する2つのシステムのうちの一方のシステムである。具体的には、第1通信システムは、通信相手のシステムにデータを送信する通信元システムである。
第2通信システムは、互いに通信する2つのシステムのうちの他方のシステムである。具体的には、第2通信システムは、通信相手のシステムからデータを受信する通信先システムである。
無効関係は、間接依存元と間接依存先との組のうち、第1通信システムと第2通信システムとの組み合わせに対応しない組の間接関係である。
第1通信システムと第2通信システムとの組み合わせに対応しない組は、第1通信システムに対応する直接関係情報から抽出された要素と第2通信システムに対応する直接関係情報から抽出された要素との組み合わせとは異なる組である。具体的には、第1通信システムに対応する直接関係情報から抽出される要素は間接依存先であり、第2通信システムに対応する直接関係情報から抽出される要素は間接依存元である。
具体的には、無効関係除去部130は、間接関係リスト240に含まれる間接関係情報毎に、間接関係情報に含まれる間接依存元と間接依存先との組が、事象データ260に含まれる第1通信システムと第2通信システムとの組み合わせに対応するか判定する。そして、無効関係除去部130は、第1通信システムと第2通信システムとのいずれの組み合わせとも対応しない間接依存元と間接依存先との組を含んだ間接関係情報を、間接関係リスト240から除去する。
図18に、具体的な事象データ260を示す。
事象データ260は、2つの事象情報を含んでいる。
それぞれの事象情報は、第1通信システムと第2通信システムとを含んでいる。
「No.1」の事象情報は、システム1からシステム2への送信を示している。
「No.2」の事象情報は、システム2からシステム3への送信を示している。
事象データ260は、動的なデータを元に生成することができる。
動的なデータとは、システムを動作させることによって得られるデータである。具体的には、動的なデータは、システム間で通信される通信データである。
図19に、図14の間接関係リスト240と図18の事象データ260とを用いて生成される間接関係リスト240を示す。
図14において、1つ目の間接関係情報に含まれる間接依存元と間接依存先との組に対応するシステムの組み合わせは、システム2とシステム1との組み合わせである。システム2とシステム1との組み合わせは、図18において、「No.1」の事象情報が示す組み合わせと同じである。したがって、1つ目の間接関係情報は除去されない。
図14において、2つ目の間接関係情報に含まれる間接依存元と間接依存先との組に対応するシステムの組み合わせは、システム3とシステム1との組み合わせである。システム3とシステム1との組み合わせは、図18において、いずれの事象情報が示す組み合わせとも異なる。したがって、2つ目の間接関係情報は除去される。
図14において、3つ目の間接関係情報に含まれる間接依存元と間接依存先との組に対応するシステムの組み合わせは、システム3とシステム2との組み合わせである。システム3とシステム2との組み合わせは、図18において、「No.2」の事象情報が示す組み合わせと同じである。したがって、3つ目の間接関係情報は除去されない。
その結果、図19の間接関係リスト240が生成される。
図20に基づいて、無効関係抽出処理(S230)の手順を説明する。
ステップS231において、無効関係除去部130は、間接関係リスト240から、未選択の間接関係情報を1つ選択する。
ステップS232からステップS235は、ステップS231で選択された間接関係情報を対象に実行される。
ステップS232において、無効関係除去部130は、事象データ260から、未選択の事象情報を1つ選択する。
ステップS233は、ステップS232で選択された事象情報を対象に実行される。
ステップS233において、無効関係除去部130は、間接関係情報が示す間接関係が有効関係であるか判定する。
具体的には、無効関係除去部130は、間接関係情報に含まれる間接依存元と間接依存先との組が、事象情報に含まれる第1通信システムと第2通信システムとの組み合わせに対応する組であるか判定する。間接依存元と間接依存先との組が第1通信システムと第2通信システムとの組み合わせに対応する組である場合、間接関係情報が示す間接関係は有効関係である。
間接関係情報が示す間接関係が有効関係である場合、処理はステップS236に進む。
間接関係情報が示す間接関係が有効関係でない場合、処理はステップS234に進む。
ステップS234において、無効関係除去部130は、未選択の事象情報があるか判定する。
未選択の事象情報がある場合、処理はステップS232に戻る。
未選択の事象情報がない場合、処理はステップS235に進む。
ステップS235において、無効関係除去部130は、間接関係情報を間接関係リスト240から除去する。
ステップS236において、無効関係除去部130は、未選択の間接関係情報があるか判定する。
未選択の間接関係情報がある場合、処理はステップS231に戻る。
未選択の間接関係情報がない場合、無効関係抽出処理(S230)は終了する。
***実施の形態3の構成***
システム間の間接的な依存関係から、通信が行われないシステム間の間接的な依存関係を除去することが可能になる。
つまり、通信が行われるシステム間の間接的な依存関係を抽出することが可能になる。
***実施の形態の補足***
実施の形態において、依存関係抽出装置100の機能はハードウェアで実現してもよい。
図21に、依存関係抽出装置100の機能がハードウェアで実現される場合の構成を示す。
依存関係抽出装置100は処理回路990を備える。処理回路990はプロセッシングサーキットリともいう。
処理回路990は、実施の形態で説明した「部」の機能を実現する専用の電子回路である。この「部」には記憶部191も含まれる。
具体的には、処理回路990は、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックIC、GA、ASIC、FPGAまたはこれらの組み合わせである。GAはGate Arrayの略称であり、ASICはApplication Specific Integrated Circuitの略称であり、FPGAはField Programmable Gate Arrayの略称である。
依存関係抽出装置100は、処理回路990を代替する複数の処理回路を備えてもよい。複数の処理回路は、「部」の機能を分担する。
依存関係抽出装置100の機能は、ソフトウェアとハードウェアとの組み合わせで実現してもよい。つまり、「部」の機能の一部をソフトウェアで実現し、「部」の機能の残りをハードウェアで実現してもよい。
実施の形態は、好ましい形態の例示であり、本発明の技術的範囲を制限することを意図するものではない。実施の形態は、部分的に実施してもよいし、他の形態と組み合わせて実施してもよい。フローチャート等を用いて説明した手順は、適宜に変更してもよい。
100 依存関係抽出装置、110 直接関係抽出部、120 間接関係抽出部、130 無効関係除去部、191 記憶部、210 ソースコード、220 直接関係リスト、230 間接関係ルールリスト、240 間接関係リスト、250 間接関係ルールリスト、260 事象データ、901 プロセッサ、902 メモリ、903 補助記憶装置、990 処理回路。

Claims (9)

  1. ソフトウェアに含まれる要素のうち前記ソフトウェアに含まれる他の要素を使用する要素である直接依存元と、前記ソフトウェアに含まれる要素のうち直接依存元に使用される要素である直接依存先と、直接依存元が直接依存先を使用する方法を示す直接依存種類との組を含んだ直接関係リストを記憶する記憶部と、
    前記ソフトウェアに含まれる要素のうち前記ソフトウェアに含まれる他の要素から影響を受ける要素である間接依存元と、前記ソフトウェアに含まれる要素のうち間接依存元に影響を与える要素である間接依存先とのルールである間接関係ルールと、前記直接関係リストとを用いて、前記間接依存元と前記間接依存先との組を抽出する間接関係抽出部と
    を備える依存関係抽出装置。
  2. 前記直接関係リストは、直接依存元と直接依存先と直接依存種類との組を示す直接関係情報を含み、
    前記間接関係ルールは、複数の直接依存種類と、複数の要素に成り立つ要素関係と、間接依存元となる依存元要素と、間接依存先となる依存先要素とを含み、
    前記間接関係抽出部は、前記間接関係ルールに含まれる複数の直接依存種類と要素関係とに対応する複数の直接関係情報を前記直接関係リストから抽出し、抽出された複数の直接関係情報に含まれる複数の直接依存元と複数の直接依存先との中から、前記間接関係ルールに含まれる依存元要素に対応する要素を前記間接依存元として抽出し、抽出された複数の直接関係情報に含まれる複数の直接依存元と複数の直接依存先との中から、前記間接関係ルールに含まれる依存先要素に対応する要素を前記間接依存先として抽出する
    請求項1に記載の依存関係抽出装置。
  3. 前記複数の直接関係情報は、前記複数の直接依存種類に含まれる直接依存種類の数と同じ数の直接関係情報から成り、且つ、複数の直接依存元と複数の直接依存先と前記複数の直接依存種類とを含み、且つ、前記複数の直接依存元と前記複数の直接依存先とのうち前記要素関係に対応する複数の要素に前記要素関係がある
    請求項2に記載の依存関係抽出装置。
  4. 前記複数の直接依存種類は、第1直接依存種類と第2直接依存種類とを含み、
    前記要素関係は、前記第1直接依存種類に対応する直接依存先と前記第2直接依存種類に対応する直接依存先との関係であり、
    前記依存元要素は、前記第2直接依存種類に対応する直接依存元であり、
    前記依存先要素は、前記第1直接依存種類に対応する直接依存元である
    請求項3に記載の依存関係抽出装置。
  5. 前記第1直接依存種類は、直接依存元である第1関数から直接依存先である第1変数への書込みであり、
    前記第2直接依存種類は、直接依存元である第2関数から直接依存先である第2変数の参照であり、
    前記要素関係は、前記第1変数と前記第2変数との一致であり、
    前記依存元要素は、前記第2関数であり、
    前記依存先要素は、前記第1関数である
    請求項4に記載の依存関係抽出装置。
  6. 前記記憶部は、前記直接関係リストとして、互いに通信する複数のシステムに対応する複数の直接関係リストを記憶し、
    前記複数の直接関係リストそれぞれは、直接依存元と直接依存先と直接依存種類との組を示す直接関係情報を含み、
    前記記憶部は、複数の直接依存種類と、システム間に成り立つ関係を示すシステム関係と、間接依存元となる依存元要素と、間接依存先となる依存先要素と、を含んだ間接関係ルールを記憶し、
    前記間接関係抽出部は、前記間接関係ルールに含まれる複数の直接依存種類とシステム関係とに対応する複数の直接関係情報を前記複数の直接関係リストから抽出し、抽出された複数の直接関係情報に含まれる複数の直接依存元と複数の直接依存先との中から、前記間接関係ルールに含まれる依存元要素に対応する要素を前記間接依存元として抽出し、抽出された複数の直接関係情報に含まれる複数の直接依存元と複数の直接依存先との中から、前記間接関係ルールに含まれる依存先要素に対応する要素を前記間接依存先として抽出する
    請求項1に記載の依存関係抽出装置。
  7. 前記複数の直接依存種類は、第1直接依存種類と第2直接依存種類とを含み、
    前記第1直接依存種類は、直接依存元である第1関数から直接依存先である送信関数の呼出しであり、
    前記第2直接依存種類は、直接依存元である第2関数から直接依存先である受信関数の呼出しであり、
    前記システム関係は、前記第1直接依存種類を含む直接関係情報に対応するシステムと前記第2直接依存種類を含む直接関係情報に対応するシステムとの不一致であり、
    前記依存元要素は、前記第2関数であり、
    前記依存先要素は、前記第1関数である
    請求項6に記載の依存関係抽出装置。
  8. 前記記憶部は、互いに通信する2つのシステムのうちの一方のシステムである第1通信システムと、互いに通信する2つのシステムのうちの他方のシステムである第2通信システムとを示す事象データを記憶し、
    前記依存関係抽出装置は、
    前記事象データを用いて、抽出された間接依存元と抽出された間接依存先との組から、前記第1通信システムと前記第2通信システムとの組み合わせに対応しない組を除去する無効関係除去部を備える
    請求項6に記載の依存関係抽出装置。
  9. 直接関係リストと間接関係ルールとを用いる依存関係抽出プログラムであって、
    前記直接関係リストは、ソフトウェアに含まれる要素のうち前記ソフトウェアに含まれる他の要素を使用する要素である直接依存元と、前記ソフトウェアに含まれる要素のうち直接依存元に使用される要素である直接依存先と、直接依存元が直接依存先を使用する方法を示す直接依存種類との組を含んだリストであり、
    前記間接関係ルールは、前記ソフトウェアに含まれる要素のうち前記ソフトウェアに含まれる他の要素から影響を受ける要素である間接依存元と、前記ソフトウェアに含まれる要素のうち間接依存元に影響を与える要素である間接依存先とのルールであり、
    前記直接関係リストと前記間接関係ルールとを用いて、前記間接依存元と前記間接依存先との組を抽出する間接関係抽出部として
    コンピュータを機能させるための依存関係抽出プログラム。
JP2018514004A 2016-04-26 2016-04-26 依存関係抽出装置および依存関係抽出プログラム Expired - Fee Related JP6548819B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/063112 WO2017187537A1 (ja) 2016-04-26 2016-04-26 依存関係抽出装置および依存関係抽出プログラム

Publications (2)

Publication Number Publication Date
JPWO2017187537A1 JPWO2017187537A1 (ja) 2018-06-28
JP6548819B2 true JP6548819B2 (ja) 2019-07-24

Family

ID=60161386

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018514004A Expired - Fee Related JP6548819B2 (ja) 2016-04-26 2016-04-26 依存関係抽出装置および依存関係抽出プログラム

Country Status (4)

Country Link
US (1) US10606571B2 (ja)
EP (1) EP3451166A4 (ja)
JP (1) JP6548819B2 (ja)
WO (1) WO2017187537A1 (ja)

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5933820A (en) * 1996-05-20 1999-08-03 International Business Machines Corporation System, method, and program for using direct and indirect pointers to logically related data and targets of indexes
US6233729B1 (en) * 1998-10-29 2001-05-15 Nortel Networks Limited Method and apparatus for identifying dynamic structure and indirect messaging relationships between processes
US20100106655A1 (en) * 2001-07-26 2010-04-29 Bernd Schneider CPW method with application in a CPW enterprise architecture engine
US20030225761A1 (en) * 2002-05-31 2003-12-04 American Management Systems, Inc. System for managing and searching links
JP4617448B2 (ja) * 2004-05-24 2011-01-26 独立行政法人科学技術振興機構 遺伝子ネットワークの推定方法及び推定プログラム
US8615729B2 (en) * 2004-12-10 2013-12-24 International Business Machines Corporation Extending existing model-to-model transformations
US7664712B1 (en) * 2005-08-05 2010-02-16 Troux Technologies Method and system for impact analysis using a data model
JP4104622B2 (ja) 2005-10-14 2008-06-18 株式会社アイティアイディコンサルティング 製品開発プロセス支援システム及び製品開発プロセス支援方法
US8464225B2 (en) * 2007-05-06 2013-06-11 Dynatrace Software Gmbh Method and system for adaptive, generic code instrumentation using run-time or load-time generated inheritance information for diagnosis and monitoring application performance and failure
JP2008191963A (ja) * 2007-02-06 2008-08-21 Nec Corp ソースコード検証システム、ソースコード検証方法、およびソースコード検証用プログラム
CA2691306A1 (en) * 2010-01-28 2011-07-28 Ibm Canada Limited - Ibm Canada Limitee Interdependent task management
JP5687122B2 (ja) 2011-04-26 2015-03-18 三菱電機株式会社 ソフトウェア評価装置、ソフトウェア評価方法およびシステム評価装置
JP2013045421A (ja) * 2011-08-26 2013-03-04 Toshiba Corp 保守度測定装置
JP2013069086A (ja) 2011-09-22 2013-04-18 Hitachi Ltd ソフトウェア部品組合せ支援装置
JP2013125466A (ja) * 2011-12-15 2013-06-24 Mitsubishi Electric Corp 影響度分析装置、影響度分析方法、及びプログラム
US20140032552A1 (en) * 2012-07-30 2014-01-30 Ira Cohen Defining relationships
JP5981327B2 (ja) 2012-12-05 2016-08-31 トヨタ自動車株式会社 ソフトウェア複雑度測定装置及び方法並びにプログラム
US9886499B2 (en) * 2013-08-26 2018-02-06 Accenture Global Services Limited Identifying and classifying non-functional requirements in text
JP2015069332A (ja) 2013-09-27 2015-04-13 日本電気株式会社 静的検証装置に静的検証を実行させる対象範囲を抽出する、対象範囲抽出装置、静的検証システム、対象範囲抽出方法、及び対象範囲抽出プログラム
JP2015138356A (ja) 2014-01-21 2015-07-30 トヨタ自動車株式会社 ソフトウェア構造可視化装置
US20170131973A1 (en) * 2014-03-25 2017-05-11 Hitachi, Ltd. Software specification dependence relation verification apparatus and software specification dependence relation verification method
JP2016076080A (ja) * 2014-10-06 2016-05-12 三菱電機株式会社 ソースコード解析装置、ソースコード解析方法、及びプログラム
US9471468B2 (en) * 2014-12-02 2016-10-18 International Business Machines Corporation System, method, and computer program to improve the productivity of unit testing
US10075342B2 (en) * 2015-06-12 2018-09-11 Microsoft Technology Licensing, Llc Action orchestration in fault domains
US10007594B2 (en) * 2015-07-21 2018-06-26 International Business Machines Corporation Proactive cognitive analysis for inferring test case dependencies
CN105632551B (zh) * 2015-12-18 2018-09-25 中国科学院上海微系统与信息技术研究所 存储阵列、存储对象逻辑关系的存储芯片及方法
CN107515886B (zh) * 2016-06-17 2020-11-24 阿里巴巴集团控股有限公司 一种数据表的识别方法、装置和系统
US20180081691A1 (en) * 2016-09-21 2018-03-22 Qualcomm Incorporated REPLAYING SPECULATIVELY DISPATCHED LOAD-DEPENDENT INSTRUCTIONS IN RESPONSE TO A CACHE MISS FOR A PRODUCING LOAD INSTRUCTION IN AN OUT-OF-ORDER PROCESSOR (OoP)

Also Published As

Publication number Publication date
US10606571B2 (en) 2020-03-31
US20190079742A1 (en) 2019-03-14
JPWO2017187537A1 (ja) 2018-06-28
WO2017187537A1 (ja) 2017-11-02
EP3451166A4 (en) 2019-05-15
EP3451166A1 (en) 2019-03-06

Similar Documents

Publication Publication Date Title
US11409703B2 (en) File versions within content addressable storage
US8640241B2 (en) Data identification system
US11360938B2 (en) Files having unallocated portions within content addressable storage
CN110998558B (zh) 区块链中数据库哈希码的延迟更新
JP6386089B2 (ja) 最適化されたブラウザレンダリングプロセス
JP6903755B2 (ja) データ統合ジョブ変換
US20150242389A1 (en) Techniques to identify user interface elements associated with model violation events
US20120047124A1 (en) Database query optimizations
CN109614559A (zh) 数据处理方法及装置
US9262219B2 (en) Distributed processing system, distributed processing method, and distributed processing program
JPWO2018092206A1 (ja) 情報処理装置、デバイス割り当て方法およびデバイス割り当てプログラム
US11341599B2 (en) Image processing apparatus, image processing method, and computer readable medium storing image processing program
JP7031735B2 (ja) 情報処理装置、制御方法、及びプログラム
JP6548819B2 (ja) 依存関係抽出装置および依存関係抽出プログラム
US20150324161A1 (en) Image processing apparatus, image processing method, and non-transitory computer-readable storage medium
JP2018136763A (ja) 類似関数抽出装置および類似関数抽出プログラム
US20190179932A1 (en) Tracking and reusing function results
JP7050587B2 (ja) 違反依存検出装置および違反依存検出プログラム
WO2020100186A1 (ja) 情報処理装置、制御方法、及びプログラム
US8626800B2 (en) Synchronization of artifacts across different domains
JP6807721B2 (ja) 状態遷移編集装置および状態遷移編集プログラム
JP7008780B2 (ja) 状態遷移編集装置および状態遷移編集プログラム
WO2019171425A1 (ja) ソフトウェア開発支援装置、ソフトウェア開発支援方法およびソフトウェア開発支援プログラム
EP3168757A1 (en) Web content extraction system and method and non-transitory computer readable storage medium
US20240118878A1 (en) Method and system for determining optimization applicability on intermediate representation from program

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180302

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190625

R150 Certificate of patent or registration of utility model

Ref document number: 6548819

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees