IP Library Granted Patent US 8,789,022
Granted Patent B2
US 8,789,022 · App. 13/443,875 · Granted Jul 22, 2014

Self-evolving computing service template translation

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,789,022
App. No.
13/443,875
Granted
Jul 22, 2014
Kind
B2
Abstract

Methods and apparatus for automatically generating translation programs for translating computing services templates to service blueprints are disclosed. An example method includes generating a population of translation logic elements from a plurality of verified computing services template translation programs, where each of the verified programs is configured to correctly translate at least one computing services template of a plurality of known templates to a respective service blueprint. The example method further includes identifying a new computing services template and programmatically augmenting the population of translation logic elements. The example method also includes generating one or more additional translation programs based on the augmented population of translation logic elements and validating each of the one or more additional computing services template translation programs. Based on the validating, each of the one or more additional computing services template translation programs is added to the verified translation programs or is discarded.

Claims (84)

1. A computer-implemented method including executing, by at least one processor, instructions recorded on a non-transitory computer-readable storage medium, the method comprising:

generating, by the at least one processor, a population of translation logic elements from a plurality of verified computing services template translation programs, wherein each of the verified computing services template translation programs is configured to correctly translate at least one computing services template of a plurality of known computing services templates to a respective service blueprint;

identifying a new computing services template;

programmatically augmenting the population of translation logic elements;

copying one or more of the population logic elements and adding the one or more copies to the population of the translation logic elements;

performing mutation of one more of the translation logic elements of the population of translation logic elements; and

performing crossover between two or more of the translation logic elements of the population of translation logic elements;

generating one or more additional computing services template translation programs based on the augmented population of translation logic elements;

validating each of the one or more additional computing services template translation programs; and

based on the validating, performing, for each of the one or more additional computing services template translation programs, one of adding the additional translation program to the plurality of verified computing services template translation programs or discarding the additional translation program.

2. The computer-implemented method of claim 1 , wherein generating the population of translation logic elements comprises:

deconstructing the plurality of verified translation programs into a plurality of constituent decision trees, wherein each decision tree includes a plurality of operators and a corresponding plurality of operands.

3. The computer-implemented method of claim 2 , wherein:

the plurality of operators comprises a plurality of autonomous and sequential condition evaluation expressions and assignment expressions; and

the plurality of operands comprises a plurality of resource identifiers and blueprint constructs.

4. The computer-implemented method of claim 3 , wherein:

each of the resource identifiers corresponds with a respective computing services template; and

each of the blueprint constructs is computing services template independent.

5. The computer-implemented method of claim 1 , wherein programmatically augmenting the population of translation logic elements comprises recursively augmenting the population of translation logic elements.

6. The computer-implemented method of claim 1 , wherein validating each of the one or more additional computing services template translation programs comprises, for each of the additional computing services template translation programs, determining whether a service blueprint for the new computing services template generated by the respective additional translation program is semantically accurate and self-consistent, wherein if the generated service blueprint is not semantically accurate and self-consistent, the respective additional translation program is discarded.

7. The computer-implemented method of claim 6 , wherein:

the generated service blueprint comprises a directed graph; and

determining whether the generated service blueprint is semantically accurate and self-consistent comprises:

determining if the directed graph is acyclic;

determining, for each of one or more functional components represented in the directed graph, whether the respective functional component is associated with a single computing resource set, each respective computing resource set including at least one of respective computing specifications and respective network specifications; and

determining whether each of the at least one of respective computing specifications and respective network specifications are homogeneous.

8. The computer-implemented method of claim 6 , wherein validating each of the one or more additional computing services template translation programs further comprises, for each semantically accurate and self-consistent service blueprint generated, determining whether the generated service blueprint corresponds, within a given degree of accuracy, with a runtime state of a computing services platform associated with the new computing services template, wherein:

in the event the generated blueprint corresponds with the runtime state within the given degree of accuracy, the respective additional translation program is added to the plurality of verified computing services template translation programs; and

in the event the generated blueprint does not correspond with the runtime state within the given degree of accuracy, the respective additional translation program is discarded.

9. The computer-implemented method of claim 1 , wherein validating each of the one or more additional computing services template translation programs comprises, for each of the additional computing services template translation programs, determining whether a service blueprint for the new computing services template generated by the respective additional translation program corresponds, within a given degree of accuracy, with a runtime state of a computing services platform associated with the new computing services template, wherein:

in the event the generated blueprint corresponds with the runtime state within the given degree of accuracy, the respective additional translation program is added to the plurality of verified computing services template translation programs; and

in the event the generated blueprint does not correspond with the runtime state within the given degree of accuracy, the respective additional translation program is discarded.

10. The computer-implemented method of claim 9 , wherein:

the generated service blueprint comprises a directed graph; and

determining whether the generated blueprint corresponds with the runtime state within the given degree of accuracy comprises:

for each of one or more functional components represented in the directed graph, performing one or more of:

comparing software of a corresponding functional component on the computing services platform with software indicated in the directed graph;

comparing an operating system of the corresponding functional component on the computing services platform with an operating system indicated in the directed graph;

comparing a network configuration of the corresponding functional component on the computing services platform with a network configuration indicated in the directed graph;

comparing a firewall configuration of the corresponding functional component on the computing services platform with a firewall configuration indicated in the directed graph; and

comparing a load balancer specification of the corresponding functional component on the computing services platform with a load balancer specification indicated in the directed graph; and

