JP2017174418A - モデルチェックのためのデータ構造抽象化 - Google Patents
モデルチェックのためのデータ構造抽象化 Download PDFInfo
- Publication number
- JP2017174418A JP2017174418A JP2017042840A JP2017042840A JP2017174418A JP 2017174418 A JP2017174418 A JP 2017174418A JP 2017042840 A JP2017042840 A JP 2017042840A JP 2017042840 A JP2017042840 A JP 2017042840A JP 2017174418 A JP2017174418 A JP 2017174418A
- Authority
- JP
- Japan
- Prior art keywords
- loop
- data structure
- source code
- loops
- statement
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3608—Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/51—Source to source
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44589—Program code verification, e.g. Java bytecode verification, proof-carrying code
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
- Debugging And Monitoring (AREA)
Abstract
【解決手段】 本開示は、概して、データ構造抽象化に関し、より詳細には、モデルチェックのためにデータ構造を抽象化する方法及びシステムに関する。一実施形態では、方法は、ソースコード内のデータ構造アクセスを識別することを含む。データ構造アクセス内のループが識別され、及びループ内のループタイプが識別される。抽象化コードが、データ構造を抽象化するループタイプに基づいて生成される。データ構造を抽象化することは、各ループについて、アクセスされる要素に基づいて、前記ループのループ本体内の対応する代表的な要素及び非決定論的値のうちの一方でデータ構造アクセスを置換することと、前記ループのループタイプに基づいてデータ構造の要素に作用する前記ループのループ制御ステートメントをなくすことと、ソースコードのループ本体の冒頭及びループ本体後に、複数の非アレイ割り当てを追加することとを含む。
【選択図】 図2
Description
本発明は、2016年3月9日に出願されたインド非仮出願(名称:DATA STRUCTURE ABSTRACTION FOR MODEL CHECKING)第201621008284号の優先権を主張するものである。上記出願の内容全体は、参照により本明細書に援用される。
例1.1は元の入力ソースコードを含む。
に達する。
元のプログラムでは、アサーションが違反される場合、あるインデックスi0で違反し得、a[i0]の値は、初期化又はa[i0]:p及びa[i0]:qにk及びk*kがそれぞれ割り当てられるポイントから達することができる。したがって、例えば、属性が元のプログラムで違反の場合、あるi0で違反することになり、xが、元のプログラム内でa[i0]がとるものと同じ経路をとる抽象プログラムの実行があり、したがって、変換プログラムも属性が違反し得る。この特定の例では、属性が、変換プログラムに対して当てはまらない場合、元のプログラムでも当てはまり得ない。しかし、これは、全ての事例で全体的に当てはまるわけではない。変換コードを以下に示す(例1.2)。
例1.2は、例1.1の元の入力ソースコードに対応する抽象化ソースコードを含む。
である。
である。
102 プロセッサ
104 IOインタフェース
106 メモリ
108 モジュール
110 データ
Claims (15)
- ソースコードのモデルチェックのための前記ソースコードでのデータ構造抽象化のプロセッサにより実施される方法であって、
1つ又は複数のハードウェアプロセッサによって、抽象化するソースコードを受信することと、
前記1つ又は複数のハードウェアプロセッサによって、前記ソースコード内の1つ又は複数のデータ構造アクセスを識別することであって、前記1つ又は複数のデータ構造アクセスは、前記ソースコード内のデータ構造にアクセスするために、前記データ構造の要素を参照する表現を含み、前記1つ又は複数のデータ構造アクセスのうちのデータ構造アクセスは、アレイ、ハッシュテーブル、グラフ、ツリー、クラス、セット、及びマップのうちの1つを含む、識別することと、
前記1つ又は複数のハードウェアプロセッサを介して、前記1つ又は複数のデータ構造アクセスでの1つ又は複数のループを識別することであって、前記1つ又は複数のループのうちのループは、制御ステートメント及びループ本体を含み、前記ループは、前記ループ本体を前記制御ステートメントに基づいて繰り返し実行させる、識別することと、
前記1つ又は複数のハードウェアプロセッサを介して、前記1つ又は複数のループ内の1つ又は複数のループタイプを識別することであって、前記1つ又は複数のループタイプは完全ループ及び部分ループを含み、前記完全ループは、前記データ構造の前記要素の全てにわたり繰り返されるループを含み、及び前記部分ループは、前記データ構造の前記要素のサブセットにわたり繰り返されるループを含む、識別することと、
前記1つ又は複数のハードウェアプロセッサを介して、少なくとも前記1つ又は複数のループタイプに基づいて抽象化コードを生成することであって、前記抽象化コードは、前記データ構造を抽象化することが可能であり、前記データ構造を抽象化することは、前記1つ又は複数のループの各ループについて、
前記ループの現在の反復でアクセスされる前記データ構造の前記要素に基づいて、前記1つ又は複数のデータ構造アクセスを前記ループの前記ループ本体内の対応する代表的な要素及び非決定論的値のうちの一方で置換すること、
前記ループのループタイプに基づいて、前記データ構造の前記要素に作用する前記ループのループ制御ステートメントをなくすこと、及び
前記ループ本体の冒頭及び前記ソースコードの前記ループ本体の後に、複数の非アレイ割り当てを追加すること
を実行することを含む、生成することと、
前記1つ又は複数のハードウェアプロセッサを介して、前記モデルチェックのために前記抽象化コードを提供することと
を含む、プロセッサ実施方法。 - 前記ループの前記ループ制御ステートメントをなくすことは、
前記ループの前記ループタイプが前記完全ループであると判断することと、
前記ループ制御ステートメントをif(真)ステートメントで置換することと
を含む、請求項1に記載の方法。 - 前記ループの前記ループ制御ステートメントをなくすことは、
前記ループの前記ループタイプが前記部分ループであると判断することと、
前記ループ制御ステートメントをif(非決定論的)ステートメントで置換することと
を含む、請求項1に記載の方法。 - 前記データ構造アクセスの発生ロケーションを特定することを更に含み、前記ロケーションは、前記ソースコードのステートメントの左辺(LHS)及び右辺(RHS)のうちの一方である、請求項1に記載の方法。
- 前記データ構造アクセスの前記発生ロケーションが前記ソースコードの前記ステートメントの前記RHSであると判断される場合に、
前記アクセスされる要素が、前記ループの現在の反復と異なる反復に関連付けられるように、前記アクセスされる要素を決定することと、
前記1つ又は複数のデータ構造アクセスを対応する非決定論的値で置換することと
を更に含む、請求項4に記載の方法。 - 前記データ構造アクセスの前記発生ロケーションが前記ソースコードの前記ステートメントの前記LHSであると判断される場合に、前記1つ又は複数のデータ構造アクセスを対応する代表的な要素で置換することを更に含む、請求項4に記載の方法。
- 前記ループ本体の前記冒頭及び前記ソースコードの前記ループ本体の後に、複数の非アレイ割り当てを追加する前に、
前記ステートメントの前記LHSでの前記ループ本体内の非データ構造変数を識別することと、
対応する非決定論的値を前記非データ構造変数に割り当てることと
を更に含む、請求項3に記載の方法。 - レコードを調整するシステムであって、
1つ又は複数のメモリと、
1つ又は複数のハードウェアプロセッサであって、前記1つ又は複数のメモリは前記1つ又は複数のハードウェアプロセッサに接続される、1つ又は複数のハードウェアプロセッサと
を含み、前記1つ又は複数のハードウェアプロセッサは、前記1つ又は複数のメモリに記憶されたプログラム命令を実行して、
抽象化するソースコードを受信することと、
前記ソースコード内の1つ又は複数のデータ構造アクセスを識別することであって、前記1つ又は複数のデータ構造アクセスは、前記ソースコード内の前記データ構造にアクセスするために、前記データ構造の要素を参照する表現を含み、前記1つ又は複数のデータ構造アクセスのうちのデータ構造アクセスは、アレイ、ハッシュテーブル、グラフ、ツリー、クラス、セット、及びマップのうちの1つを含む、識別することと、
前記1つ又は複数のデータ構造アクセスでの1つ又は複数のループを識別することであって、前記1つ又は複数のループのうちのループは、制御ステートメント及びループ本体を含み、前記ループは、前記ループ本体を前記制御ステートメントに基づいて繰り返し実行させる、識別することと、
前記1つ又は複数のループ内の1つ又は複数のループタイプを識別することであって、前記1つ又は複数のループタイプは完全ループ及び部分ループを含み、完全ループは、前記データ構造の要素の全てにわたり繰り返されるループを含み、及び部分ループは、前記データ構造の要素のサブセットにわたり繰り返されるループを含む、識別することと、
少なくとも前記1つ又は複数のループタイプに基づいて抽象化コードを生成することであって、前記抽象化コードは、前記データ構造を抽象化することが可能であり、前記データ構造を抽象化することは、前記1つ又は複数のループの各ループについて、
前記ループの現在の反復でアクセスされる前記データ構造の前記要素に基づいて、前記1つ又は複数のデータ構造アクセスを前記ループの前記ループ本体内の対応する代表的な要素及び非決定論的値のうちの一方で置換すること、
前記ループのループタイプに基づいて、前記データ構造の前記要素に作用する前記ループのループ制御ステートメントをなくすこと、及び
前記ループ本体の冒頭及び前記ソースコードの前記ループ本体の後に、複数の非アレイ割り当てを追加すること
を実行することを含む、生成することと、
前記モデルチェックのために前記抽象化コードを提供することと
を実行することが可能である、システム。 - 前記ループの前記ループ制御ステートメントをなくすために、前記1つ又は複数のハードウェアプロセッサは、
前記ループの前記ループタイプが前記完全ループであると判断するプログラム命令と、
前記ループ制御ステートメントをif(真)ステートメントで置換するプログラム命令と
を実行することが可能である、請求項8に記載のシステム。 - 前記ループの前記ループ制御ステートメントをなくすために、前記1つ又は複数のハードウェアプロセッサは、
前記ループの前記ループタイプが前記部分ループであると判断するプログラム命令と、
前記ループ制御ステートメントをif(非決定論的)ステートメントで置換するプログラム命令と
を実行することが可能である、請求項8に記載のシステム。 - 前記1つ又は複数のハードウェアプロセッサは、前記データ構造アクセスの発生ロケーションを特定するプログラム命令を実行することが可能であり、前記ロケーションは、前記ソースコードのステートメントの左辺(LHS)及び右辺(RHS)のうちの一方である、請求項8に記載のシステム。
- 前記データ構造アクセスの前記発生ロケーションが、前記ソースコードの前記ステートメントの前記RHSであると判断される場合に、前記1つ又は複数のハードウェアプロセッサは、
前記アクセスされる要素が、前記ループの現在の反復と異なる反復に関連付けられるように、前記アクセスされる要素を決定するプログラム命令と、
前記1つ又は複数のデータ構造アクセスを対応する非決定論的値で置換するプログラム命令と
を実行することが可能である、請求項11に記載のシステム。 - 前記データ構造アクセスの前記発生ロケーションが、前記ソースコードの前記ステートメントの前記LHSであると判断される場合に、前記1つ又は複数のハードウェアプロセッサは、前記1つ又は複数のデータ構造アクセスを対応する代表的な要素で置換するプログラム命令を実行することが可能である、請求項11に記載のシステム。
- 前記ループ本体の前記冒頭及び前記ソースコードの前記ループ本体の後に、複数の非アレイ割り当てを追加する前に、前記1つ又は複数のハードウェアプロセッサは、
前記ステートメントの前記LHSでの前記ループ本体内の非データ構造変数を識別するプログラム命令と、
対応する非決定論的値を前記非データ構造変数に割り当てるプログラム命令と
を実行することが可能である、請求項11に記載のシステム。 - 非一時的コンピュータ可読媒体であって、ソースコード内のデータ構造抽象化の方法を実行するコンピュータプログラムを具現した非一時的コンピュータ可読媒体であって、前記方法は、
抽象化するソースコードを受信することと、
前記ソースコード内の1つ又は複数のデータ構造アクセスを識別することであって、前記1つ又は複数のデータ構造アクセスは、前記ソースコード内のデータ構造にアクセスするために、前記データ構造の要素を参照する表現を含む、識別することと、
前記1つ又は複数のデータ構造アクセスでの1つ又は複数のループを識別することであって、前記1つ又は複数のループのうちのループは、制御ステートメント及びループ本体を含み、前記ループは、前記ループ本体を前記制御ステートメントに基づいて繰り返し実行させる、識別することと、
前記1つ又は複数のループ内の1つ又は複数のループタイプを識別することと、
少なくとも前記1つ又は複数のループタイプに基づいて抽象化コードを生成することであって、前記抽象化コードは、前記データ構造を抽象化することが可能であり、前記データ構造を抽象化することは、前記1つ又は複数のループの各ループについて、
前記ループの現在の反復でアクセスされる前記データ構造の前記要素に基づいて、前記ループの前記ループ本体内の対応する代表的な要素及び非決定論的値のうちの一方で前記1つ又は複数のデータ構造アクセスを置換すること、
前記ループのループタイプに基づいて、前記データ構造の前記要素に作用する前記ループのループ制御ステートメントをなくすこと、及び
前記ループ本体の冒頭及び前記ソースコードの前記ループ本体の後に、複数の非アレイ割り当てを追加すること
を実行することを含む、生成することと、
前記モデルチェックのために前記抽象化コードを提供することと
を含む、非一時的コンピュータ可読媒体。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IN201621008284 | 2016-03-09 | ||
IN201621008284 | 2016-03-09 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2017174418A true JP2017174418A (ja) | 2017-09-28 |
JP6976064B2 JP6976064B2 (ja) | 2021-12-01 |
Family
ID=58261510
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017042840A Active JP6976064B2 (ja) | 2016-03-09 | 2017-03-07 | モデルチェックのためのデータ構造抽象化 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10534689B2 (ja) |
EP (1) | EP3217284B1 (ja) |
JP (1) | JP6976064B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019215867A (ja) * | 2018-06-11 | 2019-12-19 | タタ・コンサルタンシー・サーヴィシズ・リミテッド | ソースコードのプロパティを検証するための方法およびシステム |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3493051A1 (en) * | 2017-11-30 | 2019-06-05 | The MathWorks, Inc. | System and methods for evaluating compliance of implementation code with a software architecture specification |
DE102018003142A1 (de) | 2017-12-13 | 2019-06-13 | The Mathworks, Inc. | Automatische Einstellung von Multitasking-Konfigurationen für ein Codeprüfsystem |
EP3859532B1 (en) * | 2020-01-31 | 2022-10-12 | Tata Consultancy Services Limited | Method and system for counter example guided loop abstraction refinement |
US11755294B2 (en) * | 2020-06-09 | 2023-09-12 | The Mathworks, Inc. | Systems and methods for generating service access points for RTE services in code or other RTE service information for use with the code |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
NO984777L (no) * | 1998-04-06 | 1999-10-05 | Cable As V Knut Foseide Safety | Tyverivarslingskabel |
US7058925B2 (en) | 2002-04-30 | 2006-06-06 | Microsoft Corporation | System and method for generating a predicate abstraction of a program |
ATE526628T1 (de) | 2004-01-22 | 2011-10-15 | Nec Lab America Inc | System und verfahren zum modellieren, abstrahieren und analysieren von software |
US7921411B2 (en) | 2006-10-20 | 2011-04-05 | International Business Machines Corporation | Model checking of non-terminating software programs |
US8612938B2 (en) * | 2009-01-05 | 2013-12-17 | Tata Consultancy Services Limited | System and method for automatic generation of test data to satisfy modified condition decision coverage |
US8627273B2 (en) | 2009-07-22 | 2014-01-07 | International Business Machines Corporation | Model checking of liveness property in a phase abstracted model |
US8473883B2 (en) * | 2011-08-03 | 2013-06-25 | International Business Machines Corporation | Abstraction for arrays in integrated circuit models |
JP5923636B2 (ja) * | 2014-02-27 | 2016-05-24 | タタ コンサルタンシー サービシズ リミテッドTATA Consultancy Services Limited | モデル検査のためのループ抽象化 |
-
2017
- 2017-03-02 US US15/448,097 patent/US10534689B2/en active Active
- 2017-03-02 EP EP17158901.3A patent/EP3217284B1/en active Active
- 2017-03-07 JP JP2017042840A patent/JP6976064B2/ja active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019215867A (ja) * | 2018-06-11 | 2019-12-19 | タタ・コンサルタンシー・サーヴィシズ・リミテッド | ソースコードのプロパティを検証するための方法およびシステム |
Also Published As
Publication number | Publication date |
---|---|
JP6976064B2 (ja) | 2021-12-01 |
US10534689B2 (en) | 2020-01-14 |
EP3217284A1 (en) | 2017-09-13 |
US20170262356A1 (en) | 2017-09-14 |
EP3217284B1 (en) | 2022-06-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6976064B2 (ja) | モデルチェックのためのデータ構造抽象化 | |
US8516443B2 (en) | Context-sensitive analysis framework using value flows | |
EP2420931B1 (en) | Solving hybrid constraints to generate test cases for validating a software module | |
US20120233599A1 (en) | Efficient model checking technique for finding software defects | |
EP2420932B1 (en) | Solving hybrid constraints to validate a security software module for detecting injection attacks | |
EP2407887B1 (en) | Solving hybrid constraints to validate specification requirements of a software module | |
US8549502B2 (en) | Compiler with user-defined type inference rules | |
US20210103514A1 (en) | Reusable test cases for identifiable patterns | |
US20150143342A1 (en) | Functional validation of software | |
CN114579452A (zh) | 接口影响检测方法及相关设备 | |
CN111782207A (zh) | 任务流代码生成方法、装置、设备及存储介质 | |
US9116714B2 (en) | Methods and systems for file processing | |
US9405652B2 (en) | Regular expression support in instrumentation languages using kernel-mode executable code | |
US9158506B2 (en) | Loop abstraction for model checking | |
CN113094252A (zh) | 测试用例生成方法、装置、计算机设备及存储介质 | |
US10528691B1 (en) | Method and system for automated selection of a subset of plurality of validation tests | |
CN110888972A (zh) | 一种基于Spark Streaming的敏感内容识别方法及装置 | |
US11182272B2 (en) | Application state monitoring | |
US20150261646A1 (en) | Selective profiling of applications | |
US11755458B2 (en) | Automatic software behavior identification using execution record | |
CN115686467A (zh) | 动态语言中的类型推断 | |
CN117075912B (zh) | 用于程序语言转换的方法、编译方法及相关设备 | |
US11036613B1 (en) | Regression analysis for software development and management using machine learning | |
CN117370160A (zh) | 代码审核方法、装置、计算机设备、存储介质和程序产品 | |
CN116362230A (zh) | 参数校验方法、装置、计算机设备可存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20200130 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20210209 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210507 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20210709 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210921 |
|
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: 20211015 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20211109 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6976064 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |