IP Library › Granted Patent US 10,127,135
Granted Patent B2
US 10,127,135 · App. 15/249,300 · Granted Nov 13, 2018

Systems and methods for incremental analysis of software

Inventors: Guodong Li (San Jose, CA); John Steven (Mountain View, CA)
Assignee: Synopsys, Inc.
G06F11/3608G06F11/3604G06F11/3668
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 10,127,135
App. No.
15/249,300
Granted
Nov 13, 2018
Kind
B2
Abstract

Systems and methods for software verification. In some embodiments, a first application architecture model is generated for a software application, wherein: the first application architecture model is generated based on a first version of source code of the software application; and the first application architecture model comprises a plurality of component models. A second version of source code may be compared against the first version of source code to determine at least one difference. At least one affected component model of the first application architecture model may be identified based on the at least one difference. A second application architecture model may be generated based on the second version of source code, wherein generating the second application architecture model comprises generating an updated version of the at least one affected component model.

Claims (45)

1. A computer-implemented method for performing static analysis to detect security vulnerabilities in a software application, comprising:

constructing, by at least one computer processor, a plurality of component models;

reducing, by the at least one computer processor, the plurality of component models, based on whether any component model is relevant to a property to be checked, wherein the reducing comprises removing information;

generating, by the at least one computer processor, a first application architecture model for the software application, wherein:

the first application architecture model is generated based on a first version of code of the software application, and

the first application architecture model comprises the reduced plurality of component models;

comparing, by the at least one computer processor, a second version of the code against the first version of the code to determine a difference between the first version of the code and the second version of the code;

identifying, by the at least one computer processor, based on the difference between the first version of the code and the second version of the code, an affected component model of the first application architecture model;

generating, by the at least one computer processor, based on the first application architecture model and based on the second version of the code, a second application architecture model, wherein generating the second application architecture model comprises generating, by the at least one computer processor, an updated version of the affected component model;

analyzing, by the at least one computer processor, the updated version of the affected component model to determine whether the property is satisfied;

in response to determining that the property to be checked is affected by the difference between the first version of the code and the second version of the code, analyzing, by the at least one computer processor, a component model of the second application architecture model to determine whether the component model satisfies the property; and

delivering, by the at least one computer processor, a result of at least one of the analyzing the updated version of the affected component model and the analyzing the component model of the second application, in real time when the code of the software application is added or modified.

2. The method of claim 1 , wherein generating the second application architecture model further comprises adding a component model that is not in the first application architecture model.

3. The method of claim 1 , wherein the component model of the second application architecture model comprises the updated version of the affected component model of the first application architecture model.

4. The method of claim 1 , wherein the component model of the second application architecture model comprises a component model that is not in the first application architecture model.

5. A system comprising at least one processor coupled to a memory, the at least one processor configured to perform operations comprising:

constructing a plurality of component models;

reducing the plurality of component models, based on whether any component model is relevant to a property to be checked, wherein the reducing comprises removing information;

generating a first application architecture model for a software application, wherein:

the first application architecture model is generated based on a first version of code of the software application, and

the first application architecture model comprises the reduced plurality of component models;

comparing a second version of the code against the first version of the code to determine a difference between the first version of the code and the second version of the code;

identifying, based on the difference between the first version of the code and the second version of the code, an affected component model of the first application architecture model;

generating, based on the first application architecture model and based on the second version of the code, a second application architecture model, wherein generating the second application architecture model comprises generating an updated version of the affected component model;

analyzing the updated version of the affected component model to determine whether the property is satisfied;

in response to determining that the property to be checked is affected by the difference between the first version of the code and the second version of the code, analyzing a component model of the second application architecture model to determine whether the one or more component models of the second application architecture model satisfies the property; and

delivering a result of at least one of the analyzing the updated version of the affected component model and the analyzing the component model of the second application, in real time when the code of the software application is added or modified.

6. The system of claim 5 , wherein generating the second application architecture model further comprises adding a component model that is not in the first application architecture model.

7. The system of claim 5 , wherein the component model of the second application architecture model comprises the updated version of the affected component model of the first application architecture model.

8. The system of claim 5 , wherein the component model of the second application architecture model comprises a component model that is not in the first application architecture model.

9. At least one non-transitory computer-readable storage medium having stored thereon instructions which, when executed, program at least one processor to perform operations comprising:

constructing a plurality of component models;

reducing the plurality of component models, based on whether any component model is relevant to a property to be checked, wherein the reducing comprises removing information;

generating a first application architecture model for a software application, wherein:

the first application architecture model is generated based on a first version of code of the software application, and

the first application architecture model comprises the reduced plurality of component models;

comparing a second version of the code against the first version of the code to determine a difference between the first version of the code and the second version of the code;

identifying, based on the difference between the first version of the code and the second version of the code, an affected component model of the first application architecture model;

generating, based on the first application architecture model and based on the second version of the code, a second application architecture model, wherein generating the second application architecture model comprises generating an updated version of the at least one affected component model;

analyzing the updated version of the affected component model to determine whether the property is satisfied;

in response to determining that the property to be checked is affected by the difference between the first version of the code and the second version of the code, analyzing a component model of the second application architecture model to determine whether the one or more component models of the second application architecture model satisfies the property; and

delivering a result of at least one of the analyzing the updated version of the affected component model and the analyzing the component model of the second application, in real time when the code of the software application is added or modified.

10. The at least one non-transitory computer-readable storage medium of claim 9 , wherein generating the second application architecture model further comprises adding a component model that is not in the first application architecture model.

11. The at least one non-transitory computer-readable storage medium of claim 9 , wherein the component model of the second application architecture model comprises the updated version of the affected component model of the first application architecture model.

12. The at least one non-transitory computer-readable storage medium of claim 9 , wherein the component model of the second application architecture model comprises a component model that is not in the first application architecture model.

Assignments (5)
SECURITY INTEREST Recorded Sep 30, 2024
From: BLACK DUCK SOFTWARE, INC.
To: ARES CAPITAL CORPORATION, AS COLLATERAL AGENT
Reel/Frame 069083/0149 →
CHANGE OF NAME Recorded Jul 30, 2024
From: SOFTWARE INTEGRITY GROUP, INC.
To: BLACK DUCK SOFTWARE, INC.
Reel/Frame 068191/0490 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 23, 2024
From: SYNOPSYS, INC.
To: SOFTWARE INTEGRITY GROUP, INC.
Reel/Frame 066664/0821 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 22, 2017
From: CODISCOPE, LLC
To: SYNOPSYS, INC.
Reel/Frame 042784/0540 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 25, 2016
From: LI, GUODONG; STEVEN, JOHN
To: CODISCOPE LLC
Reel/Frame 040124/0502 →
Continuity (2)
Provisional Application 62335619 · May 12, 2016
Related Publication 20170329693A1 · Nov 16, 2017
Cited By (1)
US 12,619,405