IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 高麗大学校産学協力団の特許一覧

<>
  • 特表-プログラム分析装置及び方法 図1
  • 特表-プログラム分析装置及び方法 図2
  • 特表-プログラム分析装置及び方法 図3
  • 特表-プログラム分析装置及び方法 図4
  • 特表-プログラム分析装置及び方法 図5
  • 特表-プログラム分析装置及び方法 図6
  • 特表-プログラム分析装置及び方法 図7
  • 特表-プログラム分析装置及び方法 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-02-28
(54)【発明の名称】プログラム分析装置及び方法
(51)【国際特許分類】
   G06F 8/30 20180101AFI20240220BHJP
   G06F 8/77 20180101ALI20240220BHJP
   G06F 11/36 20060101ALI20240220BHJP
【FI】
G06F8/30
G06F8/77
G06F11/36 104
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023552139
(86)(22)【出願日】2022-02-25
(85)【翻訳文提出日】2023-08-25
(86)【国際出願番号】 KR2022002759
(87)【国際公開番号】W WO2022182185
(87)【国際公開日】2022-09-01
(31)【優先権主張番号】10-2021-0026393
(32)【優先日】2021-02-26
(33)【優先権主張国・地域又は機関】KR
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.ZIGBEE
(71)【出願人】
【識別番号】314000442
【氏名又は名称】高麗大学校産学協力団
【氏名又は名称原語表記】KOREA UNIVERSITY RESEARCH AND BUSINESS FOUNDATION
【住所又は居所原語表記】145, Anam-ro Seongbuk-gu Seoul 02841, Republic of Korea
(74)【代理人】
【識別番号】100130111
【弁理士】
【氏名又は名称】新保 斉
(72)【発明者】
【氏名】ジョン、ドン フン
(72)【発明者】
【氏名】オ、ハク ジュ
(72)【発明者】
【氏名】ジョン、ミン ソク
【テーマコード(参考)】
5B042
5B376
【Fターム(参考)】
5B042HH08
5B376BC69
(57)【要約】
【課題】 プログラム分析装置及び方法を提供すること。
【解決手段】プログラム分析装置は、複数の分析式のうち少なくとも1つの分析式に対して下降型処理及び上昇型処理のいずれか一方を選択する選択部、前記選択部が下降型処理を選択する場合に、それに応じて第1学習アルゴリズムに基づいて前記少なくとも1つの分析式に対する下降型処理を行い、少なくとも1つの第1学習された分析式を取得する第1学習部、及び前記選択部が上昇型処理を選択する場合に、それに応じて第2学習アルゴリズムに基づいて前記少なくとも1つの分析式に対する下降型処理を行い、少なくとも1つの第2学習された分析式を取得する第2学習部を含んでよい。
【選択図】 図3

