1. A method of deploying software into a computing environment by a processor, the processor coupled to computer readable memory containing instructions to allow the processor to perform the steps comprising of: providing a model of the computing environment into which a model of software is to be deployed; customizing a plan that includes matching elements of the software to characteristic of the computing environment to deploy the software into the computing environment; and deploying the software into the computing environment according to the customized deployment plan.