IP Library Granted Patent US 10,554,790
Granted Patent B2
US 10,554,790 · App. 15/987,082 · Granted Feb 4, 2020

Dynamic execution

Inventor: Sanjib Sahoo (Naperville, IL)
Assignee: E*TRADE Financial Corporation
H04L67/42G06F9/505G06F9/5072G06F11/1458G06F2209/509H04L43/0876H04L67/1091
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,554,790
App. No.
15/987,082
Granted
Feb 4, 2020
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 (64)

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

receiving, by a processor of an intermediary device coupled with the server and the plurality of client devices, a request for a service of the plurality of services from a first client device of the plurality of client devices;

determining, by the processor, responsive to the request, a currently available capacity for the first client device to execute the plurality of computations based on data indicative of the first client device's available capacity obtained therefrom;

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

instructing, by the processor, the first client device to execute the determined portion of the plurality of computations to generate a result thereof; and

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

wherein the first client device aggregates the generated result with the result received from the server, and presents the aggregate result to a user of the first client device; and

monitoring, by the processor, during provision of the service responsive to the request, the currently available capacity for the first client device to execute the plurality of computations, and reallocating the plurality of computations as between the first client device and the server based thereon;

the method further comprising:

receiving, by the processor, a request for the service from a second client device of the plurality of client devices;

determining, by the processor, responsive to the request from the second client device, a currently available capacity for the second client device to execute the plurality of computations based on data indicative of the second device's available capacity obtained therefrom, the currently available capacity for the second client device being different from the currently available capacity of the first client device;

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

instructing, by the processor, the second client device to execute the determined portion of the plurality of computations to generate a result thereof;

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

wherein the second client device aggregates the generated result with the result received from the server, and presents the aggregate result to a user of the second client device; and

monitoring, by the processor, during provision of the service responsive to the request, the currently available capacity for the second client device to execute the plurality of computations, and reallocating the plurality of computations as between the second client device and the server based thereon.

2. The method of claim 1 further comprising:

receiving, by the processor, a subsequent request for another service of the plurality of services from the first client device;

determining, by the processor, responsive to the subsequent request, a currently available capacity for the first client device to execute the plurality of computations upon which the other service is based, 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 first client device based on the determined currently available capacity therefore, the remainder of the plurality of computations to be executed by the server;

instructing, by the processor, the first client device to execute the determined portion of the plurality of computations to generate a result thereof;

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

wherein the first client device aggregates the generated result with the result received from the server, and presents the aggregate result to a user of the first client device.

3. The computer implemented method of claim 1 wherein the first and second client devices each comprise a mobile device.

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

5. The computer implemented method of claim 1 wherein the currently available capacity for the first and second client devices to execute the plurality of computations is determined based on a specification of a user thereof specifying the currently available capacity.

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

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

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

9. 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.

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

first logic stored in a non-transitory memory and executable by a processor of an intermediary device coupled with the server and the plurality to cause the processor to receive a request for a service of the plurality of services from a first client device of the plurality of client devices;

second logic stored in the non-transitory memory and executable by the processor to cause the processor to determine, responsive to the request, a currently available capacity for the first client device to execute the plurality of computations based on data indicative of the first client device's available capacity obtained therefrom;

third logic stored in the non-transitory memory and executable by the processor to cause the processor to determine a portion of the plurality of computations to be executed by the first 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 non-transitory memory and executable by the processor to cause the processor to instruct the first client device to execute the determined portion of the plurality of computations to generate a result thereof;

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

wherein the first client device aggregates the generated result with the result received from the server, and presents the aggregate result to a user of the first client device; and

wherein the system is further configured to monitor, during the provision of the service responsive to the request, the currently available capacity for the first client device to execute the plurality of computations, and reallocate the plurality of computations as between the first client device and the server based thereon; and

further wherein:

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

