Skip to main content
QUICK REVIEW

[论文解读] A Survey of Reverse Engineering and Program Comprehension

Michael L. Nelson|ArXiv.org|Mar 24, 2005
Software Engineering Research参考文献 19被引用 47
一句话总结

本文综述了软件工程中的逆向工程与程序理解,聚焦于理解现有代码库(尤其是遗留系统)的技术。文章概述了代码理解面临的挑战,强调了以人为中心的工具与自动化工具,并识别出在分析软件意图方面的主要障碍与解决方案,特别是在不断演进的Web与客户端-服务器架构背景下。

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. Although reverse engineering remains heavily dependent on the human component, a number of automated tools are presented that aid the reverse engineer.

研究动机与目标

  • 应对由于客户端-服务器和基于Web的架构兴起,对理解与维护遗留软件系统的需求日益增长的问题。
  • 识别程序理解中的核心挑战,特别是开发人员花费高达50%的时间用于解析现有代码的意图。
  • 综述支持理解软件结构与行为的现有逆向工程技术与工具。
  • 突出自动化工具在减轻开发人员在逆向工程任务中认知负荷方面的作用。
  • 为逆向工程作为软件工程中一个独立子学科建立基础术语与概念框架。

提出的方法

  • 从20世纪90年代中期到2005年,对逆向工程与程序理解领域的现有文献与工具进行综述。
  • 根据关注重点对逆向工程技术进行分类:架构恢复、控制流分析、数据流分析与依赖关系挖掘。
  • 分析静态分析与动态分析在从源代码中提取有意义抽象方面的作用。
  • 评估可视化工具在提升对复杂软件系统理解方面的有效性。
  • 考察自动化技术的局限性,以及在解释软件意图方面人类专业知识的持续必要性。
  • 通过真实世界软件维护中的案例研究与实例,说明实际挑战与解决方案。

实验结果

研究问题

  • RQ1在原始设计文档缺失的情况下,理解遗留软件系统的主要挑战是什么,特别是针对此类系统?
  • RQ2自动化工具在逆向工程中发挥什么作用?它们在捕捉软件语义方面的局限性是什么?
  • RQ3逆向工程在多大程度上可以减少软件维护中用于程序理解的时间?
  • RQ4可视化与抽象技术在提升开发人员对复杂代码库理解方面发挥什么作用?
  • RQ5Web与客户端-服务器技术的演进如何影响软件工程中对逆向工程的需求?

主要发现

  • 软件维护人员高达50%的时间用于理解现有源代码的意图,凸显了软件维护中的主要瓶颈。
  • 在过去十年中,逆向工程已发展为软件工程中一个公认的子学科,其驱动力是现代化遗留系统的需求。
  • 尽管自动化工具在结构分析(如依赖图、调用图)方面提供帮助,但往往无法捕捉高层次的设计意图或语义含义。
  • 可视化技术显著提升了对复杂系统的理解,尤其是在与静态和动态分析结合使用时。
  • 人类因素在逆向工程中依然至关重要,特别是在解释模糊或文档不全的代码时。
  • Web与客户端-服务器系统的普及加剧了对逆向工程的需求,使其成为软件演化与迁移中的关键实践。

更好的研究,从现在开始

从论文设计到论文写作,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。