Constraint verification for distributed applications
First Claim
Patent Images
1. A computing system comprising one or more computing nodes and one or more data stores in communication with the one or more computing nodes, the one or more data stores having stored thereon:
- a constraint data store storing thereon one or more constraints indicative of predetermined application program conditions; and
computer instructions that, upon execution by the one or more computing nodes, at least cause the computing system to;
receive an application program for execution in a distributed computing environment;
divide the application program into a plurality of components that are executable as independent processes in accordance with the one or more constraints;
instantiate a plurality of virtual machines and execute the plurality of independently executable components in the plurality of virtual machines;
generate condition variables based on execution of the components;
in response to a determination that application program data is to be communicated between at least two of the components;
generate data path information for the application program data;
aggregate application program data from multiple communication events and combine respective condition variable and data path information;
generate a single data packet that encapsulates the aggregated application program data along with associated condition variables and the data path information; and
send the single data packet to a destination virtual machine for the data packet; and
verify a runtime property of the application program by using the aggregated application program data to represent code execution paths of the application program.
1 Assignment
0 Petitions
Accused Products
Abstract
Systems and methods are described for analyzing and verifying distributed applications. In one embodiment, an application program is executed as independently executable components. During execution, redundant portions of application program data are aggregated. A property of the application program is verified using the aggregated application program data to represent code execution paths.
34 Citations
19 Claims
-
1. A computing system comprising one or more computing nodes and one or more data stores in communication with the one or more computing nodes, the one or more data stores having stored thereon:
-
a constraint data store storing thereon one or more constraints indicative of predetermined application program conditions; and computer instructions that, upon execution by the one or more computing nodes, at least cause the computing system to; receive an application program for execution in a distributed computing environment; divide the application program into a plurality of components that are executable as independent processes in accordance with the one or more constraints; instantiate a plurality of virtual machines and execute the plurality of independently executable components in the plurality of virtual machines; generate condition variables based on execution of the components; in response to a determination that application program data is to be communicated between at least two of the components; generate data path information for the application program data; aggregate application program data from multiple communication events and combine respective condition variable and data path information; generate a single data packet that encapsulates the aggregated application program data along with associated condition variables and the data path information; and send the single data packet to a destination virtual machine for the data packet; and verify a runtime property of the application program by using the aggregated application program data to represent code execution paths of the application program. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A computer-implemented method for verifying a property of a distributed application program, the method comprising:
-
dividing an application program operable to execute in a distributed computing environment into a plurality of executable components that can be executed as separate and distinct processes in a computing device; executing the components in a plurality of constraint verification modules comprising at least one application module executing in a virtual environment; collapsing application data communicated between the constraint verification modules by aggregating multiple input messages into a lesser number of input messages and responding to the aggregated input messages, wherein the collapsed application data includes associated condition variable and data path information; and verifying a runtime property of the application program by using the collapsed application data. - View Dependent Claims (7, 8, 9, 10, 11, 12, 13, 14)
-
-
15. One or more non-transitory computer-readable storage media having collectively stored thereon executable instructions that, when executed by one or more processors of a computer system, cause the computer system to:
-
analyze an application program operable to execute in a distributed computing environment; divide the application program into a plurality of executable components in accordance with one or more rules; independently execute the executable components in one or more constraint verification modules; maintain state information for the application program during execution of the executable components; and aggregate application data communicated between the constraint verification modules to reduce inter-module communications and use the aggregated application data to verify a property of the application program, wherein the aggregated application data includes associated condition variable and data path information. - View Dependent Claims (16, 17, 18)
-
-
19. A computing system comprising one or more computing nodes and one or more data stores in communication with the one or more computing nodes, the one or more data stores having stored thereon computer instructions that, upon execution by the one or more computing nodes, at least cause the computing system to:
-
divide an application program operable to execute in a distributed computing environment into a plurality of executable components that can be executed as separate and distinct processes in a computing device; execute the components in a plurality of constraint verification modules comprising at least one application module executing in a virtual environment; collapse application data communicated between the constraint verification modules by aggregating multiple input messages into a lesser number of input messages and responding to the aggregated input messages, wherein the collapsed application data includes associated condition variable and data path information; and verify a runtime property of the application program by using the collapsed application data.
-
Specification