MANAGING SOFTWARE LIFECYCLE
First Claim
1. At a computer system, the computer system including a repository storing models that describe intended application behavior, executive services for refining models so that drivers can implement model related commands on applications, driver services for implementing model related commands for applications, a method for managing the lifecycle of a software application, the method comprising:
- an act of receiving an application model reference along with a software lifecycle command, the application model reference referring to an application model, the software lifecycle command indicating a software lifecycle transition that is to be applied to a distributed application based on the referenced application model;
an act of utilizing the application model reference to access the referenced application model, the referenced application model including a lifecycle model reference referring to a lifecycle model and including a lifecycle state attribute configured to store a lifecycle state value indicating the lifecycle state of a distributed application based on the application model;
an act of utilizing the lifecycle model reference to access the referenced lifecycle model, the referenced lifecycle model defining possible lifecycle state values for the lifecycle state attribute of the application model and defining transitions that cause lifecycle state values to change, each defined transition referencing a command model that describes how to implement the defined transition;
an act of activating software lifecycle activities based on the referenced lifecycle model;
an act of accessing the current state value from the lifecycle state attribute, the current state value representing the current lifecycle state of a distributed application based on the application model; and
an act of referring to the software lifecycle activities to determine if the distributed application can transition from the current lifecycle state to a new lifecycle state in accordance with the lifecycle transition indicated in the software lifecycle command.
2 Assignments
0 Petitions
Accused Products
Abstract
The present invention extends to methods, systems, and computer program products for managing software lifecycle. Based on declarative models and knowledge of their interpretation, embodiments of the present invention facilitate lifecycle management for model-based software applications. Lifecycle models, such as, for example, lifecycle state machine models are stored in a shared repository such that executive services can determine how software application lifecycles are to be managed and transitioned. Software lifecycle activities can verify that a transition is possible and identify any errors preventing a lifecycle transition. Model-based error handling and error recovery mechanisms can be used to correct any identified errors.
-
Citations
20 Claims
-
1. At a computer system, the computer system including a repository storing models that describe intended application behavior, executive services for refining models so that drivers can implement model related commands on applications, driver services for implementing model related commands for applications, a method for managing the lifecycle of a software application, the method comprising:
-
an act of receiving an application model reference along with a software lifecycle command, the application model reference referring to an application model, the software lifecycle command indicating a software lifecycle transition that is to be applied to a distributed application based on the referenced application model; an act of utilizing the application model reference to access the referenced application model, the referenced application model including a lifecycle model reference referring to a lifecycle model and including a lifecycle state attribute configured to store a lifecycle state value indicating the lifecycle state of a distributed application based on the application model; an act of utilizing the lifecycle model reference to access the referenced lifecycle model, the referenced lifecycle model defining possible lifecycle state values for the lifecycle state attribute of the application model and defining transitions that cause lifecycle state values to change, each defined transition referencing a command model that describes how to implement the defined transition; an act of activating software lifecycle activities based on the referenced lifecycle model; an act of accessing the current state value from the lifecycle state attribute, the current state value representing the current lifecycle state of a distributed application based on the application model; and an act of referring to the software lifecycle activities to determine if the distributed application can transition from the current lifecycle state to a new lifecycle state in accordance with the lifecycle transition indicated in the software lifecycle command. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. At a computer system, the computer system including a repository storing models that describe intended application behavior, executive services for refining models so that drivers can implement model related commands on applications, driver services for implementing model related commands for applications, and monitoring services for computing operational data indicating the behavior of model based applications, a method for managing the lifecycle of a software application, the method comprising:
-
an act of receiving an application model reference along with a software lifecycle command, the application model reference referring to an application model, the software lifecycle command indicating a software lifecycle transition that is to be applied to a distributed application based on the referenced application model; an act of utilizing the application model reference to access the referenced application model, the referenced application model including an event model defining events that can be emitted from a distributed application based on the application model and an observation model defining events that are to be used to compute observations related to the distributed application; an act of translating the application model into a distributed application, the distributed application configured to emit events defined in the event model; an act of applying the software lifecycle transition to the distributed application; an act of collecting emitted events, including events related to the software lifecycle transition; an act of forwarding the collected events to a monitoring service that can compute operational data for the distributed application, the operational data for determining if subsequent lifecycle state transitions are possible for the distributed application. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18, 19)
-
-
20. A system for managing the lifecycle of software, the system comprising:
a computer system, including; one or more processors; system memory; a repository, the repository configured to store; declarative models, each declarative model describing intended behaviors that are to occur when the declarative model is implemented, the declarative models including at least application models describing intended behaviors of applications and software lifecycle models describing intended behaviors of states and transitions in a software lifecycle of an application, each application model further including an event model defining events that can be emitted from an application based on the application model and an observation model defining events that are to be used to compute observations related to the application based on the application model and defining a store where computed observations can be collected; and operational data indicating current lifecycle state of applications; and one or more computer-readable media having stored thereon computer-executable instructions that, when executed, create one or more executive services, one or more driver services, and one or more monitoring services, wherein each executive services is configured to; interoperate with user-tools to receive a reference to a declarative application model along with a software lifecycle command, the software lifecycle command indicating a software lifecycle transition that is to be applied to a distributed application based on the referenced application model; interoperate with the repository to access the referenced application model from the repository; interoperate with the repository to access a software lifecycle model describing intended behaviors of software lifecycle states and software lifecycle transitions for applications based on the referenced application model; formulate one or more software lifecycle activities for the distributed application from the software lifecycle model; refine the application model until details of the application model are sufficient for drivers to consume; interoperate with the repository to access operational data for the distributed application; use the one or more software lifecycle activities to determine if the indicating software lifecycle transition is possible for the distributed application based on the accessed operational data; interoperate with driver services to command drivers to translate the application model into actions on application parts of the distributed application in accordance with semantics of the software lifecycle transition; interoperate with driver services to receive an indication that the software lifecycle transition was successfully implemented for the distributed application; and set lifecycle state for the distributed application in response to successful implementation of the software lifecycle transition; wherein each driver service is configured to; interoperate with an executive services to receive commands to translate an application model into actions on application parts of a distributed application in accordance with semantics of a software lifecycle transition; collect events emitted from the distributed application, the emitted events emitted in accordance with the events model for the application model; and interoperate with a monitoring service to transmit an event stream containing the emitted events to the monitoring service; and wherein each monitor service is configured to; interoperate with a driver service to receive an event stream containing emitted events from a distributed application; locate appropriate observation models to determine how to compute operational data from the emitted events; compute operational data for distributed applications from the emitted events in accordance with the appropriate observation models; and interoperate with the repository to store the computed operational data for use in subsequent software lifecycle decisions.
Specification