📜  软件工程 |逆向工程

📅  最后修改于: 2022-05-13 01:56:59.918000             🧑  作者: Mango

软件工程 |逆向工程

软件逆向工程是从分析产品的代码中恢复产品的设计、需求规格和功能的过程。它建立一个程序数据库并从中生成信息。

逆向工程的目的是通过提高系统的可理解性来促进维护工作,并为遗留系统生成必要的文档。

逆向工程目标:

  • 应对复杂性。
  • 恢复丢失的信息。
  • 检测副作用。
  • 合成更高的抽象。
  • 促进重用。

软件逆向工程的步骤:

  1. 收藏信息:
    此步骤的重点是收集有关软件的所有可能信息(即源设计文档等)。

  2. 检查资料:
    为熟悉系统而学习在步骤 1 中收集的信息。

  3. 提取结构:
    该步骤涉及以结构图的形式识别程序结构,其中每个节点对应于某个例程。

  4. 记录功能:
    在这一步处理结构的每个模块的细节过程中,使用决策表等结构化语言记录图表。

  5. 记录数据流:
    从步骤 3 和步骤 4 中提取的信息中,导出了一组数据流程图,以显示流程之间的数据流。

  6. 录制控制流程:
    记录了软件的高级控制结构。

  7. 查看提取的设计:
    提取的设计文件经过多次审查,以确保一致性和正确性。它还确保设计代表程序。

  8. 生成文档:
    最后,在此步骤中,记录完整的文档,包括 SRS、设计文档、历史、概述等,以备将来使用。

逆向工程工具:

如果手动完成逆向工程将消耗大量时间和人力,因此必须由自动化工具支持。下面给出了一些工具:

  • CIAO 和 CIA:软件和 Web 存储库的图形导航器以及一系列逆向工程工具。
  • Rigi:一种可视化软件理解工具。
  • Bunch:软件集群/模块化工具。
  • GEN++:一个应用程序生成器,支持开发 C++ 语言的分析工具。
  • PBS:用于提取和可视化程序架构的软件书架工具。