Usage-based program slicing
First Claim
Patent Images
1. A system comprising:
- one or more memory units operable to store a program definition of an application; and
a production endpoint having one or more processing units operable to;
receive a request from a client for the program definition; and
a proxy server having one or more processing units operable to;
generate an instrumented program definition by retrieving source code comprising at least a first program component and a second program component from the production endpoint and inserting tracing logic at one or more points associated with the first and second program components;
communicate the instrumented program definition over a network to the client that is remote from the one or more processing units, wherein the client is operable to generate at least a first execution trace indicating execution of the first program component and a second execution trace indicating execution of the second program component; and
receive the first and second execution traces over the network from the client, wherein the first execution trace provides first information for determining a baseline slice of the program definition and the second execution trace provides second information for determining a supplemental slice of the program definition.
1 Assignment
0 Petitions
Accused Products
Abstract
In certain embodiments, execution traces for a program definition of an application are accessed. Probability information for components of the program definition is computed based at least in part upon the execution traces. Program definition slices are determined based at least in part upon the probability information. The program definition slices comprises a baseline slice and at least one supplemental slice. The baseline slice is communicated to a client in response to a request for the application. At least one supplemental slice is communicated to the client to allow the patching of the baseline slice with the at least one supplemental slice to recreate at least a portion of the program definition.
-
Citations
20 Claims
-
1. A system comprising:
-
one or more memory units operable to store a program definition of an application; and a production endpoint having one or more processing units operable to; receive a request from a client for the program definition; and a proxy server having one or more processing units operable to; generate an instrumented program definition by retrieving source code comprising at least a first program component and a second program component from the production endpoint and inserting tracing logic at one or more points associated with the first and second program components; communicate the instrumented program definition over a network to the client that is remote from the one or more processing units, wherein the client is operable to generate at least a first execution trace indicating execution of the first program component and a second execution trace indicating execution of the second program component; and receive the first and second execution traces over the network from the client, wherein the first execution trace provides first information for determining a baseline slice of the program definition and the second execution trace provides second information for determining a supplemental slice of the program definition. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A method comprising:
-
accessing, by one or more processing units, a plurality of execution traces indicating execution of one or more components of an instrumented program definition by a remote client, the instrumented program definition created by a proxy server that retrieves source code from a production endpoint and inserts tracing logic into the source code; determining, by the one or more processing units, a baseline slice of the program definition based at least in part on the plurality of execution traces, the baseline slice comprising a first subset of a plurality of program components of the program definition; determining, by the one or more processing units, at least one supplemental slice of the program definition based at least in part on the plurality of execution traces, the at least one supplemental slice comprising a second subset of the plurality of program components; and storing, by the one or more processing units, the baseline slice of the program definition and the at least one supplemental slice of the program definition, wherein the baseline slice is executable by a client that is remote from the one or more processing units and is configured to invoke the at least one supplemental slice during execution; communicating, by the one or more processing units, the baseline slice to the client; and communicating, by the one or more processing units, the at least one supplemental slice to the client. - View Dependent Claims (7, 8, 9, 10, 11, 12, 13, 14, 15, 16)
-
-
17. One or more non-transitory computer-readable media comprising logic, the logic when executed by one or more processing units operable to:
-
receive a request for an application over a network from a client that is remote from the one or more processing units; create, at a proxy server, an instrumented program definition by retrieving source code from a production endpoint; create, at the proxy server, a baseline slice and at least one supplemental slice using the instrumented program definition; access the baseline slice of a program definition of the application in response to the request; communicate the baseline slice over the network to the client; access at least one supplemental slice of the program definition, wherein the at least one supplemental slice is based at least in part on a plurality of execution traces indicating execution of one or more components of an instrumented program definition by the client; and communicate the at least one supplemental slice over the network to the client to allow patching of the baseline slice with the at least one supplemental slice to recreate at least a portion of the program definition. - View Dependent Claims (18, 19, 20)
-
Specification