Architecture Rules

Download 2.1.1

About

Assert Your Architecture! with this open source java library. Architecture Rules leverages an xml configuration file and optional programmatic configuration to assert your code's architecture via unit tests or ant tasks. This test is able to assert that specific packages do not depend on others and is able to check for and report on cyclic dependencies among your project's packages and classes. This project wraps a industry accepted JDepend to simplify the process of maintaining a solid software architecture.

License

Licensed under Apache License 2.0 - allows use of the source code for the development of free and open source software as well as proprietary and closed source software.

Do you Assert your Architecture? Please help out with our fund raising.
Checkout what we are raising funds for. Be sure to report issues.

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.

http://innig.net/macker/

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.

http://japan.sourceforge.net/

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 »

  1. 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.

  2. 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.

  3. 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

RSS feed for comments on this post · TrackBack URI

Leave a Comment

Start Here

Get Help

More Information

Architecture Propaganda

Schwag

If you assert your architecture, then let everyone know with this branded gear. architecture rules mug