GTLC全球技术领导力峰会·上海站,首批讲师正式上线! 了解详情
写点什么

MaintainJ 3.2 业已发布,多项功能得到增强

2011 年 9 月 26 日

MaintainJ 是一种反向工程工具,它能够为 Java 代码库生成运行时序列图和类图,最近它发布了3.2 版本,在其中多项功能得到了增强。MaintainJ 基于Eclipse 构建,因此能够在所有基于Eclipse 平台构建的IDE 上运行。

InfoQ 与 MaintainJ 的 Choudary Kothapalli 做了一次小型的问答式采访,对这个新版本提出了一些问题:

InfoQ: 在 v3.2 中实现的主要新特性有哪些?

  • 显示调用上下文(call context): 在序列图中,当鼠标在调用(call)上悬停的时候,就会弹出提示框,显示出调用上下文——调用方法的参数和返回值。而在“属性视图”中会显示更详细的内容,以及被调用对象的状态。
  • 显示运行时 SQL——不管你使用的是哪种 JDBC 框架,MaintainJ 都能够捕获到发送到数据库实际运行的 SQL 语句以及其中的参数。这些数据库调用会显示在序列图中,并且还会显示每次数据库访问的响应时间。
  • 支持多 JVM(multi-JVM)的应用程序——用户可以跟踪运行在多个 JVM 上的应用程序,并且能够在单独的序列图中看到端到端的调用流程。例如,当应用程序调用运行在不同 JVM 上的 web 服务时,这个跨 JVM 的调用流程就会显示在同一幅序列图中。在这幅图中,我们会看到,每个 JVM 上的调用都以不同的颜色显示。
  • 增强的大纲视图——序列图的“大纲视图”会显示出用例中的所有类和调用。在新版本中该功能得到了增强,从而能够一次选中并删除多个包、类或者调用。并且新版本还在序列图中添加了一个选项,可以把所有 getter 和 setter 方法筛选掉。
  • JSP 调用——在用例中对 JSP 文件的调用也会显示在序列图中。如果一个 JSP 文件中包含了多个其他 JSP 文件,那么对内部 JSP 的运行时调用(runtime call)也会显示。

我们使用 Alfresco 来演示上述特性,它是一个内容管理系统,其中带有 8000 个 Java 类和 600 个 XML 配置文件。Alfresco 运行在 Tomcat 和 MySQL 服务器上,使用了 Spring、Hibernate 以及很多其它 Java 框架。你可以查看该应用程序的演示视频(3.5 分钟)。

InfoQ: 据你所见,人们使用 MaintainJ 一般的流程是什么样的?

主要有两种情况会使用 MaintainJ。

1. 理解和调试应用程序

MaintainJ 会为单一的用例生成序列图和类图。序列图会显示出该用例具体的运行时类(runtime classes),以及包括 SQL 调用在内的所有做出的调用。开发者可以使用生成的图快速了解用例,并找到问题的根源。

让我举例说明:

我们的一位客户在一个 Swing 应用程序上使用 MaintainJ,其中带有大量事件驱动逻辑,仅仅通过阅读源代码很难理解那些逻辑。

我们的很多客户都在 J2EE 应用程序上使用 MaintainJ。在 J2EE 应用程序中,业务逻辑经常会分布在 Java 类、XML 文件、门户以及规则引擎配置文件中。在这样的应用程序中,想要理解特定用例的运行时交互(runtime interactions),往往需要好几天的时间。使用 MaintainJ 我们就可以大大减少分析应用程序的时间,并减少调试和改善这种复杂应用程序所需要做出的工作。

2. 编写 Java 应用程序文档

让我举例说明:

在一家大型的美国银行中,企业要求 Java 团队对缺少文档的遗留应用程序进行改善。这个团队使用 MaintainJ 为所有用例生成了序列图和类图,然后利用这些图来对应用程序进行改善。

一家 IT 服务公司接受了为美国政府维护 Java 应用程序的工作。在每次发布之后,这家公司都需要负责提供相应的 UML 文档。他们并没有手动绘制序列图和类图,而是成功地使用 MaintainJ 生成了这些图。

InfoQ: MaintainJ 未来的路线图是怎样的? 你对其未来的发展期望如何?

在回答这个问题之前,让我们先谈谈 MaintainJ 背后的产品哲学。软件成本中的 90% 都花费在维护工作上,而 50% 的维护成本都花费在理解代码上。软件维护一般包括修正缺陷和对应用程序做出改善。

修正缺陷一般会包括三个步骤。

1) 找到存在缺陷的源代码
2) 修正缺陷
3) 把修正后的文件安全地放回到生产环境中。这个步骤包括分析该变更对应用程序其他部分的影响,并需要执行恰当的回归测试。

在对应用程序做出改善以添加新特性的时候,包含的步骤也非常类似。

通常,与寻找导致缺陷的源代码和安全地把修正放回到生产环境相比,第二步即修正缺陷所要做的工作要少得多。