【特許請求の範囲】
【請求項1】
複数の分析式のうち少なくとも1つの分析式に対して下降型処理及び上昇型処理のいずれか一方を選択する選択部;
前記選択部が前記下降型処理を選択する場合に、それに応じて第1学習アルゴリズムに基づいて前記少なくとも1つの分析式に対する下降型処理を行い、少なくとも1つの第1学習された分析式を取得する第1学習部;及び、
前記選択部が前記上昇型処理を選択する場合に、それに応じて第2学習アルゴリズムに基づいて前記少なくとも1つの分析式に対する下降型処理を行い、少なくとも1つの第2学習された分析式を取得する第2学習部;を含む
ことを特徴とするプログラム分析装置。
【請求項2】
前記第2学習部は、少なくとも1つの特性の集合及びそれらの不定値を含む対象集合を設定し、初期分析式関数を利用し、初期分析式を定義し、少なくとも1つの節を選択して取得し、前記少なくとも1つの節を一般化し、一般化された節及び前記初期分析式を用いて少なくとも1つの一般化された分析式を取得し、取得された少なくとも1つの一般化された分析式が精巧であるか否かを検討して前記上昇型処理を行う
請求項1に記載のプログラム分析装置。
【請求項3】
前記少なくとも1つの一般化された分析式が精巧なものと判断されないと、前記少なくとも1つの一般化された分析式に対してより一般化された分析式を取得する
請求項2に記載のプログラム分析装置。
【請求項4】
前記選択部は、分析式に対する処理が、与えられたコスト臨界値範囲内で終了可能であれば、下降型処理を選択し、分析式に対する処理が、与えられたコスト臨界値範囲内で終了不可能であれば、上昇型処理を選択する
請求項1に記載のプログラム分析装置。
【請求項5】
前記選択部は、前記複数の分析式の全てに対して下降型処理又は上昇型処理が選択されるまで、前記少なくとも1つの分析式に対して下降型処理及び上昇型処理のいずれか一方を選択する
請求項1に記載のプログラム分析装置。
【請求項6】
前記第1学習部は、少なくとも1つの特性の集合及びそれらの不定値を含む対象集合を設定し、前記対象集合の個別特性の論理和を含むようにして初期分析式を生成し、節及び特性を決定した後に、決定された節及び特性を組み合わせて精製された節を取得し、精製された節及び初期分析式に基づいて新しい分析式を取得し、前記新しい分析式が精巧であるか否かを検討して前記下降型処理を行う
請求項1に記載のプログラム分析装置。
【請求項7】
前記第1学習された分析式及び第2学習された分析式のうち少なくとも1つを用いて分析対象プログラムの少なくとも1つの関数に対する分析深さを決定する分析部;をさらに含む
請求項1に記載のプログラム分析装置。
【請求項8】
複数の分析式のうち少なくとも1つの分析式に対して下降型処理及び上昇型処理のいずれか一方を選択する段階;及び、
前記選択部が前記上昇型処理を選択する場合に、それに応じて第2学習アルゴリズムに基づいて前記少なくとも1つの分析式に対する下降型処理を行い、少なくとも1つの第2学習された分析式を取得する段階;を含む
ことを特徴とするプログラム分析方法。
【請求項9】
前記第2学習アルゴリズムに基づいて前記少なくとも1つの分析式に対する下降型処理を行い、少なくとも1つの第2学習された分析式を取得する段階は、
少なくとも1つの特性の集合及びそれらの不定値を含む対象集合を設定する段階;
初期分析式関数を利用し、初期分析式を定義する段階;
少なくとも1つの節を選択して取得し、前記少なくとも1つの節を一般化する段階;
一般化された節及び前記初期分析式を用いて少なくとも1つの一般化された分析式を取得する段階;及び、
取得された少なくとも1つの一般化された分析式が精巧であるか否かを検討し、前記上昇型処理を行って前記第2学習された分析式を取得する段階;を含む
請求項8に記載のプログラム分析方法。
【請求項10】
前記第2学習アルゴリズムに基づいて前記少なくとも1つの分析式に対する下降型処理を行い、少なくとも1つの第2学習された分析式を取得する段階は、
前記少なくとも1つの一般化された分析式が精巧なものと判断されないと、前記少なくとも1つの一般化された分析式に対してより一般化された分析式を取得する段階;をさらに含む
請求項9に記載のプログラム分析方法。
【請求項11】
前記複数の分析式のうち少なくとも1つの分析式に対して下降型処理及び上昇型処理のいずれか一方を選択する段階は、
分析式に対する処理が、与えられたコスト臨界値範囲内で終了可能であれば、下降型処理を選択する段階;及び、
分析式に対する処理が、与えられたコスト臨界値範囲内で終了不可能であれば、上昇型処理を選択する段階;を含む
請求項8に記載のプログラム分析方法。
【請求項12】
前記複数の分析式の全てに対して下降型処理又は上昇型処理が選択されると、前記少なくとも1つの分析式に対して下降型処理及び上昇型処理のいずれか一方に対する選択を終了する段階;をさらに含む
請求項8に記載のプログラム分析方法。
【請求項13】
前記選択部が下降型処理を選択する場合に、それに応じて第1学習アルゴリズムに基づいて前記少なくとも1つの分析式に対する下降型処理を行い、少なくとも1つの第1学習された分析式を取得する段階;をさらに含む
請求項8に記載のプログラム分析方法。
【請求項14】
前記第1学習アルゴリズムに基づいて前記少なくとも1つの分析式に対する下降型処理を行い、少なくとも1つの第1学習された分析式を取得する段階は、
少なくとも1つの特性の集合及びそれらの不定値を含む対象集合を設定する段階;
前記対象集合の個別特性の論理和を含むようにして初期分析式を生成する段階;
節及び特性を決定した後に、決定された節及び特性を組み合わせて精製された節を取得する段階;
前記精製された節及び前記初期分析式に基づいて新しい分析式を取得する段階;及び、
前記新しい分析式が精巧であるか否かを検討する段階;を含む
請求項13に記載のプログラム分析方法。
【請求項15】
前記第2学習された分析式を用いて分析対象プログラムの少なくとも1つの関数に対する分析深さを決定する段階;をさらに含む
請求項1に記載のプログラム分析方法。

