IP Library Granted Patent US 9,992,306
Granted Patent B2
US 9,992,306 · App. 13/725,145 · Granted Jun 5, 2018

Dynamic execution

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,992,306
App. No.
13/725,145
Granted
Jun 5, 2018
Kind
B2
Abstract

The disclosed embodiments relate to provisioning of a service, such as a financial service, to a device, such as a mobile device operative to access the service wirelessly or otherwise, in a manner which efficiently provides a consistent user experience which meets a user's expectations as to the functionality and quality of the service, including the user interface therefore and service delivery, which leverages the available capacities of the devices through which the service is provided so as to maximize the functionality and quality of the provided service without diminishing the experience, i.e. without substantially reducing the quality or functionality.

Claims (61)

1. A computer implemented method of providing a service by a server to a client device, the service being based on execution of a plurality of computations, the method comprising:

receiving, by a processor, a request for the service from the client device;

determining, by the processor, responsive to the request, a currently available capacity for the client device to execute the plurality of computations;

determining, by the processor, a portion of the plurality of computations to be executed by the client device based on the determined currently available capacity therefore, the remainder of the plurality of computations to be executed by the server;

providing, by the processor, the determined portion of the plurality of computations to the client device for execution thereby;

causing, by the processor, the server to execute the remainder of the plurality of computations and provide the result thereof to the client device;

causing, by the processor, the client device to execute the determined portion of the plurality of computations provided thereto to obtain a result therefrom and aggregate the obtained result with the result received from the server, and present the aggregate result to a user of the client device; and

repeating, during provision of the service responsive to the request, the determining of the currently available capacity for the client device to execute the plurality of computations, the determining of the portion of the plurality of computations to be executed by the client device based on the determined currently available capacity therefore, the remainder of the plurality of computations to be executed by the server, the providing of the determined portion of the plurality of computations to the client device for execution thereby, the causing of the server to execute the remainder of the plurality of computations and provide the result thereof to the client device, and the causing of the client device to execute the determined portion of the plurality of computations provided thereto to obtain a result therefrom and the obtained result with the result received from the server;

the method further comprising:

receiving, by the processor, a request for the service from another client device;

determining, by the processor, responsive to the request from the other client device, a currently available capacity for the other client device to execute the plurality of computations, the currently available capacity for the other client device being different from the currently available capacity of the client device;

determining, by the processor, a portion of the plurality of computations to be executed by the other client device based on the determined currently available capacity therefore, the remainder of the plurality of computations to be executed by the server;

providing, by the processor, the determined portion of the plurality of computations to the other client device for execution thereby;

causing, by the processor, the server to execute the remainder of the plurality of computations and provide the result thereof to the other client device; and

causing, by the processor, the other client device to execute the determined portion of the plurality of computations provided thereto to obtain a result therefrom and aggregate the obtained result with the result received from the server, and present the aggregate result to a user of the other client device;

the method further comprising:

receiving, by the processor, a subsequent request for the service from the client device;

determining, by the processor, responsive to the subsequent request, a currently available capacity for the client device to execute the plurality of computations, the currently available capacity being different from the currently available capacity determined for the previous request;

determining, by the processor, a portion of the plurality of computations to be executed by the client device based on the determined currently available capacity therefore, the remainder of the plurality of computations to be executed by the server;

providing, by the processor, the determined portion of the plurality of computations to the client device for execution thereby;

causing, by the processor, the server to execute the remainder of the plurality of computations and provide the result thereof to the client device;

and

causing, by the processor, the client device to execute the determined portion of the plurality of computations provided thereto to obtain a result therefrom and aggregate the obtained result with the result received from the server, and present the aggregate result to a user of the client device.

2. The computer implemented method of claim 1 wherein the client device comprises a mobile device.

3. The computer implemented method of claim 1 wherein the currently available capacity for the client device to execute the plurality of computations is determined based on the client device's currently available processing capacity, display capacity, communication capacity, memory capacity, storage capacity, or a combination thereof.

4. The computer implemented method of claim 1 wherein the currently available capacity for the client device to execute the plurality of computations is determined based on a specification of a user of the client device specifying the currently available capacity.

5. The computer implemented method of claim 1 wherein the determined portion of the plurality of computations to be executed by the client device comprises all of the plurality of computations.

