JP5093508B2 - ループ最適化システム、ループ最適化方法、及びループ最適化用プログラム - Google Patents
ループ最適化システム、ループ最適化方法、及びループ最適化用プログラム Download PDFInfo
- Publication number
- JP5093508B2 JP5093508B2 JP2008266347A JP2008266347A JP5093508B2 JP 5093508 B2 JP5093508 B2 JP 5093508B2 JP 2008266347 A JP2008266347 A JP 2008266347A JP 2008266347 A JP2008266347 A JP 2008266347A JP 5093508 B2 JP5093508 B2 JP 5093508B2
- Authority
- JP
- Japan
- Prior art keywords
- model
- cfg
- loop
- variable
- subgraph
- 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
Links
Images
Landscapes
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Description
この関連技術は、ソースコード検証においてソースコードをモデル検査可能なモデルに変換し検証を行う技術である。しかし、この関連技術では、ループ内に任意値を含む変数の計算処理があっても特別な処理は行わず、そのままモデル検査を行っている。このため、ループ内で繰り返し任意値に関わる検証を行い、重複する部分の検査の検証時間が必要となっていた。
まず、CFGモデル作成部11は、検査対象コード2をコンパイラ最適化処理を施した上で、検査仕様1を踏まえてCFGモデルを作成し、変換前CFGモデル記憶部21に記憶する。
次に、ループ検出部31は、変換前CFGモデル記憶部21に記憶されたCFGモデルの中に処理対象のループがあるか確認する。ここでは、ループ検出部31は、変換前CFGモデル記憶部21に記憶されたCFGモデルの中にある処理対象のループを検出する。処理対象のループとは、以降のステップS103からステップS107までの処理を実施していない(未実施の)ループである。
データ依存グラフ作成部32は、ループ検出部31により処理対象のループが検出された場合、ループ検出部31により検出されたループ中に出現する値のデータ依存グラフを作成する。
次に、ループ外利用変数マーク部33は、データ依存グラフ作成部32が作成したデータ依存グラフ中の各変数に対し、その変数がループ以降で利用されていればマークを付ける。
次に、部分グラフ検出部34は、データ依存グラフ作成部32が作成したデータ依存グラフの中から、任意値を要素に含み、ループ外利用変数マーク部33がマークした変数をただ一つ含む部分グラフが存在するか確認する。ここでは、部分グラフ検出部34は、データ依存グラフ作成部32が作成したデータ依存グラフの中から、任意値を要素に含み、ループ外利用変数マーク部33がマークした変数をただ一つ含む部分グラフを検出する。
CFGモデル変換部35は、任意値を要素に含み、ループ外利用変数マーク部33がマークした変数をただ一つ含む部分グラフが存在する場合、すなわち、部分グラフ検出部34により該当する部分グラフが検出された場合、部分グラフ検出部34により検出された部分グラフに含まれる変数の計算処理に対応するCFGモデル要素をCFGモデルから削除する。
更に、CFGモデル変換部35は、当該ループの直後に、部分グラフ検出部34が検出した部分グラフにただ一つ含まれる、ループ外利用変数マーク部33がマークした変数に対して、任意値を代入する計算処理に対応するCFGモデル要素をCFGモデルに追加する。
上記の(ステップS102からステップS107までの)処理を処理対象のループがなくなるまで実施した後、検査モデル作成部12は、一連の処理で変換されたCFGモデルを記憶する変換後CFGモデル記憶部22のCFGモデルから検査モデルを作成し、検査モデル記憶部23に記憶する。検査モデル作成処理は、従来技術で行うようにしても良い。
モデル検査実行部13は、検査モデル記憶部23に記憶された検査モデルを読み込み、モデル検査を実施する。
最後に、検査結果出力部14は、結果を検査結果3に出力する。
11…CFGモデル作成部
12…検査モデル作成部
13…モデル検査実行部
14…検査結果出力部
20…記憶部
21…変換前CFGモデル記憶部
22…変換後CFGモデル記憶部
23…検査モデル記憶部
30…任意値ループ制御部
31…ループ検出部
32…データ依存グラフ作成部
33…ループ外利用変数マーク部
34…部分グラフ検出部
35…CFGモデル変換部
Claims (10)
- ソースコードから自動的にモデルを生成し、前記ソースコードに対し、モデル検査による検証を行うモデル検査制御部と、
前記モデル中のループ内に存在する任意値を含む変数の代入式をループ外に移動し、検証時間の短縮を図る任意値ループ制御部と
を具備し、
前記モデル検査制御部は、
前記ソースコード及び検査仕様を読み込み、コンパイラ最適化処理を実施した上でCFG(コントロールフローグラフ)モデルを作成し、前記任意値ループ制御部に提供するCFGモデル作成部と、
前記任意値ループ制御部から提供されたCFGモデルを読み込み、計算木論理(Computation Tree Logic:CTL)を用いた記号モデル検査法に基づいて検査モデルを作成する検査モデル作成部と、
前記検査モデルを読み込み、前記計算木論理(CTL)を用いた記号モデル検査法に基づいて検査を実行するモデル検査実行部と、
前記実行された検査の結果を出力する検査結果出力部と
を具備し、
前記任意値ループ制御部は、
前記モデル検査制御部から提供されたCFGモデルを読み込み、前記CFGモデル中のループを検出するループ検出部と、
前記検出されたループ中に出現する値のデータ依存グラフを作成するデータ依存グラフ作成部と、
前記データ依存グラフ中の各変数のうち、前記検出されたループ以降で利用されている変数にマークするループ外利用変数マーク部と、
前記データ依存グラフの中から、前記任意値を要素に含み、前記マークされた変数を含む部分グラフを検出する部分グラフ検出部と、
前記検出された部分グラフに含まれる変数の計算処理に対応するCFGモデル要素を前記CFGモデルから削除し、前記検出されたループの直後に、前記検出された部分グラフに含まれる前記マークされた変数に対して、前記削除されたCFGモデル要素を前記CFGモデルに追加して、前記モデル検査制御部に提供するCFGモデル変換部と
を具備する
ループ最適化システム。 - 請求項1に記載のループ最適化システムであって、
前記CFGモデル作成部から変換前のCFGモデルを取得して保持し、前記変換前のCFGモデルを前記ループ検出部に前記提供するための変換前CFGモデル記憶部と、
前記CFGモデル変換部から変換後のCFGモデルを取得して保持し、前記変換後のCFGモデルを前記検査モデル作成部に提供するための変換後CFGモデル記憶部と、
前記検査モデル作成部から前記検査モデルを取得して保持し、前記検査モデルを前記モデル検査実行部に提供するための検査モデル記憶部と
を更に具備する
ループ最適化システム。 - 請求項1又は2に記載のループ最適化システムであって、
前記部分グラフ検出部は、前記データ依存グラフの中から、前記任意値を含む変数の代入式を要素に含み、前記マークされた変数をただ一つ含む部分グラフを検出し、
前記CFGモデル変換部は、前記任意値を含む変数の代入式に対応するCFGモデル要素を前記CFGモデルから削除し、前記検出されたループの直後に、前記検出された部分グラフにただ一つ含まれる前記マークされた変数に対して、前記削除されたCFGモデル要素を前記CFGモデルに追加し、前記モデル検査制御部に提供する
ループ最適化システム。 - 請求項3に記載のループ最適化システムであって、
前記部分グラフ検出部は、前記マークされた変数が二つ以上含まれる部分グラフに対しては、前記CFGモデルの変換を制限し、
前記CFGモデル変換部は、前記CFGモデルを前記モデル検査制御部に提供する
ループ最適化システム。 - ソースコードから自動的にモデルを生成し、前記ソースコードに対し、モデル検査による検証を行い、前記モデルの生成の過程で、前記モデル中のループ内に存在する任意値を含む変数の代入式をループ外に移動し、検証時間の短縮を図るためのループ最適化方法であって、
前記ソースコード及び検査仕様を読み込み、コンパイラ最適化処理を実施した上でCFG(コントロールフローグラフ)モデルを作成するステップと、
前記CFGモデルを読み込み、前記CFGモデル中のループを検出するステップと、
前記検出されたループ中に出現する値のデータ依存グラフを作成するステップと、
前記データ依存グラフ中の各変数のうち、前記検出されたループ以降で利用されている変数にマークするステップと、
前記データ依存グラフの中から、前記任意値を要素に含み、前記マークされた変数を含む部分グラフを検出するステップと、
前記検出された部分グラフに含まれる変数の計算処理に対応するCFGモデル要素を前記CFGモデルから削除し、前記検出されたループの直後に、前記検出された部分グラフに含まれる前記マークされた変数に対して、前記削除されたCFGモデル要素を前記CFGモデルに追加し、前記CFGモデルを変換するステップと
前記変換されたCFGモデルを読み込み、計算木論理(Computation Tree Logic:CTL)を用いた記号モデル検査法に基づいて検査モデルを作成するステップと、
前記検査モデルを読み込み、前記計算木論理(CTL)を用いた記号モデル検査法に基づいて検査を実行するステップと、
前記実行された検査の結果を出力するステップと
を含む
ループ最適化方法。 - 請求項5に記載のループ最適化方法であって、
前記データ依存グラフの中から、前記任意値を含む変数の代入式を要素に含み、前記マークされた変数をただ一つ含む部分グラフを検出するステップと、
前記任意値を含む変数の代入式に対応するCFGモデル要素を前記CFGモデルから削除し、前記検出されたループの直後に、前記検出された部分グラフにただ一つ含まれる前記マークされた変数に対して、前記削除されたCFGモデル要素を前記CFGモデルに追加し、前記CFGモデルを変換するステップと
を更に含む
ループ最適化方法。 - 請求項6に記載のループ最適化方法であって、
前記マークされた変数が二つ以上含まれる部分グラフに対しては、前記CFGモデルの変換を制限するステップと、
前記CFGモデルを読み込み、前記計算木論理(CTL)を用いた記号モデル検査法に基づいて検査モデルを作成するステップと
を更に含む
ループ最適化方法。 - ソースコードから自動的にモデルを生成し、前記ソースコードに対し、モデル検査による検証を行い、前記モデルの生成の過程で、前記モデル中のループ内に存在する任意値を含む変数の代入式をループ外に移動し、検証時間の短縮を図るステップをコンピュータに実行させるためのプログラムであって、
前記ソースコード及び検査仕様を読み込み、コンパイラ最適化処理を実施した上でCFG(コントロールフローグラフ)モデルを作成するステップと、
前記CFGモデルを読み込み、前記CFGモデル中のループを検出するステップと、
前記検出されたループ中に出現する値のデータ依存グラフを作成するステップと、
前記データ依存グラフ中の各変数のうち、前記検出されたループ以降で利用されている変数にマークするステップと、
前記データ依存グラフの中から、前記任意値を要素に含み、前記マークされた変数を含む部分グラフを検出するステップと、
前記検出された部分グラフに含まれる変数の計算処理に対応するCFGモデル要素を前記CFGモデルから削除し、前記検出されたループの直後に、前記検出された部分グラフに含まれる前記マークされた変数に対して、前記削除されたCFGモデル要素を前記CFGモデルに追加し、前記CFGモデルを変換するステップと
前記変換されたCFGモデルを読み込み、計算木論理(Computation Tree Logic:CTL)を用いた記号モデル検査法に基づいて検査モデルを作成するステップと、
前記検査モデルを読み込み、前記計算木論理(CTL)を用いた記号モデル検査法に基づいて検査を実行するステップと、
前記実行された検査の結果を出力するステップと
をコンピュータに実行させるための
プログラム。 - 請求項8に記載のプログラムであって、
前記データ依存グラフの中から、前記任意値を含む変数の代入式を要素に含み、前記マークされた変数をただ一つ含む部分グラフを検出するステップと、
前記任意値を含む変数の代入式に対応するCFGモデル要素を前記CFGモデルから削除し、前記検出されたループの直後に、前記検出された部分グラフにただ一つ含まれる前記マークされた変数に対して、前記削除されたCFGモデル要素を前記CFGモデルに追加し、前記CFGモデルを変換するステップと
を更にコンピュータに実行させるための
プログラム。 - 請求項9に記載のプログラムであって、
前記マークされた変数が二つ以上含まれる部分グラフに対しては、前記CFGモデルの変換を制限するステップと、
前記CFGモデルを読み込み、前記計算木論理(CTL)を用いた記号モデル検査法に基づいて検査モデルを作成するステップと
を更にコンピュータに実行させるための
プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008266347A JP5093508B2 (ja) | 2008-10-15 | 2008-10-15 | ループ最適化システム、ループ最適化方法、及びループ最適化用プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008266347A JP5093508B2 (ja) | 2008-10-15 | 2008-10-15 | ループ最適化システム、ループ最適化方法、及びループ最適化用プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2010097328A JP2010097328A (ja) | 2010-04-30 |
JP5093508B2 true JP5093508B2 (ja) | 2012-12-12 |
Family
ID=42258977
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008266347A Expired - Fee Related JP5093508B2 (ja) | 2008-10-15 | 2008-10-15 | ループ最適化システム、ループ最適化方法、及びループ最適化用プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5093508B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8943487B2 (en) * | 2011-01-20 | 2015-01-27 | Fujitsu Limited | Optimizing libraries for validating C++ programs using symbolic execution |
JP2019113997A (ja) * | 2017-12-22 | 2019-07-11 | 国立大学法人京都大学 | プログラム検証装置、プログラム検証方法、プログラム検証のためのコンピュータプログラム、プログラム変換器、プログラム変換方法、プログラム変換のためのコンピュータプログラム、プログラム製造方法、及び検証用プログラム |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004036463A1 (ja) * | 2002-10-15 | 2004-04-29 | Renesas Technology Corp. | コンパイラ及び論理回路の設計方法 |
US7346486B2 (en) * | 2004-01-22 | 2008-03-18 | Nec Laboratories America, Inc. | System and method for modeling, abstraction, and analysis of software |
-
2008
- 2008-10-15 JP JP2008266347A patent/JP5093508B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2010097328A (ja) | 2010-04-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109426723B (zh) | 使用释放后内存的检测方法、系统、设备及存储介质 | |
CN106528100B (zh) | 用于安全关键软件开发的基于模型的技术和过程的系统和方法 | |
CN101473301B (zh) | 迭代静态和动态软件分析 | |
EP3234851B1 (en) | A system and method for facilitating static analysis of software applications | |
US9405906B1 (en) | System and method for enhancing static analysis of software applications | |
US10095512B2 (en) | Program development support device, non-transitory storage medium storing thereon computer-readable program development support program, and program development support method | |
US20180032735A1 (en) | System and method for enhancing static analysis of software applications | |
CN116245074A (zh) | 芯片验证方法、设备及存储介质 | |
JP2017174418A (ja) | モデルチェックのためのデータ構造抽象化 | |
US20150220733A1 (en) | Apparatus and method for detecting a malicious code based on collecting event information | |
Corradini et al. | Resttestgen: An extensible framework for automated black-box testing of restful apis | |
CN108874656A (zh) | 代码测试方法、装置、可读存储介质及计算机设备 | |
US9658938B2 (en) | Iterative test generation based on data source analysis | |
US20200081693A1 (en) | Static enforcement of provable assertions at compile | |
JP5093508B2 (ja) | ループ最適化システム、ループ最適化方法、及びループ最適化用プログラム | |
WO2019142266A1 (ja) | テストケース生成装置、テストケース生成方法およびテストケース生成プログラム | |
JP5233355B2 (ja) | プロパティ生成システムおよびプロパティ検証システム | |
CN113076084A (zh) | 资源文件处理方法、装置、设备及存储介质 | |
US20120291019A1 (en) | Program verification apparatus based on model verifying and storage medium | |
JP5170555B2 (ja) | エラートレース簡略化システム、エラートレース簡略化方法、及びプログラム | |
Mariano et al. | Analyzing graph-based algorithms employed to generate test cases from finite state machines | |
JP2015026262A5 (ja) | ||
JP5545133B2 (ja) | 静的解析処理システム、方法、およびプログラム | |
US8352234B2 (en) | Model generation based on a constraint and an initial model | |
JP6771619B2 (ja) | ソースコードのプロパティを検証するための方法およびシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20120321 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120604 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120725 |
|
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: 20120822 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20120904 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150928 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |