1. A method for managing a set of software modules in a software runtime environment, the set of software modules comprising one or more dynamic dependencies and one or more static dependencies, the method comprising: identifying, by one or more processors, a set of software modules; identifying, by one or more processors, each software module that has a static dependency on another of the software modules; identifying, by one or more processors, each subset of the set of software modules that is interdependent with another subset of the set of software modules, wherein each subset of software modules is composed of software modules that are interdependent due to static dependencies between the software modules in the subset, wherein the software modules comprising static dependencies are contained in a wrapper for operation within the software runtime environment, and wherein identified subsets of the set of software modules are interdependent due to a dynamic dependency between the identified subsets of the set of software modules; in response to a change in state of a module in an identified subset, applying, by one or more processors, the change in state to all software modules in the identified subset, wherein the change in state is changing a state of the software module from a first state from a group of states consisting of upgraded, replaced and removed to a second state from the group of states consisting of upgraded, replaced and removed, wherein a user initiating a change in state for a software module in an identified subset is restricted to applying the change in state to all the software modules in the identified subset, and wherein the change in state is applied only to the software modules in the identified subset; and in response to a change in state of a software module comprising only dynamic dependencies on other software modules, applying, by one or more processors, the change in state only to that software module.