determining a percentage of attributes of the computing services platform that correctly match attributes indicated in the directed graph based on the comparisons of the computing services platform with the directed graph for each functional component indicated in the directed graph.

11. The computer-implemented method of claim 1 , further comprises, in the event each of the one or more additional translation programs are discarded:

programmatically further augmenting the population of translation logic elements;

generating one or more further additional computing services template translation programs based on the further augmented population of translation logic elements;

validating each of the one or more further additional computing services template translation programs; and

based on the validating of the one or more further additional computing services template translation program, performing, for each of the one or more further additional computing services template translation programs, one of adding the further additional translation program to the plurality of verified computing services template translation programs or discarding the further additional translation program.

12. The computer-implemented method of claim 1 , wherein each of the known computing services templates and the new computing services template comprises respective meta-data describing a configuration for a corresponding computing services platform.

13. The computer-implemented method of claim 1 , wherein the new computing services template comprises one of a modified version of one of the known computing services templates and a computing services template not included in the known service templates.

14. The computer-implemented method of claim 1 , wherein the respective service blueprint comprises a normalized directed acyclic graph representing a design time state of a computing services platform associated with the respective computing services template, the directed acyclic graph including a plurality of nodes and corresponding edges that define respective relationships between the plurality nodes.

15. The computer-implemented method of claim 1 , wherein programmatically augmenting the population of translation logic elements, generating the one or more additional computing services template translation programs and validating each of the one or more additional computing services translation programs are performed in accordance with one or more termination criteria.

16. A computer program product, the computer program product being tangibly embodied on a non-transitory computer-readable storage medium storing instructions that when executed cause a processor to perform a process, the instructions comprising instructions to:

generate, by the at least one processor, a population of translation logic elements from a plurality of verified computing services template translation programs, wherein each of the verified computing services template translation programs is configured to correctly translate at least one computing services template of a plurality of known computing services templates to a respective service blueprint;

identify a new computing services template;

programmatically augment the population of translation logic elements comprising:

copying one or more of the translation logic elements and adding the one or more copies to the population of the translation logic elements;

performing mutation of one or more of the translation logic elements of the population of translation logic elements; and

performing crossover between two or more of the translation logic elements of the population of translation logic elements;

generate one or more additional computing services translation programs based on the augmented population of translation logic elements;

validate each of the one or more additional computing services translation programs; and

based on the validating, perform, for each of the one or more additional computing services translation programs, one of adding the additional translation program to the plurality of verified computing services translation programs or discarding the additional translation program.

17. The non-transitory computer-readable storage medium of claim 16 , wherein the instructions to programmatically augment the population of translation logic element comprise instructions to recursively augment the population of translation logic elements.

18. The non-transitory computer-readable storage medium of claim 16 , further comprising, in the event each of the one or more additional translation programs are discarded, instructions to:

programmatically further augment the population of translation logic elements;

generate one or more further additional computing services template translation programs based on the further augmented population of translation logic elements;

validate each of the one or more further additional computing services template translation programs; and

based on the validating of the one or more further additional computing services template translation program, perform, for each of the one or more further additional computing services template translation programs, one of adding the further additional translation program to the plurality of verified computing services template translation programs or discarding the additional translation program.

19. A system comprising;

at least one memory device configured to store executable code; and

at least one processor operably coupled to the at least one memory device, the processor configured to execute the code in order to perform the operations of:

generating, by the at least one processor, a population of translation logic elements from a plurality of verified computing services template translation programs, wherein each of the verified computing services template translation programs is configured to correctly translate at least one computing services template of a plurality of known computing services templates to a respective service blueprint;

identifying a new computing services template;

programmatically augmenting the population of translation logic elements by:

copying one or more of the translation logic elements and adding the one or more copies to the population of the translation logic elements;

performing mutation of one or more of the translation logic elements of the population of translation logic elements; and

performing crossover between two or more of the translation logic elements of the population of translation logic elements;

generating one or more additional computing services template translation programs based on the augmented population of translation logic elements;

validating each of the one or more additional computing services template translation programs; and

based on the validating, performing, for each of the one or more additional computing services template translation programs, one of adding the additional translation program to the plurality of verified computing services template translation programs or discarding the additional translation program.

20. The system of claim 19 , wherein the operation of validating each of the one or more additional computing services template translation programs comprises:

for each of the additional computing services template translation programs, determining whether a service blueprint for the new computing services template generated by the respective additional translation program is semantically accurate and self-consistent, wherein if the generated service blueprint is not semantically accurate and self-consistent, the respective additional translation program is discarded; and

for each semantically accurate and self-consistent service blueprint generated, determining whether the generated service blueprint corresponds, within a given degree of accuracy, with a runtime state of a computing services platform associated with the new computing services template, wherein:

in the event the generated blueprint corresponds with the runtime state within the given degree of accuracy, the respective additional translation program is added to the plurality of verified computing services template translation programs; and

in the event the generated blueprint does not correspond with the runtime state within the given degree of accuracy, the respective additional translation program is discarded.

Assignments (15)
CHANGE OF NAME Recorded Jan 10, 2025
From: BLADELOGIC, INC.
To: BMC HELIX, INC.
Reel/Frame 069870/0796 →
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 19, 2017
From: BMC SOFTWARE, INC.
To: BLADELOGIC, INC.
Reel/Frame 042749/0439 →
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 10, 2012
From: NEOGI, ATANU
To: BMC SOFTWARE, INC.
Reel/Frame 028521/0610 →