IP Library Granted Patent US 8,832,652
Granted Patent B2
US 8,832,652 · App. 12/835,908 · Granted Sep 9, 2014

Method for customizing software applications

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 8,832,652
App. No.
12/835,908
Granted
Sep 9, 2014
Kind
B2
Abstract

Techniques for overlaying objects of a software application with other objects allow modification and customization of the application by one or more users in different ways, without storing multiple modified copies of the application. The technique allows configuring the software application to execute using overlaid objects instead of the base objects contained in the software application. In some embodiments, the base objects for the software application and the overlaid objects are stored in a datastore, and a runtime embodiment causes execution of the overlaid objects instead of the base objects.

Claims (85)

1. A method, comprising:

while a processor associated with a computer system is one of interpreting, in an interpreted computer environment, and compiling, in a compiled computer environment, a software application, determining at least one base object of the software application has at least one corresponding overlaid object;

associating, by the processor, a first overlaid object with a first base object of the software application, the first overlaid object being configured to change a construct definition of the first base object of the software application;

configuring, by the processor, the software application to execute in the computer system using the first overlaid object instead of the first base object; and

configuring, by the processor, the software application to execute in the computer system using the first base object instead of the first overlaid object.

2. The method of claim 1 , further comprising:

associating a second overlaid object with the first overlaid object; and

configuring the software application to execute in the computer system using the second overlaid object instead of the first base object or the first overlaid object.

3. The method of claim 1 , further comprising:

associating a second base object of the software application with a second overlaid object;

configuring the software application to execute in the computer system using the second overlaid object instead of the second base object; and

configuring the software application to execute in the computer system using the second base object instead of the second overlaid object.

4. The method of claim 3 , further comprising:

configuring the software application to execute in the computer system using the first overlaid object and the second overlaid object; and

configuring the software application to execute in the computer system using the first overlaid object and the second base object.

5. The method of claim 1 , further comprising:

defining an overlay group comprising the first overlaid object; and

associating a first user with the overlay group, wherein the act of configuring the software application to execute in the computer system using the first overlaid object instead of the first base object is performed responsive to receiving a request from the first user to execute the software application.

6. The method of claim 1 , further comprising:

defining a first overlay group comprising the first overlaid object;

associating a second base object of the software application with a second overlaid object, the second overlaid object associated with a second overlay group; and

configuring the software application to execute in the computer system using the second overlaid object instead of the second base object, responsive to a first request to execute the software application by a first user associated with the second overlay group, wherein

the act of configuring the software application to execute in a computer system using the first overlaid object instead of the first base object is performed responsive to a second request to execute the software application by a second user associated with the first overlay group.

7. The method of claim 1 , wherein

the act of configuring the software application to execute in a computer system using the first overlaid object instead of the first base object is performed responsive to a request to execute the software application by a first user having a first permission, and wherein

the act of configuring the software application to execute in the computer system using the first base object instead of the first overlaid object is performed responsive to a request to execute the software application by a second user having a second permission.

8. The method of claim 1 , further comprising:

associating a second overlaid object with the first overlaid object; and

configuring the software application to execute in the computer system using the second overlaid object instead of the first base object or the first overlaid object; and

configuring the software application to execute in the computer system using the first overlaid object instead of the second overlaid object or the first base object.

9. The method of claim 1 , wherein the act of associating a first overlaid object with a first base object of a software application comprises:

storing a definition of the first base object in a dictionary; and

storing a definition of the first overlaid object in the dictionary, indicating that the first overlaid object overlays the first base object.

10. The method of claim 9 , wherein

the software application is interpreted by an interpretation environment, and wherein

the act of configuring the software application to execute in a computer system using the first overlaid object instead of the first base object comprises:

querying the dictionary for information regarding objects associated with the software application, responsive to a request to execute the software application; and

determining whether to execute the first base object or the first overlaid object.

11. A networked computer system, comprising:

a server computer;

a datastore, coupled to the server;

a client computer, communicatively coupled to the server computer;

a plurality of software application base objects, stored in the datastore;

a plurality of software application overlaid objects, stored in the datastore, each of the plurality of software application overlaid objects being configured to change a construct definition of a corresponding software application base object of the plurality of software application base objects; and

a runtime environment, stored in the datastore, comprising instructions that when executed cause the server to perform actions comprising:

receiving a request from the client computer to execute a software application, the software application comprising a first application base object of the plurality of software application base objects;

selecting a first software application overlaid object of the plurality of software application overlaid objects to be executed by the client instead of the first application base object, responsive to the request; and

sending information to the client computer to use the first software application overlaid object instead of the first application base object while the client computer is one of interpreting, in an interpreted computer environment, and compiling, in a compiled computer environment, the software application.

12. The networked computer system of claim 11 , further comprising:

