Reverse Engineering
Now-a-Days, I am working on a project that is developed priorly in Delphi and needs to be re-developed and enhanced in .NET Technology. We dont have any standard Docs or Help files like ReadMe; so understanding the application by reading / reviewing the Code and Database. Meantime, I came accross this word "Reverse engineering".
Reverse engineering is the process of analyzing a subject system to create representations of the system at a higher level of abstraction. It can also be seen as "going backwards through the development cycle". In this model, the output of the implementation phase (in source code form) is reverse engineered back to the analysis phase, in an inversion of the traditional waterfall model. Reverse engineering is a process of examination only: the software system under consideration is not modified. Reverse engineering often is done because the documentation of application or any of module has been lost (or was never written), and the person who built the widget is no longer available.
Other purposes of reverse engineering include security auditing, removal of copy protection ("cracking"), circumvention of access restrictions often present in consumer electronics, customization of embedded systems (such as engine management systems), in-house repairs or retrofits, enabling of additional features on low-cost "crippled" hardware (such as some graphics card chipsets), or even mere satisfaction of curiosity.