JP6771619B2 - ソースコードのプロパティを検証するための方法およびシステム - Google Patents
ソースコードのプロパティを検証するための方法およびシステム Download PDFInfo
- Publication number
- JP6771619B2 JP6771619B2 JP2019108766A JP2019108766A JP6771619B2 JP 6771619 B2 JP6771619 B2 JP 6771619B2 JP 2019108766 A JP2019108766 A JP 2019108766A JP 2019108766 A JP2019108766 A JP 2019108766A JP 6771619 B2 JP6771619 B2 JP 6771619B2
- Authority
- JP
- Japan
- Prior art keywords
- properties
- source code
- group
- grouping
- groups
- 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
Links
Images
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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Description
本出願は、2018年6月11日に出願された、インド特許出願第201821021741号の優先権を主張する。
102 メモリ
104 プロセッサ
106 入出力(I/O)インターフェース
108 リポジトリ
Claims (12)
- ソースコードのプロパティを検証するための、プロセッサ(104)で実装される方法であって、前記方法は、
前記プロセッサ(104)によって、プロパティを検証するためにソースコードを受信するステップであって、前記ソースコードが、グループ化されるべき、アサーションに対応する複数のプロパティでアノテーションを付けられ、前記複数のプロパティがユーザによって定義される、ステップと、
前記プロセッサ(104)によって、グループ化技法に基づいて前記複数のプロパティを複数のグループにマージするために前記ソースコードを分析するステップであって、1つまたは複数のプロパティが、前記複数のグループの中の各グループ下にグループ化され、前記グループ化技法が、スライス包摂(SS)グループ化技法と、データフロー依存(DD)グループ化技法と、データおよび制御フロー依存(DC)グループ化技法とのうちの1つを含み、前記グループ化技法が独立グループを作成する、ステップと、
前記プロセッサ(104)によって、前記複数のグループの中の各グループのためのスライスを作成するステップと、
前記プロセッサ(104)によって、各グループのために作成された各スライスを検証するステップであって、各グループ内の前記1つまたは複数のプロパティの前記検証が同時に実施される、ステップと
を含む、方法。 - 前記スライス包摂(SS)グループ化技法は、
前記ソースコードの前記複数のプロパティの中の各プロパティのためのバックワードスライスを計算することであって、ソースコードロケーションのセットに関する前記バックワードスライスが、前記ソースコードの前記所与のロケーションにおいて読み取られた変数の値に影響を及ぼすことができる前記ソースコードのすべての可能なステートメントのセットである、計算することと、
前記複数のグループを作成するために、前記複数のプロパティからの1つまたは複数のプロパティを単一のグループ中にマージすることであって、各グループ中の前記1つまたは複数のプロパティが、各プロパティのために計算された前記バックワードスライスの事前定義サブセット関係に基づいて互いに関係する、マージすることと
を含む、請求項1に記載の方法。 - 前記データフロー依存(DD)グループ化技法は、
前記ソースコードの変数のための推移データフロー依存を計算することであって、前記変数が、前記ソースコードの前記複数のプロパティからのプロパティのセットのために読み取られる、計算することと、
前記複数のグループを作成するために、前記複数のプロパティからの1つまたは複数のプロパティを単一のグループ中にマージすることであって、各グループ中の前記1つまたは複数のプロパティが、各プロパティのための前記計算された推移データフロー依存の事前定義サブセット関係に基づいて互いに関係する、マージすることと
を含む、請求項1に記載の方法。 - 前記データおよび制御フロー依存(DC)グループ化技法は、
前記データフロー依存(DD)グループ化技法によって形成された前記複数のグループを識別することと、
前記データフロー依存(DD)グループ化技法によって形成された各グループ中の前記プロパティの推移制御フロー依存を計算することと、
前記複数のグループを作成するために、前記複数のプロパティからの1つまたは複数のプロパティを単一のグループ中にマージすることであって、各グループ中の前記1つまたは複数のプロパティが、前記データフロー依存(DD)グループ化技法によって形成された各グループ中の各プロパティのための前記計算された推移制御フロー依存の事前定義サブセット関係に基づいて互いに関係する、マージすることと
を含む、請求項1に記載の方法。 - ソースコードのプロパティを検証するシステム(100)であって、前記システム(100)は、
命令を記憶するメモリ(102)と、
1つまたは複数の入出力(I/O)インターフェース(106)と、
前記1つまたは複数のI/Oインターフェース(106)を介して前記メモリ(102)に結合された1つまたは複数のプロセッサ(104)とを備え、前記プロセッサ(104)は、
プロパティを検証するためにソースコードを受信することであって、前記ソースコードが、グループ化されるべき、アサーションに対応する複数のプロパティでアノテーションを付けられ、前記複数のプロパティがユーザによって定義される、受信することと、
グループ化技法に基づいて前記複数のプロパティを複数のグループにマージするために前記ソースコードを分析することであって、1つまたは複数のプロパティが、前記複数のグループの中の各グループ下にグループ化され、前記グループ化技法が、スライス包摂(SS)グループ化技法と、データフロー依存(DD)グループ化技法と、データおよび制御フロー依存(DC)グループ化技法とのうちの1つを含み、前記グループ化技法が独立グループを作成する、分析することと、
前記複数のグループの中の各グループのためのスライスを作成することと、
各グループのために作成された各スライスを検証することであって、各グループ内の前記1つまたは複数のプロパティの前記検証が同時に実施される、検証することと
を行うように前記命令によって構成される、
システム(100)。 - 前記スライス包摂(SS)グループ化技法は、
前記ソースコードの前記複数のプロパティの中の各プロパティのためのバックワードスライスを計算することであって、ソースコードロケーションのセットに関する前記バックワードスライスが、前記ソースコードの前記所与のロケーションにおいて読み取られた変数の値に影響を及ぼすことができる前記ソースコードのすべての可能なステートメントのセットである、計算することと、
前記複数のグループを作成するために、前記複数のプロパティからの1つまたは複数のプロパティを単一のグループ中にマージすることであって、各グループ中の前記1つまたは複数のプロパティが、各プロパティのために計算された前記バックワードスライスの事前定義サブセット関係に基づいて互いに関係する、マージすることと
を含む、請求項5に記載のシステム(100)。 - 前記データフロー依存(DD)グループ化技法は、
前記ソースコードの変数のための推移データフロー依存を計算することであって、前記変数が、前記ソースコードの前記複数のプロパティからのプロパティのセットのために読み取られる、計算することと、
前記複数のグループを作成するために、前記複数のプロパティからの1つまたは複数のプロパティを単一のグループ中にマージすることであって、各グループ中の前記1つまたは複数のプロパティが、各プロパティのための前記計算された推移データフロー依存の事前定義サブセット関係に基づいて互いに関係する、マージすることと
を含む、請求項5に記載のシステム(100)。 - 前記データおよび制御フロー依存(DC)グループ化技法は、
前記データフロー依存(DD)グループ化技法によって形成された前記複数のグループを識別することと、
前記データフロー依存(DD)グループ化技法によって形成された各グループ中の前記プロパティの推移制御フロー依存を計算することと、
前記複数のグループを作成するために、前記複数のプロパティからの1つまたは複数のプロパティを単一のグループ中にマージすることであって、各グループ中の前記1つまたは複数のプロパティが、前記データフロー依存(DD)グループ化技法によって形成された各グループ中の各プロパティのための前記計算された推移制御フロー依存の事前定義サブセット関係に基づいて互いに関係する、マージすることと
を含む、請求項5に記載のシステム(100)。 - 1つまたは複数のハードウェアプロセッサによって実行されたとき、
プロセッサ(104)によって、プロパティを検証するためにソースコードを受信することであって、前記ソースコードが、グループ化されるべき、アサーションに対応する複数のプロパティでアノテーションを付けられ、前記複数のプロパティがユーザによって定義される、受信することと、
前記プロセッサ(104)によって、グループ化技法に基づいて前記複数のプロパティを複数のグループにマージするために前記ソースコードを分析することであって、1つまたは複数のプロパティが、前記複数のグループの中の各グループ下にグループ化され、前記グループ化技法が、スライス包摂(SS)グループ化技法と、データフロー依存(DD)グループ化技法と、データおよび制御フロー依存(DC)グループ化技法とのうちの1つを含み、前記グループ化技法が独立グループを作成する、分析することと、
前記プロセッサ(104)によって、前記複数のグループの中の各グループのためのスライスを作成することと、
前記プロセッサ(104)によって、各グループのために作成された各スライスを検証することであって、各グループ内の前記1つまたは複数のプロパティの前記検証が同時に実施される、検証することと
を含む行為を実施する1つまたは複数の命令を備える1つまたは複数の非一時的機械可読情報記憶媒体。 - 前記スライス包摂(SS)グループ化技法は、
前記ソースコードの前記複数のプロパティの中の各プロパティのためのバックワードスライスを計算することであって、ソースコードロケーションのセットに関する前記バックワードスライスが、前記ソースコードの前記所与のロケーションにおいて読み取られた変数の値に影響を及ぼすことができる前記ソースコードのすべての可能なステートメントのセットである、計算することと、
前記複数のグループを作成するために、前記複数のプロパティからの1つまたは複数のプロパティを単一のグループ中にマージすることであって、各グループ中の前記1つまたは複数のプロパティが、各プロパティのために計算された前記バックワードスライスの事前定義サブセット関係に基づいて互いに関係する、マージすることと
を含む、請求項9に記載の1つまたは複数の非一時的機械可読情報記憶媒体。 - 前記データフロー依存(DD)グループ化技法は、
前記ソースコードの変数のための推移データフロー依存を計算することであって、前記変数が、前記ソースコードの前記複数のプロパティからのプロパティのセットのために読み取られる、計算することと、
前記複数のグループを作成するために、前記複数のプロパティからの1つまたは複数のプロパティを単一のグループ中にマージすることであって、各グループ中の前記1つまたは複数のプロパティが、各プロパティのための前記計算された推移データフロー依存の事前定義サブセット関係に基づいて互いに関係する、マージすることと
を含む、請求項9に記載の1つまたは複数の非一時的機械可読情報記憶媒体。 - 前記データおよび制御フロー依存(DC)グループ化技法は、
前記データフロー依存(DD)グループ化技法によって形成された前記複数のグループを識別することと、
前記データフロー依存(DD)グループ化技法によって形成された各グループ中の前記プロパティの推移制御フロー依存を計算することと、
前記複数のグループを作成するために、前記複数のプロパティからの1つまたは複数のプロパティを単一のグループ中にマージすることであって、各グループ中の前記1つまたは複数のプロパティが、前記データフロー依存(DD)グループ化技法によって形成された各グループ中の各プロパティのための前記計算された推移制御フロー依存の事前定義サブセット関係に基づいて互いに関係する、マージすることと
を含む、請求項9に記載の1つまたは複数の非一時的機械可読情報記憶媒体。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IN201821021741 | 2018-06-11 | ||
IN201821021741 | 2018-06-11 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2019215867A JP2019215867A (ja) | 2019-12-19 |
JP6771619B2 true JP6771619B2 (ja) | 2020-10-21 |
Family
ID=66826837
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019108766A Active JP6771619B2 (ja) | 2018-06-11 | 2019-06-11 | ソースコードのプロパティを検証するための方法およびシステム |
Country Status (3)
Country | Link |
---|---|
US (1) | US10877870B2 (ja) |
EP (1) | EP3582109B1 (ja) |
JP (1) | JP6771619B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP4418126A2 (en) | 2021-06-04 | 2024-08-21 | LDRA Technology, Inc. | Verification of control coupling and data coupling analysis in software code |
Family Cites Families (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH086816A (ja) * | 1994-06-22 | 1996-01-12 | Toshiba Corp | 並行プログラムの逐次化装置 |
JPH0916389A (ja) * | 1995-07-03 | 1997-01-17 | Nippon Telegr & Teleph Corp <Ntt> | プログラム部品自動生成方法及び装置 |
US6029002A (en) * | 1995-10-31 | 2000-02-22 | Peritus Software Services, Inc. | Method and apparatus for analyzing computer code using weakest precondition |
US6179491B1 (en) * | 1997-02-05 | 2001-01-30 | International Business Machines Corporation | Method and apparatus for slicing class hierarchies |
US7174536B1 (en) * | 2001-02-12 | 2007-02-06 | Iowa State University Research Foundation, Inc. | Integrated interactive software visualization environment |
US6971084B2 (en) * | 2001-03-02 | 2005-11-29 | National Instruments Corporation | System and method for synchronizing execution of a batch of threads |
EP1331554B1 (en) * | 2001-06-13 | 2017-03-08 | Accenture Global Services Limited | Method of producing a software product |
US20040073889A1 (en) * | 2002-10-15 | 2004-04-15 | Baecker Thomas Peter | Method of producing a software product |
US7620946B2 (en) * | 2003-05-05 | 2009-11-17 | Jeffry Thomas Russell | Program slicing for codesign of embedded systems |
US7313772B2 (en) * | 2005-05-24 | 2007-12-25 | International Business Machines Corporation | Systems, methods, and media for block-based assertion generation, qualification and analysis |
JP4919825B2 (ja) * | 2007-01-30 | 2012-04-18 | 株式会社東芝 | プログラム開発装置、プログラム開発方法およびプログラム |
US20080196012A1 (en) * | 2007-02-12 | 2008-08-14 | Panaya Ltd. | System and methods for static analysis of large computer programs and for presenting the results of the analysis to a user of a computer program |
US7949511B2 (en) * | 2007-11-12 | 2011-05-24 | Nec Laboratories America, Inc. | System and method for tunneling and slicing based BMC decomposition |
US8856726B2 (en) * | 2009-09-14 | 2014-10-07 | The Mathworks, Inc. | Verification of computer-executable code generated from a slice of a model |
US8578342B2 (en) * | 2009-07-14 | 2013-11-05 | International Business Machines Corporation | Fault detection and localization in dynamic software applications requiring user inputs and persistent states |
US8612954B2 (en) * | 2009-08-17 | 2013-12-17 | International Business Machines Corporation | Fine slicing: generating an executable bounded slice for program |
US8543974B2 (en) * | 2009-08-31 | 2013-09-24 | International Business Machines Corporation | Plan-based program slicing |
US8448139B2 (en) * | 2009-10-05 | 2013-05-21 | International Business Machines Corporation | Automatic correction of application based on runtime behavior |
US8443343B2 (en) * | 2009-10-28 | 2013-05-14 | Intel Corporation | Context-sensitive slicing for dynamically parallelizing binary programs |
US8732669B2 (en) * | 2011-03-11 | 2014-05-20 | Oracle International Corporation | Efficient model checking technique for finding software defects |
US8583965B2 (en) * | 2011-06-21 | 2013-11-12 | International Business Machines Corporation | System and method for dynamic code analysis in presence of the table processing idiom |
US20130179863A1 (en) * | 2012-01-11 | 2013-07-11 | Microsoft Corporation | Bug variant detection using program analysis and pattern identification |
CN103914372B (zh) * | 2012-12-31 | 2017-11-10 | 北京启明星辰信息技术股份有限公司 | 基于程序切片的代码缺陷静态检测的并行化方法及装置 |
CN103559122B (zh) * | 2013-10-14 | 2016-04-27 | 西安交通大学 | 基于程序行为切片的测试案例约减方法 |
US9069562B2 (en) * | 2013-10-23 | 2015-06-30 | International Business Machines Corporation | Mobile computing program slicing and behavior |
US9569345B2 (en) * | 2013-12-27 | 2017-02-14 | International Business Machines Corporation | Architectural failure analysis |
US9389890B2 (en) * | 2014-03-27 | 2016-07-12 | Microsoft Technology Licensing, Llc | Hierarchical directives-based management of runtime behaviors |
WO2016060110A1 (ja) * | 2014-10-14 | 2016-04-21 | 日本電信電話株式会社 | 解析装置、解析方法、および、解析プログラム |
EP3217284B1 (en) * | 2016-03-09 | 2022-06-08 | Tata Consultancy Services Limited | Data structure abstraction for model checking |
US11663110B2 (en) * | 2016-10-31 | 2023-05-30 | International Business Machines Corporation | Analysis to check web API code usage and specification |
JP6486574B2 (ja) * | 2016-11-17 | 2019-03-20 | 三菱電機株式会社 | プログラムコード生成装置、プログラムコード生成方法及びプログラムコード生成プログラム |
US10379825B2 (en) * | 2017-05-22 | 2019-08-13 | Ab Initio Technology Llc | Automated dependency analyzer for heterogeneously programmed data processing system |
-
2019
- 2019-06-10 US US16/436,791 patent/US10877870B2/en active Active
- 2019-06-11 EP EP19179342.1A patent/EP3582109B1/en active Active
- 2019-06-11 JP JP2019108766A patent/JP6771619B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
EP3582109B1 (en) | 2023-05-03 |
US10877870B2 (en) | 2020-12-29 |
EP3582109A1 (en) | 2019-12-18 |
JP2019215867A (ja) | 2019-12-19 |
US20190377658A1 (en) | 2019-12-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6320475B2 (ja) | 誤検出の効率的な排除に基づく静的解析 | |
US10296447B2 (en) | Automated software program repair | |
JP4485330B2 (ja) | 回路の有向ファルシフィケーション | |
JP5786511B2 (ja) | ソフトウェア・モジュールの仕様要件を検証するためのハイブリッド制約条件の求解 | |
JP7110789B2 (ja) | 自動化されたソフトウェアプログラム修復候補の選択 | |
US8645761B2 (en) | Precise fault localization | |
US10049031B2 (en) | Correlation of violating change sets in regression testing of computer software | |
EP3264274B1 (en) | Input discovery for unknown program binaries | |
US20110145799A1 (en) | Path-sensitive dataflow analysis including path refinement | |
EP3819770B1 (en) | System and method for software verification | |
US9396095B2 (en) | Software verification | |
KR102035246B1 (ko) | 백워드 패스파인딩을 이용한 소프트웨어 취약점 분석 장치 및 방법 | |
Sargsyan et al. | Directed fuzzing based on program dynamic instrumentation | |
JP6771619B2 (ja) | ソースコードのプロパティを検証するための方法およびシステム | |
CN108874656A (zh) | 代码测试方法、装置、可读存储介质及计算机设备 | |
US11474795B2 (en) | Static enforcement of provable assertions at compile | |
US9250890B2 (en) | Optimizing performance of a computer system in response to a software change | |
US10528691B1 (en) | Method and system for automated selection of a subset of plurality of validation tests | |
WO2019142266A1 (ja) | テストケース生成装置、テストケース生成方法およびテストケース生成プログラム | |
WO2016133607A1 (en) | Small scale integration test generation | |
US10055341B2 (en) | To-be-stubbed target determining apparatus, to-be-stubbed target determining method and non-transitory recording medium storing to-be-stubbed target determining program | |
KR20130022280A (ko) | 저비용 오류 기반 프로그램 테스트 장치 및 그 방법 | |
KR102090229B1 (ko) | 바이너리에 대한 보안 취약점 및 그 원인 위치의 식별 방법 및 그 장치 | |
US8516453B2 (en) | Partition-based static analysis of computer software applications | |
JP5093508B2 (ja) | ループ最適化システム、ループ最適化方法、及びループ最適化用プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20190719 |
|
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: 20200831 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20200831 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20200929 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6771619 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |