1. A computer-implemented method for transforming source code of an application, the method comprising: receiving the source code in a programming language; accessing a plurality of predefined patterns stored in a contextual taxonomy store; pattern matching a plurality of blocks in the source code using the plurality of predefined patterns, wherein a pattern comprises one or more restrictions and a piece of text matches the pattern if the piece of text satisfies the one or more restrictions of the pattern; determining an unmatched block of the source code that does not match any of the plurality of predefined patterns; generating a dynamic pattern that matches the unmatched block of the source code using dynamic rules; determining the relevance of the dynamic pattern for future pattern matching using fuzzy rules; responsive to determining that the dynamic pattern is relevant, storing the dynamic pattern in the contextual taxonomy store; classifying two or more of the plurality of blocks into a logic block that corresponds to a business rule; discovering a knowledge element from the logic block using the dynamic pattern, the knowledge element being one of the following: a data entity and a variable; tracing a life cycle of the knowledge element in the logic block; and transforming the source code into a desired target format based on the dynamic pattern, the predefined patterns, and the life cycle of the knowledge element.