1. A computer implemented method for upgrading a multi-tiered application, the computer implemented method comprising: responsive to receiving, by a computer, a request to upgrade a multi-tiered application in a plurality of multi-tiered applications located within the computer, selecting, by the computer, an appropriate integrated patch for the upgrade to form a selected integrated patch, wherein the computer includes a plurality of virtual machines, and wherein the multi-tiered application includes a plurality of software components that are deployed across the plurality of virtual machines located within the computer, and wherein a software component within the plurality of software components of the multi-tiered application is shared by other multi-tiered applications in the plurality of multi-tiered applications located within the computer; upgrading, by the computer, the plurality of software components of the multi-tiered application that are specified in the selected integrated patch, wherein the computer upgrades the plurality of software components by selecting a set of patches within the selected integrated patch that meet specified requirements of the multi-tiered application using a weighted function of minimizing time needed for the upgrading and minimizing service interrupt time; updating, by the computer, a state of the plurality of software components of the multi-tiered application that were upgraded to form an updated state of the multi-tiered application; identifying, by the computer, a plurality of patches that meet the specified requirements of the multi-tiered application using labels associated with each patch in the plurality of patches, each label including a set of attributes describing which specified requirement of the multi-tiered application a patch in the plurality of patches fulfills; determining, by the computer, patch dependency among the software components in the plurality of software components of the multi-tiered application to form a determined patch dependency by using a dependency graph; and constructing, by the computer, an integrated patch that includes the plurality of patches based on the determined patch dependency among the software components in the plurality of software components of the multi-tiered application.