A method for preparing an upgrade for a software subsystem having a plurality of layers (12,14,16; 22, 24, 26) comprising: - ordering upgrade operations for each of said layers of said software subsystem based upon installation dependencies between said plurality of layers and runtime, comprising: -- grouping at least some of said upgrade operations into a teardown phase, a reconfiguration phase and a rebuilding phase, wherein i) the teardown phase includes those operations which occur when current entities and their software are removed from the software subsystem, ii) the reconfiguration phase includes those operations associated with changing of the configuration of the current software subsystem to a new configuration and iii) the rebuilding phase includes those operations associated with installing software for the changed configuration and instantiating or re-instantiating the appropriate entities using the changed software in the software subsystem; -- interleaving, for each of said layers, an online upgrade operation associated with a respective one of said teardown and rebuilding phases with operations associated with the other of said teardown and rebuilding phases if lower layers need not be running during said online upgrade operation, wherein the ordering step with no interleaving means that top layer entities are offline for the complete uninstallation/ installation time of all of the plurality of layers; and -- otherwise, turning said online upgrade operation into an offline upgrade operation and performing said offline upgrade operation with other operations grouped in a same phase; and - storing said ordered upgrade operations associated with said layers of said software subsystem, wherein the online upgrade operation refers to software which is installable or uninstallable without disturbing or impacting the ongoing operation of one or more entities in the subsystem, and the offline upgrade operation refers to operations which impact the behavior of the one or more entities. - ordering upgrade operations for each of said layers of said software subsystem based upon installation dependencies between said plurality of layers and runtime, comprising: -- grouping at least some of said upgrade operations into a teardown phase, a reconfiguration phase and a rebuilding phase, wherein i) the teardown phase includes those operations which occur when current entities and their software are removed from the software subsystem, ii) the reconfiguration phase includes those operations associated with changing of the configuration of the current software subsystem to a new configuration and iii) the rebuilding phase includes those operations associated with installing software for the changed configuration and instantiating or re-instantiating the appropriate entities using the changed software in the software subsystem; -- interleaving, for each of said layers, an online upgrade operation associated with a respective one of said teardown and rebuilding phases with operations associated with the other of said teardown and rebuilding phases if lower layers need not be running during said online upgrade operation, wherein the ordering step with no interleaving means that top layer entities are offline for the complete uninstallation/ installation time of all of the plurality of layers; and -- otherwise, turning said online upgrade operation into an offline upgrade operation and performing said offline upgrade operation with other operations grouped in a same phase; and -- grouping at least some of said upgrade operations into a teardown phase, a reconfiguration phase and a rebuilding phase, wherein i) the teardown phase includes those operations which occur when current entities and their software are removed from the software subsystem, ii) the reconfiguration phase includes those operations associated with changing of the configuration of the current software subsystem to a new configuration and iii) the rebuilding phase includes those operations associated with installing software for the changed configuration and instantiating or re-instantiating the appropriate entities using the changed software in the software subsystem; -- interleaving, for each of said layers, an online upgrade operation associated with a respective one of said teardown and rebuilding phases with operations associated with the other of said teardown and rebuilding phases if lower layers need not be running during said online upgrade operation, wherein the ordering step with no interleaving means that top layer entities are offline for the complete uninstallation/ installation time of all of the plurality of layers; and -- otherwise, turning said online upgrade operation into an offline upgrade operation and performing said offline upgrade operation with other operations grouped in a same phase; and - storing said ordered upgrade operations associated with said layers of said software subsystem, wherein the online upgrade operation refers to software which is installable or uninstallable without disturbing or impacting the ongoing operation of one or more entities in the subsystem, and the offline upgrade operation refers to operations which impact the behavior of the one or more entities.