Alternatives
This is the known list of java architecture-monitoring alternatives. Most or all of these are open source projects. If you know of any others, please mail the name of the project to the mailing list.
SonarJ hello2morrow
SonarJ is free for open-source and private use, and more complete architecture monitoring solution than Architecture Rules is.
SonarJ is an innovative solution, that helps you to manage and monitor the logical architecture and the technical quality of your Java projects. The approach of SonarJ is absolutely unique on the market. It is light-weight and easy to use. It enables you to effectively avoid the well known effect of structural erosion. Without any extra overhead you can now make sure, that your logical architecture is implemented as planned. Moreover you can define thresholds for some key metrics affecting technical quality, that will allow you to maintain a high level of technical quality.
http://www.hello2morrow.com/en/sonarj/sonarj.php
Macker Sourceforge
Macker is a build-time architectural rule checking utility for Java developers. It’s meant to model the architectural ideals programmers always dream up for their projects, and then break — it helps keep code clean and consistent. You can tailor a rules file to suit a specific project’s structure, or write some general “good practice” rules for your code. Macker doesn’t try to shove anybody else’s rules down your throat; it’s flexible, and writing a rules file is part of the development process for each unique project.
Japan - Java Package Analyzer Sourceforge
Japan is an Ant task and IntelliJ plugin for checking you haven’t broken any of the package dependency rules within your Java project. For example, you might want to allow the ‘client’ and ’server’ packages to see ‘remote’, but not allow ‘remote’ to see ‘client’ or ’server’. Japan works on Java source files and the dependency rules are defined in an XML configuration file.
JDepend Clarkware
JDepend is not really an alternative, because Architecture Rules wraps JDepend, to make it easier to use and to make your rules easier to maintain and read. However, if you want to tackle JDepend on your own, or want to extend JDepend, then it could be considered an alternative.
JDepend traverses Java class file directories and generates design quality metrics for each Java package. JDepend allows you to automatically measure the quality of a design in terms of its extensibility, reusability, and maintainability to manage package dependencies effectively.
http://clarkware.com/software/JDepend.html
Classycle Sourceforge
Classycle’s Analyser analyses the static class and package dependencies in Java applications or libraries. It is especially helpful for finding cyclic dependencies between classes or packages. Classycle is similar to JDepend which does also a dependency analysis but only on the package level.
Classycle’s Dependency Checker searchs for unwanted class dependencies described in a dependency definition file. Dependency checking helps to monitor whether certain architectural constrains (e.g. in a layered architecture) are fulfilled or not.
http://classycle.sourceforge.net/
PatternTesting Sourceforge
Every project defines a set of rules that all (or most :-)) developers agree on. These rules can be coding conventions, naming conventions or at a higher level architecture decisions or best practices.
Usually these rules are either mentioned verbally or written in a “Developer Guide” (I am personally using an internal Wiki web site for sharing this best practices knowledge). However, it is not enough. How am I going to verify that I have properly coded against these rules?
Pattern Testing is about providing the means to automatically check for Architecture/Design/Implementation decisions.
http://patterntesting.sourceforge.net/05/whatis.html
3 Comments »
RSS feed for comments on this post · TrackBack URI
Posted by Andrew Swan
July 19, 2008 @ 6:08 am
Excellent page; every project needs one of these to put it in context and to demonstrate the authors’ awareness or otherwise of “competing” projects.
Posted by Mike
July 19, 2008 @ 8:45 am
@Andrew Swan - Its true. Especially for a tool that enforces “architecture” because there are so many different definitions for architecture depending on who you ask.
When someone finds architecture rules, they might fight that it does nothing for them in terms of enforcing their architecture, or it may not enforce the part of the architecture that they are interested in. These tools are diverse each doing something different, and in a different way. If Architecture Rules is not the tool that the user is looking for, then hopefully something here will help them.
Posted by Serhiy Yevtushenko
October 21, 2008 @ 9:07 am
I would also add Lattix DSM and JetBrains DSM plugin. They also allow you to display and edit wanted/unwanted dependencies