1. A method of network resource management comprising, with a processor: creating a model of an application; defining a number of substitution points within the model; expressing the substitution points as abstract models with a set of sub-types; and codifying a number of policies that express which sourcing option to use for each substitution point.