MaintainJ 的目标是要在第一步和第三步为开发者提供帮助——找到存在缺陷的源代码以及执行恰当的影响分析。当前的版本解决的是第一步的问题——找到导致缺陷的源代码。

后续计划

在十月份我们会发布下一个版本,其中会解决第三步的问题——影响分析。MaintainJ 当前会在基于文件的数据库中为不同的用例分别存储运行时调用的跟踪信息。这些信息会用于执行影响分析,并识别出回归测试的案例。 接下来的版本计划会在 2012 年 3 月份发布,它可以在浏览器中显示序列图。针对应用程序中不同用例的调用跟踪文件(call trace files)会统一存储在中央数据库中。开发者、测试人员和经理都可以通过用例名来搜索这个数据库,并在浏览器中查看相关的序列图。他们也可以执行影响分析,从而找到所有会受到修改类或者数据库操作影响的用例。

InfoQ: 用户可以选择什么样的许可来使用 MaintainJ 呢?

1. 免费评估许可和支持

我们提供了 21 天的评估许可,并在期间提供免费的支持。我们希望用户能够事先试用 MaintainJ,从而意识到它是如何把调试和编写文档的工作从几天减少到几分钟的。

我们还提供两种商业许可。这些许可不会过期,可以在将来的版本中继续使用。

2. 锁定节点的许可(Node locked license)

该许可的价格是 100 美元,只能固定在一台计算机上使用。

3. 浮动许可(Floating license)

这个许可适用于企业中的 Java 团队。5 个浮动许可的价格是 1000 美元。

查看英文原文: MaintainJ 3.2 Released With Multiple Enhancements

2011 年 9 月 26 日 03:541654
用户头像

发布了 340 篇内容, 共 112.8 次阅读, 收获喜欢 4 次。

关注

评论

发布
暂无评论
发现更多内容

工业互联网推动制造业数字化转型

CECBC区块链专委会

区块链 大数据

Git:使用Git之前的配置

bobo

git

一个程序猿应该具备哪些能力?

伊智科技

程序员 1024讲话 1024

区块链:现实与未来的二律背反

CECBC区块链专委会

区块链 虚拟世界

想要进大厂做架构师,需要掌握哪些技术?阿里内部绝密 “Java架构修炼宝典”从基础一直深入到源码!

Java架构之路

Java 程序员 架构 面试 编程语言

USDT入金系统开发,区块链支付系统开发技术

135深圳3055源中瑞8032

关于Java面试必备的Java集合知识,终于有大佬总结整理出来了!

Java架构之路

Java 程序员 架构 面试 编程语言

1024|推荐一个开源免费的Spring Boot教程

Java旅途

Java Spring Boot 开源项目

明星里程被盗?看区块链如何加强个人信息安全保护

CECBC区块链专委会

信息安全 数字签名

架构师训练营第 1 期 week5 总结

张建亮

极客大学架构师训练营

代码作业

Geek_4c1353

极客大学架构师训练营

交易所开发需要多少钱?开发搭建交易所系统

135深圳3055源中瑞8032

科大讯飞1024开发者节,有温度,有创新,有看点

Lucien

AI 技术方案 智能医疗 识别

架构师训练营 -week05-总结

大刘

极客大学架构师训练营

javaCV学习-1-环境搭建及测试多张图片合成一个mp4的视频

诸葛小猿

Java 图片合成视频 机器视觉

并发环境下,先操作数据库还是先操作缓存?

捡田螺的小男孩

数据库 缓存 后端 并发

第五周 实现一致性 hash 算法

Geek_fabd84

Netty源码解析 -- ChannelPipeline机制与读写过程

binecy

Netty nio 源码剖析

架构师训练营第五周总结

薛凯

golang实现一致性 hash 算法

Jacky.Chen

牛皮了!世界级架构师,图解面向对象编程,小学生都能看得懂

周老师

Java 编程 程序员 架构 面试

区块链钱包开发公司,区块链钱包系统开发价格

135深圳3055源中瑞8032

【高并发】面试官问我:为什么局部变量是线程安全的?

冰河

多线程 高并发 高性能 线程安全 线程封闭

架构师训练营 1 期第 5 周:技术选型(一) - 作业

piercebn

极客大学架构师训练营

太难了,5年Java开发经验,阿里面试了7轮终于拿下P7岗offer!

Java架构之路

Java 程序员 架构 面试 编程语言

第五周 技术选型(1)作业

钟杰

极客大学架构师训练营

IPFS云算力挖矿系统不开发,区块链挖矿系统

135深圳3055源中瑞8032

架构师训练营第1周学习总结

菜青虫

极客大学架构师训练营

架构师训练营 -week05- 作业

大刘

极客大学架构师训练营

架构师训练营第 5 周课后练习

叶纪想

极客大学架构师训练营

架构师训练营第五周课后练习

薛凯

DNSPod与开源应用专场

DNSPod与开源应用专场

MaintainJ 3.2业已发布,多项功能得到增强-InfoQ