the second logic is further executable by the processor to cause the processor to determine, responsive to the request from the second client device, a currently available capacity for the second client device to execute the plurality of computations based on data indicative of the second device's available capacity obtained therefrom, the currently available capacity for the second client device being different from the currently available capacity of the first 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 second 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 instruct the second client device to execute the determined portion of the plurality of computations to generate a result thereof;

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

wherein the second client device aggregates the generated result with the result received from the server, and presents the aggregate result to a user of the second client device; and

wherein the system is further configured to monitor, during provision of the service responsive to the request, the currently available capacity for the second client device to execute the plurality of computations, and reallocate the plurality of computations as between the second client device and the server based thereon.

11. The system of claim 10 wherein:

the first logic is further executable by the processor to cause the processor to receive a subsequent request for another service of the plurality of services from the first 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 first client device to execute the plurality of computations upon which the other service is based, 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 first 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 instruct the first client device to execute the determined portion of the plurality of computations to generate a result thereof;

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

wherein the first client device aggregates the generated result with the result received from the server, and presents the aggregate result to a user of the first client device.

12. The system of claim 10 wherein the first and second client devices each comprise a mobile device.

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

14. The system of claim 10 wherein the currently available capacity for the first and second client devices to execute the plurality of computations is determined based on a specification of a user thereof specifying the currently available capacity.

15. The system of claim 10 wherein the determined portion of the plurality of computations to be executed by the first client device comprises all of the plurality of computations.

16. The system of claim 10 wherein the determined portion of the plurality of computations to be executed by the first client device comprises none of the plurality of computations.

17. The system of claim 10 wherein the service comprises calculation of a financial value.

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

19. 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 of an intermediary device 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 reallocate, 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 generated as a result of execution by the server is provided to the one client device as it is generated for aggregation with a result of the portion of the plurality of computations generated as a result of execution 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 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 reallocate, 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 generated as a result of execution by the server is provided to the one client device as it is generated for aggregation with a result of the portion of the plurality of computations generated as a result of execution by the one client device, the aggregate result being presented to a user of the one client device.

20. The system of claim 19 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 reallocate, 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 generated as a result of execution by the server is continuously provided to the other client device as it is generate for aggregation with a result of the portion of the plurality of computations generated as a result of execution by the other client device, the aggregate result being presented to a user of the other client device.

Assignments (10)
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 Recorded Feb 7, 2022
From: E*TRADE FINANCIAL HOLDINGS, LLC
To: MORGAN STANLEY DOMESTIC HOLDINGS, INC.
Reel/Frame 058962/0362 →
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 THE SPELLING OF ASSIGNEE'S NAME PREVIOUSLY RECORDED ON REEL 045882 FRAME 0134. ASSIGNOR(S) HEREBY CONFIRMS THE THE CORRECT SPELLING OF ASSIGNEE'S NAME IS OPTIONMONSTER. Recorded Jul 2, 2018
From: SAHOO, SANJIB
To: OPTIONMONSTER HOLDINGS, INC.
Reel/Frame 046520/0244 →
CORRECTIVE ASSIGNMENT TO CORRECT THE SPELLING OF THE ASSIGNOR'S NAME PREVIOUSLY RECORDED AT REEL: 046221 FRAME: 0149. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Jul 2, 2018
From: OPTIONMONSTER HOLDINGS, INC.
To: TRADEMONSTER GROUP, INC.
Reel/Frame 047923/0794 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 23, 2018
From: TRADEMONSTER GROUP, INC
To: E*TRADE FINANCIAL CORPORATION
Reel/Frame 045882/0137 →
CHANGE OF NAME Recorded May 23, 2018
From: OPINIONMONSTER HOLDINGS, INC.
To: TRADEMONSTER GROUP, INC
Reel/Frame 046221/0149 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 23, 2018
From: SAHOO, SANJIB
To: OPINIONMONSTER HOLDINGS, INC.
Reel/Frame 045882/0134 →
Continuity (2)
Continuation 13725145 · Dec 21, 2012
Related Publication 20180270332A1 · Sep 20, 2018