1. A method of re-architecting legacy systems comprising conceptualizing the said system as a combination of plurality of pattern instances, defining patterns, specifying the said patterns into a workbench to generate plurality of pattern matchers, identifying plurality of instances of said patterns using said pattern matchers, optimizing the said instances, and transforming the said instances through conversion and generation using object-oriented language to form a re-architected system.