java - 代码理解、逆向工程、最佳概念和工具。 java

标签 java uml reverse-engineering

对于任何程序员、架构师来说,最艰巨的任务之一就是理解他人的代码。

例如,我是一名承包商,受雇来快速挽救一些项目。修复错误,计划全局重构,因此我需要最有效的方式来理解代码。概念列表是什么,它们的优先级和最佳工具是什么?

据我所知:逆向代码工程以创建对象模型(为每个包创建图表不是那么方便),创建序列图(该工具以 Debug模式连接到系统并从运行时生成图表)。一些可视化技术,使用一些工具不仅可以与 .java 一起工作,还可以与例如JPA 实现者,例如 Hibernate。不是为所有代码库生成图表,而是添加一些类,然后添加它使用的类。

Sparx Enterprise Architect 是逆向工程的最新技术水平还是远非如此?还有其他更好的工具吗?理想情况下,该工具可以让我理解代码,就像我自己编写代码一样:)

最佳答案

本书Object-Oriented Reengineering Patterns详细处理这个问题。不幸的是,没有附带 Elixir :-)

但是,它列出了许多用于接管遗留代码的有用技术。简而言之

  • 至少采访一些最初的开发者(如果他们还在)
    • 开发历史:阶段、发布
    • 现状
    • 团队社会结构、政治、动态:人们何时以及为何加入和离开
    • 错误:典型的、最简单的、最难的
    • 代码质量:最干净/最丑陋的部分
    • 配置数据:形式、内容和用途
    • 单元/集成/手册/...测试用例和数据
    • SCM分支结构及使用
    • 文档:在什么地方记录了什么,它是最新的吗
    • 外部接口(interface)联系人
  • 在演示过程中观察开发者/用户以找到
    • 主要特点
    • 典型用例
    • 使用轶事
    • 好/坏,缺少/多余的功能
  • “在一小时内阅读所有代码”
    • 获取类层次结构、接口(interface)的高级 View
    • 如果需要,可以参加多个 session
    • 识别大型结构(这些通常包含重要功能)
    • 寻找设计模式
    • 检查评论(它们可以揭示很多信息,但也可能具有误导性)
  • 略读文档(如果有的话)
    • 仅记录特定类型文档的可用性,例如规范、UML 图、Wiki、Javadoc 等。
    • 有用吗,为什么(没用)
    • 它是最新的吗

关于java - 代码理解、逆向工程、最佳概念和工具。 java ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2658133/

相关文章:

java - Webflux Webclient 使用不同的 URL 重试

java - 我可以更新现有的 Amazon S3 对象吗?

ios - 如何检查原生 iOS 应用程序的 UI?

assembly - 在x86程序集中的堆栈上分配变量。 rbp和rsp与esp和ebp

java - 解析 HTML + Jsoup 时遇到问题

JavaMelody 1.68.0 - JBoss 找不到 iText 类

java - 局部变量的 UML

uml - CRC(Class responsibility collaborator)和UML

uml - 绘制类图

c++ - 在 DLL 注入(inject)中访问内存会导致内存访问冲突