6. The computer implemented method of claim 1 wherein the determined portion of the plurality of computations to be executed by the client device comprises none of the plurality of computations.

7. The computer implemented method of claim 1 wherein the service comprises calculation of a financial value.

8. The computer implemented method of claim 1 wherein the service comprises a computer software application, each of the plurality of computations being operative to facilitate operation of the computer software application.

9. A system for provision of a service by a server to a client device, the service being based on execution of a plurality of computations, the system comprising:

first logic stored in a memory and executable by a processor to cause the processor to receive a request for the service from the client device;

second logic stored in the memory and executable by the processor to cause the processor to determine, responsive to the request , a currently available capacity for the client device to execute the plurality of computations;

third logic stored in the memory and executable by the processor to cause the processor to determine a portion of the plurality of computations to be executed by the client device based on the determined currently available capacity therefore, the remainder of the plurality of computations to be executed by the server;

fourth logic stored in the memory and executable by the processor to cause the processor to provide the determined portion of the plurality of computations to the client device for execution thereby;

fifth logic stored in the memory and executable by the processor to cause the processor to cause the server to execute the remainder of the plurality of computations and provide the result thereof to the client device; and

sixth logic stored in the memory and executable by the processor to cause the processor to cause the client device to execute the determined portion of the plurality of computations provided thereto to obtain a result therefrom and aggregate the obtained result with the result received from the server, and present the aggregate result to a user of the client device;

wherein the system is further configured to repeat, during the provision of the service responsive to the request, the second, third, fourth, fifth and six logics; and

further wherein:

the first logic is further executable by the processor to cause the processor to receive a request for the service from another client device;

the second logic is further executable by the processor to cause the processor to determine, responsive to the request from the other client device, a currently available capacity for the other client device to execute the plurality of computations, the currently available capacity for the other client device being different from the currently available capacity of the client device;

the third logic is further executable by the processor to cause the processor to determine a portion of the plurality of computations to be executed by the other client device based on the determined currently available capacity therefore, the remainder of the plurality of computations to be executed by the server;

the fourth logic is further executable by the processor to cause the processor to provide the determined portion of the plurality of computations to the other client device for execution thereby;

the fifth logic is further executable by the processor to cause the processor to cause the server to execute the remainder of the plurality of computations and provide the result thereof to the other client device; and

the sixth logic is further executable by the processor to cause the processor to cause, the other client device to execute the determined portion of the plurality of computations provided thereto to obtain a result therefrom and aggregate the obtained result with the result received from the server, and present the aggregate result to a user of the other client device; and

further wherein:

the first logic is further executable by the processor to cause the processor to receive a subsequent request for the service from the client device;

the second logic is further executable by the processor to cause the processor to determine, responsive to the subsequent request, a currently available capacity for the client device to execute the plurality of computations, the currently available capacity being different from the currently available capacity determined for the previous request; the third logic is further executable by the processor to cause the processor to determine a portion of the plurality of computations to be executed by the client device based on the determined currently available capacity therefore, the remainder of the plurality of computations to be executed by the server;

the fourth logic is further executable by the processor to cause the processor to provide the determined portion of the plurality of computations to the client device for execution thereby;

the fifth logic is further executable by the processor to cause the processor to cause the server to execute the remainder of the plurality of computations and provide the result thereof to the client device; and

the sixth logic is further executable by the processor to cause the processor to cause the client device to execute the determined portion of the plurality of computations provided thereto to obtain a result therefrom and aggregate the obtained result with the result received from the server, and present the aggregate result to a user of the client device.

10. The system of claim 9 wherein the client device comprises a mobile device.

11. The system of claim 9 wherein the currently available capacity for the client device to execute the plurality of computations is determined based on the client device's currently available processing capacity, display capacity, communication capacity, memory capacity, storage capacity, or a combination thereof.

12. The system of claim 9 wherein the currently available capacity for the client device to execute the plurality of computations is determined based on a specification of a user of the client device specifying the currently available capacity.

13. The system of claim 9 wherein the determined portion of the plurality of computations to be executed by the client device comprises all of the plurality of computations.

14. The system of claim 9 wherein the determined portion of the plurality of computations to be executed by the client device comprises none of the plurality of computations.

15. The system of claim 9 wherein the service comprises calculation of a financial value.

