1. A method for inferring a classification of the input data to a program or the data stored in a set of memory locations at a certain program point, where each class of data is described by a predicate and is known as a predicate class, by analyzing how the program uses the said input data, said method further comprising a step which, given the said program, an input-point I or a set of memory locations M at a program-point J, and a predicate class C infers one or more dataflow facts that indicate that certain parts of the input data obtained at the said input point I, or the data stored in the said set of memory locations M at the said program point J, may flow to certain other parts of the program when the said data belongs to the said predicate class C and said method further comprising a step which, given the said program, infers a logical model comprised of one or more logical model elements, where each logical model element describes one or more features of either certain parts of the said input data obtained from said input point I in the program and belonging to a certain predicate class C, or certain parts of data stored in said set of memory locations M at said program point J in the program and belonging to a certain predicate class C, with the said features being inferred by an analysis of how the said parts of input data are actually used at the various program contexts that they flow to, providing a physical data model of the legacy application, said physical data model having a plurality of physical elements, wherein the physical data model is a physical realization; establishing a logical data model for the legacy application, said logical data model having the logical model elements; establishing a plurality of links between said logical model elements and said physical elements, wherein the plurality of links are realized in a physical data model, which is a physical realization; and selecting one of said physical or logical elements, and using said links to identify all of the physical or logical elements that are linked to said selected one of said elements; wherein said features described by the logical model elements include a description of the structure of the said data that reveals what parts of the said data is handled as an indivisible unit of datum by the program, and wherein said features in the logical model element include a set of primitive operations that may be applied to the said data and wherein auxiliary functions are used to define alternate semantics.