【発明の詳細な説明】
【技術分野】
【0001】
プログラム分析装置及び方法に関する。
【背景技術】
【0002】
プログラム分析方法は、静的分析方法(static analysis)及び動的分析(dynamic analysis)方法とに大別できる。静的分析方法は、プログラムを実行させないでプログラムのソースコードを分析し、規則上の誤りや保安上の脆弱点などを検証及び分析する方法であり、動的分析方法は、プログラムを実行させながらプログラムを分析する方法である。
【0003】
ポインタ分析(pointer analysis)は、プログラム静的分析方法の一種で、プログラムの実行前にプログラム実行過程においてポインタ変数や表現式などが指示できる全ての客体を把握するために利用される。このようなポインタ分析の結果は、バグ検出(Bug detecting)、プログラム検証(Program Verification)又はプログラム自動修正(Automatic Program Repair)などに用いられてよい。迅速で正確なポインタ分析のためには適切な高性能の分析戦略が必要である。例えば、文脈(context)を考慮しないで分析を行う場合に、プログラムの実際実行時には発生しない多数の偽アラームが分析過程で検出されることがある。これらの偽アラームは、開発者の業務を過重にさせ、プログラム開発のリソース及び時間を浪費する原因とされている。逆に、文脈を考慮して分析を行う場合に、検出される偽アラームが相当に減少する他、分析の正確性及び実用性も改善される利点があるが、プログラムの分析にかかる時間が非常に増加するという欠点があった。
【発明の概要】
【発明が解決しようとする課題】
【0004】
正確ながらもより迅速に低コストでプログラムに対する静的分析を自動で行うことができるプログラム分析装置及び方法を提供することを解決しようとする課題とする。
【課題を解決するための手段】
【0005】
上述した課題を解決するためにプログラム分析装置及び方法が提供される。
【0006】
プログラム分析装置は、複数の分析式のうち少なくとも1つの分析式に対して下降型処理及び上昇型処理のいずれか一方を選択する選択部、前記選択部が前記下降型処理を選択する場合に、それに応じて第1学習アルゴリズムに基づいて前記少なくとも1つの分析式に対する下降型処理を行い、少なくとも1つの第1学習された分析式を取得する第1学習部、及び前記選択部が前記上昇型処理を選択する場合に、それに応じて第2学習アルゴリズムに基づいて前記少なくとも1つの分析式に対する下降型処理を行い、少なくとも1つの第2学習された分析式を取得する第2学習部を含んでよい。
【0007】
プログラム分析方法は、複数の分析式のうち少なくとも1つの分析式に対して下降型処理及び上昇型処理のいずれか一方を選択する段階、及び前記選択部が前記上昇型処理を選択する場合に、それに応じて第2学習アルゴリズムに基づいて前記少なくとも1つの分析式に対する下降型処理を行い、少なくとも1つの第2学習された分析式を取得する段階を含んでよい。
【発明の効果】
【0008】
上述したプログラム分析装置及び方法によれば、与えられた少なくとも1つのプログラムを用いて、分析に使用する分析式を自動で生成することが可能になり、この過程で生成された分析式を適用して、他のプログラムを分析する際に迅速で正確な分析を行うことが可能になる。これにより、分析に対するコスト(リソースや労力など)及び所要時間をより節減できるという効果を得ることができる。
【0009】
上述したプログラム分析装置及び方法によれば、プログラム分析において、相対的に深くて細密に分析する部分と相対的に浅くて概略に分析する部分とを選別するための様々な分析深さ(depth)の分析式を自動で生成することが可能になる。
【0010】
上述したプログラム分析装置及び方法によれば、全ての文脈を細密に分析する際のレベルに正確でありながらも、全ての文脈を概略に分析する際のレベルに迅速にプログラムを分析できるという利点も得ることができる。
【0011】
上述したプログラム分析装置及び方法によれば、効果的な戦略によって迅速で正確な静的分析を行うことができるという効果がある。
【図面の簡単な説明】
【0012】
図1】プログラム分析装置の一実施例を示すブロック図である。
図2】順次に分析式を学習する過程の一例を説明するための図である。
図3】分析式学習部の一実施例を示すブロック図である。
図4】分析式学習部の動作に対応するプログラムコードの一例を示す図である。
図5】第1学習部の動作に対応するプログラムコードの一例を示す図である。
図6】第2学習部の動作に対応するプログラムコードの一例を示す図である。
図7】分析部の動作の一例を説明するための図である。
図8】プログラム分析方法の一実施例を示すフローチャートである。
【発明を実施するための形態】
【0013】
以下、明細書全体を通じて、同一の参照符号は、特に事情がない限り、同一の構成要素を示す。以下に使われる「部」が付けられた用語は、ソフトウェア又はハードウェアによって具現されてよく、実施例によって、一つの「部」が一つの物理的又は論理的部品によって具現されたり、複数の「部」が一つの物理的又は論理的部品によって具現されたり、一つの「部」が複数の物理的又は論理的部品によって具現されることも可能である。明細書全体において、ある部分が他の部分と連結されているとするとき、これは、ある部分と他の部分によって、物理的連結を意味することもあり、又は電気的連結を意味することもある。また、ある部分が他の部分を含むとするとき、これは、特に断りのない限り、他の部分以外のさらに他の部分を除外するものでなく、設計者の選択によってさらに他の部分をさらに含み得ることを意味する。第1又は第2などの用語は、一つの部分を他の部分から区別するために使われるもので、特記しない限り、それらが順次的な表現を意味するものではない。また、単数の表現は、文脈において明白に例外がない限り、複数の表現も含んでよい。
【0014】
以下、図1図7を参照して、プログラム分析装置の一実施例について説明する。
【0015】
図1は、プログラム分析装置の一実施例を示すブロック図である。
【0016】
図1を参照すると、プログラム分析装置100は、入出力部101、プロセッサ110及び記憶部190を含んでよく、これらの入出力部101、プロセッサ110及び記憶部190のうち少なくとも2つは、命令/指示やデータなどを電気的信号の形態で伝達できるように備えられたものであってよい。
【0017】
入出力部101は、ユーザ、設計者又は外部の他の電子装置(図示せず)などから、プログラム分析装置100の動作に必要な命令/指示、データ又はプログラム(アプリ、アプリケーション又はソフトウェアと称されてよい。)などを受信したり、及び/又はプロセッサ110の動作による学習結果、分析結果又はプログラムなどをユーザや設計者に視覚的又は聴覚的に出力したり又は外部の他の電子装置に電気的信号の形態で有線又は無線通信ネットワークを通じて伝達することができる。例えば、入出力部101は、記憶部190に記憶された学習対象プログラム10、分析対象プログラム20、少なくとも1つの学習アルゴリズム30又は学習用特質(feature)a,a,…,aなどをユーザや他の電子装置から同時に又は順次に受信したり、及び/又は学習された分析式80や学習結果90などをユーザに出力したり他の電子装置に伝達することができる。入出力部101は、プログラム分析装置100と一体型に備えられたものであってもよく、物理的に分離可能に備えられたものであってもよい。入出力部101は、例えば、キーボード、マウス、タブレット、タッチスクリーン、タッチパッド、トラックボール、トラックパッド、スキャナー装置、映像撮影モジュール、動作感知センサー、減圧センサー、近接センサー及び/又はマイクロフォンなどの入力装置を含んでもよく、ディスプレイ、プリンタ装置、スピーカー装置及び/又は映像出力端子などの出力装置を含んでもよい。また、実施例によって、入出力部101は、外部の他の装置(例えば、携帯用メモリ装置など)からデータなどの受信が可能なデータ入出力端子や、外部の他の装置と有無線通信ネットワークを通じて連結される通信モジュール(例えば、LANカード、近距離通信モジュール又は移動通信モジュールなど)などを含んでもよい。入出力部101は必要によって省略されてもよい。
【0018】
プロセッサ110は、分析対象プログラム20に対する分析を行うための少なくとも1つの分析式80を取得したり、及び/又は取得した少なくとも1つの分析式80を用いて分析対象プログラム20に対する分析(例えば、静的分析)を行うことができる。実施例によって、プロセッサ110は、少なくとも1つの分析式80の取得過程のみを行うことできる。この場合、取得された分析式80は、入出力部101などを通じて他の電子装置に伝送された後、他の電子装置によってプログラムの分析に用いられてもよい。また、プロセッサ110は、少なくとも1つの分析式80ベースのプログラム20の分析過程のみを行うこともできる。このとき、少なくとも1つの分析式80は、他の電子装置によって取得されたものであってもよい。
【0019】
一実施例によれば、プロセッサ110は、少なくとも1つの学習アルゴリズム30に基づき、1つ以上の学習された分析式80を取得する分析式学習部120、及び学習アルゴリズム30によって取得された少なくとも1つの学習された分析式80に基づいて分析を行う分析部140のうち少なくとも一方を含んでよい。ここで、分析式学習部120及び分析部140は、実施例によって、論理的に分離されたものであってもよく、物理的に分離されたものであってもよい。論理的に分離されたものである場合に、分析式学習部120及び分析部140はそれぞれプログラムコードによって具現されるが、それぞれのプログラムコードは、1つ又は2つ以上のプログラムパッケージと共に又は別個に含まれたものであってよい。物理的に分離された場合に、分析式学習部120及び分析部140はそれぞれ別個の半導体チップを採用して具現されたものであってよい。分析式学習部120及び分析部140のそれぞれの詳細な動作及び機能に関する詳細な説明は後述する。プロセッサ110は、例えば、中央処理装置(CPU,Central Processing Unit)、マイクロコントローラユニット(MCU,Micro Controller Unit)、アプリケーションプロセッサ(AP,Application Processor)、マイコン(Micom,Micro Processor)、電子制御ユニット(ECU,Electronic Controlling Unit)及び/又は各種演算処理及び制御信号の生成が可能な他の電子装置などに基づいて具現されてよい。これらの装置は、例えば、1つ又は2つ以上の半導体チップと関連部品などを採用して製作可能である。
【0020】
記憶部190は、プログラム分析装置100の動作に必要なデータやプログラムなどを一時的に又は非一時的に記憶することができる。例えば、記憶部190は、分析式学習部120によって分析式80の学習及び生成のために用いられる少なくとも1つの学習対象プログラム10と、分析部140によって誤りの有無が分析される分析対象プログラム20と、分析式80の学習のために用いられる所定の学習アルゴリズム30と、学習の結果として取得された少なくとも1つの学習された分析式80と、分析対象プログラム20に対する分析結果90、及び/又は分析式80の学習及び生成のために用いられる少なくとも1つの特質a,a,…,aなどを一時的に又は非一時的に記憶することができる。実施例によって、少なくとも1つの学習対象プログラム10と分析対象プログラム20とが同一なであってもよく異なってもよい。少なくとも1つの学習対象プログラム10が分析対象プログラム20である場合に、分析対象プログラム20は省略可能である。実施例によって、記憶部190は、そのデータ及びアルゴリズム10,20,30,80,90のうち一部のデータやアルゴリズムを記憶しなくてもよく、及び/又はそのデータ及びアルゴリズム10,20,30,80,90の他にもより様々な別のデータやアルゴリズムを記憶してもよい。また、記憶部190は、プロセッサ110の動作のための少なくとも1つの設定や命令/指示を記憶したり、又はプロセッサ110の動作のためのプログラム又はプログラムパッケージを記憶することができる。プロセッサ110の動作のためのプログラム又はプログラムパッケージは、設計者によって直接に作成されたり又は修正された後に記憶部190に記憶されたものであってもよく、メモリ装置やDVDなどの記録媒体によって記憶部190に記憶されたものであってもよく、及び/又は有線又は無線通信ネットワークを通じて接続可能な電子ソフトウェア流通網を通じて取得又は更新されたものであってもよい。上述した記憶部190は、例えば、主記憶装置及び補助記憶装置のうち少なくとも1つを含んでよい。主記憶装置は、ROM及び/又はRAMなどを含んでよく、補助記憶装置は、フラッシュメモリ装置、SD(Secure Digital)カード、ソリッドステートドライブ(SSD,Solid State Drive)、ハードディスクドライブ(HDD,Hard Disc Drive)、磁気ドラム、コンパクトディスク(CD)、DVD及び/又はフロッピーディスクなどのようにデータを永久的又は半永久的に記憶可能な少なくとも1つの記録媒体によって具現されてよい。
【0021】
上述したプログラム分析装置100は、1つの情報処理装置又は2つ以上の同一の又は異なる情報処理装置の組合せで具現されてよい。ここで、情報処理装置は、例えば、デスクトップコンピュータ、ラップトップコンピュータ、スマートフォン、タブレットPC、スマート時計、頭部装着型ディスプレイ(HMD:Head Mounted Display)装置、ナビゲーション装置、携帯用ゲーム機、個人用デジタル補助機(PDA:Personal Digital Assistant)、デジタルテレビ、セットトップボックス、人工知能音響再生装置(人工知能スピーカー)、家電機器(冷蔵庫又は洗濯機など)、有人移動体(乗用車、バス又は二輪車などの車両など)、無人移動体(ロボット掃除機など)、有人飛行体、無人飛行体(ドローンなど)、家庭用又は産業用ロボット、産業用機械、電子黒板、電子広告看板又は現金自動預払機(ATM:Automated Teller Machine)などを含んでよいが、これに限定されるものではない。設計者やユーザなどは、状況や条件に応じて、上述した装置の他にも、情報の演算処理及び制御が可能な様々な装置のうち少なくとも1つを上述のプログラム分析装置100として考慮及び適用できる。
【0022】
また、プログラム分析装置100は、外部の他の装置と相互通信を行い、他の装置から学習対象プログラム10、分析対象プログラム20又は学習アルゴリズム30を含むプログラムなどを受信したり、及び/又は分析結果やプログラムなどを他の装置に伝送できるように備えられるが、プログラム分析装置100と他の装置との通信は、有線通信ネットワーク、無線通信ネットワーク又はこれらの組合せに基づいて行われてよい。ここで、無線通信ネットワークは、近距離通信ネットワーク技術及び遠距離通信ネットワーク技術のうち少なくとも1つに基づくが、例えば、近距離通信ネットワーク技術は、ワイファイ(Wi-Fi)、ワイファイダイレクト(Wi-Fi Direct)、ブルートゥース(登録商標)(Bluetooth)、ジグビー(zigbee)通信、CAN通信、RFID(Radio-Frequency IDentification)及び/又はNFC(Near Field Communication)などを含んでよく、遠距離通信ネットワーク技術は、例えば、3GPP(登録商標)、3GPP(登録商標)2、WiBro又はWiMAX系列などの移動通信標準を含んでよい。
【0023】
以下、図2図6を参照して、分析式学習部120の動作をより具体的に説明する。
【0024】
図2は、分析式を順次に学習する過程の一例を説明するための図である。
【0025】
一実施例によれば、プロセッサ110の分析式学習部120は、図2に示すように、1つ又は2つ以上の学習前の分析式f(f、f、fなど)が与えられると(この場合、各分析式f、f、fは、一例としてfalseなどの既に定義された初期値に設定されていてよい。)、これらそれぞれの分析式f(f、f、fなど)に対する学習を少なくとも1回行い、それぞれの分析式f(f、f、fなど)が少なくとも一つの特質a,a,…,aを含んで形成されるようにすることができる。
【0026】
【0027】
分析式fは、例えば、論理式モデル(Disjunctive model)を用いて製作された論理式を含んでよい。具体的には、分析式f(f,f,fなど)は、特質a,a,…,aが与えられた時に、下記の数学式1のように、一つ以上の特質a,a,…,aのうち一つの特質a,a,…,aを単独で又は2つ以上の特質a,a,…,aの組合せで生成されてもよい。
【0028】
【数1】
【0029】
ここで、特質a,a,…,aは、プログラムの構成要素(例えば、ジャバのメソッド(method))などを含んでもよい。以下同一。)がいかなる特質を有しているかを確認又は質疑する関数であり、下記の数学式2のように定義されてよい。
【0030】
【数2】
【0031】
具体的には、例えば、「出力値(output)がvoid」であるとの特質aに対して、[[a]]は、プログラムPにおいて出力値がvoidであるメソッドの集合を意味する。数式や記号の付いた特質(すなわち、複合特質)は、それぞれの個別特質だけでは表現し難い関数の性質を表すことができる。これは、宣言文の形態で表現可能である。例えば、複合特質[[¬a]]は、特質aを有していない関数の集合(例えば、出力値がvoidでない関数の集合)を意味するように定義されたものであってよく、[[a∧a]」は、aとaの2つの特質を全て有する関数の集合を意味するように定義されたものであってよく、及び/又は[[a∨a]」は、aとaの2つの特質のうち少なくとも1つを有する関数の集合を意味するように定義されたものであってよい。これらの他にも、設計者やユーザなどは、任意的選択によって新しい複合特質をさらに定義することができ、また、上述したそれぞれの複合特質を上述と異なるように定義することもできる。
【0032】
一実施例によれば、プロセッサ110は、全ての又は一部の分析式f、f、fに対する学習を同時に行うこともできる。他の実施例によれば、プロセッサ110は、それぞれの分析式f、f、fに対する学習を順次に一つずつ行うこともできる。具体的には、例えば、プロセッサ110は、いずれか一つの分析式fに対する学習を行い、他の分析式fに対する学習を行い、最後に、さらに他の分析式fに対する学習を行うこともできる。それぞれの分析式f、f、fに対する学習を順次に行うことは、学習を行う探索空間を減少させる効果がある。例えば、学習によって分析式f~f(kは0以上の整数)を取得するものの、いずれか一つの分析式fの演算及び取得のために探索しなければならない空間が|S|である場合において、(k+1)個の分析式を1回に求めるための探索空間は|S|k+1である。ところが、このような探索空間|S|k+1は、範囲が広すぎるため、最適の分析式の検出を非常に困難にさせる。しかし、これと違い、1回に1つの分析式のみを求める過程を(k+1)回反復して1つ以上の分析式f~fを順次に取得する場合には、探索空間は(k+1)*|S|と与えられる。したがって、分析式の取得のための探索空間が非常に減少し、その結果、探索効率が上昇し、リソース、時間及びコストが低減し得る。
【0033】
図3は、分析式学習部の一実施例を示すブロック図であり、図4は、分析式学習部の動作に対応するプログラムコードの一例を示す図である。図4で、procedure LEARN(F,P,K,A)関数(メソッド)は、分析式学習部120の動作を示す関数のプログラムコードの一作成例であり、ここで、Fは学習に使用する静的分析器を、Pはプログラムを、kは最大分析深さを、Aは特質a,a,…,aの集合を意味する。
【0034】
上述した分析式f~fの取得のために、分析式学習部120は、図3に示すように、初期処理部121、選択部122、第1学習部124-1及び第2学習部124-2を含んでよい。
【0035】
初期処理部121は、まず、図4に示すように、学習対象プログラム10に関連して学習される全ての又は一部の分析式f~fを、あらかじめ定義された値(例えば、false)に初期化させることができる(第2行)。また、初期処理部121は、関数内で用いられる少なくとも1つの変数(top,bot)に、あらかじめ定義された初期値を割り当てることができる(第3行及び第4行)。例えば、変数top及びbotのそれぞれがk及び0に初期化されてよい。ここで、変数topは、第1学習部124-1によって行われるそれぞれの下降型処理(top-down)を識別するための変数であり、下降型処理が行われる度に1ずつ減少するように設計されたものであってよい(第10行参照)。また、変数botは、第2学習部124-2によって行われるそれぞれの上昇型処理(bottom-up)を識別するための変数であり、上昇型処理が行われる度に1ずつ増加するように設計されてよい(第14行参照)。
【0036】
これと同時に又は順次に、選択部122は、学習対象となる分析式f~fのうち、まだ学習処理がされていないため取得されていない少なくとも1つの分析式(fbot又はftop)を選択することができる(第6行)。未処理された少なくとも1つの分析式(fbot又はftop)は、上述したように、false値に初期化されたものであってよい。続いて、選択部122は、これらの分析式に対して上昇型処理を行うか又は下降型処理を行うかを決定できる(第7行)。言い換えると、選択部122は、学習対象分析式(fbot又はftop)を第1学習部124-1で処理するか又は第2学習部124-2で処理するかを決定できる。
【0037】
一実施例によれば、選択部122は、まず、与えられた論理式パラメータ(Π)に対して現在可能な最も精巧な抽象化を有する分析方法を実行させた時に、与えられた下降型処理(ψtop)が、可能な問題解決手段であるか否かが推定できる。ここで、関数の論理式パラメータ(Π)は、下記の数学式3と与えられてよい。
【0038】
【数3】
【0039】
下降型処理(ψ)は、未学習論理式<f,fi+1,…,f>のうち、分析深さが最も深い論理式fを取得するために行われる処理であり、分析式fに対する下降型処理(ψ)は、例えば、下記の数学式4のように与えられてよい。
【0040】
【数4】
【0041】
【0042】
【数5】
【0043】
【0044】
【数6】
【0045】
【0046】
そのために、選択部122は、仮に、分析式に対する処理が、与えられたコスト臨界値(C)の範囲内で終了すると、所定の値(例えば、true)をリターンさせ、逆に、分析及び処理が、与えられたコスト臨界値(C)の範囲内で終了しないと、選択部122は、所定の値と異なる他の値(例えば、false)をリターンさせる。このような動作は、少なくとも1つの関数(例えば、ChooseProblem(top,Π,F,P,frem))を用いて行われてよい。ここで、ChooseProblem(top,Π,F,P,frem)関数は、下記の数学式7のように表現されてよい。
【0047】
【数7】
【0048】
【0049】
逆に、仮に、所定の値と異なる他の値、すなわちfalseが出力されると、下降型処理(ψtop)は処理不可能なものと判断され、他の処理(すなわち、上昇型処理(ψbot))が選択されて行われる(第11行~第14行)。上昇型処理(ψbot)が行われると、それによって分析式f’topがリターンされてもよい(第12行)。f’topの不定(¬f’top)及びfrem(fremは、f以内fと互いに素である論理式(第6行))値の積集合(frem∧¬f’top)が変数fbotに入力される(第13行)。したがって、f’topの不定値は、fbotとして用いられる他の分離式と分離される。上昇型処理(ψbot)が行われると、これに応じて、変数botには、既存の変数botの値に1を足した値が入力される(第14行)。これにより、相対的に分析深さがより深い分析式に対する学習が行われ得る。すなわち、相対的に分析深さ(i)の浅い分析式fに対する学習が行われて学習された分析式(以下、第2学習された分析式)が取得された後、以後の選択過程において上昇型処理(ψj-1)が選択されると、分析式fi+1に対する学習が行われ、それに応じて他の第2学習された分析式が取得され得る。結果として、上昇型で(すなわち、分析深さが増加する方向に)少なくとも1つの分析式(f、m=i,i+1,i+2,…)が処理(ψ)され、これに対応する1つ又は2つ以上の第2学習された分析式が取得され得る。上昇型処理(ψbot)は、第2処理部124-2によって処理される第2学習アルゴリズム30-2に基づいて行われてよく、第2学習アルゴリズム30-2は、例えば、後述するSPEC2GEN関数を含んでよい。
【0050】
一実施例によれば、上述した上昇型処理(ψ)は、下記の数学式8を演算することによって取得されるように設計されてよい。
【0051】
【数8】
【0052】
【0053】
上述した過程は、変数bot及びtopが互いに同一になるまで(すなわち、top=bot)反復されてよい(第5行及び第16行参照)。反復の過程において、選択部122は状況によって下降型処理(ψtop)を反復選択することもでき、上昇型処理(ψbot)を反復選択することもでき、下降型処理(ψtop)と上昇型処理(ψbot)を交差選択することもできる。したがって、前過程で下降型処理(ψtop)が選択されたとしても、後過程で必ずしも下降型処理(ψ)又は上昇型処理(ψbot)が選択されるものではない。
【0054】
図5は、第1学習部の動作に対応するプログラムコードの一例を示す図である。
【0055】
第1学習部124-1は、上述したように、下降型処理(ψtop)を行うことができる。この場合、下降型処理(ψtop)は、一般的な分析式から特定論理式へと次第に学習を行うアルゴリズムに基づいて具現されたものであってよい。
【0056】
下降型処理(ψtop)は、既に定義された第1学習アルゴリズム30-1によって行われるが、第1学習アルゴリズム30-1は、図5に示す一実施例のように、GEN2SPEC(bot,top,<f,f,…,f>,F,P,A,frem)関数を含んでよい。具体的には、GEN2SPEC関数は、まず、個別特性(a)の集合(A)及びこれらの不定値(¬a)を含む対象集合を設定し(第2行)、分析式fが対象集合の個別特性(a)又は少なくとも1つの個別特性(a)の論理和を含むようにして最も一般的な初期分析式として生成されるように備えられる(第3行)。続いて、分析式fは作業リスト(W)に記録される(第4行)。仮に作業リスト(W)が空集合でないと、作業リスト(W)から精製される節(clause)cが選択され、作業リスト(W)から除去される(第6行及び第7行)。この場合、cの選択は、下記のように、最も多いコストを消耗する節cをリターンするように設計された数学式9に基づいて行われてよい。
【0057】
【数9】
【0058】
特性aが順次に取得されてよい(第8行)。特性aは、節cと最も同一又は類似の特性を意味し、例えば、下記の数学式10を用いて取得できる。
【0059】
【数10】
【0060】
【0061】
図6は、第2学習部の動作に対応するプログラムコードの一例を示す図である。
【0062】
第2学習部124-2は、上述したように、上昇型処理(ψbot)を行うことができる。ここで、上昇型処理(ψbot)は、相対的に少ない個数の関数集合を含む分析式から益々多い個数のプログラム構成要素の集合を含む分析式へと一般化するように具現されたアルゴリズムを含んでよい。
【0063】
一実施例によれば、上昇型処理(ψbot)は、第2学習アルゴリズム30-2に基づいて行われるが、例えば、図6に示すように、SPEC2GEN(bot,top,<f,f,…,f>,F,P,A,frem)関数を用いて行われてよい。一実施例に係るSPEC2GEN関数では、まず、個別特性(a)の集合(A)及びこれらの不定値(¬a)を含む対象集合が設定され(第2行)、分析式fが初期分析式関数(例えば、InitialFormula(A,P))によって定義される(第3行)。
【0064】
ここで、InitialFormula(A,P))は、下記の数学式11のように与えられてよい。
【0065】
【数11】
【0066】
数学式11のClausesThatProveQueries(P,A)は、数学式12と定義されてよい。
【0067】
【数12】
【0068】
数学式12の関数AtomsThatProveQuery(P,q,A)は、数学式13のように規定可能である。
【0069】
【数13】
【0070】
上述した数学式11~13によって生成された初期分析式fは、最も小さい可能な一群の節によるクエリを示す。
【0071】
作業リスト(W)に初期分析式fが順次に入力され(第4行)、作業リストが空集合でなければ(第5行)、少なくとも1つの節cが選択され(第6行)、作業リスト(W)から節cが除去されてよい(第7行)。少なくとも1つの節cは、数学式14のようなChooseClause(W)関数を用いて行われてよい。
【0072】
【数14】
【0073】
節cが取得されると、第2学習部144-2は反復的に節に対する一般化を行う(第8~20行)。具体的には、特質aが数学式10のChooseAtom関数などを用いて取得され(第9行)、仮に、取得された特質aがfalse値であれば、反復は終了し(第10行及び第11行)、逆に、特徴aがfalse値でなければ、一般化された分析式ftopと一般化された集合(Π)がそれぞれ取得される(第13行及び第14行)。分析式ftopは、分析式fから節cを引いた差集合と、節cから特質の集合{a}を引いた差集合との和集合と定義され、一般化された集合(Π)は、各関数f~f間の連結を分離して決定されてよい。
【0074】
【0075】
一方、上述した過程は作業リスト(W)が空集合になるまで反復されてよい(第5行及び第21行)。
【0076】
図7は、分析部の動作の一例を説明するための図である。
【0077】
上述したように、学習された分析式80、例えば、分析式f,f及びf図7に示すように取得され得る。ここで、学習された分析式80は、第1学習部144-1が取得した少なくとも1つの第1学習された分析式及び第2学習部144-2が取得した少なくとも1つの第2学習された分析式のうち少なくとも1つを含んでよい。この場合、分析部140は、学習された分析式80に基づいて、分析対象プログラム20のそれぞれの関数又は2つ以上の関数の組合せなど(20:20-1~20-4、例えばメソッド1~4)がある程度の分析深さで分析されるべきかを決定し、分析結果90を出力することができる。具体的には、例えば、学習結果によって、分析式f(すなわち、最も浅い深さで分析される関数に対する集合)は(¬a∧a)と与えられ、分析式f(すなわち、中間深さで分析される関数に対する集合)は(a∧¬a)と与えられ、分析式f(すなわち、最も深い深さで分析される関数の集合)は(a∧a)∨(¬a∧¬a)と与えられた状況において、分析対象プログラム20のメソッド1(20-1)は特質a及びaを含み({a,a})、メソッド2(20-2)は特質aを含み({a})、メソッド3(20-3)は特質aを含み({a})、メソッド4(20-4)はいかなる特質も含んでいないと、分析部140を、与えられた分析式f~fを用いて、メソッド1及び4 20-1,20-4は極めて正確に分析し、メソッド2 20-2は正確であるが、メソッド1及び4 20-1,20-4に比べては相対的に不定確に分析し、メソッド3 20-3は概略的に分析するように決定及び分類できる。これにより、特定関数が呼び出される時に、当該関数に符合する適切な深さに文脈を区別及び選別して分析戦略を構築可能であり、ポインタ分析などに採用された場合に、ポインタ分析などをより迅速で正確に行うことが可能になる。
【0078】
以下、図8を参照して、プログラム分析方法の一実施例を説明する。
【0079】
図8は、プログラム分析方法の一実施例を示すフローチャートである。
【0080】
図8に示すプログラム分析方法の一実施例によれば、学習対象プログラムと関連し、まず、学習される全ての又は一部の分析式や少なくとも1つの変数(例えば、上述したtop及びbot)に対する初期化が行われてよい(400)。初期化は、分析式をfalse値に処理したり又は変数に0やk値を割り当てることによって行われてよい。
【0081】
初期化と同時に、以前に又は以後に、学習処理が行われていない少なくとも1つの分析式(例えば、ftop又はfbot)が選択されてよい。学習処理が行われていない少なくとも1つの分析式(ftop又はfbot)は、例えば、false値に初期化されたものであってよい。
【0082】
学習処理が行われていない少なくとも1つの分析式に対して上昇型処理が行われるのか又は下降型処理が行われるのかが判断及び決定されてよい(404及び408)。下降型処理及び上昇型処理の選択は、例えば、まず、与えられた関数集合に対して下降型処理が可能か否かが判断される。下降型処理の可否は、上述した数学式7のChooseProblem(top,Π,F,P,frem)関数を用いて判断されてよい。仮に、数学式7のChooseProblem(top,Π,F,P,frem)関数がtrue値を出力すると、下降型処理が可能なものと判断され(404のはい)、逆に、ChooseProblem(top,Π,F,P,frem)がfalse値を出力すると、上昇型処理が可能なものと判断されてよい(404のいいえ)。
【0083】
仮に、下降型で少なくとも1つの分析式に対する処理を行う場合であれば(404のはい)、第1学習アルゴリズム、例えばGEN2SPEC関数に基づいて少なくとも1つの分析式に対する学習が行われる(406)。すなわち、上昇型処理は、第1学習部を用いて上述した通りに行われてよい。これにより、第1学習された分析式が取得できる。
【0084】
逆に、下降型処理を行わない場合であれば(404のいいえ)、それに応じて上昇型処理が行われるが(408)、第2学習アルゴリズム、例えばSPEC2GEN関数に基づいて少なくとも1つの分析式に対する処理が行われてよい。より詳細には、例えば、上昇型処理過程において第2学習アルゴリズムによって分析式f’topが取得され、f’topの不定(¬f’top)及びfrem値の積集合(frem∧¬f’top)が変数fbotに入力される。第2学習アルゴリズムによる処理は、第2学習部を用いて上述した通りに行われてよい。これにより、第2学習された分析式が取得できる。
【0085】
選択的に上昇型処理又は下降型処理を行う過程(404~408)は、全ての又は既に設定された一部の分析式に対する処理方法(すなわち、下降型処理又は上昇型処理)の選択と、それによる処理(すなわち、下降型処理又は上昇型処理)が終了するまで反復して行われてよい(412)。言い換えると、全ての又は既に設定された一部の分析式に対して下降型処理又は上昇型処理が決定されると、分析式に対する上昇型又は下降型処理方法の選択過程とそれによる上昇型又は下降型処理過程は終了してよい。
【0086】
上昇型処理又は下降型処理の決定(404,408)及びそれによる第1学習アルゴリズムの適用(406)又は第2学習アルゴリズムの適用(408)過程の反復結果によって、少なくとも1つの学習された分析式が決定される(412、414)。
【0087】
分析式の決定中に、分析式の決定前に及び/又は分析式の決定後に、分析対象プログラムが入力されてよい(416)。分析対象プログラムは学習対象プログラムであってもよい。分析対象プログラムに対して上述の分析式に基づいて分析が行われ、これにより、分析対象プログラム内のそれぞれの関数に対して分析深さが決定されてよい(418)。分析結果は必要によって外部に出力されてもよい。
【0088】
上述した実施例に係るプログラム分析方法は、コンピュータ装置によって駆動可能なプログラムの形態で具現されてよい。ここで、プログラムは、プログラム命令、データファイル及びデータ構造などを単独で又は組み合わせて含んでよい。プログラムは、機械語コードや高級言語コードを用いて設計及び製作されたものであってよい。プログラムは、上述した方法を具現するために特別に設計されたものであってもよく、コンピュータソフトウェア分野において通常の技術者に既に公知されて使用可能な各種関数や定義を用いて具現されたものであってもよい。また、ここで、コンピュータ装置は、プログラムの機能を実現可能にするプロセッサやメモリなどを含んで具現されたものであってよく、必要によって通信装置をさらに含んでもよい。また、上述したプログラム分析方法を具現するためのプログラムは、コンピュータ可読記録媒体に記録されてよい。コンピュータ可読記録媒体は、例えば、ソリッドステートドライブ(SSD)、ROM、RAM又はフラッシュメモリなどのような半導体記憶装置、ハードディスクやフロッピーディスクなどのような磁気ディスク記憶媒体、コンパクトディスクやDVDなどのような光記録媒体、フロップティカルディスクなどのような磁気-光記録媒体及び磁気テープなど、コンピュータなどの呼び出しによって実行される特定プログラムを格納可能な少なくとも1種の物理的装置を含んでよい。
【0089】
以上、プログラム分析装置及び方法を少なくとも1つの実施例を挙げて説明したが、プログラム分析装置及び方法が上述の実施例に限定されるものではない。当該技術の分野における通常の知識を有する者が上述の実施例に基づいて修正及び変形して具現可能な様々な装置や方法も、上述したプログラム分析装置及び方法の一例になり得る。例えば、説明された技術が説明された方法と異なる順序で行われたり及び/又は説明された構造、機能、回路、装置などの構成要素が説明された方法と異なる形態で結合又は組合わせされたり、他の構成要素又は均等物によって代替されたり又は置換されても、上述したプログラム分析装置及び方法の一実施例になり得る。

図1
図2
図3
図4
図5
図6
図7
図8
【国際調査報告】