All pastes #798157 Raw Edit

Something

public html v1 · immutable
#798157 ·published 2007-11-26 16:50 UTC
rendered paste body
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">  <head profile="http://gmpg.org/xfn/11">    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />    <meta name="description"    content="Assert Your Architecture - with this open source java library. Leverages XML and optional programatic configuration to assert your code's architecture via unit tests or ant tasks. Able to check for layer independence and cyclic dependencies." />    <meta name="keywords"    content="open source java xml jdepend architecture rules unit test junit" />    <meta name="Expires" content="0" />    <meta name="ROBOTS" content="INDEX, FOLLOW" />    <title>      architecture rules    </title>    <link rel="stylesheet" type="text/css" href="css/style.css" />    <link rel="stylesheet" type="text/css" href="css/nifty.css" />    <link rel="stylesheet" type="text/css" href="css/syntax.css" />    <!--[if lt IE 8]>    <style type="text/css">      #mainmenu li a, #recentposts li a, #personalfavorites li a, #textads li a, #recentcomments li, #contactme li {display:inline-block;}      #mainmenu li a, #recentposts li a, #personalfavorites li a, #textads li a, #recentcomments li, #contactme li {display:block;}      *html #page {width:expression(document.documentElement.clientWidth > 1010? "1010px" : auto")}    </style>    <![endif]-->    <script type="text/javascript" src="js/prototype-1.5.1.1.js">    </script>  </head>  <body>    <div id="page">      <div id="blogtitle" class="primary">        <a        href="http://architecturerules.googlecode.com/svn/docs/index.html">architecture</a><span>        rules</span>      </div>      <div id="backtogoogle">        <a href="http://code.google.com/p/architecturerules/">google code        landing page</a>      </div>      <div id="about">        <p class="description">          <strong>Assert Your Architecture!</strong> with this <em>open          source</em> <strong>java</strong> library. Architecture Rules          leverages an <a href="sample-configuration.html">xml configuration          file</a> and optional programmatic configuration to assert your          code's architecture via <a          href="getting-started.html#write-unit-test">unit tests</a> or <a          href="run.html#ant-task">ant tasks</a>. 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 <a          href="http://clarkware.com/software/JDepend.html"          target="_jdepend">JDepend</a> to simplify the process of maintaining          a solid software architecture.        </p>        <ul id="mainmenu">          <li id="home" class="page_item current_page_item">            <a title="home" href="index.html">Home</a>          </li>          <li id="source" class="page_item">            <a href="source.html">Source</a>          </li>          <li id="downloads" class="page_item">            <a href="downloads.html">Downloads</a>          </li>          <li id="mailing-lists" class="page_item">            <a href="mailing-lists.html">Mailing Lists</a>          </li>        </ul>      </div>      <!-- /about -->      <div id="primary" class="single hfeed">        <div class="downloadnow">          <ol>            <li>              <a              href="downloads.html#release-2.0.2">architecture-rules-2.0.2.jar</a>            </li>            <li>              <a              href="downloads.html#release-2.0.2">architecture-rules-2.0.2-sources.jar</a>            </li>            <li>              <a              href="downloads.html#release-2.0.2">architecture-rules-2.0.2-test-sources.jar</a>            </li>          </ol>        </div>        <!-- /download  -->        <div class="hentry post programming" id="introduction">          <h1 class="posttitle entry-title">            Introduction          </h1>          <div class="entry entry-content">            <p>              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.            </p>            <p>              However, experiences using JDepend have been in maintaining              difficult configuration and stumbling while trying to get a quick              overview of the established rules.            </p>            <blockquote>              Enter: <strong>Architecture-Rules</strong>            </blockquote>            <p>              Check out how to <a href="getting-started.html">get started</a>              and a <a href="sample-configuration.html">sample              configuration</a> now, or continue reading to learn the benefits              of Asserting your Architecture.            </p>            <h3>              Benefits            </h3>            <ul>              <li>                Assert your architecture through unit tests              </li>              <li>                Fail a build when architecture rules are broken              </li>              <li>                Allow any IDE with unit testing capabilities to enforce an                architecture              </li>              <li>                Allow continuous integration servers to enforce an architecture              </li>              <li>                Easy to read and maintain architecture rules and configuration              </li>              <li>                Allows for multiple architecture configuration. One for each                module.              </li>            </ul>            <h3>              Why assert your architecture?            </h3>            <p>              <a              href="http://clarkware.com/software/JDepend.html#uses">JDepend</a>              explains why you should design a good architecture and why you              should monitor it.            </p>            <p>              Here are some applicable experts:            </p>            <h4>              Identify Package Dependency Cycles            </h4>            <blockquote>              Packages participating in a package dependency cycle are in a              deadly embrace with respect to reusability and their release              cycle. Package dependency cycles can be easily identified by              reviewing the textual reports of dependency cycles. Once these              dependency cycles have been identified with JDepend, they can be              broken by employing various object-oriented techniques.            </blockquote>            <h4>              Package Release Modules            </h4>            <blockquote>              Packages that are cohesive and independent can be released as              autonomous modules with their own release schedules and version              numbers. Single packages, or groups of related packages              collaborating in a framework, that are candidates for independent              release can be harvested by evaluating their design quality              metrics using JDepend.            </blockquote>            <h4>              Isolate Third-Party Package Dependencies            </h4>            <blockquote>              Third-party package dependencies can be easily identified and              isolated by examining the afferent couplings to those packages.              Once the dependency on these third-party packages has been              measured with JDepend, the dependency can be managed by              effectively designing abstract and stable packages that              encapsulate the third-party package implementation details.            </blockquote>            <h4>              Invert Dependencies            </h4>            <blockquote>              The goal of using JDepend is to ultimately invert package              dependencies such that low-abstraction packages depend upon              high-abstraction packages. This inversion of dependencies allows              the high-abstraction packages to be reused independently while              being extensible to an open set of implementations. In general,              dependencies upon stable packages are desirable, while              dependencies upon instable packages are undesirable. JDepend              allows dependencies to be interactively examined and refactored              as an integral part of software design and development.            </blockquote>          </div>          <!-- entry -->        </div>        <!-- post -->      </div>      <div id="secondary">      </div>      <!-- /secondary -->    </div>    <!-- /page -->    <!-- footer -->    <div id="footer">    </div>    <!-- /footer -->    <script type="text/javascript">    //<![CDATA[    new Ajax.Updater('secondary', 'component_rightnav.html', {method: 'get', asynchronous: true, insertion: Insertion.Bottom });    new Ajax.Updater('footer', 'component_footer.html', {method: 'get', asynchronous: true, insertion: Insertion.Bottom });    //]]>    </script><!-- syntaxhighlighter -->    <script type="text/javascript"    src="http://syntaxhighlighter.googlecode.com/svn/tags/1.5.1/Scripts/shCore.js"     language="JavaScript">    </script><script type="text/javascript"    src="http://syntaxhighlighter.googlecode.com/svn/tags/1.5.1/Scripts/shBrushXml.js"     language="JavaScript">    //<![CDATA[    //]]>    </script><script type="text/javascript"    src="http://syntaxhighlighter.googlecode.com/svn/tags/1.5.1/Scripts/shBrushJava.js"     language="JavaScript">    </script><!-- nifty - rounded corners -->    <script type="text/javascript" src="js/nifty.js" language="JavaScript">    </script><script type="text/javascript">  //<![CDATA[      window.onload=function(){          if(NiftyCheck()) {              Rounded("div#about","#fff","#E7EFFF");              RoundedTop("div.footbar","#fff","#e8fecd");              Rounded("div.downloadnow","#fff","#e8fecd");          }          dp.SyntaxHighlighter.ClipboardSwf = 'http://syntaxhighlighter.googlecode.com/svn/tags/1.5.1/Scripts/clipboard.swf';        dp.SyntaxHighlighter.HighlightAll('code');      }  //]]>      </script><!-- google analytics -->    <script src="http://www.google-analytics.com/urchin.js"    type="text/javascript">    //<![CDATA[    //]]>    </script><script type="text/javascript">    //<![CDATA[  _uacct = "UA-616623-3";  urchinTracker();    //]]>    </script>  </body></html>