A Survey of Reverse Engineering and Program Comprehension
Michael L. Nelson

TL;DR
This survey reviews the evolution, challenges, and tools of reverse engineering in software engineering, emphasizing its importance in understanding legacy systems and supporting program comprehension.
Contribution
It provides a comprehensive overview of reverse engineering terminology, obstacles, and automated tools, highlighting recent developments and ongoing challenges in the field.
Findings
Reverse engineering is crucial for legacy software understanding.
Automated tools assist human reverse engineers.
Challenges include complexity and incomplete documentation.
Abstract
Reverse engineering has been a standard practice in the hardware community for some time. It has only been within the last ten years that reverse engineering, or "program comprehension", has grown into the current sub-discipline of software engineering. Traditional software engineering is primarily focused on the development and design of new software. However, most programmers work on software that other people have designed and developed. Up to 50% of a software maintainers time can be spent determining the intent of source code. The growing demand to reevaluate and reimplement legacy software systems, brought on by the proliferation of clientserver and World Wide Web technologies, has underscored the need for reverse engineering tools and techniques. This paper introduces the terminology of reverse engineering and gives some of the obstacles that make reverse engineering difficult.…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsSoftware Engineering Research · Software Testing and Debugging Techniques · Advanced Malware Detection Techniques
