BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

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

| 作者 Dio Synodinos 关注 4 他的粉丝 ,译者 侯伯薇 关注 0 他的粉丝 发布于 2011年9月27日. 估计阅读时间: 7 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT