40. A computer program product comprising computer executable instructions embodied in a computer readable storage medium for performing steps comprising: (a) converting computer program source code into a fact set in a mathematical notation that supports direct expression of semantic reliances between elements of source code and is suitable for inputting into an automated inference engine; (b) providing an elemental design pattern catalog including at least one elemental design pattern for identifying a construct in the source code; (c) providing a rule set defining relationships between elemental design patterns identified as present in the computer program source code; and (d) comparing the fact set to the elemental design pattern catalog and applying the rules in the rule set to identify constructs present in the computer program source code, wherein comparing the fact set to the elemental design pattern catalog and applying the rules includes inputting the fact set, the elemental design pattern catalog, and the rules into an automated inference engine and identifying the construct present in the computer program source code.
43. The computer program product of claim 40 wherein providing a rule set includes providing a rule set that defines operational relationships between source code constructs.