Claims
- 1. A method comprising:
receiving a description of a system being designed; receiving a description of an environment; and using both of the received descriptions to validate the system against the environment while the system is being designed and prior to attempting to deploy the system.
- 2. A method as recited in claim 1, the description of the system comprising an SDM document.
- 3. A method as recited in claim 1, the description of the environment comprising a LIM document.
- 4. A method as recited in claim 1, the system comprising a software application, and the environment comprising a data center.
- 5. A method as recited in claim 1, the environment comprising an environment where the system is expected to be deployed.
- 6. One or more computer readable media having stored thereon a plurality of instructions that, when executed by one or more processors, causes the one or more processors to:
access a system description that describes a system in the process of being designed by a program running on the one or more processors; and validate the system, using the system description, against a simulated environment.
- 7. One or more computer readable media as recited in claim 6, the plurality of instructions further causing the processor to:
receive, from a requester, a request to validate the system; and return, to the requestor, a result of the validation.
- 8. One or more computer readable media as recited in claim 6, wherein the instructions that cause the one or more processors to validate the system against the simulated environment further cause the one or more processors to:
select a top-level definition from the system description; generate an appropriate instance, as described by the top-level definition, for an instance space; select an additional definition nested within the top-level definition; generate an appropriate instance, as described by the additional definition, for the instance space based on whether the selected definition defines an object or a relationship; and continue the selection of an additional definition and the generation of an appropriate instance, as described by the additional definition, until instances for all of the definitions nested within the top-level definition have been generated for the instance space.
- 9. One or more computer readable media as recited in claim 6, wherein the instructions that cause the one or more processors to validate the system against the simulated environment further cause the one or more processors to:
identify one or more flows in an instance space, the instance space describing the system; for each of at least one of the one or more flows:
identify one or more input values for the flow, the input values being obtained from other instances of the instance space; and generate, based at least in part on the input values, an output value for the flow.
- 10. One or more computer readable media as recited in claim 6, wherein the instructions that cause the one or more processors to validate the system against the simulated environment further cause the one or more processors to:
identify one or more constraints in an instance space, the instance space describing the system; check whether the one or more constraints are satisfied; and return, for each of the one or more constraints, a value indicating whether the constraint is satisfied.
- 11. An apparatus comprising:
a loader configured to load one or more documents describing a system, the system being designed when the one or more documents are loaded; a simulator configured to simulate an environment of a data center and validate the system against the environment; and the apparatus being separate from the data center.
- 12. An apparatus as recited in claim 11, further comprising:
an expansion engine to identify a top-level definition from one of the one or more documents and expand the top-level definition to populate an instance space by instantiating members nested in the top-level definition.
- 13. An apparatus as recited in claim 12, further comprising:
a flow engine to identify flows in the instance space, identify the values of inputs to the flows, and setting an output of the flow based on the inputs to the flows.
- 14. An apparatus as recited in claim 13, further comprising:
a constraint engine to identify and evaluate constraints in the instance space.
- 15. One or more computer readable media having stored thereon a plurality of instructions that, when executed by one or more processors, causes the one or more processors to:
access a document that describes a system being designed to be used in an environment of a data center; select a top-level definition from the document; generate an appropriate instance, as described by the top-level definition, for an instance space; select an additional definition nested within the top-level definition; generate an appropriate instance, as described by the additional definition, for the instance space based on whether the selected definition defines an object or a relationship; and continue the selection of an additional definition and the generation of an appropriate instance, as described by the additional definition, until instances for all of the definitions nested within the top-level definition have been generated for the instance space.
- 16. One or more computer readable media as recited in claim 15, wherein the instructions that cause the one or more processors to generate an appropriate instance, as described by the additional definition, when the selected definition defines a relationship further cause the one or more processors to:
identify a number of relationship instances to create based on a number of source instances and a number of target instances involved in the defined relationship; create the identified number of relationship instances; and for each of the created relationship instances, associate source and target instances with the relationship instance.
- 17. One or more computer readable media as recited in claim 16, the selected definition defining a containment relationship that describes that one instance can be contained in another instance.
- 18. One or more computer readable media as recited in claim 16, the selected definition defining a communication relationship that describes an interaction between independently deployed software elements.
- 19. One or more computer readable media as recited in claim 16, the selected definition defining a reference relationship used to capture dependencies between instances.
- 20. One or more computer readable media as recited in claim 16, the selected definition defining a hosting relationship that associates a host with one or more of its guest member instances.
- 21. One or more computer readable media as recited in claim 16, the selected definition defining a delegation relationship that associates communication endpoints of two systems.
- 22. One or more computer readable media as recited in claim 15, wherein the instructions that cause the one or more processors to generate an appropriate instance, as described by the additional definition, when the selected definition defines an object further cause the one or more processors to:
identify a minimum number of occurrences of the object as identified in the selected definition; identify a number of instances of the selected definition to generate based on the identified minimum number of occurrences and how many instances of the selected definition have already been generated; and generate the identified number of instances of the selected definition.
- 23. One or more computer readable media as recited in claim 15, wherein the instructions that cause the one or more processors to generate an appropriate instance, as described by the additional definition, when the selected definition defines an object further cause the one or more processors to:
trigger an event that allows a listener to create the appropriate instance as described by the additional information.
- 24. One or more computer readable media as recited in claim 15, wherein the instructions that cause the one or more processors to generate an appropriate instance, as described by the additional definition, when the selected definition defines a relationship further cause the one or more processors to:
trigger an event that allows a listener to create the appropriate instance as described by the additional information.
- 25. One or more computer readable media as recited in claim 15, wherein the instructions are to be executed prior to beginning deployment of the system in the data center.
- 26. One or more computer readable media having stored thereon a plurality of instructions that, when executed by one or more processors, causes the one or more processors to:
identify one or more flows in an instance space, the instance space describing a system being designed to be used in an environment of a data center; for each of at least one of the one or more flows:
identify one or more input values for the flow, the input values being obtained from other instances of the instance space; and generate, based at least in part on the input values, an output value for the flow.
- 27. One or more computer readable media as recited in claim 26, wherein the instructions that cause the one or more processors to identify one or more input values for the flow further cause the one or more processors to:
identify whether the input values have been assigned yet; if the input values have been assigned then obtain the input values from the other instances; if at least one of the input values has not been assigned yet then, for each of the input values that has not been assigned yet:
identify one other flow that sets the input value; identify one or more input values for the other flow, the input values being obtained from other instances of the instance space; and generate, based at least in part on the input values, an output value for the other flow.
- 28. One or more computer readable media as recited in claim 26, wherein the instructions that cause the one or more processors to generate, based at least in part on the input values, the output value for the flow further cause the one or more processors to:
identify a set of instructions associated with the flow that can be executed to generate a result; execute the identified set of instructions; and use the generated result as the output value for the flow.
- 29. One or more computer readable media as recited in claim 26, the system comprising an application to be deployed in the environment.
- 30. One or more computer readable media as recited in claim 26, the environment comprising a hardware description of a data center.
- 31. One or more computer readable media as recited in claim 26, wherein the instructions are to be executed prior to beginning deployment of the system in the environment.
- 32. One or more computer readable media having stored thereon a plurality of instructions that, when executed by one or more processors, causes the one or more processors to:
identify one or more constraints in an instance space, the instance space describing a system being designed to be used in an environment of a data center; check whether the one or more constraints are satisfied; and return, for each of the one or more constraints, a value indicating whether the constraint is satisfied.
- 33. One or more computer readable media as recited in claim 32, the one or more constraints including a setting constraint, a relationship constraint, and an object constraint.
- 34. One or more computer readable media as recited in claim 32, wherein the instructions that cause the one or more processors to check whether the one or more constraints are satisfied further cause the one or more processors to, for one of the constraints:
identify a set of instructions associated with the constraint that can be executed to generate a result; execute the identified set of instructions; and use the generated result as the value returned indicating whether the constraint is satisfied.
- 35. One or more computer readable media as recited in claim 32, wherein the instructions that cause the one or more processors to check whether the one or more constraints are satisfied further cause the one or more processors to, for one of the constraints:
identify a role and an object definition for a target instance of the constraint; check whether the role and the object definition of the constraint match the role and the object definition of the target instance; and generate, based on whether the role and the object definition of the constraint match the role and the object definition of the target instance, the value returned indicating whether the constraint is satisfied.
- 36. One or more computer readable media as recited in claim 35, wherein the instructions that cause the one or more processors to check whether the one or more constraints are satisfied further cause the one or more processors to, for the one of the constraints:
identify a secondary role and a secondary object definition for the target instance of the constraint; check whether the secondary role and the secondary object definition of the constraint match the role and the object definition of the target instance; and generate, based on whether the role and the object definition of the constraint match both the role and the object definition of the target instance and the secondary role and the secondary object definition of the target instance, the value returned indicating whether the constraint is satisfied.
- 37. One or more computer readable media as recited in claim 35, wherein the instructions that cause the one or more processors to check whether the one or more constraints are satisfied further cause the one or more processors to, for the one of the constraints:
evaluate one or more nested constraints for the target instance; receive one or more return values for the nested constraints, the one or more return values indicating whether the one or more nested constraints are satisfied; and generate, based on the one or more return values for the nested constraints, the value returned indicating whether the constraint is satisfied.
- 38. One or more computer readable media as recited in claim 32, wherein the instructions that cause the one or more processors to return, for each of the one or more constraints, a value indicating whether the constraint is satisfied further cause the one or more processors to, for one of the constraints:
if a value indicating that the constraint is not satisfied is to be returned, then check whether an error message is to be generated for the constraint; and if the error message is to be generated, then generate the error message including information identifying the constraint.
- 39. One or more computer readable media as recited in claim 32, wherein the instructions that cause the one or more processors to check whether the one or more constraints are satisfied further cause the one or more processors to, for one of the constraints:
initialize a match count variable; identify one or more relationship instances that the target instance of the constraint participates in; evaluate, for each of the one or more relationship instances, whether the relationship instance satisfies the constraint; increment the match count variable for each of the one or more relationship instances that satisfies the constraint; and generate, based on the value of the match count variable after the one or more relationship instances have been evaluated, the value returned indicating whether the constraint is satisfied.
- 40. One or more computer readable media as recited in claim 39, wherein the instructions that cause the one or more processors to evaluate, for each of the one or more relationship instances, whether the relationship instance satisfies the constraint further cause the one or more processors to, for the one of the constraints:
check whether a relationship definition of the constraint matches a relationship definition of the relationship instance; check whether a direction of the constraint matches a direction of the relationship instance; check whether all nested constraints for the relationship instance are satisfied; and return a value indicating that the constraint is satisfied only if the relationship definition of the constraint matches the relationship definition of the relationship instance, the direction of the constraint matches the direction of the relationship instance, and all nested constraints for the relationship instance are satisfied.
- 41. One or more computer readable media as recited in claim 39, wherein the instructions that cause the one or more processors to evaluate, for each of the one or more relationship instances, whether the relationship instance satisfies the constraint further cause the one or more processors to, for the one of the constraints:
check whether a target object of the constraint matches an instance at the other end of the relationship instance; and return a value indicating that the constraint is satisfied only if the relationship definition of the constraint matches the relationship definition of the relationship instance, the direction of the constraint matches the direction of the relationship instance, all nested constraints for the relationship instance are satisfied, and the target object of the constraint matches the instance at the other end of the relationship instance.
- 42. One or more computer readable media as recited in claim 39, wherein the instructions that cause the one or more processors to generate, based on the value of the match count variable after the one or more relationship instances have been evaluated, the value returned indicating whether the constraint is satisfied further cause the one or more processors to, for one of the constraints:
check whether the match count variable is at least a minimum value of the constraint but is not greater than a maximum value of the constraint; and generate the value returned indicating that the constraint is satisfied if the match count variable is at least the minimum value of the constraint but is not greater than the maximum value of the constraint, otherwise generate the value returned indicating that the constraint is not satisfied.
- 43. One or more computer readable media as recited in claim 32, wherein the instructions are to be executed prior to beginning deployment of the system in the environment.
RELATED APPLICATIONS
[0001] This application claims the benefit of U.S. Provisional Application No. 60/452,736, filed Mar. 6, 2003, entitled “Architecture for Distributed Computing System and Automated Design, Deployment, and Management of Distributed Applications”, which is hereby incorporated herein by reference. Additionally, this application is a continuation-in-part of U.S. application Ser. No. 10/693,838, filed Oct. 24, 2003, entitled “Integrating Design, Deployment, and Management Phases for Systems”, which is hereby incorporated herein by reference.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60452736 |
Mar 2003 |
US |
Continuation in Parts (1)
|
Number |
Date |
Country |
Parent |
10693838 |
Oct 2003 |
US |
Child |
10791222 |
Mar 2004 |
US |