IP Library Granted Patent US 9,235,385
Granted Patent B1
US 9,235,385 · App. 14/601,138 · Granted Jan 12, 2016

Dynamic software assembly

Inventors: Sudhakar Subashchandrabose (San Jose, CA); Anil Maipady (San Jose, CA); Raghavendra Reddy Mooram (Sunnyvale, CA); Shridhar Navanageri (Sunnyvale, CA); Narender Vattikonda (San Jose, CA)
Assignee: APOLLO EDUCATION GROUP, INC.
G06F8/35G06F8/61
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,235,385
App. No.
14/601,138
Granted
Jan 12, 2016
Kind
B1
Abstract

An improved system and method for providing software is described. The system, upon receiving a software request from a user device, obtains metadata about the user device. Based on the metadata and the software requested, a template of the software is obtained. The template specifies a list of categories, where each category is associated with component(s) in a component database. Based on the metadata and eligibility attributes of the respective components, one component from each category is selected for inclusion in the software. From the selected components and the template, the requested software is constructed and sent to the user device. In some embodiments, for popular user devices, a previously stored selection of components can be accessed. In some embodiments, an updated version of the software is provided if the metadata of the user device changes or if there is a change in the available components or software templates.

Claims (121)

1. A software provider system comprising:

a hardware processor;

a request processor configured to:

receive a software request from a user device; and

in response to receiving the software request, access metadata of the user device; and

a component manager configured to fulfill the software request by:

accessing a software template that defines a plurality of software categories for inclusion in the requested software;

wherein each of the plurality of software categories is associated with one or more components in a component repository;

wherein metadata for each component in the component repository includes one or more eligibility attributes for the component;

for each of the plurality of software categories defined in the software template, selecting a particular component, from the one or more components in the component repository that are associated with the software category, based at least in part on:

the metadata of the user device, and

the one or more eligibility attributes for the particular component;

constructing software for the software request that includes the particular selected components; and

transmitting the constructed software to the user device as a response to the software request;

an update manager configured to:

detect a change in eligibility attributes in metadata for components in the component repository;

access the software template;

for one or more of the plurality of software categories defined in the software template, select an updated component, from the one or more components in the component repository that are associated with the software category, based at least in part on:

the changed eligibility attributes, and

the metadata of the user device;

construct updated software that includes the updated selected components; and

transmit the constructed updated software to the user device.

2. The software provider system of claim 1 , wherein the component manager is further configured to:

receive notification of a change in the metadata of the user device, the notification comprising at least a portion of the metadata of the user device;

access the software template;

for one or more of the plurality of software categories defined in the software template, select different component, from the one or more components in the component repository that are associated with the software category, based at least in part on:

the change in metadata of the user device, and

the one or more eligibility attributes for the different component;

construct updated software that includes the selected different component; and

transmit the constructed updated software to the user device as a response to received notification of the change in the metadata of the user device.

3. The software provider system of claim 1 , further comprising a component registry configured to:

receive registration information for a certain component;

wherein the registration information for the certain component includes one or more eligibility attributes of the certain component; and

include the certain component in the component repository.

4. The software provider system of claim 1 , wherein the metadata of the user device comprises one or more of: user device hardware configuration, current state information of the user device, or user preferences.

5. The software provider system of claim 4 , wherein the user preferences comprise one or more of: reduced power consumption, improved user interface, performing operations locally, and override of hardware configurations.

6. The software provider system of claim 1 , further comprising:

a specification provider configured to:

store at least a portion of the metadata of the user device, wherein the user device is a first user device, and information indicating components included in the constructed software for the first user device;

receive information indicating a second software request from a second user device;

wherein the information indicating the second software request includes metadata of the second user device;

determine that the metadata of the second user device is similar to the metadata of the first user device;

in response to determining that the metadata of the second user device is similar to the metadata of the first user device, provide the information indicating the components included in the constructed software for the first user device to the component manager;

wherein the component manager is further configured to:

receive the information indicating the components included in the constructed software for the first user device;

construct second software for the second software request that includes the components included in the constructed software for the first user device; and

transmit the second constructed software to the second user device as a response to the second software request.

7. The software provider system of claim 1 , wherein the one or more categories comprise one or more of: display types, input devices, supported file types, computing resources, and supported databases.

8. The software provider system of claim 1 , wherein each component in the component repository is configured to communicate with one or more other components in the component repository via a standard application programming interface (API).

9. A method comprising:

receiving a software request from a user device;

in response to receiving the software request, accessing metadata of the user device; and

fulfilling the software request by:

accessing a software template that defines a plurality of software categories for inclusion in the requested software;

wherein each of the plurality of software categories is associated with one or more components in a component repository;

wherein metadata for each component in the component repository includes one or more eligibility attributes for the component;

for each of the plurality of software categories defined in the software template, selecting a particular component, from the one or more components in the component repository that are associated with the software category, based at least in part on:

the metadata of the user device, and

the one or more eligibility attributes for the particular component;

constructing software for the software request that includes the particular selected components; and

transmitting the constructed software to the user device as a response to the software request;

detecting a change in eligibility attributes in metadata for components in the component repository;

