IP Library Granted Patent US 9,858,049
Granted Patent B2
US 9,858,049 · App. 15/420,916 · Granted Jan 2, 2018

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/61G06F8/68
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,858,049
App. No.
15/420,916
Granted
Jan 2, 2018
Kind
B2
Abstract

An improved system and method for updating software is described. The system, upon detecting one or more changes within the set of eligibility attribute values associated with the one or more particular components of previously-provided software, selects a replacement component. The component is selected based on one or more changed eligibility attribute values within the set of eligibility attribute values, and the metadata of the user device. Using the replacement component, the replacement software is constructed and sent to the user device.

Claims (101)

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;

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;

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

the metadata of the first and second user devices containing device attributes and for each device attribute the metadata of the first and second user devices specifying an attribute type and a comparison function;

determine that the metadata of the second user device is similar to the metadata of the first user device by using the specified comparison functions and attribute types for each device attribute to compare the attributes of the first user device to the attributes of the second 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.

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 , wherein the one or more categories comprise one or more of: display types, input devices, supported file types, computing resources, and supported databases.

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

8. 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;

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;

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

the metadata of the first and second user devices containing device attributes and for each device attribute the metadata of the first and second user devices specifying an attribute type and a comparison function;

determining that the metadata of the second user device is similar to the metadata of the first user device by using the specified comparison functions and attribute types for each device attribute to compare the attributes of the first user device to the attributes of the second 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 a component manager;

wherein the component manager is further configured to:

receiving, by the component manager, the information indicating the components included in the constructed software for the first user device;

constructing, by the component manager, second software for the second software request that includes the components included in the constructed software for the first user device; and

transmitting, by the component manager, the second constructed software to the second user device as a response to the second software request.

9. The method of claim 8 , 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.

10. The method of claim 8 , 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.

11. The method of claim 8 , 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.

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

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

14. The method of claim 8 , 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).

15. 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;

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;

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

the metadata of the first and second user devices containing device attributes and for each device attribute the metadata of the first and second user devices specifying an attribute type and a comparison function;

determining that the metadata of the second user device is similar to the metadata of the first user device by using the specified comparison functions and attribute types for each device attribute to compare the attributes of the first user device to the attributes of the second 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 a component manager;

wherein the component manager is further configured to:

receiving, by the component manager, the information indicating the components included in the constructed software for the first user device;

constructing, by the component manager, second software for the second software request that includes the components included in the constructed software for the first user device; and

transmitting, by the component manager, the second constructed software to the second user device as a response to the second software request.

Assignments (2)
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 →
Continuity (3)
Continuation 14992393 · Jan 11, 2016
Continuation 14601138 · Jan 20, 2015
Related Publication 20170139686A1 · May 18, 2017