Reverse Engineering

As we embrace the information age, the biggest difficulty with information ceases to be its availability, but its over-abundance. Making sense of a deluge of data, focusing on what's relevance when distractions keep conspiring to take our attention away from the meaningful things, is increasingly going to be the grand-challenge problem of the information age.

In software engineering, the above information deluge takes the specific form of legacy code, models and documents. There's a lot of work out there: in the form of source-code, design documents, specifications and tests. We must keep ourselves equipped with tools to comprehend our way through this existing knowledge. The other option -- of re-inventing the wheel everytime -- doesn't exist.

How do you decipher legacy knowledge? How do you tell good code from bad? How do you detect the presence of typical patterns that master programmers and designers repeatedly use (mostly implicitly)?

We aim to build the scaffold of technology that would allow engineers to read the work of past masters by mining patterns and idioms of programming and modelling in legacy software.