Patent ID: 7509627

Claim:
A computer-implemented method for configuring multiple software lifecycles, and associating each software lifecycle with one or more subcategories of software items, the computer-implemented method comprising: receiving a request for a state change for a software item in a current state; locating a software lifecycle associated with the software item in response to the received request; wherein in the event the software lifecycle is directly associated with a specific subcategory of software item located via a LifecycleAssignment table, then that specific subcategory of software item is used for the state change; wherein in the event the software item's specific subcategory is a subcategory of a category associated with a software lifecycle located via the LifecycleAssignment table, then the software lifecycle of the most specific of such subcategory is used for the state change; determining if the software item's current state exists in the located software lifecycle; wherein in response to the determining, if the current state does not exist in the located software lifecycle, the current state is updated according to a series of update rules; wherein in response to the determining, if the current state does not exist in the located software lifecycle, then determining if the current state has one or more flags associated with the located software lifecycle; wherein the one or more flags are stored in a LifecycleState table; wherein in response to the determining, in the event there are one or more associated flags, the one or more associated flags are checked for one or more protection rules; generating a list of target states determined by a StateTransition table in response to at least one of the following: the satisfaction of the one or more protection rules, and if no protection rules are found; receiving a user selected target state from the generated list; checking the selected target state for one or more associated protection rules; recording a state change for the selected target state in response to at least one of the following: the satisfaction of the one or more associated protection rules, and if no protection rules are found; propagating the state change; and wherein in response to the current state or the selected target state not satisfying their respective one or more protection rules, at least one of the following occurs: an exception is displayed and an application is switched; wherein the LifecycleAssignment table, LifecycleState table, and StateTransition table are stored in a relational database; wherein the current state is protected if the current state's flags contain a flag of the one or more protection rules from a row in a ProtectionRule table of the relational database; wherein the one or more protection rules further comprise a test ID, an exception, and an ID of an application; wherein the test ID is stored SQL (structured query language) queries that examine the contents of a series of fields related to the software item whose state triggered the one or more protection rules.