<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7742102866846965286</id><updated>2010-09-06T00:05:27.862-07:00</updated><title type='text'>blog.stan4j.com</title><subtitle type='html'>&lt;a href="http://stan4j.com"&gt;STAN - Structure Analysis for Java&lt;/a&gt;</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.stan4j.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7742102866846965286/posts/default?orderby=updated'/><link rel='alternate' type='text/html' href='http://blog.stan4j.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Christoph</name><uri>http://www.blogger.com/profile/00276874997545084399</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>10</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7742102866846965286.post-1334735316106790537</id><published>2010-05-22T06:05:00.000-07:00</published><updated>2010-05-22T11:51:35.346-07:00</updated><title type='text'>Dependency Analysis with STAN (Video)</title><content type='html'>We've created a video introducing dependency analysis with STAN. Watch and listen to the music of &lt;a href="http://www.tiefenrausch-klangkombinat.de/" target="_blank"&gt;Tiefenrausch Klangkombinat&lt;/a&gt;, a Jazz/Funk/Fusion combo from Frankfurt.&lt;div&gt;&lt;br /&gt;&lt;object width="768" height="508"&gt;&lt;param name="movie" value="http://www.youtube.com/v/s9K9m4HFgS4&amp;amp;fs=1&amp;amp;rel=0&amp;amp;hd=1"&gt;&lt;br /&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;br /&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;br /&gt;&lt;embed src="http://www.youtube.com/v/s9K9m4HFgS4&amp;amp;fs=1&amp;amp;rel=0&amp;amp;hd=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="768" height="508"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;/object&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7742102866846965286-1334735316106790537?l=blog.stan4j.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.stan4j.com/feeds/1334735316106790537/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7742102866846965286&amp;postID=1334735316106790537' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7742102866846965286/posts/default/1334735316106790537'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7742102866846965286/posts/default/1334735316106790537'/><link rel='alternate' type='text/html' href='http://blog.stan4j.com/2010/05/dependency-analysis-with-stan-video_22.html' title='Dependency Analysis with STAN (Video)'/><author><name>Christoph</name><uri>http://www.blogger.com/profile/00276874997545084399</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11820330480326890332'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7742102866846965286.post-149743233001656046</id><published>2009-12-11T02:32:00.000-08:00</published><updated>2010-03-12T09:57:53.763-08:00</updated><title type='text'>Project and Bundle Dependency Graphs</title><content type='html'>&lt;div style="text-align: justify;"&gt;STAN IDE 2.0 introduces tools to visualize Eclipse project and OSGi bundle dependencies. The tools are packaged into additional, optional features&lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;STAN IDE Tools (project dependencies)&lt;/li&gt;&lt;li&gt;STAN IDE Tools - PDE (bundle dependencies)&lt;/li&gt;&lt;/ul&gt;Once installed, the project/bundle dependencies are available from&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;span style="font-style: italic;"&gt;Window &gt; Show View&lt;/span&gt; in category &lt;span style="font-style: italic;"&gt;STA&lt;/span&gt;&lt;span style="font-style: italic;"&gt;N Tools&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Mad_cKN-ZRw/SyIgt7oHduI/AAAAAAAAABQ/SgF_CP9s1NU/s1600-h/show-view.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 317px; height: 296px;" src="http://3.bp.blogspot.com/_Mad_cKN-ZRw/SyIgt7oHduI/AAAAAAAAABQ/SgF_CP9s1NU/s320/show-view.png" alt="" id="BLOGGER_PHOTO_ID_5413925675524912866" border="0" /&gt;&lt;/a&gt;Both views follow the same usage patterns. Let's take some project dependencies as an example. Just &lt;span style="font-weight: bold;"&gt;drag and drop&lt;/span&gt; projects from Eclipse' Package (or Project) Explorer to add them to the graph.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Mad_cKN-ZRw/SyIvFnnzEcI/AAAAAAAAACg/sqVsvFrWf6k/s1600-h/project-deps-1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 251px; height: 100px;" src="http://2.bp.blogspot.com/_Mad_cKN-ZRw/SyIvFnnzEcI/AAAAAAAAACg/sqVsvFrWf6k/s400/project-deps-1.png" alt="" id="BLOGGER_PHOTO_ID_5413941475634516418" border="0" /&gt;&lt;/a&gt;OK, what's about the "+" and "-" overlay icons?&lt;ul style="text-align: justify;"&gt;&lt;li&gt;A "+" indicates that there are outgoing dependencies that are currently not shown. These dependencies can be added by double clicking the node. E.g. adding outgoing dependencies for&lt;span style="font-family:courier new;"&gt; de.odysseus.stan.eclipse.&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;cove&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;rage.core&lt;/span&gt; may give&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Mad_cKN-ZRw/SyIvTD4H0AI/AAAAAAAAACo/XtWaoU0btMg/s1600-h/project-deps-2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 312px; height: 158px;" src="http://4.bp.blogspot.com/_Mad_cKN-ZRw/SyIvTD4H0AI/AAAAAAAAACo/XtWaoU0btMg/s400/project-deps-2.png" alt="" id="BLOGGER_PHOTO_ID_5413941706557476866" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;A "-" indicates that there are incoming dependencies that are currently not shown. These dependencies can be added by double clicking the node while holding the &lt;span style="font-family:courier new;"&gt;ALT &lt;/span&gt;key. E.g. adding incoming dependencies for &lt;span style="font-family:courier new;"&gt;de.odysseus.stan.eclipse.coverage.core&lt;/span&gt; may give&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Mad_cKN-ZRw/SyIw1nFAiOI/AAAAAAAAAC4/yS_xJCHzqeM/s1600-h/project-deps-3.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 86px;" src="http://3.bp.blogspot.com/_Mad_cKN-ZRw/SyIw1nFAiOI/AAAAAAAAAC4/yS_xJCHzqeM/s400/project-deps-3.png" alt="" id="BLOGGER_PHOTO_ID_5413943399633946850" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;Here's what the edge labels mean:&lt;br /&gt;&lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;For project dependencies, edges may be labeled "s" (static), "d" (dynamic) or "s+d" (both). A "static" dependency can be added on the "Project References" page in the project's properties. A "dynamic" dependency is introduced through Java Build Path, Java EE Module Dependencies, etc.&lt;/li&gt;&lt;li&gt;For bundle dependencies, edges may be labeled "r" (requires bundle), "i" (imports packages), or "i+r" (both). Fragments may also have an "h" (is hosted by) dependency to their host bundle.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Both views also let you remove selected nodes by simply pressing the &lt;span style="font-family:courier new;"&gt;DEL &lt;/span&gt;key.&lt;br /&gt;&lt;br /&gt;As a final example, here are the outgoing (transitive) bundle dependencies for &lt;span style="font-family:courier new;"&gt;org.eclipse.core.runtime&lt;/span&gt;:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Mad_cKN-ZRw/SyIjoovGP8I/AAAAAAAAACI/iWFx-E14mRA/s1600-h/bundle-dependencies.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 180px;" src="http://1.bp.blogspot.com/_Mad_cKN-ZRw/SyIjoovGP8I/AAAAAAAAACI/iWFx-E14mRA/s400/bundle-dependencies.png" alt="" id="BLOGGER_PHOTO_ID_5413928883089457090" border="0" /&gt;&lt;/a&gt;By the way, use the "+" button from the view's toolbar to add bundles from your active target platform.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Mad_cKN-ZRw/SyIklnQwDnI/AAAAAAAAACQ/seyn8hf8plw/s1600-h/toolbar.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 162px; height: 22px;" src="http://3.bp.blogspot.com/_Mad_cKN-ZRw/SyIklnQwDnI/AAAAAAAAACQ/seyn8hf8plw/s400/toolbar.png" alt="" id="BLOGGER_PHOTO_ID_5413929930665758322" border="0" /&gt;&lt;/a&gt;Hope you like it!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7742102866846965286-149743233001656046?l=blog.stan4j.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7742102866846965286/posts/default/149743233001656046'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7742102866846965286/posts/default/149743233001656046'/><link rel='alternate' type='text/html' href='http://blog.stan4j.com/2009/12/project-and-bundle-dependency-graphs.html' title='Project and Bundle Dependency Graphs'/><author><name>Christoph</name><uri>http://www.blogger.com/profile/00276874997545084399</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11820330480326890332'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Mad_cKN-ZRw/SyIgt7oHduI/AAAAAAAAABQ/SgF_CP9s1NU/s72-c/show-view.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-7742102866846965286.post-810066557354838797</id><published>2009-11-01T04:51:00.000-08:00</published><updated>2009-11-01T05:12:52.419-08:00</updated><title type='text'>STAN 2.0 Public Beta available</title><content type='html'>The beta period will last until February 28 of 2010. During this period, you are invited to &lt;a href="http://stan4j.com/general/download.html"&gt;download&lt;/a&gt; and use the fully functional product for evaluation purposes. Moreover, STAN 2.0 will have a community license option for free, non-commercial use.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;What's New?&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Sandbox View&lt;/span&gt; - Explore dependencies between &lt;span style="font-style: italic;"&gt;any &lt;/span&gt;artifacts as easy as Drag'n Drop&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Map View&lt;/span&gt; - Visualize metric ratings in fancy green-to-red treemaps&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;IDE Tools&lt;/span&gt; - Views to show Eclipse Project/Plug-in dependency graphs&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;If you haven't used STAN before, now is the time!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7742102866846965286-810066557354838797?l=blog.stan4j.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.stan4j.com/feeds/810066557354838797/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7742102866846965286&amp;postID=810066557354838797' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7742102866846965286/posts/default/810066557354838797'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7742102866846965286/posts/default/810066557354838797'/><link rel='alternate' type='text/html' href='http://blog.stan4j.com/2009/11/stan-20-public-beta-available.html' title='STAN 2.0 Public Beta available'/><author><name>Christoph</name><uri>http://www.blogger.com/profile/00276874997545084399</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11820330480326890332'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7742102866846965286.post-8627154175020962539</id><published>2009-06-28T07:46:00.000-07:00</published><updated>2009-06-28T08:00:06.896-07:00</updated><title type='text'>STAN 1.1 with Community License Option</title><content type='html'>STAN 1.1 has just been released. Since 1.0 more that a year ago, we went through 1.0.1 to 1.0.4, constantly improving the product regarding to stability and usability. Since 1.0, lots of "little things" have found their way into STAN:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Choose between Java 5 generic and raw signatures&lt;/li&gt;&lt;li&gt;Determine the order in which libraries are analyzed&lt;/li&gt;&lt;li&gt;Improved "Open Declaration" (F3) in STAN IDE&lt;/li&gt;&lt;li&gt;Copy to clipboard in Query/Violations/Dependencies View&lt;/li&gt;&lt;li&gt;In addition to class exclusions, inclusion patterns are supported&lt;/li&gt;&lt;li&gt;Show dependencies for multiple edge selections in Dependencies View&lt;/li&gt;&lt;li&gt;Parse annotations, indicate @Deprecated with an icon overlay&lt;/li&gt;&lt;li&gt;Introduce pollution, a number suitable to trace quality over time&lt;/li&gt;&lt;li&gt;Added treemap overview in Structure Explorer and Pollution View&lt;/li&gt;&lt;li&gt;Show excluded classes under a separate root in Structure Explorer&lt;/li&gt;&lt;li&gt;Re-include excluded classes from the Explorer's context menu&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;With STAN 1.1 we also updated the license terms by adding a &lt;span style="font-style: italic;"&gt;Community License&lt;/span&gt; option.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What does that mean?&lt;/span&gt; Well, you may now &lt;a href="http://stan4j.com/general/download.html"&gt;download&lt;/a&gt; and use STAN without a license key! However, structure analysis will be limited to 100 classes. Any classes exceeding that limit will be automatically excluded from the analysis. That's the only restriction when using STAN under the terms of the community license option. The other license conditions did not change: if you like STAN, you can still register at &lt;a href="http://stan4j.com/"&gt;stan4j.com&lt;/a&gt; for a 30 days evaluation and you can still buy node-locked or personal licenses.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7742102866846965286-8627154175020962539?l=blog.stan4j.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.stan4j.com/feeds/8627154175020962539/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7742102866846965286&amp;postID=8627154175020962539' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7742102866846965286/posts/default/8627154175020962539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7742102866846965286/posts/default/8627154175020962539'/><link rel='alternate' type='text/html' href='http://blog.stan4j.com/2009/06/stan-11-with-community-license-option.html' title='STAN 1.1 with Community License Option'/><author><name>Christoph</name><uri>http://www.blogger.com/profile/00276874997545084399</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11820330480326890332'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7742102866846965286.post-2061895568454540722</id><published>2008-04-16T07:57:00.000-07:00</published><updated>2008-04-18T06:27:04.001-07:00</updated><title type='text'>STAN IDE free for Open Source</title><content type='html'>&lt;div style="text-align: justify;"&gt;I am happy to announce the availability of free STAN IDE licenses for Open Source projects.&lt;br /&gt;&lt;br /&gt;For those who don't know: STAN IDE is the Eclipse 3.3+ integrated product variant. STAN IDE provides its own perspective, showing various dependency graphs, ranking metric violations, generating HTML reports, etc. STAN adds a launch configuration type for Structure Analysis to the IDE, thereby allowing to run an analysis directly from the Java Package Explorer. See &lt;a href="http://stan4j.com/"&gt;http://stan4j.com/&lt;/a&gt; for further information.&lt;br /&gt;&lt;br /&gt;By sharing STAN IDE, we aim to support the Open Source community in general and the Eclipse community in particular. So, if you are managing an Open Source project and would like to utilize STAN IDE, please submit your proposal to info at stan4j dot com, providing&lt;br /&gt;&lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;the name of your project,&lt;/li&gt;&lt;li&gt;a short project description,&lt;/li&gt;&lt;li&gt;the Web URL of your project,&lt;/li&gt;&lt;li&gt;the status of your project.&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;Cheers!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7742102866846965286-2061895568454540722?l=blog.stan4j.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.stan4j.com/feeds/2061895568454540722/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7742102866846965286&amp;postID=2061895568454540722' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7742102866846965286/posts/default/2061895568454540722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7742102866846965286/posts/default/2061895568454540722'/><link rel='alternate' type='text/html' href='http://blog.stan4j.com/2008/04/stan-ide-free-for-open-source.html' title='STAN IDE free for Open Source'/><author><name>Christoph</name><uri>http://www.blogger.com/profile/00276874997545084399</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11820330480326890332'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7742102866846965286.post-4356937678385423858</id><published>2008-03-28T03:02:00.000-07:00</published><updated>2008-03-28T03:05:17.290-07:00</updated><title type='text'>STAN 1.0 is out!</title><content type='html'>Finally, STAN 1.0 is reality and has been shipped to early adopters. Thanks to everyone who helped to make this happen!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7742102866846965286-4356937678385423858?l=blog.stan4j.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7742102866846965286/posts/default/4356937678385423858'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7742102866846965286/posts/default/4356937678385423858'/><link rel='alternate' type='text/html' href='http://blog.stan4j.com/2008/03/stan-10-is-out.html' title='STAN 1.0 is out!'/><author><name>Christoph</name><uri>http://www.blogger.com/profile/00276874997545084399</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11820330480326890332'/></author></entry><entry><id>tag:blogger.com,1999:blog-7742102866846965286.post-5754050624901399693</id><published>2008-03-02T08:53:00.000-08:00</published><updated>2008-03-02T09:00:38.997-08:00</updated><title type='text'>Introducing Metric Queries</title><content type='html'>STAN public Beta 3 adds support for metric queries. Here's the Query View:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Mad_cKN-ZRw/R8rcXdAOXyI/AAAAAAAAAAo/SFGBUOvqGmw/s1600-h/query-view.png"&gt;&lt;img style="cursor: pointer; width: 458px; height: 85px;" src="http://4.bp.blogspot.com/_Mad_cKN-ZRw/R8rcXdAOXyI/AAAAAAAAAAo/SFGBUOvqGmw/s400/query-view.png" alt="" id="BLOGGER_PHOTO_ID_5173189417469108002" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Pressing one of the new buttons (e.g. Class Query...) launches the query dialog:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Mad_cKN-ZRw/R8rc09AOXzI/AAAAAAAAAAw/bc9GOYfazMA/s1600-h/query-dialog.png"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_Mad_cKN-ZRw/R8rc09AOXzI/AAAAAAAAAAw/bc9GOYfazMA/s400/query-dialog.png" alt="" id="BLOGGER_PHOTO_ID_5173189924275248946" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7742102866846965286-5754050624901399693?l=blog.stan4j.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.stan4j.com/feeds/5754050624901399693/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7742102866846965286&amp;postID=5754050624901399693' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7742102866846965286/posts/default/5754050624901399693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7742102866846965286/posts/default/5754050624901399693'/><link rel='alternate' type='text/html' href='http://blog.stan4j.com/2008/03/introducing-metric-queries.html' title='Introducing Metric Queries'/><author><name>Christoph</name><uri>http://www.blogger.com/profile/00276874997545084399</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11820330480326890332'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_Mad_cKN-ZRw/R8rcXdAOXyI/AAAAAAAAAAo/SFGBUOvqGmw/s72-c/query-view.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7742102866846965286.post-8746708223009345765</id><published>2008-03-01T04:19:00.000-08:00</published><updated>2008-03-01T04:36:52.090-08:00</updated><title type='text'>STAN Usability Enhancements</title><content type='html'>STAN APP Public Beta 3 comes along with some nice usability features:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Choose workspace on startup&lt;/span&gt; - When starting STAN, a dialog lets you choose a workspace location.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Switch workspace&lt;/span&gt; - Use &lt;span style="font-style: italic;"&gt;File &gt; Switch Workspace...&lt;/span&gt; to change your workspace on the fly.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Confirm exit on close&lt;/span&gt; - When closing the workbench window, a dialog asks you to confirm exiting STAN.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Software Updates&lt;/span&gt; - Use &lt;span style="font-style: italic;"&gt;Help &gt; Search for Updates...&lt;/span&gt; to upgrade to the latest version.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Monitor heap space&lt;/span&gt; - The status bar now shows you the amount of heap space currently in use.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Rename project&lt;/span&gt; - Rename the selected project via its context menu or press F2.&lt;/li&gt;&lt;/ul&gt;I hope you'll find some of these useful.&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;a href="http://stan4j.com/general/download.html"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7742102866846965286-8746708223009345765?l=blog.stan4j.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.stan4j.com/feeds/8746708223009345765/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7742102866846965286&amp;postID=8746708223009345765' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7742102866846965286/posts/default/8746708223009345765'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7742102866846965286/posts/default/8746708223009345765'/><link rel='alternate' type='text/html' href='http://blog.stan4j.com/2008/03/stan-usability-enhancements.html' title='STAN Usability Enhancements'/><author><name>Christoph</name><uri>http://www.blogger.com/profile/00276874997545084399</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11820330480326890332'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7742102866846965286.post-1714437866462190735</id><published>2008-02-13T12:13:00.000-08:00</published><updated>2008-02-14T08:30:40.974-08:00</updated><title type='text'>ACD and Testability</title><content type='html'>&lt;div style="text-align: justify;"&gt;The &lt;span style="font-weight: bold;"&gt;Component Dependency&lt;/span&gt;  (CD) for a component &lt;span style="font-style: italic;"&gt;C&lt;/span&gt; is defined as the amount of other components that &lt;span style="font-style: italic;"&gt;C&lt;/span&gt; depends on, either directly or indirectly.&lt;br /&gt;&lt;br /&gt;There are two flavors of Component Dependency&lt;br /&gt;&lt;/div&gt;&lt;ol style="text-align: justify;"&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;absolute&lt;/span&gt; CD, expressed as the number of other components&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;relative&lt;/span&gt; CD, expressed as the percentage of other components&lt;/li&gt;&lt;/ol&gt;&lt;div style="text-align: justify;"&gt;In other words, relative CD is absolute CD divided by the number of components (-1) multiplied with 100.&lt;br /&gt;&lt;br /&gt;STAN shows you the (relative) &lt;span style="font-weight: bold;"&gt;Average Component Dependency&lt;/span&gt; (ACD) metric for libraries, packages and units (toplevel classes).&lt;br /&gt;&lt;br /&gt;For symmetry reasons, we may note that&lt;br /&gt;&lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;ACD is the average amount of components that a component depends on&lt;/li&gt;&lt;li&gt;ACD is the average amount of components that depend on a component&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;So far so good. But how is this related to testability?&lt;br /&gt;&lt;br /&gt;Consider we have a code base with 1000 units and an ACD for units of 10%. That is, on average, a unit depends on 100 other units (and 100 other units depend on it), either directly or indirectly.&lt;br /&gt;&lt;br /&gt;But this also means that&lt;br /&gt;&lt;/div&gt;&lt;ol style="text-align: justify;"&gt;&lt;li&gt;changing a unit may affect (and potentially break) 100 other units&lt;/li&gt;&lt;li&gt;a unit may be affected (and potentially broken) by changes in any of 100 other units&lt;/li&gt;&lt;/ol&gt;&lt;div style="text-align: justify;"&gt;This shows that ACD is indeed an interesting measure for testability: smaller values allow for simpler and more robust testing.&lt;br /&gt;&lt;br /&gt;Finally, let me give some real world examples:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Project         #units     rel. ACD    abs. ACD&lt;br /&gt;Spring 2.5.1      1595        2.50%          40&lt;br /&gt;Groovy 1.5.4       833       27.57%         229&lt;br /&gt;Hibernate 3.2.6   1085       67.04%         727&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7742102866846965286-1714437866462190735?l=blog.stan4j.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.stan4j.com/feeds/1714437866462190735/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7742102866846965286&amp;postID=1714437866462190735' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7742102866846965286/posts/default/1714437866462190735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7742102866846965286/posts/default/1714437866462190735'/><link rel='alternate' type='text/html' href='http://blog.stan4j.com/2008/02/average-component-dependency-acd-and.html' title='ACD and Testability'/><author><name>Christoph</name><uri>http://www.blogger.com/profile/00276874997545084399</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11820330480326890332'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7742102866846965286.post-5013679308564058767</id><published>2008-02-11T11:34:00.000-08:00</published><updated>2008-02-12T01:31:29.655-08:00</updated><title type='text'>A little bit of history...</title><content type='html'>&lt;div style="text-align: justify;"&gt;Back in summer 2006, Oliver and I started to think about creating a tool that would measure some metrics, detect design tangles and dump out a report. We wanted to use these reports to serve as quick indicators for the code/design quality and as a base for discussing quality issues with our customers. We then searched for open source projects that would assist us in doing the hard work, providing us the code dependencies and metrics. To make it short, there was none. Next, we checked for commercial products. Again, without luck.&lt;br /&gt;&lt;br /&gt;However, as we evaluated and used these tools we got some idea of what we consider to be useful from the developer's point of view. We learned that those "architecture first" solutions tend to fail and that we took the most benfits from tools that really helped us to understand the structure of the code base: now, dependency analysis became a hot topic. Anyway, at that point we had no plans for implementing our own solution in this area.&lt;br /&gt;&lt;br /&gt;During fall 2006, we started coding to get what we initially wanted. We decided to analyze Java bytecode, not source. Parsing bytecode is much faster and allows to analyze code bases where we do not have access to the sources. All went fine and within a couple of weeks we ended with a command line tool which produced lots of numbers, formatted as HTML.&lt;br /&gt;&lt;br /&gt;In November 2006, we both got involved in a project with one of our customers, so the quality stuff was pending then. By the end of the year, I left the project. Oliver stayed a little longer and I spent some time creating the basic framework for STAN.&lt;br /&gt;&lt;br /&gt;I am a Java developer since 1.0. But after years of J2EE I had to realize that I didn't know how to create a Java-based desktop application in these times. I didn't want to come out with one of those home-grown Swing applications, so I played around with the Eclipse Rich Client Platform. Not only that RCP provided me what I was looking for, it was also attractive because it left room for the idea of moving STAN into my favorite IDE one day.&lt;br /&gt;&lt;br /&gt;Still early 2007, we went back to dependency analysis. We knew that STAN wouldn't be worth all the effort without having neat graphs. The most intuitive way for drawing dependency graphs uses a hierarchical, layered layout, which ensures that a maximum number of dependencies have a common direction (e.g. top-down or left-to-right). Only a minimum set of "feedback" dependencies point into the opposite direction. We were pretty sure that we wouldn't be able to get this done, but we had no choice. We read some papers on layered graph layout, understood a few, implemented some algorithms, played, improved... About a month or so (I can't remember) later we got a basic implementation. Another month to utilize GEF, yet another to tweak the implementation, yet another to add nifty features like expand/collapse, partitioning, etc.&lt;br /&gt;&lt;br /&gt;We began to issue monthly STAN previews to friends, hoping to get some feedback and help. Well, due to continuous annoyance, we got some! In summer 2007, Andreas and Markus joined our team. Andreas took over the IDE integration part. We agreed that it would be really cool to have a "Run As... Structure Analysis" in the Package Explorer's context menu. After a month or so, it was there. Markus had the idea to support other languages and started working on a parser for - damned, I forgot the name... Due to his rare time, he wasn't able to finish it, but it works as a prototype and serves as a proof of concept. I hope we can come back to this soon! Markus also helped to setup our build management.&lt;br /&gt;&lt;br /&gt;During fall 2007, we started another feature offensive: the Pollution Chart, the Couplings View and the Dependency Landscape were added. In late November, we felt ready to share a public beta with a wider audience. Finally, STAN 1.0 will be launched within the next weeks...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7742102866846965286-5013679308564058767?l=blog.stan4j.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.stan4j.com/feeds/5013679308564058767/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7742102866846965286&amp;postID=5013679308564058767' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7742102866846965286/posts/default/5013679308564058767'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7742102866846965286/posts/default/5013679308564058767'/><link rel='alternate' type='text/html' href='http://blog.stan4j.com/2008/02/little-bit-of-history.html' title='A little bit of history...'/><author><name>Christoph</name><uri>http://www.blogger.com/profile/00276874997545084399</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11820330480326890332'/></author><thr:total>0</thr:total></entry></feed>