accessing the software template;

for each of the plurality of software categories defined in the software template, selecting an updated component from the one or more components in the component repository that are associated with the software category, based at least in part on:

the changed eligibility attributes, and

the metadata of the user device;

constructing updated software that includes the updated selected components; and

transmitting the constructed updated software to the user device as a response to the change in the metadata of the user device.

10. The method of claim 9 , further comprising:

receiving notification of a change in the metadata of the user device, the notification comprising at least a portion of the metadata of the user device;

accessing the software template;

for each of the plurality of software categories defined in the software template, selecting an updated component from the one or more components in the component repository that are associated with the software category, based at least in part on:

the change in metadata of the user device, and

the one or more eligibility attributes for the particular component;

constructing updated software that includes the updated selected components; and

transmitting the constructed updated software to the user device as a response to the change in the metadata of the user device.

11. The method of claim 9 , further comprising:

receiving registration information for a certain component;

wherein the registration information for the certain component includes one or more eligibility attributes of the certain component; and

including the certain component in the component repository.

12. The method of claim 9 , wherein the metadata of the user device comprises one or more of: user device hardware configuration, current state information of the user device, or user preferences.

13. The method of claim 12 , wherein the user preferences comprise one or more of: reduced power consumption, improved user interface, performing operations locally, and override of hardware configurations.

14. The method of claim 9 , further comprising:

storing at least a portion of the metadata of the user device, wherein the user device is a first user device, and information indicating components included in the constructed software for the first user device;

receiving information indicating a second software request from a second user device;

wherein the information indicating the second software request includes metadata of the second user device;

determining that the metadata of the second user device is similar to the metadata of the first user device;

in response to determining that the metadata of the second user device is similar to the metadata of the first user device, providing the information indicating the components included in the constructed software for the first user device to the component manager;

wherein the component manager is further configured to:

receive the information indicating the components included in the constructed software for the first user device;

construct second software for the second software request that includes the components included in the constructed software for the first user device; and

transmit the second constructed software to the second user device as a response to the second software request.

15. The method of claim 9 , wherein the one or more categories comprise one or more of: display types, input devices, supported file types, computing resources, and supported databases.

16. The method of claim 9 , wherein each component in the component repository is configured to communicate with one or more other components in the component repository via a standard application programming interface (API).

17. One or more non-transitory computer-readable media storing one or more sequences of instructions which, when executed by one or more processors, cause performance of steps comprising:

receiving a software request from a user device;

in response to receiving the software request, accessing metadata of the user device; and

fulfilling the software request by:

accessing a software template that defines a plurality of software categories for inclusion in the requested software;

wherein each of the plurality of software categories is associated with one or more components in a component repository;

wherein metadata for each component in the component repository includes one or more eligibility attributes for the component;

for each of the plurality of software categories defined in the software template, selecting a particular component, from the one or more components in the component repository that are associated with the software category, based at least in part on:

the metadata of the user device, and

the one or more eligibility attributes for the particular component;

constructing software for the software request that includes the particular selected components; and

transmitting the constructed software to the user device as a response to the software request;

detecting a change in eligibility attributes in metadata for components in the component repository;

accessing the software template;

for each of the plurality of software categories defined in the software template, selecting an updated component from the one or more components in the component repository that are associated with the software category, based at least in part on:

the changed eligibility attributes, and

the metadata of the user device;

constructing updated software that includes the updated selected components; and

transmitting the constructed updated software to the user device as a response to the change in the metadata of the user device.

18. The one or more non-transitory computer-readable media of claim 17 , wherein the one or more sequences of instructions further comprise instructions for:

receiving notification of a change in the metadata of the user device, the notification comprising at least a portion of the metadata of the user device;

accessing the software template;

for each of the plurality of software categories defined in the software template, selecting an updated component from the one or more components in the component repository that are associated with the software category, based at least in part on:

the change in metadata of the user device, and

the one or more eligibility attributes for the particular component;

constructing updated software that includes the updated selected components; and

transmitting the constructed updated software to the user device as a response to the change in the metadata of the user device.

Assignments (5)
SECURITY INTEREST Recorded Nov 13, 2025
From: THE UNIVERSITY OF PHOENIX, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 072896/0972 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 26, 2020
From: APOLLO EDUCATION GROUP, INC.
To: THE UNIVERSITY OF PHOENIX, INC.
Reel/Frame 053308/0512 →
RELEASE OF SECURITY INTEREST Recorded Jul 15, 2019
From: EVEREST REINSURANCE COMPANY
To: APOLLO EDUCATION GROUP, INC.
Reel/Frame 049753/0187 →
SECURITY INTEREST Recorded Feb 14, 2017
From: APOLLO EDUCATION GROUP, INC.
To: EVEREST REINSURANCE COMPANY
Reel/Frame 041750/0137 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 21, 2015
From: SUBASHCHANDRABOSE, SUDHAKAR; MAIPADY, ANIL; MOORAM, RAGHAVENDRA REDDY; NAVANAGERI, SHRIDHAR; VATTIKONDA, NARENDER
To: APOLLO EDUCATION GROUP, INC.
Reel/Frame 034773/0899 →