1. A computer-implemented method for generating software tools used in model-driven development of software, the method comprising: providing an input model for a first pattern used to generate an artifact associated with an implementation of a recurring solution; defining a set of one or more modifications to be applied to a schema for the input model in order to produce therefrom a user model; receiving the set of modifications as input to a second pattern; generating, in response to the received set of modifications, program code for implementing a user interface based on the user model and program code for performing a model-to-model transformation of information from the user model to the input model.