代码理解,逆向工程,最佳概念和工具.Java的

cor*_*e07 8 java uml reverse-engineering

对于任何程序员来说,架构师最苛刻的任务之一就是理解其他代码.

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

据我所知:反向代码工程来创建对象模型(每个包创建图表不太方便),创建序列图(该工具以调试模式连接到系统并从运行时生成图表).一些可视化技术,使用一些工具不仅可以使用,.java而且还可以使用JPAHibernate.为所有代码库生成图表,但添加一些类,然后添加它使用的类.

Sparx Enterprise Architect是逆向工程中最先进的技术还是远离它?还有其他更好的工具?理想情况下,该工具会让我理解代码,好像我自己写的那样:)

Pét*_*rök 11

" 面向对象的重新设计模式 "一书详细介绍了这一点.不幸的是没有附上银弹:-)

但是,它列出了许多用于接管遗留代码的有用技术.简单来说

  • 至少采访了一些原始开发人员(如果他们还在身边)
    • 发展历史:阶段,发布
    • 目前的状况
    • 团队社会结构,政治,动态:何时以及为什么人们加入和离开
    • 错误:典型,最简单,最难
    • 代码质量:最干净/最丑陋的部分
    • 配置数据:表单,内容和用法
    • unit/integration/manual/...测试用例和数据
    • SCM分支结构和用法
    • 文档:记录的内容,是最新的
    • 外部接口的联系人
  • 在演示期间观察开发人员/用户以查找
    • 主要特点
    • 典型的用例
    • 用法轶事
    • 好/坏,缺少/多余的功能
  • "在一小时内阅读所有代码"
    • 获得类层次结构,接口的高级视图
    • 如果需要,可以多次参加
    • 识别大型结构(这些通常包含重要功能)
    • 寻找设计模式
    • 检查评论(他们可以揭示很多,但也可能会产生误导)
  • 脱脂文件(如果有的话)
    • 只记录特定类型文档的可用性,例如规范,U​​ML图,Wiki,Javadoc等.
    • 是有用的,为什么(不)
    • 它是最新的


Mic*_*rdt 6

到目前为止,最重要的工具是你的耳朵,舌头和喉头.询问熟悉代码的人 - 他们将能够比任何软件工具更好地帮助您理解其通用架构.

自动反向工程的完整UML模型通常几乎无用,因为它们无法区分重要的抽象和实现细节 - 这是这些模型的重点.

在调查详细信息时,软件工具对于回答非常具体的问题更有用,例如"调用此方法的位置在哪里?" 或"什么类实现此接口" - 任何好的IDE都能够做到这一点.调试器也可以提供帮助 - 在代码的关键点放置断点并在命中时查看调用堆栈通常非常有启发性.