SonarJ社区版为Java应用提供架构分析和管理功能

SonarJ社区版为中小型Java应用提供架构分析和管理。SonarJ软件的制造厂商hello2morrow最近推出了架构分析工具的免费版本。该社区版可用于分析那些多达500个内部类(约五、六万行代码)的Java应用。

架构管理有利于设计明确和无环路依赖(cycle free dependency)的结构,还能提高代码的可测性和可重用性。软件架构师可以使用SonarJ定义架构、质量规则,然后在 IDE(Eclipse)的开发人员工作空间中对其进行监控。SonarJ之类的工具可以帮助架构师尽早地把架构管理集成到开发过程中去。

InfoQ就发布社区版的动机,以及SonarJ项目未来的路线图等问题采访了hello2morrow的CEO Alexander von Zitzewitz。

发布SonarJ社区版的动机是什么呢?

我们过去的定价模式是以使用SonarJ的用户数量为基础的,独立于项目规模。但SonarJ的利润与项目规模密切相关。尽管SonarJ已经对开源和非商业用途免费,但有很多开发人员一直联系我们,让我们提供便宜的个人许可。我们也看到很多项目仍在使用非常基本的依赖关系检查工具,比如 JDepend和 Macker。借助SonarJ,我们给出了远远优越于此的解决方案,但也仅仅适用于有工具预算的大型项目。所以我们想让该解决方案能用于更广泛的用户群,但却不会严重削弱我们的收入基础。

我们决定将项目规模添加进来、作为定价模式的第二个因素。我们还决定让SonarJ对那些有500个类的项目免费。这一限制可支持大部分项目,相当于支持五、六万行代码。我们希望确保SonarJ社区版能用于重要项目。这样,用户就能从中获益,并能避免结构化腐烂带来的一切不良后果, 从而节省时间和金钱。

为了平衡起见,那些有3000个类的项目为商业许可支付的价格要比以前便宜,更大型的项目则必须支付更高的价格。我们认为这种做法更为平衡,也非常符合SonarJ集成到开发过程中所提供的价值。

SonarJ跟其它工具(比如Structure 101)比起来怎么样?

Structure101是一个功能强大的工具,具有良好、直观的用户界面。跟SonarJ一样,它支持架构模型的定义。另一方面,我认为我们的架构元模型和架构可视化方式更适合大项目。SonarJ支持将较大型项目划分成子项目,不只是水平细分的支持,还有项目的垂直切片。尽管你可以在Structure101中创建两个或多个独立的架构模型来实现类似的功能,但这需要付出更多的努力,也不是十分直观。对较大型的项目来说,垂直划分(创建垂直切片)是一种保持可管理架构工件数量非常重要的技术。

跟利用Aspects、Code Inspections或MDA这些技术比起来,SonarJ工具是如何助力于设计、架构实施的?

首先,SonarJ的使用完全是非侵入的,可用于任何Java项目,不论是新的还是旧的。Aspects的使用则有侵入性(你必须将AspectJ整合到构建过程中),也没有真正的架构元模型支撑。虽然你可以定义强大的约束,但完全没有完整性的保证。每个架构师也可能会使用约束的不同风格。此外,我认为定义重要约束集的复杂性往往会快速失控。SonarJ背后的架构元模型则能轻易就保证你可以完全覆盖代码中所有的依赖关系。代码和构建过程都不需要使用SonarJ。

代码审查并不是自动检查架构、质量规则的重要方法。它占用太多时间,而且存在很大的风险,会忽视严重的结构性问题。

MDA是创建应用的另一种策略。如果大部分代码都是生成的,那么针对架构缺陷分析所生成代码的优势就非常小。所生成代码的结构是清晰的,好的代码生成器都期望能保证这一点。因此,如果你成功地使用了MDA,你的大部分代码库也是生成的,那你可能就不需要SonarJ了。

SonarJ项目未来的路线图是怎样的?

目前我们正着力于预计在2009年3月发布的4.1版本。该版本的重点是提升可用性、微调一些架构元模型。今年晚些时候,我们会考虑为其它IDE(比如 IntelliJ或 NetBeans)添加插件。我们可能还会推出SonarJ的C#版本——SonarShark。

查看英文原文:SonarJ Community Edition Offers Architecture Analysis and Management for Java Applications

你可能感兴趣的:(SonarJ社区版为Java应用提供架构分析和管理功能)