16. The system of claim 9 wherein the service comprises a computer software application, each of the plurality of computations being operative to facilitate operation of the computer software application.

17. A system for provision of a plurality of services by a server to a plurality of client devices, each of the plurality of services being based on execution of a plurality of computations, the system comprising computer executable program code stored in a non-transitory memory and executable by a processor coupled therewith to cause the processor to receive a request from one of the plurality of client devices for one of the plurality of services to be provisioned thereto, continuously determine a currently available capacity for the one client device to execute the plurality of computations and continuously apportion, based on the determined currently available capacity, the plurality of computations among the one client device and the server for execution thereby, wherein a result of the portion of plurality of computations executed by the server is continuously provided to the one client device for aggregation with a result of the portion of the plurality of computations executed by the one client device, the aggregate result being presented to a user of the one client device;

the system further comprising computer executable program code stored in a non-transitory memory and executable by a processor coupled therewith to cause the processor to receive a request from the one client device for another of the plurality of services to be provisioned thereto, continuously determine a currently available capacity for the one client device to execute the plurality of computations and continuously apportion, based on the determined currently available capacity, the plurality of computations among the one client device and the server for execution thereby, wherein a result of the portion of plurality of computations executed by the server is continuously provided to the one client device for aggregation with a result of the portion of the plurality of computations executed by the one client device, the aggregate result being presented to a user of the one client device; and

the system further comprising computer executable program code stored in a non-transitory memory and executable by a processor coupled therewith to cause the processor to receive a request from another of the plurality of client devices for one of the plurality of services to be provisioned thereto, continuously determine a currently available capacity for the other client device to execute the plurality of computations and continuously apportion, based on the determined currently available capacity, the plurality of computations among the other client device and the server for execution thereby, wherein a result of the portion of plurality of computations executed by the server is continuously provided to the other client device for aggregation with a result of the portion of the plurality of computations executed by the other client device, the aggregate result being presented to a user of the other client device.

Assignments (11)
MERGER Recorded Feb 7, 2022
From: E*TRADE FINANCIAL HOLDINGS, LLC
To: MORGAN STANLEY DOMESTIC HOLDINGS, INC.
Reel/Frame 058962/0362 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 7, 2022
From: MORGAN STANLEY DOMESTIC HOLDINGS, INC.
To: MORGAN STANLEY SERVICES GROUP INC.
Reel/Frame 058962/0377 →
MERGER AND CHANGE OF NAME Recorded Feb 3, 2021
From: E*TRADE FINANCIAL CORPORATION; MOON-EAGLE MERGER SUB II, LLC
To: E*TRADE FINANCIAL, LLC
Reel/Frame 055132/0119 →
MERGER Recorded Feb 3, 2021
From: E*TRADE FINANCIAL, LLC
To: E*TRADE FINANCIAL HOLDINGS, LLC
Reel/Frame 055132/0185 →
CHANGE OF ADDRESS Recorded Jun 12, 2020
From: E*TRADE FINANCIAL CORPORATION
To: E*TRADE FINANCIAL CORPORATION
Reel/Frame 052930/0193 →
CORRECTIVE ASSIGNMENT TO CORRECT THE FIRST NAME OF THE INVENTOR PREVIOUSLY RECORDED ON REEL 029522 FRAME 0576. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Feb 1, 2018
From: SAHOO, SANJIB
To: OPTIONMONSTER HOLDINGS, INC.
Reel/Frame 045228/0384 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 20, 2016
From: TRADEMONSTER GROUP, INC.
To: E*TRADE FINANCIAL CORPORATION
Reel/Frame 040681/0255 →
RELEASE OF SECURITY INTEREST Recorded Sep 13, 2016
From: JEFFERIES FINANCE LLC
To: TRADEMONSTER GROUP, INC.
Reel/Frame 039708/0373 →
SECURITY INTEREST Recorded Aug 29, 2014
From: TRADEMONSTER GROUP, INC.
To: JEFFERIES FINANCE LLC
Reel/Frame 033664/0064 →
CHANGE OF NAME Recorded Aug 26, 2013
From: OPTIONMONSTER HOLDINGS, INC.
To: TRADEMONSTER GROUP, INC.
Reel/Frame 031081/0271 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 21, 2012
From: SAHOO, SAJIB
To: OPTIONMONSTER HOLDINGS, INC.
Reel/Frame 029522/0576 →