a dictionary, stored in the datastore, comprising:

information associating each of the plurality of software application base objects with a software application; and

information associating each of the plurality of software application overlaid objects with a member of the plurality of software application objects or a member of the plurality of software application overlaid objects, wherein

the act of selecting a first software application overlaid object of the plurality of software application overlaid objects to be executed by the client instead of the first application base object, responsive to the request comprises:

querying the dictionary.

13. The networked computer system of claim 12 , the dictionary further comprising:

information associating each of the plurality of software application overlaid objects with an overlay group of a plurality of overlay groups, wherein

the act of querying the dictionary comprises:

selecting overlaid objects of the plurality of software application overlaid objects that are associated with a first overlay group of the plurality of overlay groups.

14. The networked computer system of claim 11 , wherein the software application is interpreted on the client computer by an interpretation environment.

15. The networked computer system of claim 11 , further comprising:

access control software, stored on the datastore, wherein

the act of selecting a first software application overlaid object of the plurality of software application overlaid objects to be executed by the client instead of the first application base object, responsive to the request comprises:

considering only those members of the plurality of software application overlaid objects to which access is permitted by the access control software.

16. A computer system, comprising:

a processor;

a datastore, coupled to the processor;

a plurality of software application base objects, stored in the datastore;

a plurality of software application overlaid objects, stored in the datastore, each of the plurality of software application overlaid objects being configured to change a construct definition of a corresponding software application base object of the plurality of software application base objects;

a software application, stored in the datastore, configured for execution by the processor, comprising:

a first software application base object; and

a runtime environment for the software application, stored in the datastore, comprising instructions that when executed, while the processor is one of interpreting, in an interpreted computer environment, and compiling, in a compiled computer environment, the software application, cause the processor to perform actions comprising:

selecting a first software application overlaid object of the plurality of software application overlaid objects associated with the first application base object; and

executing the first software application overlaid object instead of the first application base object.

17. The computer system of claim 16 , further comprising:

a plurality of overlay groups, each comprising a member of the plurality of software application overlaid objects.

18. The computer system of claim 16 , wherein the runtime environment further comprises instructions that when executed cause the processor to perform actions comprising:

executing the first software application base object instead of the first software application overlaid object.

19. The computer system of claim 18 , wherein

the act of executing the first software application overlaid object instead of the first software application base object is performed responsive to execution of the software application by a first user, and wherein

the act of executing the first software application base object instead of the first software application overlaid object is performed responsive to execution of the software application by a second user.

20. The computer system of claim 16 , wherein

the act of executing the first software application overlaid object instead of the first software application base object is performed responsive to execution of the software application by a first user, and wherein

the runtime environment further comprises instructions that when executed cause the processor to perform actions further comprising:

selecting a second software application overlaid object of the plurality of software application overlaid objects associated with the first application base object; and

executing the second software application overlaid object instead of the first application base object responsive to execution of the software application by a second user.

Assignments (13)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 7, 2025
From: BMC SOFTWARE, INC.
To: BMC HELIX, INC.
Reel/Frame 070442/0197 →
GRANT OF FIRST LIEN SECURITY INTEREST IN PATENT RIGHTS Recorded Nov 13, 2024
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 069352/0628 →
GRANT OF SECOND LIEN SECURITY INTEREST IN PATENT RIGHTS Recorded Nov 13, 2024
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 069352/0568 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052854/0139) Recorded Aug 6, 2024
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.
Reel/Frame 068339/0617 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052844/0646) Recorded Aug 6, 2024
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.
Reel/Frame 068339/0408 →
OMNIBUS ASSIGNMENT OF SECURITY INTERESTS IN PATENT COLLATERAL Recorded Mar 4, 2024
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS RESIGNING COLLATERAL AGENT
To: GOLDMAN SACHS BANK USA, AS SUCCESSOR COLLATERAL AGENT
Reel/Frame 066729/0889 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 1, 2024
From: ALTER DOMUS (US) LLC
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.
Reel/Frame 066567/0283 →
GRANT OF SECOND LIEN SECURITY INTEREST IN PATENT RIGHTS Recorded Sep 30, 2021
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: ALTER DOMUS (US) LLC
Reel/Frame 057683/0582 →
SECURITY INTEREST Recorded Jun 4, 2020
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052854/0139 →
SECURITY INTEREST Recorded Jun 4, 2020
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052844/0646 →
RELEASE OF PATENTS Recorded Oct 5, 2018
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.; BMC ACQUISITION L.L.C.
Reel/Frame 047198/0468 →
SECURITY INTEREST Recorded Oct 2, 2018
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: CREDIT SUISSE, AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 047185/0744 →
SECURITY AGREEMENT Recorded Sep 11, 2013
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 031204/0225 →