InfoQ

InfoQ

News

My Bookmarks

Login or Register to enable bookmarks for unlimited time.

The content has been bookmarked!

There was an error bookmarking this content! Please retry.

Architecture Analysis Tool SonarJ 6.0 Supports Structural Debt Index and Quality Model

Posted by Srini Penchikala on Aug 16, 2010

Sections
Development,
Enterprise Architecture
Topics
Governance ,
Architecture ,
Artifacts & Tools ,
Java
Tags
Announcements ,
SonarJ ,
Architecture Analysis

The latest version of software architecture analysis and quality governance tool SonarJ supports structural debt index metrics and architecture quality model. The company behind the product, hello2morrow, last month announced the release of version 6.0 of the tool.

The new metric "structural debt index" allows the architects and developers to measure the overall structural debt in their applications. It measures the structural erosion of the project using heuristics and shows the proportional effort needed to remove the architecture debt in the applications. The Structural Debt dashbox is displayed if the project contains cyclic package dependencies, architecture violations, threshold warnings or open tasks.

The free license version of SonarJ shows the cyclic package dependencies in this metric. The commercial license adds other statistics like architecture violations, threshold violations and open tasks. Other metrics like "type dependencies to cut" and "number of references to remove" show how many type dependencies need to be removed to break up all package cycles and how many lines in the code would be affected by the change respectively. There is also an updated version of the plugin for code analysis tool Sonar that displays the new structural debt index statistics on Sonar dashboard web page.

SonarJ 6.0 also allows the software architects to define application architecture quality models. A quality model is a set of metric thresholds that can be used to enforce specific quality guidelines. The new release ships with two ready-to-use quality models called the “Essential” and the “Extended” models. The essential model can be used as a simple starter for continuous integration and the extended model defines more thresholds and is useful when looking for problems in unknown code.

Other new features in the latest version include the following:

  • The new dashboard aggregates the most important metrics on a single page and highlights potential problems using traffic light colors.
  • A new system creation wizard guides the users through all the needed steps and the users can import software systems from Eclipse IDE and Maven application build tool. There also new build units added to help with the mapping between Maven or Eclipse projects and SonarJ projects. A build unit contains a set of source or class file root directories and is typically mapped directly to a Maven or an Eclipse project. A SonarJ project can contain any number of build units.
  • The patterns to assign Java types to architectural artifacts (like layers, slices or subsystems) now include strong and weak hierarchical patterns. Strong patterns can be used to force the assignment of a type to a specific architectural artifact regardless of restriction imposed by the parent artifact and the weak hierarchical patterns can be used to match types, that have not been matched by any other (stronger) pattern.
  • Sandboxing: The new sand-boxing mode allows the users to try the variants of a system file for trying out architectural ideas and refactoring ideas without changing the original system file.
  • Report Generation: SonarJ can now also generate reports based on RTF templates, which can be customized using any RTF file editor program (e.g. Microsoft Word).
  • The architecture view has a new option called "highlight restrictions". Selecting an architectural element in this mode will mark all other elements in green or red, where green elements are accessible from the selected element while red elements are not accessible.

SonarJ comes in three different product variants. SonarJ-Architect can be used by any one who must be able to create or modify architecture rules. SonarJ-Developer module enables the developers to detect rule violations and to execute virtual refactorings in Eclipse. SonarJ-Report comprises an Ant task and a Maven-plugin to create reports and provide support for continuous integration systems like CruiseControl. It can also be used to synchronize SonarJ work items with task tracking and application lifecycle management tools like JIRA and Codebeamer. This tool can be used free of charge for commercial projects with a size of up to 50,000 bytecode instructions (approximately 20,000 lines of code).

 

Srini Penchikala currently works as Security Architect and has 17 yrs of experience in software product management.

Nice Article by Ritesh Nath Posted
Sandboxing & Sonar(J)ing by saran purush Posted
  1. Back to top

    Nice Article

    by Ritesh Nath

    Nice Article, the Sonar plugin feature is particularly useful to display overall code health at one spot.

  2. Back to top

    Sandboxing & Sonar(J)ing

    by saran purush

    great to hear that SonarJ has embraced tech-debts,Sonar
    as part of its feature/feather in its cap. Sandboxing appears to be another cool feature.

Educational Content

New-age Transactional Systems - Not Your Grandpa's OLTP

John Hugg discusses high volume transaction processing applications with high and low frequency profiles, and how VoltDB can be used for that purpose.

Cool Code

Kevlin Henney examines code samples to see what can be learned from them starting from the premise that one won’t write great code unless he knows how to read it.

Collaboration: At the Extremities of Extreme

Jason Ayers share the observations he made watching a team of developers collaborating in real time on the same code base, pushing XP, pair programming and continuous integration to their extremes.

Yesod Web Framework

Michael Snoyman presents Yesod, a web framework written in Haskell and containing a web server, templating, ORM, libraries (templating, gravatar, etc.).

Transactions without Transactions

Richard Kreuter and Kyle Banker on how to avoid classical RDBMS transactional systems by using compensation mechanisms, transactional messaging or transactional procedures.

Attila Szegedi on JVM and GC Performance Tuning at Twitter

Attila Szegedi talks about performance tuning Java and Scala programs at Twitter: how to approach GC problems, the importance of asynchronous I/O, when to use MySQL/Cassandra/Redis, and much more.

10 tips on how to prevent business value risk

One category of risk that project teams need to ensure they address is business value failure – delivering a product that fails to provide value for the business investor.

Interview: Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives

InfoQ spoke to the authors of Software Systems Architecture on a couple of new topics, the System Context viewpoint and Agile, which have been added to the second edition.