Fidelity of Mappings

Ferret supports integrating different source of information of a program, such as the static information and run-time information. We call these sources of information a sphere. But a particular element from one sphere may not have a perfect correspondance to any single element in a different sphere. For example, what might a Java interface (from the static JDT sphere) correspond to when considering the program's run-time behaviour?

Ferret's model supports different fidelities of correspondance for elements between different spheres. The fidelity describes the degree of information preservation in the conversion. Ferret provides three levels of fidelity:

Exact:
Indicates a perfect one-to-one and onto correspondence. For example, a class' method from a static Java tool will will correspond exactly to the same method from a dynamic runtime tool, assuming the dynamic run-time was taken from the same source base.
Equivalent:
Indicates a very near match: there is no perfect conversion, but the elements are felt to be equivalent. For example, the conversion of an Java interface will have an equivalent correspondence to its implementing classes in in the dynamic run-time.
Approximate:
Indicates an imperfect match, where there is a similarity between the elements of the two spheres, but with some differences. For example, a representation of a method whose source has been modified will have only an approximate correspondence to that method from a particular version of a file.

The fidelities are propagated across queries: if the query element has an imperfect correspondance to its equivalent in a different sphere, then any queries from that other sphere must be at least as imperfect.