JP6789844B2 - 類似関数抽出装置および類似関数抽出プログラム - Google Patents

類似関数抽出装置および類似関数抽出プログラム Download PDF

Info

Publication number
JP6789844B2
JP6789844B2 JP2017031065A JP2017031065A JP6789844B2 JP 6789844 B2 JP6789844 B2 JP 6789844B2 JP 2017031065 A JP2017031065 A JP 2017031065A JP 2017031065 A JP2017031065 A JP 2017031065A JP 6789844 B2 JP6789844 B2 JP 6789844B2
Authority
JP
Japan
Prior art keywords
similarity
function
functions
file
test case
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
JP2017031065A
Other languages
English (en)
Other versions
JP2018136763A (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
Priority to JP2017031065A priority Critical patent/JP6789844B2/ja
Publication of JP2018136763A publication Critical patent/JP2018136763A/ja
Application granted granted Critical
Publication of JP6789844B2 publication Critical patent/JP6789844B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Description

本発明は、類似関数を抽出する技術に関するものである。
ソフトウェアの開発において、開発効率の向上および保守性の向上を図るため、一般的に、ソースコード内で互いに共通する処理が関数化されている。関数化によって得られた共通関数はライブラリにまとめられる。
しかし、関数化にかかる作業コストを省くため、共通関数とすべき処理がコピーアンドペーストされ、処理の一部分が追加、変更または削除されることがある。
また、共通関数とすべき処理の洗い出しが不足してしまい、構文上の実装が異なるが内容が互いに類似する処理を共通関数とすべき処理として見つけることができず、内容が互いに類似する処理が個別に開発されてしまうことがある。
肥大化したソースコードをスリム化してソフトウェアの保守性を高めることを目的として、ソースコードから互いに類似する処理を抽出する技術が従来から知られている。
特許文献1、非特許文献1および非特許文献2には、ソースコード内で互いに類似する処理を抽出することを支援する技術が開示されている。
特許文献1は、抽象構文木ベースの検出手法を開示している。特許文献1に開示された検出手法では、ソースコードの抽象構文木が生成され、抽象構文木における部分木の類似度が計算され、類似処理が検出される。
非特許文献1は、トークンベースの検出手法を開示している。非特許文献1に開示された検出手法では、ソースコードがトークン列に変換され、トークン列の類似度が計算され、類似処理が検出される。
非特許文献2は、メモリベースの検出手法を開示している。非特許文献2に開示された検出手法では、ソースコード中の各関数が終了した時点におけるメモリについて状態の予測が行われ、メモリの状態の類似度が計算され、類似処理が抽出される。
特開2006−018693号公報
神谷 年洋、"CCFinderX"、[online]、平成20年11月16日、大阪大学大学院情報科学研究科井上研究室、[平成27年12月27日検索]、インターネット(URL:http://www.ccfinder.net/ccfinderx−j.html) H.Kim,Y.Jung,S.Kim,and K.Yi、「Mecc:memory comparison−based clone detector」、In Proceedings of the 33rd International Conference on Software Engineering、ICSE’11、p. 301−310
特許文献1または非特許文献1に開示された検出手法により、コピーアンドペーストされて一部分が追加、変更または削除された類似処理およびコピーアンドペーストされて全く変更されていない類似処理を検出することが可能である。
しかし、特許文献1または非特許文献1に開示された検出手法では、構文上の実装が異なるが内容が互いに類似する処理を検出することができない。
非特許文献2に開示された検出手法により、コピーアンドペーストされて一部分が追加、変更または削除された類似処理とコピーアンドペーストされて全く変更されていない類似処理とに加えて、構文上の実装が異なるが内容が互いに類似する処理を検出することが可能である。
しかし、非特許文献2に開示された検出手法では、メモリの状態の予測を行うために、プログラム全体をコンパイル可能な状態にする必要がある。そのため、準備コストが大きく、また、メモリの状態の予測にかかる計算時間が大きい。さらに、メモリにおいて起こり得る状態しか分からないため、実際の動作に応じて類似度を計算することができない。
本発明は、互いに類似する関数の組をより正確に抽出できるようにすることを目的とする。
本発明の類似関数抽出装置は、
関数間類似度ファイルとテストケース間類似度ファイルと実行結果間類似度ファイルと総合類似度パラメータとを用いて、複数の関数に含まれる関数の組毎に総合類似度を算出する総合類似度算出部を備える。
前記関数間類似度ファイルは、複数の関数に含まれる関数の組毎に関数同士の類似度である関数間類似度を示す。
前記テストケース間類似度ファイルは、前記複数の関数に対する複数のテストケースに含まれるテストケースの組毎にテストケース同士の類似度であるテストケース間類似度を示す。
前記実行結果間類似度ファイルは、前記複数のテストケースに含まれるテストケースの組毎にそれぞれのテストケースを実行して得られる実行結果同士の類似度である実行結果間類似度を示す。
前記総合類似度パラメータは、総合類似度と関数間類似度とテストケース間類似度と実行結果間類似度との関係を示す。
前記総合類似度は、テストケース間類似度と実行結果間類似度とを考慮して得られる関数間類似度である。
本発明によれば、関数の組毎に関数間類似度とテストケース間類似度と実行結果間類似度と用いて総合類似度が算出される。そのため、互いに類似する関数の組をより正確に抽出することが可能となる。
実施の形態1における類似関数抽出装置100の構成図。 実施の形態1における類似関数抽出方法のフローチャート。 実施の形態1における関数間類似度ファイルの生成(S110)のフローチャート。 実施の形態1におけるソースコード201Aを示す図。 実施の形態1におけるソースコード201Bを示す図。 実施の形態1におけるソースコード201Cを示す図。 実施の形態1におけるソースコード201Dを示す図。 実施の形態1におけるソースコード201Eを示す図。 実施の形態1におけるソースコード201Fを示す図。 実施の形態1における関数特徴ファイル211を示す図。 実施の形態1におけるパラメータファイル212を示す図。 実施の形態1における関数間類似度ファイル213を示す図。 実施の形態1における非対象ファイルの生成(S120)のフローチャート。 実施の形態1における非対象条件ファイル221を示す図。 実施の形態1における非対象ファイル222を示す図。 実施の形態1におけるテストケース間類似度ファイルの生成(S130)のフローチャート。 実施の形態1におけるソースコード231Aを示す図。 実施の形態1におけるテストケース特徴ファイル232を示す図。 実施の形態1における対応関係ファイル233を示す図。 実施の形態1におけるテストケース間類似度パラメータ234を示す図。 実施の形態1におけるテストケース間類似度ファイル235を示す図。 実施の形態1における実行結果間類似度ファイルの生成(S140)を示す図。 実施の形態1における実行結果ファイル241を示す図。 実施の形態1における実行結果間類似度パラメータ242を示す図。 実施の形態1における実行結果間類似度ファイル243を示す図。 実施の形態1における総合類似度ファイルの生成(S150)のフローチャート。 実施の形態1における総合類似度パラメータ251を示す図。 実施の形態1における総合類似度ファイル252を示す図。 実施の形態における類似関数抽出装置100のハードウェア構成図。
実施の形態および図面において、同じ要素および対応する要素には同じ符号を付している。同じ符号が付された要素の説明は適宜に省略または簡略化する。図中の矢印はデータの流れ又は処理の流れを主に示している。
実施の形態1.
互いに類似する関数の組を抽出するための形態について、図1から図28に基づいて説明する。
***構成の説明***
図1に基づいて、類似関数抽出装置100の構成を説明する。
類似関数抽出装置100は、プロセッサ901とメモリ902と補助記憶装置903と入出力インタフェース904といったハードウェアを備えるコンピュータである。これらのハードウェアは、信号線を介して互いに接続されている。
プロセッサ901は、演算処理を行うIC(Integrated Circuit)であり、他のハードウェアを制御する。例えば、プロセッサ901は、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、またはGPU(Graphics Processing Unit)である。
メモリ902は揮発性の記憶装置である。メモリ902は、主記憶装置またはメインメモリとも呼ばれる。例えば、メモリ902はRAM(Random Access Memory)である。メモリ902に記憶されたデータは必要に応じて補助記憶装置903に保存される。
補助記憶装置903は不揮発性の記憶装置である。例えば、補助記憶装置903は、ROM(Read Only Memory)、HDD(Hard Disk Drive)、またはフラッシュメモリである。補助記憶装置903に記憶されたデータは必要に応じてメモリ902にロードされる。
入出力インタフェース904は入力装置および出力装置が接続されるポートである。例えば、入出力インタフェース904はUSB端子であり、入力装置はキーボードおよびマウスであり、出力装置はディスプレイである。USBはUniversal Serial Busの略称である。
類似関数抽出装置100は、関数特徴抽出部111と関数間類似度算出部112と非対象特定部120といったソフトウェア要素を備える。
類似関数抽出装置100は、テストケース特徴抽出部131とテストケース間類似度算出部132といったソフトウェア要素を備える。
類似関数抽出装置100は、テスト実行部141と実行結果間類似度算出部142といったソフトウェア要素を備える。
類似関数抽出装置100は、総合類似度算出部150と類似特定部160といったソフトウェア要素を備える。
ソフトウェア要素はソフトウェアで実現される要素である。
補助記憶装置903には、関数特徴抽出部111と関数間類似度算出部112と非対象特定部120とテストケース特徴抽出部131とテストケース間類似度算出部132とテスト実行部141と実行結果間類似度算出部142と総合類似度算出部150と類似特定部160としてコンピュータを機能させるための類似関数抽出プログラムが記憶されている。類似関数抽出プログラムは、メモリ902にロードされて、プロセッサ901によって実行される。
さらに、補助記憶装置903にはOS(Operating System)が記憶されている。OSの少なくとも一部は、メモリ902にロードされて、プロセッサ901によって実行される。
つまり、プロセッサ901は、OSを実行しながら、類似関数抽出プログラムを実行する。
類似関数抽出プログラムを実行して得られるデータは、メモリ902、補助記憶装置903、プロセッサ901内のレジスタまたはプロセッサ901内のキャッシュメモリといった記憶装置に記憶される。
メモリ902はデータを記憶する記憶部191として機能する。但し、他の記憶装置が、メモリ902の代わりに、又は、メモリ902と共に、記憶部191として機能してもよい。
入出力インタフェース904は、ディスプレイにデータを表示する表示部192として機能する。
類似関数抽出装置100は、プロセッサ901を代替する複数のプロセッサを備えてもよい。複数のプロセッサは、プロセッサ901の役割を分担する。
類似関数抽出プログラムは、磁気ディスク、光ディスクまたはフラッシュメモリ等の不揮発性の記憶媒体にコンピュータ読み取り可能に記憶することができる。不揮発性の記憶媒体は、一時的でない有形の媒体である。
***動作の説明***
類似関数抽出装置100の動作は類似関数抽出方法に相当する。また、類似関数抽出方法の手順は類似関数抽出プログラムの手順に相当する。
図2に基づいて、類似関数抽出方法を説明する。
ステップS110において、関数間類似度算出部112は、関数の組毎に関数間類似度を算出し、関数間類似度ファイルを生成する。
関数は、ソフトウェアに含まれる要素である。ソフトウェアには複数の関数が含まれる。
関数の組は、複数の関数に含まれる2つの関数から成る組み合わせである。
関数間類似度は、関数同士の類似度である。
関数間類似度ファイルは、関数の組毎に関数間類似度を示す。
図3に基づいて、関数間類似度ファイルの生成(S110)の手順を説明する。
ステップS111において、関数特徴抽出部111は、関数毎に関数のソースコードから関数の特徴を抽出する。関数のソースコードは、関数の内容が記述されたファイルであり、記憶部191に予め記憶されている。
具体的には、関数特徴抽出部111は、関数のソースコードに対して静的解析を行うことによって、関数の特徴を特定する。そして、関数特徴抽出部111は、特定された関数の特徴を関数のソースコードから抽出する。
例えば、関数の特徴は、関数名、論理行数およびトークンである。
関数名は、関数の名称である。
論理行数は、関数のソースコードに含まれる論理行の行数である。論理行は、空行とコメント行とを除いた行である。
トークンは、論理行に含まれる特定の要素である。
ステップS112において、関数特徴抽出部111は、関数毎に関数の特徴を示すファイルを生成する。生成されるファイルを関数特徴ファイルという。
図4から図9に、関数のソースコード201の具体例を示す。
図4は、ソースコード201Aを示す。ソースコード201Aは、関数Aのソースコード201である。
図5は、ソースコード201Bを示す。ソースコード201Bは、関数Bのソースコード201である。ソースコード201Bはソースコード201A(図4参照)を用いて作成された。具体的には、ソースコード201Aの全体がコピーアンドペーストされて第12行から第14行が追加されて関数名が変更されることによって、ソースコード201Bは作成された。
つまり、関数Aおよび関数Bは互いに類似する関数である
図6は、ソースコード201Cを示す。ソースコード201Cは、関数Cのソースコード201である。
図7は、ソースコード201Dを示す。ソースコード201Dは、関数Dのソースコード201である。ソースコード201Dはソースコード201C(図6参照)を用いて作成された。具体的には、ソースコード201Cの全体がコピーアンドペーストされて引数と戻り値とのそれぞれの型がint型からdouble型に変更されて関数名が変更されることによって、ソースコード201Dは作成された。
つまり、関数Cおよび関数Dは互いに類似する関数である。
図8は、ソースコード201Eを示す。ソースコード201Eは、関数Eのソースコード201である。
図9は、ソースコード201Fを示す。ソースコード201Fは、関数Fのソースコード201である。ソースコード201Fはソースコード201E(図8参照)を用いて作成された。具体的には、ソースコード201Eの全体がコピーアンドペーストされてfor文がwhile文に変更されてif文およびelse文が三項演算子に変更されて関数名が変更されることによって、ソースコード201Fは作成された。
つまり、関数Eおよび関数Fは互いに類似する関数である。具体的には、関数Eおよび関数Fにおいて、処理内容が互いに類似しているが構文上の実装が互いに異なる。
図10に、関数特徴ファイル211を示す。
関数特徴ファイル211は、図4から図9に示すソースコード201を用いて生成される関数特徴ファイルである。
関数特徴ファイル211は、関数Aから関数Fのそれぞれの関数名、論理行数およびトークン列を示している。トークン列は1つ以上のトークンである。
図3に戻り、ステップS113から説明を続ける。
ステップS113において、関数間類似度算出部112は、関数特徴ファイルと関数間類似度用のパラメータファイルとを用いて、関数の組毎に関数間類似度を算出する。
関数間類似度用のパラメータファイルは、1つ以上の関数間類似度パラメータを含む。
関数間類似度パラメータは、関係式または非類似条件を示す。
関係式は、関数の組に対応する特徴の組と関数間類似度との関係を示す式である。言い換えると、関係式は、関数の組に対応する特徴の組を用いて関数間類似度を算出するために計算される式である。
非類似条件は、非類似の関数の組に対応する特徴の組が満たす条件である。
非類似の関数の組は、類似しない2つの関数である。
第1関数と第2関数との組に対応する特徴の組は、第1関数の特徴と第2関数の特徴との組である。
具体的には、関数間類似度算出部112は、非類似条件に基づいて非類似の関数の組を特定し、非類似の関数の組以外の関数の組毎に関数間類似度を算出する。
ステップS114において、関数間類似度算出部112は、非類似の関数の組毎に関数間類似度を示すファイルを生成する。生成されるファイルが関数間類似度ファイルである。
図11に、パラメータファイル212を示す。パラメータファイル212は、関数間類似度用のパラメータファイルの具体例である。
パラメータファイル212は、5つの関数間類似度パラメータを含んでいる。
5つの関数間類似度パラメータには優先度が昇順に設定されている。
第1行から第4行までの関数間類似度パラメータは、非類似条件を示している。関数の組において、一方の関数を第1関数といい、他方の関数を第2関数という。
第1行の非類似条件は、第1関数の論理行数が100未満という条件である。
第2行の非類似条件は、第2関数の論理行数が100未満という条件である。
第3行の非類似条件は、第1関数の論理行数が第2関数の論理行数の2倍以上という条件である。
第4行の非類似条件は、第2関数の論理行数が第1関数の論理行数の2倍以上という条件である。
第5行の関数間類似度パラメータは、関係式を示している。
similarity(y)は、種類yの特徴の類似度を意味する。
例えば、関数間類似度算出部112は、関数の組毎に関数間類似度を以下のように算出する。関数間類似度を算出する対象となる関数の組を対象の関数の組という。
まず、関数間類似度算出部112は、図10の関数特徴ファイル211から、対象の関数の組に対応する特徴の組を抽出する。対象の関数の組に対応する特徴の組を対象の特徴の組という。対象の関数の組が関数Aと関数Bとの組である場合、関数間類似度算出部112は、関数Aの特徴と関数Bの特徴とを関数特徴ファイル211から抽出する。関数Aの特徴と関数Bの特徴との組が対象の特徴の組である。
次に、関数間類似度算出部112は、図11のパラメータファイル212に関数間類似度パラメータとして示される非類似条件の優先度順に、対象の特徴の組が第1行から第4行までのいずれかの非類似条件を満たすか判定する。いずれかの非類似条件が満たされた場合、関数間類似度算出部112は、その非類似条件よりも優先度が低い非類似条件の判定を行わない。
対象の特徴の組が第1行から第4行までのいずれかの非類似条件を満たす場合、関数間類似度算出部112は、対象の関数の組が非類似の関数の組であると判定する。
対象の特徴の組が第1行から第4行までのいずれの非類似条件も満たさない場合、関数間類似度算出部112は、対象の特徴の組を用いて、図11のパラメータファイル212に関数間類似度パラメータとして示される第5行の関係式を計算する。算出される値が関数間類似度である。
図12に、関数間類似度ファイル213を示す。
関数間類似度ファイル213は、図10の関数特徴ファイル211と図11のパラメータファイル212とを用いて生成される関数間類似度ファイルである。
AからFまでのアルファベットは、関数名に対応している。
バツ印が記されたセルに対応する関数の組は、非類似の関数の組である。
非類似の関数の組以外の関数の組に対応するセルに記された値は、関数間類似度である。
図2に戻り、ステップS120から説明を続ける。
ステップS120において、非対象特定部120は、非対象の関数の組を特定し、非対象ファイルを生成する。
非対象ファイルは、非対象の関数の組を示す。
非対象の関数の組は、ステップS130以降の処理の対象とならない関数の組である。
具体的には、非対象の関数の組は、類似の関数の組と非類似の関数の組である。類似の関数の組は類似する2つの関数であり、非類似の関数の組は類似しない2つの関数の組である。
図13に基づいて、非対象ファイルの生成(S120)の手順を説明する。
ステップS121において、非対象特定部120は、関数間類似度ファイルを用いて、非類似の関数の組を非対象の関数の組として特定する。
具体的には、非対象特定部120は、対象の関数の組が非対象の関数の組であるか以下のように判定する。
非対象特定部120は、対象の関数の組の関数間類似度が関数間類似度ファイルに登録されているか判定する。
対象の関数の組の関数間類似度が関数間類似度ファイルに登録されていない場合、非対象特定部120は、対象の関数の組が非対象の関数の組であると判定する。
ステップS122において、非対象特定部120は、関数間類似度ファイルと非対象条件ファイルとを用いて、非対象の関数の組を特定する。
非対象条件ファイルは、非対象条件を示す。
非対象条件は、非対象の関数の組が満たす関数間類似度の条件である。
具体的には、非対象特定部120は、対象の関数の組が非対象の関数の組であるか以下のように判定する。
まず、非対象特定部120は、対象の関数の組の関数間類似度を関数間類似度ファイルから取得する。
次に、非対象特定部120は、取得された関数間類似度が非対象条件ファイルに示されるいずれかの非対象条件を満たすか判定する。
取得された関数間類似度が非対象条件ファイルに示されるいずれかの非対象条件を満たす場合、非対象特定部120は、対象の関数の組が非対象の関数の組であると判定する。
ステップS123において、非対象特定部120は、非対象の関数の組を示すファイルを生成する。生成されるファイルが非対象ファイルである。
図14に、非対象条件ファイル221を示す。非対象条件ファイル221は、非対象条件ファイルの具体例である。
非対象条件ファイル221は、2つの非対象条件を示している。
2つの非対象条件には優先度が昇順に設定されている。
第1行の非対象条件は、類似の関数の組が満たす関数間類似度の条件である。具体的には、第1行の非対象条件は、関数間類似度が90以上という条件である。
第2行の非対象条件は、非類似の関数の組が満たす関数間類似度の条件である。具体的には、第2行の非対象条件は、関数間類似度が30未満という条件である。
例えば、非対象特定部120は、関数の組毎に、図14の非対象条件ファイル221に基づいて以下のように動作する。対象の関数の組の関数間類似度を対象の関数間類似度という。
非対象特定部120は、対象の関数間類似度が第1行の非対象条件を満たすか判定する。
対象の関数間類似度が第1行の非対象条件を満たす場合、非対象特定部120は、対象の関数の組が類似の関数の組であると判定する。類似の関数の組は非対象の関数の組である。
対象の関数間類似度が第1行の非対象条件を満たさない場合、非対象特定部120は、対象の関数間類似度が第2行の非対象条件を満たすか判定する。
対象の関数間類似度が第2行の非対象条件を満たす場合、非対象特定部120は、対象の関数の組が非類似の関数の組であると判定する。非類似の関数の組は非対象の関数の組である。
対象の関数間類似度が第2行の非対象条件を満たさない場合、非対象特定部120は、対象の関数の組が非対象の関数の組でないと判定する。
図15に、非対象ファイル222を示す。
非対象ファイル222は、図12の関数間類似度ファイル213と図14の非対象条件ファイル221とを用いて生成される非対象ファイルである。
AからFまでのアルファベットは、関数名に対応している。
マル印またはバツ印が記されたセルに対応する関数の組は、非対象の関数の組である。
マル印が記されたセルに対応する関数の組は、類似の関数の組である。
バツ印が記されたセルに対応する関数の組は、非類似の関数の組である。
空白のセルに対応する関数の組は、非対象の関数の組ではない。
アルファベットとハイフンと数字との組み合わせ(例えば、A−1)は、テストケースの名称に対応している。テストケースについては後述する。
図2に戻り、ステップS130から説明を続ける。
ステップS130において、テストケース間類似度算出部132は、テストケースの組毎にテストケース間類似度を算出し、テストケース間類似度ファイルを生成する。
テストケースは、関数に対するテストの内容を示す。複数の関数に対して複数のテストケースが存在する。
テストケースの組は、複数のテストケースに含まれる2つのテストケースから成る組み合わせである。
テストケース間類似度は、テストケース同士の類似度である。
テストケース間類似度ファイルは、テストケースの組毎にテストケース間類似度を示す。
図16に基づいて、テストケース間類似度ファイルの生成(S130)の手順を説明する。
ステップS131において、テストケース特徴抽出部131は、テストケース毎にテストケースのソースコードからテストケースの特徴を抽出する。テストケースのソースコードは、テストケースの内容が記述されたファイルであり、記憶部191に予め記憶されている。
具体的には、テストケース特徴抽出部131は、テストケースのソースコードに対して静的解析を行うことによって、テストケースの特徴を特定する。そして、テストケース特徴抽出部131は、特定されたテストケースの特徴をテストケースのソースコードから抽出する。
例えば、テストケースの特徴は、テストケース名、入力値、期待値およびトークンである。
テストケース名は、テストケースの名称である。
入力値は、テストケースの入力となる値である。具体的には、入力値は、テストケースの変数に設定される値である。テストケースの変数は、テストケースのソースコードに含まれる変数である。例えば、テストケースの変数は、テストケースに対応する関数で使用されるグローバル変数、および、テストケースに対応する関数に受け渡される引数として用いられる変数である。
テストケースに対応する関数は、テストケースによるテストの対象となる関数である。
具体的には、テストケースに対応する関数は、テストケースのソースコードに記述された呼び出し文によって呼び出される関数である。
期待値は、テストケースに対応する関数から得られる値として正しい値である。
トークンは、テストケースのソースコードに含まれる特定の要素である。
ステップS132において、テストケース特徴抽出部131は、テストケース毎にテストケースの特徴を示すファイルを生成する。生成されるファイルをテストケース特徴ファイルという。
図17に、テストケースのソースコード231の具体例を示す。
図17に示すソースコード231Aは、テストケースA−1のソースコード231である。テストケースA−1は、関数Aに対応する第1テストケースである。
以下、関数xに対応する第nテストケースをテストケースx−nという。
図18に、テストケース特徴ファイル232を示す。
テストケース特徴ファイル232は、図17のソースコード231Aを用いて生成されるテストケース特徴ファイルである。
テストケース特徴ファイル232は、テストケース毎にテストケース名、入力値、期待値およびトークン列を示している。トークン列は1つ以上のトークンである。
テストケースA−1以外のテストケースに関しては記載を省略している。
図16に戻り、ステップS133から説明を続ける。
ステップS133において、テストケース特徴抽出部131は、テストケース毎にテストケースのソースコードからテストケース名と関数名とを抽出する。抽出される関数名はテストケースに対応する関数の名称である。
具体的には、テストケース特徴抽出部131は、テストケースのソースコードに対して静的解析を行うことによって、テストケース名と関数名とを特定する。そして、テストケース特徴抽出部131は、特定されたテストケース名と関数名とをテストケースのソースコードから抽出する。
ステップS134において、テストケース特徴抽出部131は、テストケースと関数とが互いに対応付けられたファイルを生成する。生成されるファイルを対応関係ファイルという。
具体的には、対応関係ファイルは、テストケース毎にテストケース名と関数名とを示す。
図19に、対応関係ファイル233を示す。対応関係ファイル233は、対応関係ファイルの具体例である。
対応関係ファイル233は、テストケース毎にテストケース名と関数名とを示している。関数名で識別される関数は、テストケース名で識別されるテストケースに対応する関数である。
図16に戻り、ステップS135から説明を続ける。
ステップS135において、テストケース間類似度算出部132は、テストケース特徴ファイルとテストケース間類似度パラメータとを用いて、テストケースの組毎にテストケース間類似度を算出する。
テストケース間類似度パラメータは、テストケースの組に対応する特徴の組とテストケース間類似度との関係を示す。
具体的には、テストケース間類似度算出部132は、非対象ファイルを用いて非対象の関数の組を特定し、非対象の関数の組に対応するテストケースの組を除いてテストケースの組毎にテストケース間類似度を算出する。
ステップS136において、テストケース間類似度算出部132は、テストケースの組毎にテストケース間類似度を示すファイルを生成する。
具体的には、テストケース間類似度算出部132は、非対象の関数の組に対応するテストケースの組を除いてテストケースの組毎にテストケース間類似度を示すファイルを生成する。
ステップS136で生成されるファイルがテストケース間類似度ファイルである。
図20に、テストケース間類似度パラメータ234を示す。テストケース間類似度パラメータ234はテストケース間類似度パラメータの具体例である。
テストケース間類似度パラメータ234は関係式を示している。この関係式は、テストケースの組に対応する特徴の組を用いてテストケース間類似度を算出するために計算される式である。similarity(y)は、種類yの特徴の類似度を意味する。
例えば、テストケース間類似度算出部132は、非対象の関数の組に対応するテストケースの組を除いてテストケースの組毎にテストケース間類似度を以下のように算出する。
まず、テストケース間類似度算出部132は、図15の非対象ファイル222を参照し、空白のセルに対応する関数の組を特定する。特定される関数の組は、非対象の関数の組ではない関数の組、すなわち、対象の関数の組である。
そして、テストケース間類似度算出部132は、対象の関数の組毎に以下の処理を行う。
まず、テストケース間類似度算出部132は、図19の対応関係ファイル233を用いて、対象の関数の組に対応するテストケースの組を特定する。対象の関数の組に対応するテストケースの組を対象のテストケースの組という。対象の関数の組が関数Aと関数Bとの組である場合、テストケース間類似度算出部132は、関数Aに対応付けられたテストケース名(テストケースA−n)と関数Bに対応付けられたテストケース名(テストケースB−n)とを対応関係ファイル233から抽出する。nは1または2である。テストケースA−nとテストケースB−nとの組が、対象のテストケースの組である。
次に、テストケース間類似度算出部132は、図18のテストケース特徴ファイル232から、対象のテストケースの組に対応する特徴の組を抽出する。対象のテストケースの組に対応する特徴の組を対象の特徴の組という。対象のテストケースの組がテストケースA−nとテストケースB−nとの組である場合、テストケース間類似度算出部132は、テストケースA−nの特徴とテストケースB−nの特徴とをテストケース特徴ファイル232から抽出する。テストケースA−nの特徴とテストケースB−nの特徴との組が対象の特徴の組である。
そして、テストケース間類似度算出部132は、対象の特徴の組を用いて、図20のテストケース間類似度パラメータ234として示される関係式を計算する。算出される値がテストケース間類似度である。
図21に、テストケース間類似度ファイル235を示す。
テストケース間類似度ファイル235は、図18のテストケース特徴ファイル232と図19の対応関係ファイル233と図20のテストケース間類似度パラメータ234とを用いて算出されたテストケース間類似度を図15の非対象ファイル222に設定することによって生成されるテストケース間類似度ファイルである。
図2に戻り、ステップS140から説明を続ける。
ステップS140において、実行結果間類似度算出部142は、テストケースの組毎に実行結果間類似度を算出し、実行結果間類似度ファイルを生成する。
テストケースを実行して得られる結果を実行結果という。
実行結果間類似度は、実行結果同士の類似度である。
実行結果間類似度ファイルは、テストケースの組毎に実行結果間類似度を示す。
図22に基づいて、実行結果間類似度ファイルの生成(S140)の手順を説明する。
ステップS141において、テスト実行部141は、テストケース毎にテストケースを実行する。これにより、テストケース毎に実行結果が得られる。
例えば、実行結果は、テストケース名、入力値、実績値および呼び出し履歴である。
実行結果におけるテストケース名および入力値は、実行されたテストケースの特徴におけるテストケース名および入力値と同じである。
実績値は、テストケースに対応する関数から得られた値である。
呼び出し履歴は、呼び出された関数の呼び出し順である。
ステップS142において、テスト実行部141は、テストケース毎に実行結果を示すファイルを生成する。生成されるファイルを実行結果ファイルという。
図23に、実行結果ファイル241を示す。
実行結果ファイル241は、図17のテストケースのソースコード231Aが実行された場合に生成される実行結果ファイルである。
実行結果ファイル241は、テストケース毎にテストケース名、入力値、実績値および呼び出し履歴を示している。テストケースA−1以外のテストケースに関しては記載を省略している。
図22に戻り、ステップS143から説明を続ける。
ステップS143において、実行結果間類似度算出部142は、実行結果ファイルと実行結果間類似度パラメータとを用いて、テストケースの組毎に実行結果間類似度を算出する。
実行結果間類似度パラメータは、テストケースの組に対応する実行結果の組と実行結果間類似度との関係を示す。
具体的には、実行結果間類似度算出部142は、非対象ファイルを用いて非対象の関数の組を特定し、非対象の関数の組に対応するテストケースの組を除いてテストケースの組毎に実行結果間類似度を算出する。
ステップS144において、実行結果間類似度算出部142は、テストケースの組毎に実行結果間類似度を示すファイルを生成する。
具体的には、実行結果間類似度算出部142は、非対象の関数の組に対応するテストケースの組を除いてテストケースの組毎に実行結果間類似度を示すファイルを生成する。
ステップS144で生成されるファイルが実行結果間類似度ファイルである。
図24に、実行結果間類似度パラメータ242を示す。実行結果間類似度パラメータ242は実行結果間類似度パラメータの具体例である。
実行結果間類似度パラメータ242は関係式を示している。この関係式は、テストケースの組に対応する実行結果の組を用いて実行結果間類似度を算出するために計算される式である。similarity(z)は、種類zの実行結果の類似度を意味する。
例えば、実行結果間類似度算出部142は、非対象の関数の組に対応するテストケースの組を除いてテストケースの組毎に実行結果間類似度を以下のように算出する。
まず、実行結果間類似度算出部142は、図15の非対象ファイル222を参照し、空白のセルに対応する関数の組を特定する。特定される関数の組は、非対象の関数の組ではない関数の組、すなわち、対象の関数の組である。
そして、実行結果間類似度算出部142は、対象の関数の組毎に以下の処理を行う。
まず、実行結果間類似度算出部142は、図19の対応関係ファイル233を用いて、対象の関数の組に対応するテストケースの組を特定する。対象の関数の組に対応するテストケースの組を対象のテストケースの組という。対象の関数の組が関数Aと関数Bとの組である場合、実行結果間類似度算出部142は、関数Aに対応付けられたテストケース名(テストケースA−n)と関数Bに対応付けられたテストケース名(テストケースB−n)とを対応関係ファイル233から抽出する。nは1または2である。テストケースA−nとテストケースB−nとの組が、対象のテストケースの組である。
次に、実行結果間類似度算出部142は、図23の実行結果ファイル241から、対象のテストケースの組に対応する実行結果の組を取得する。対象のテストケースの組に対応する実行結果の組を対象の実行結果の組という。対象のテストケースの組がテストケースA−nとテストケースB−nとの組である場合、実行結果間類似度算出部142は、テストケースA−nの実行結果とテストケースB−nの実行結果とを実行結果ファイル241から取得する。テストケースA−nの実行結果とテストケースB−nの実行結果との組が対象の実行結果の組である。
そして、実行結果間類似度算出部142は、対象の実行結果の組を用いて、図24の実行結果間類似度パラメータ242として示される関係式を計算する。算出される値が実行結果間類似度である。
図25に、実行結果間類似度ファイル243を示す。
実行結果間類似度ファイル243は、図19の対応関係ファイル233と図23の実行結果ファイル241と図24の実行結果間類似度パラメータ242とを用いて算出された実行結果間類似度を図15の非対象ファイル222に設定することによって生成される実行結果間類似度ファイルである。
図2に戻り、ステップS150から説明を続ける。
ステップS150において、総合類似度算出部150は、関数の組毎に総合類似度を算出し、総合類似度ファイルを生成する。
総合類似度は、テストケース間類似度と実行結果間類似度とを考慮して得られる関数間類似度である。
総合類似度ファイルは、関数の組毎に総合類似度を示す。
図26に基づいて、総合類似度ファイルの生成(ステップS150)の手順を説明する。
ステップS151において、総合類似度算出部150は、関数間類似度ファイルとテストケース間類似度ファイルと実行結果間類似度ファイルと総合類似度パラメータとを用いて、関数の組毎に総合類似度を算出する。
総合類似度パラメータは、関数間類似度とテストケース間類似度と実行結果間類似度と総合類似度との関係を示す。
具体的には、総合類似度算出部150は、非対象の関数の組を除いて関数の組毎に総合類似度を算出する。
ステップS152において、総合類似度算出部150は、関数の組毎に総合類似度を示すファイルを生成する。
具体的には、総合類似度算出部150は、非対象の関数の組を除いて関数の組毎に総合類似度を示すファイルを生成する。
ステップS152で生成されるファイルが総合類似度ファイルである。
図27に、総合類似度パラメータ251を示す。総合類似度パラメータ251は総合類似度パラメータの具体例である。
総合類似度パラメータ251は関係式を示している。関係式は、関数間類似度とテストケース間類似度と実行結果間類似度とを用いて総合類似度を算出するために計算される式である。
MAX(V,V)はVとVとのうちの大きい方の値を意味する。
「関数」は関数間類似度を意味し、「テストケース」はテストケース間類似度を意味し、「実行結果」は実行結果間類似度を意味する。
例えば、総合類似度算出部150は、非対象の関数の組を除いて関数の組毎に総合類似度を以下のように算出する。
まず、総合類似度算出部150は、図15の非対象ファイル222を参照し、空白のセルに対応する関数の組を特定する。特定される関数の組は、非対象の関数の組ではない関数の組、すなわち、対象の関数の組である。
そして、総合類似度算出部150は、対象の関数の組毎に以下の処理を行う。
まず、総合類似度算出部150は、図12の関数間類似度ファイル213から、対象の関数の組に対応する関数間類似度を取得する。
次に、総合類似度算出部150は、図21のテストケース間類似度ファイル235から、対象の関数の組に対応するテストケース間類似度を取得する。
次に、総合類似度算出部150は、図25の実行結果間類似度ファイル243から、対象の関数の組に対応する実行結果間類似度を取得する。
そして、総合類似度算出部150は、関数間類似度とテストケース間類似度と実行結果間類似度とを用いて、図27の総合類似度パラメータ251として示される関係式を計算する。算出される値が総合類似度である。
図28に、総合類似度ファイル252を示す。
総合類似度ファイル252は、図19の対応関係ファイル233と図12の関数間類似度ファイル213と図21のテストケース間類似度ファイル235と図25の実行結果間類似度ファイル243と図27の総合類似度パラメータ251とを用いて生成される総合類似度ファイルである。
図2に戻り、ステップS160を説明する。
ステップS160において、表示部192は、関数毎の総合類似度をディスプレイに表示する。具体的には、表示部192は、総合類似度ファイルをディスプレイに表示する。
また、類似特定部160は、非対象ファイルと総合類似度ファイルとを用いて類似の関数の組を特定し、表示部192は類似の関数の組をディスプレイに表示する。
具体的には、類似特定部160は、非対象ファイルを参照し、類似の関数の組を特定する。さらに、類似特定部160は、総合類似度ファイルを用いて類似条件を満たす総合類似度に対応する関数の組を特定する。特定される関数の組が類似の関数の組である。類似条件は、類似の関数の組に対応する総合類似度が満たす条件である。例えば、類似条件は、総合類似度が90以上という条件である。
***実施の形態1の効果***
実施の形態1によれば、コピーアンドペーストされて一部分が追加、変更または削除された類似処理とコピーアンドペーストされて全く変更されていない類似処理とに加えて、構文上の実装が異なるが内容が互いに類似する処理を検出することが可能となる。
また、テスト可能な状態であれば、プログラム全体をコンパイル可能な状態にする必要がないため、準備コストが小さい。
さらに、組み合わせる類似度計算それぞれに閾値または重みづけを設定することによって非類似関数および類似関数が早期に特定され、類似度を計算する時間の削減、および、類似度を計算する精度の向上を図ることができる。その結果、ソフトウェア開発が効率化され、さらに、保守性が向上する。
***実施の形態の補足***
実施の形態において、類似関数抽出装置100の機能はハードウェアで実現してもよい。
図29に、類似関数抽出装置100の機能がハードウェアで実現される場合の構成を示す。
類似関数抽出装置100は処理回路990を備える。処理回路990はプロセッシングサーキットリともいう。
処理回路990は、関数特徴抽出部111と関数間類似度算出部112と非対象特定部120とテストケース特徴抽出部131とテストケース間類似度算出部132とテスト実行部141と実行結果間類似度算出部142と総合類似度算出部150と類似特定部160と記憶部191とを実現する専用の電子回路である。
例えば、処理回路990は、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックIC、GA、ASIC、FPGAまたはこれらの組み合わせである。GAはGate Arrayの略称であり、ASICはApplication Specific Integrated Circuitの略称であり、FPGAはField Programmable Gate Arrayの略称である。
類似関数抽出装置100は、処理回路990を代替する複数の処理回路を備えてもよい。複数の処理回路は、処理回路990の役割を分担する。
実施の形態は、好ましい形態の例示であり、本発明の技術的範囲を制限することを意図するものではない。実施の形態は、部分的に実施してもよいし、他の形態と組み合わせて実施してもよい。フローチャート等を用いて説明した手順は、適宜に変更してもよい。
100 類似関数抽出装置、111 関数特徴抽出部、112 関数間類似度算出部、120 非対象特定部、131 テストケース特徴抽出部、132 テストケース間類似度算出部、141 テスト実行部、142 実行結果間類似度算出部、150 総合類似度算出部、160 類似特定部、191 記憶部、201 ソースコード、211 関数特徴ファイル、212 パラメータファイル、213 関数間類似度ファイル、221 非対象条件ファイル、222 非対象ファイル、231 ソースコード、232 テストケース特徴ファイル、233 対応関係ファイル、234 テストケース間類似度パラメータ、235 テストケース間類似度ファイル、241 実行結果ファイル、242 実行結果間類似度パラメータ、243 実行結果間類似度ファイル、251 総合類似度パラメータ、252 総合類似度ファイル、901 プロセッサ、902 メモリ、903 補助記憶装置、904 入出力インタフェース、990 処理回路。

Claims (15)

  1. 複数の関数に含まれる関数の組毎に関数同士の類似度である関数間類似度を示す関数間類似度ファイルと、
    前記複数の関数に対する複数のテストケースに含まれるテストケースの組毎にテストケース同士の類似度であるテストケース間類似度を示すテストケース間類似度ファイルと、
    前記複数のテストケースに含まれるテストケースの組毎にそれぞれのテストケースを実行して得られる実行結果同士の類似度である実行結果間類似度を示す実行結果間類似度ファイルと、
    テストケース間類似度と実行結果間類似度とを考慮して得られる関数間類似度である総合類似度と関数間類似度とテストケース間類似度と実行結果間類似度との関係を示す総合類似度パラメータとを用いて、
    前記複数の関数に含まれる関数の組毎に総合類似度を算出する総合類似度算出部
    を備える類似関数抽出装置。
  2. 関数毎に関数の特徴を示す関数特徴ファイルと、関数の組に対応する特徴の組と関数間類似度との関係を示すパラメータファイルを用いて、関数の組毎に関数間類似度を算出し、前記関数間類似度ファイルを生成する関数間類似度算出部を備える
    請求項1に記載の類似関数抽出装置。
  3. 関数毎に関数のソースコードから関数の特徴を抽出し、前記関数特徴ファイルを生成する関数特徴抽出部を備える
    請求項2に記載の類似関数抽出装置。
  4. テストケース毎にテストケースの特徴を示すテストケース特徴ファイルと、テストケースの組に対応する特徴の組とテストケース間類似度との関係を示すテストケース間類似度パラメータとを用いて、テストケースの組毎にテストケース間類似度を算出し、前記テストケース間類似度ファイルを生成するテストケース間類似度算出部を備える
    請求項2または請求項3に記載の類似関数抽出装置。
  5. テストケース毎にテストケースのソースコードからテストケースの特徴を抽出し、前記テストケース特徴ファイルを生成するテストケース特徴抽出部を備える
    請求項4に記載の類似関数抽出装置。
  6. テストケース毎に実行結果を示す実行結果ファイルと、テストケースの組に対応する実行結果の組と実行結果間類似度との関係を示す実行結果間類似度パラメータとを用いて、テストケースの組毎に実行結果間類似度を算出し、前記実行結果間類似度ファイルを生成する実行結果間類似度算出部を備える
    請求項4または請求項5に記載の類似関数抽出装置。
  7. テストケース毎にテストケースを実行し、前記実行結果ファイルを生成するテスト実行部を備える
    請求項6に記載の類似関数抽出装置。
  8. 前記類似関数抽出装置は、非対象の関数の組が満たす関数間類似度の条件である非対象条件を示す非対象条件ファイルと、前記関数間類似度ファイルとを用いて、非対象の関数の組を特定する非対象特定部を備え、
    前記テストケース間類似度算出部は、非対象の関数の組に対応するテストケースの組を除いてテストケースの組毎にテストケース間類似度を算出し、非対象の関数の組に対応するテストケースの組を除いてテストケースの組毎にテストケース間類似度を示すファイルを前記テストケース間類似度ファイルとして生成する
    請求項6または請求項7に記載の類似関数抽出装置。
  9. 前記関数間類似度ファイルは、非類似の関数の組以外の関数の組毎に関数間類似度を示し、
    前記非対象特定部は、さらに、前記関数間類似度ファイルを用いて、非類似の関数の組を非対象の関数の組として特定する
    請求項8に記載の類似関数抽出装置。
  10. 前記パラメータファイルは、さらに、非類似の関数の組に対応する特徴の組が満たす非類似条件を示し、
    前記関数間類似度算出部は、前記非類似条件に基づいて非類似の関数の組を特定し、非類似の関数の組以外の関数の組毎に関数間類似度を算出し、非類似の関数の組以外の関数の組毎に関数間類似度を示すファイルを前記関数間類似度ファイルとして生成する
    請求項9に記載の類似関数抽出装置。
  11. 前記実行結果間類似度算出部は、非対象の関数の組に対応するテストケースの組を除いてテストケースの組毎に実行結果間類似度を算出し、非対象の関数の組に対応するテストケースの組を除いてテストケースの組毎に実行結果間類似度を示すファイルを前記実行結果間類似度ファイルとして生成する
    請求項8から請求項10のいずれか1項に記載の類似関数抽出装置。
  12. 前記総合類似度算出部は、非対象の関数の組を除いて関数の組毎に総合類似度を算出する
    請求項8から請求項11のいずれか1項に記載の類似関数抽出装置。
  13. 関数の組毎の総合類似度を表示する表示部を備える
    請求項1から請求項12のいずれか1項に記載の類似関数抽出装置。
  14. 関数の組毎の総合類似度に基づいて類似の関数の組を特定する類似特定部と、
    類似の関数の組を表示する表示部とを備える
    請求項1から請求項12のいずれか1項に記載の類似関数抽出装置。
  15. 複数の関数に含まれる関数の組毎に関数同士の類似度である関数間類似度を示す関数間類似度ファイルと、
    前記複数の関数に対する複数のテストケースに含まれるテストケースの組毎にテストケース同士の類似度であるテストケース間類似度を示すテストケース間類似度ファイルと、
    前記複数のテストケースに含まれるテストケースの組毎にそれぞれのテストケースを実行して得られる実行結果同士の類似度である実行結果間類似度を示す実行結果間類似度ファイルと、
    テストケース間類似度と実行結果間類似度とを考慮して得られる関数間類似度である総合類似度と関数間類似度とテストケース間類似度と実行結果間類似度との関係を示す総合類似度パラメータとを用いて、
    前記複数の関数に含まれる関数の組毎に総合類似度を算出する総合類似度算出部
    としてコンピュータを機能させるための類似関数抽出プログラム。
JP2017031065A 2017-02-22 2017-02-22 類似関数抽出装置および類似関数抽出プログラム Active JP6789844B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2017031065A JP6789844B2 (ja) 2017-02-22 2017-02-22 類似関数抽出装置および類似関数抽出プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017031065A JP6789844B2 (ja) 2017-02-22 2017-02-22 類似関数抽出装置および類似関数抽出プログラム

Publications (2)

Publication Number Publication Date
JP2018136763A JP2018136763A (ja) 2018-08-30
JP6789844B2 true JP6789844B2 (ja) 2020-11-25

Family

ID=63366831

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017031065A Active JP6789844B2 (ja) 2017-02-22 2017-02-22 類似関数抽出装置および類似関数抽出プログラム

Country Status (1)

Country Link
JP (1) JP6789844B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101996009B1 (ko) * 2018-11-22 2019-07-03 넷마블 주식회사 테스트케이스 작성 지원 방법 및 이를 수행하는 서버 및 사용자 단말
CN114385492A (zh) * 2021-12-30 2022-04-22 大连理工大学 一种基于差分测试的高级综合工具优化选项缺陷检测方法
CN114491566B (zh) 2022-04-18 2022-07-05 中国长江三峡集团有限公司 一种基于代码相似性的模糊测试方法、装置及存储介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5699507A (en) * 1995-01-17 1997-12-16 Lucent Technologies Inc. Method of identifying similarities in code segments
JP2009266045A (ja) * 2008-04-26 2009-11-12 Fujitsu Ltd テスト仕様作成支援プログラム及びテスト仕様作成支援方法
JP5757167B2 (ja) * 2011-06-09 2015-07-29 日本電気株式会社 判定作業支援システム、判定作業支援方法、及びプログラム
JP6079243B2 (ja) * 2013-01-10 2017-02-15 日本電気株式会社 障害分析支援装置、障害分析支援方法、及びプログラム

Also Published As

Publication number Publication date
JP2018136763A (ja) 2018-08-30

Similar Documents

Publication Publication Date Title
KR101873619B1 (ko) 상태 기계 격자에서의 불리언 로직
JP2017010476A (ja) 類似判定装置、類似判定方法及び類似判定プログラム
US9177096B2 (en) Timing closure using transistor sizing in standard cells
JP6789844B2 (ja) 類似関数抽出装置および類似関数抽出プログラム
US10628140B2 (en) Program code generation apparatus
JP2018005890A (ja) 未知のプログラムバイナリのための入力発見
JP2009129127A (ja) プログラムの不変物抽出処理プログラム,処理装置,および処理方法,ならびに該プログラムを記憶する記憶媒体
JP6847330B2 (ja) アタックツリー生成装置、アタックツリー生成方法およびアタックツリー生成プログラム
Avetisyan et al. LLVM-based code clone detection framework
Sargsyan et al. Directed fuzzing based on program dynamic instrumentation
WO2015053851A1 (en) Reverse synthesis of digital netlists
US11068463B2 (en) System and method for managing log data
WO2019102786A1 (ja) ソースコード分割装置、ソースコード解析装置、ソースコード分割方法及びソースコード分割プログラム
US8949766B2 (en) Detecting corresponding paths in combinationally equivalent circuit designs
JP6682036B2 (ja) 規模算出装置及び規模算出プログラム
US8261227B2 (en) Circuit design approximation
JP6242170B2 (ja) 回路設計支援装置及びプログラム
Hashemi et al. Graph centrality algorithms for hardware trojan detection at gate-level netlists
KR101559651B1 (ko) 동적 분석 방법 및 장치
Neubauer Kamino: Dynamic approach to semantic code clone detection
JP5578625B2 (ja) プログラム分析装置、プログラム分析方法、及びプログラム
Puhan et al. Program crash analysis based on taint analysis
Huang et al. A Hardware Trojan Trigger Localization Method in RTL based on Control Flow Features
JP6547345B2 (ja) テストケース生成プログラム、テストケース生成方法およびテストケース生成装置
US7650579B2 (en) Model correspondence method and device

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190919

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200811

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200812

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200902

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201104

R150 Certificate of patent or registration of utility model

Ref document number: 6789844

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250