IP Library › Granted Patent US 9,389,984
Granted Patent B2
US 9,389,984 · App. 14/022,232 · Granted Jul 12, 2016

Directing verification towards bug-prone portions

Inventors: Hana Chockler (Haifa, IL); Oded Margalit (Ramat Gan, IL); Dmitry Pidan (Netanya, IL); Sitvanit Ruah (Rehovot, IL)
Assignee: International Business Machines Corporation
G06F11/3616G06F11/3688G06F11/3676
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,389,984
App. No.
14/022,232
Granted
Jul 12, 2016
Kind
B2
Abstract

A method, system and product for directing verification towards bug-prone portions. The method comprising syntactically analyzing a computer program to identify portions of the computer program that correspond to one or more bug patterns; and performing verification of the computer program, wherein the verification comprises traversing a control flow graph of the computer program and tracking symbolic values of variables of the computer program, wherein said performing comprises directing the traversal of the control flow graph to nodes of the control flow graph that correspond to the identified portions, whereby bug-prone portions of the computer program are prioritized to be verified before non-bug-prone portions of the computer program.

Claims (23)

1. A computer-implemented method comprising:

syntactically analyzing a computer program to identify bug-prone portions of the computer program that correspond to one or more bug patterns, wherein the identified bug-prone portions are suspected of including a bug, wherein the identified bug-prone portions either include a bug or do not include a bug;

performing, by a processor, verification of the computer program, wherein the verification comprises traversing a control flow graph of the computer program and tracking symbolic values of variables of the computer program, wherein said performing comprises directing the traversal of the control flow graph to nodes of the control flow graph that correspond to the identified bug-prone portions, wherein an edge associated with a larger number of control flow paths of the control flow graph which correspond to the one or more bug patterns is assigned a higher priority than another edge associated with a smaller number of control flow path which corresponds to the one or more bug patterns; and

whereby the bug-prone portions of the computer program, which were identified during said syntactically analyzing, are prioritized to be verified

before non-bug-prone portions of the computer program, which were not identified as bug-prone during said syntactically analyzing.

2. The computer-implemented method of claim 1 further comprising assigning priorities to edges of the control flow graph based on correspondence to the identified portions; and wherein said traversing the control flow graph is performed based on the priorities, whereby the traversal is directed to the nodes of the control flow graph that correspond to the identified portions.

3. The computer-implemented method of claim 2 , wherein the traversal is performed non-deterministically with a stochastic biasing towards edges having higher priorities, whereby the traversal is stochastically directed to the nodes.

4. The computer-implemented method of claim 1 , wherein said verification is model checking, wherein the model checking traverses the control flow graph while tracking symbolic values of variables of the program.

5. The computer-implemented method of claim 1 , wherein said model checking is concolic model checking, wherein the concolic model checking tracks concrete values of the variables of the program.

6. The computer-implemented method of claim 1 , wherein said verification is selected from the group consisting of: symbolic execution and concolic execution.

7. A computerized apparatus having a processor, the processor being adapted to perform the steps of:

syntactically analyzing a computer program to identify bug-prone portions of the computer program that correspond to one or more bug patterns, wherein the identified bug-prone portions are suspected of including a bug, wherein the identified bug-prone portions either include a bug or do not include a bug;

performing verification of the computer program, wherein the verification comprises traversing a control flow graph of the computer program and tracking symbolic values of variables of the computer program, wherein said performing comprises directing the traversal of the control flow graph to nodes of the control flow graph that correspond to the identified bug-prone portions, wherein an edge associated with a larger number of control flow paths of the control flow graph which correspond to the one or more bug patterns is assigned a higher priority than another edge associated with a smaller number of control flow path which corresponds to the one or more bug patterns; and

whereby the bug-prone portions of the computer program, which were identified during said syntactically analyzing, are prioritized to be verified before non-bug-prone portions of the computer program, which were not identified as bug-prone during said syntactically analyzing.

8. The computerized apparatus of claim 7 , wherein the processor further adapted to perform: assigning priorities to edges of the control flow graph based on correspondence to the identified portions; and wherein said traversing the control flow graph is performed based on the priorities, whereby the traversal is directed to the nodes of the control flow graph that correspond to the identified portions.

9. The computerized apparatus of claim 8 , wherein the traversal is performed non-deterministically with a stochastic biasing towards edges having higher priorities, whereby the traversal is stochastically directed to the nodes.

10. The computerized apparatus of claim 7 , wherein said verification is performed by a model checker, wherein the model checker is configured to traverse the control flow graph while tracking symbolic values of variables of the program.

11. The computerized apparatus of claim 10 , wherein said model checker is a concolic model checker, wherein the concolic model checker is configured to track concrete values of the variables of the program.

12. The computerized apparatus of claim 7 , wherein said verification is selected from the group consisting of: symbolic execution and concolic execution.

13. A computer program product comprising a non-transitory computer readable medium retaining program instructions, which instructions when read by a processor, cause the processor to perform a method comprising:

syntactically analyzing a computer program to identify bug-prone portions of the computer program that correspond to one or more bug patterns, wherein the identified bug-prone portions are suspected of including a bug, wherein the identified bug-prone portions either include a bug or do not include a bug;

performing verification of the computer program, wherein the verification comprises traversing a control flow graph of the computer program and tracking symbolic values of variables of the computer program, wherein said performing comprises directing the traversal of the control flow graph to nodes of the control flow graph that correspond to the identified bug-prone portions, wherein an edge associated with a larger number of control flow paths of the control flow graph which correspond to the one or more bug patterns is assigned a higher priority than another edge associated with a smaller number of control flow path which corresponds to the one or more bug patterns; and

whereby the bug-prone portions of the computer program, which were syntactically analyzing, are prioritized to be verified before non-bug-prone portions of the computer program, which were not identified as bug-prone during said syntactically analyzing.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 10, 2013
From: CHOCKLER, HANA; MARGALIT, ODED; PIDAN, DMITRY; RUAH, SITVANIT
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 031169/0277 →
Continuity (1)
Related Publication 20150074651A1 · Mar 12, 2015