IP Library Granted Patent US 9,557,971
Granted Patent B2
US 9,557,971 · App. 14/992,393 · Granted Jan 31, 2017

Dynamic software assembly

Inventors: Sudhakar Subashchandrabose (San Jose, CA); Anil Maipady (San Jose, CA); Raghavendra Reddy Mooran (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,557,971
App. No.
14/992,393
Granted
Jan 31, 2017
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 (119)

1. A software provider system comprising:

a hardware processor;

a request processor configured to:

receive a software request from a user device that requests particular software, and

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

a component manager configured to fulfill the software request by:

based, at least in part, on the metadata of the user device, automatically select one or more particular components from one or more components in a component repository,

construct a first version of the particular software by including, in the first version, the one or more particular components, and

transmit the first version of the particular software to the user device as a response to the software request; and

an update manager configured to:

detect, in particular component metadata, one or more changes within a set of eligibility attribute values associated with the one or more particular components;

wherein the particular component metadata is maintained, for the one or more particular components, within a component repository;

in response to detecting the one or more changes within the set of eligibility attribute values associated with the one or more particular components:

for at least one of the one or more particular components, select a replacement component from the one or more components in the component repository;

wherein selection of the at least one replacement component is based at least in part on:

one or more changed eligibility attribute values within the set of eligibility attribute values, and

the metadata of the user device;

construct a second version of the particular software that includes the at least one replacement component; and

transmit the second version of the particular 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; and

the update manager is further configured to, responsive to the component manager receiving the notification of the change in the metadata of the user device:

based, at least in part, on the change in the metadata of the user device, select a replacement component, for a certain component of the one or more particular components, from the one or more components in the component repository;

construct a third version of the particular software that includes the replacement component and that does not include the certain component; and

transmit the third version of the particular software to the user device.

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

4. The software provider system of claim 1 , wherein:

the component manager is further configured to receive notification of a change in user preferences associated with the user device; and

the update manager is further configured to, responsive to the component manager receiving the notification of the change in the user preferences associated with the user device:

based, at least in part, on the change in the user preferences associated with the user device, select a replacement component, for a certain component of the one or more particular components, from the one or more components in the component repository;

construct a third version of the particular software that includes the replacement component and that does not include the certain component; and

transmit the third version of the particular software to the user device.

5. The software provider system of claim 4 , wherein the notification of the change in user preferences comprises information indicating a change in preference for 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 component manager is further configured to determine that a software template that corresponds to the particular software has changed since construction of the second version of the particular software; and

the update manager is further configured to, responsive to the component manager determining that the software template that corresponds to the particular software has changed since construction of the second version of the particular software:

based, at least in part, on the changed software template, select a replacement component, for a certain component of the one or more particular components, from the one or more components in the component repository;

construct a third version of the particular software that includes the replacement component and that does not include the certain component;

and transmit the third version of the particular software to the user device.

7. The software provider system of claim 1 , wherein:

a software template defines a plurality of software categories;

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

automatically selecting the one or more particular components comprises selecting at least one component associated with each of the plurality of software categories.

8. A method comprising:

receiving a software request from a user device that requests particular software;

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

fulfilling the software request by:

based, at least in part, on the metadata of the user device, automatically selecting one or more particular components from one or more components in a component repository,

constructing a first version of the particular software by including, in the first version, the one or more particular components, and

transmitting the first version of the particular software to the user device as a response to the software request;

detecting, in particular component metadata, one or more changes within a set of eligibility attribute values associated with the one or more particular components;

wherein the particular component metadata is maintained, for the one or more particular components, within a component repository;

in response to detecting the one or more changes within the set of eligibility attribute values associated with the one or more particular components:

for at least one of the one or more particular components, selecting a replacement component from the one or more components in the component repository;

wherein selecting the at least one replacement component is based at least in part on:

one or more changed eligibility attribute values within the set of eligibility attribute values, and

the metadata of the user device;

constructing a second version of the particular software that includes the at least one replacement component; and

transmitting the second version of the particular software to the user device wherein the method is performed by one or more computing devices.

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; and

in response to receiving the notification of the change in the metadata of the user device:

based, at least in part, on the change in the metadata of the user device, selecting a replacement component, for a certain component of the one or more particular components, from the one or more components in the component repository;

constructing a third version of the particular software that includes the replacement component and that does not include the certain component; and

transmitting the third version of the particular software to the user device.

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

11. The method of claim 8 , further comprising:

receiving notification of a change in user preferences associated with the user device; and

in response to receiving the notification of the change in the user preferences associated with the user device:

based, at least in part, on the change in the user preferences associated with the user device, selecting a replacement component, for a certain component of the one or more particular components, from the one or more components in the component repository;

constructing a third version of the particular software that includes the replacement component and that does not include the certain component; and

transmitting the third version of the particular software to the user device.

12. The method of claim 11 , wherein the notification of the change in user preferences comprises information indicating a change in preference for one or more of: reduced power consumption, improved user interface, performing operations locally, and override of hardware configurations.

13. The method of claim 8 , further comprising:

determining that a software template that corresponds to the particular software has changed since construction of the second version of the particular software; and

in response to determining that the software template that corresponds to the particular software has changed since construction of the second version of the particular software:

based, at least in part, on the changed software template, selecting a replacement component, for a certain component of the one or more particular components, from the one or more components in the component repository;

constructing a third version of the particular software that includes the replacement component and that does not include the certain component; and

transmitting the third version of the particular software to the user device.

14. The method of claim 8 , wherein:

a software template defines a plurality of software categories;

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

automatically selecting the one or more particular components comprises selecting at least one component associated with each of the plurality of software categories.

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:

receiving a software request from a user device that requests particular software;

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

fulfilling the software request by:

based, at least in part, on the metadata of the user device, automatically selecting one or more particular components from one or more components in a component repository,

constructing a first version of the particular software by including, in the first version, the one or more particular components, and

transmitting the first version of the particular software to the user device as a response to the software request;

detecting, in particular component metadata, one or more changes within a set of eligibility attribute values associated with the one or more particular components;

wherein the particular component metadata is maintained, for the one or more particular components, within a component repository;

in response to detecting the one or more changes within the set of eligibility attribute values associated with the one or more particular components:

for at least one of the one or more particular components, selecting a replacement component from the one or more components in the component repository;

wherein selecting the at least one replacement component is based at least in part on:

one or more changed eligibility attribute values within the set of eligibility attribute values, and

the metadata of the user device;

constructing a second version of the particular software that includes the at least one replacement component; and

transmitting the second version of the particular software to the user device.

16. The one or more non-transitory computer-readable media of claim 15 , wherein the one or more sequences of instructions further comprise instructions which, when executed by one or more processors, cause:

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; and

in response to receiving the notification of the change in the metadata of the user device:

based, at least in part, on the change in the metadata of the user device, selecting a replacement component, for a certain component of the one or more particular components, from the one or more components in the component repository;

constructing a third version of the particular software that includes the replacement component and that does not include the certain component; and

transmitting the third version of the particular software to the user device.

17. The one or more non-transitory computer-readable media of claim 15 , 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.

18. The one or more non-transitory computer-readable media of claim 15 , wherein the one or more sequences of instructions further comprise instructions which, when executed by one or more processors, cause:

receiving notification of a change in user preferences associated with the user device; and

in response to receiving the notification of the change in the user preferences associated with the user device:

based, at least in part, on the change in the user preferences associated with the user device, selecting a replacement component, for a certain component of the one or more particular components, from the one or more components in the component repository;

constructing a third version of the particular software that includes the replacement component and that does not include the certain component; and

transmitting the third version of the particular software to the user device.

19. The one or more non-transitory computer-readable media of claim 18 , wherein the notification of the change in user preferences comprises information indicating a change in preference for one or more of: reduced power consumption, improved user interface, performing operations locally, and override of hardware configurations.

20. The one or more non-transitory computer-readable media of claim 15 , wherein the one or more sequences of instructions further comprise instructions which, when executed by one or more processors, cause:

determining that a software template that corresponds to the particular software has changed since construction of the second version of the particular software; and

in response to determining that the software template that corresponds to the particular software has changed since construction of the second version of the particular software:

based, at least in part, on the changed software template, selecting a replacement component, for a certain component of the one or more particular components, from the one or more components in the component repository;

constructing a third version of the particular software that includes the replacement component and that does not include the certain component; and

transmitting the third version of the particular software to the user device.

Assignments (4)
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 →
Continuity (2)
Continuation 14601138 · Jan 20, 2015
Related Publication 20160210127A1 · Jul 21, 2016