1. A method of automatically generating source code for a programming application, said method comprising the steps of: providing existing source code to be used in part for said programming application; creating abstracted change model representations of a possible set of changes for said existing source code, wherein each change model representation is a change-model and said change model representations collectively are change-models; producing generalized implementations of source code changes; mapping said generalized implementations of source code changes to at least one selection of a grouping containing said change-models and said existing source code to produce mapped sections of code; accepting inputs in order to arrange, configure and assign specific values for said change-model representations; and selectively transforming, in any combination, said existing source code, said change-model representations, said specific values, said generalized implementations and said mapped sections in order to produce new source code.