<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SciTools Blog</title>
	<atom:link href="http://scitools.com/blog/feed" rel="self" type="application/rss+xml" />
	<link>http://scitools.com/blog</link>
	<description>Maintain your Software</description>
	<lastBuildDate>Mon, 16 Aug 2010 16:14:23 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Latest Build &#8211; 526</title>
		<link>http://scitools.com/blog/2010/08/latest-build.html</link>
		<comments>http://scitools.com/blog/2010/08/latest-build.html#comments</comments>
		<pubDate>Mon, 16 Aug 2010 04:14:00 +0000</pubDate>
		<dc:creator>KevinG</dc:creator>
				<category><![CDATA[Build Notes]]></category>
		<category><![CDATA[Understand 2.5]]></category>

		<guid isPermaLink="false">http://scitools.com/blog/2010/07/latest-build-520.html</guid>
		<description><![CDATA[


The help documentation has been updated to reflect the many new features in Understand 2.5. There are several fixes to the graphs. Several enhancements to the dependency features.
Build Notes




Grab it at www.getunderstand.com



]]></description>
			<content:encoded><![CDATA[<table>
<tbody>
<tr>
<td>The help documentation has been updated to reflect the many new features in Understand 2.5. There are several fixes to the graphs. Several enhancements to the dependency features.
<p><a href="https://www.scitools.com/support/buildLogs.php">Build Notes</a></p>
</td>
<td valign="top"><a href="http://www.getunderstand.com"><img alt="" src="https://www.scitools.com/images/downloadSub.png" /></a></td>
</tr>
<tr>
<td colspan="2" align="center"><a href="http://www.getunderstand.com">Grab it at www.getunderstand.com</a></td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://scitools.com/blog/2010/08/latest-build.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Open Code Files with Understand</title>
		<link>http://scitools.com/blog/2010/08/open-code-files-with-understand.html</link>
		<comments>http://scitools.com/blog/2010/08/open-code-files-with-understand.html#comments</comments>
		<pubDate>Tue, 10 Aug 2010 17:27:50 +0000</pubDate>
		<dc:creator>KevinG</dc:creator>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[Understand 2.5]]></category>
		<category><![CDATA[extension]]></category>
		<category><![CDATA[file association]]></category>

		<guid isPermaLink="false">http://scitools.com/blog/2010/08/open-code-files-with-understand.html</guid>
		<description><![CDATA[As of build 523, the .udb extension on Windows is associated with Understand and when a .udb file is double clicked it will open the Understand Project. Some users have asked for similar functionality with code files. In the past if you setup Understand to open a code file, by default it would open a [...]]]></description>
			<content:encoded><![CDATA[<p>As of build 523, the .udb extension on Windows is associated with Understand and when a .udb file is double clicked it will open the Understand Project. Some users have asked for similar functionality with code files. In the past if you setup Understand to open a code file, by default it would open a new instance of Understand. As of build 525 it will open up in the existing instance of Understand instead of a new one. Keep reading for instructions on registering Understand to open code files.</p>
<p> <span id="more-714"></span>
<p>These instructions may vary slightly depending on your version of Windows, but in general the concept is the same.&#160; I will register .cpp files for this example. When I’m done, whenever I double click on a C++ file, it will open in Understand by default.</p>
<p>First find a .cpp file in explorer, right click on it and select <strong>Open with –&gt; Choose default Program</strong></p>
<p>&#160;<a href="http://www.scitools.com/blog/wp-content/uploads/2010/08/screenshot.20.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="screenshot.20" border="0" alt="screenshot.20" src="http://www.scitools.com/blog/wp-content/uploads/2010/08/screenshot.20_thumb.jpg" width="388" height="135" /></a></p>
<p>Click the Browse Button and navigate to the Understand executable, select it and click “Open”, by default it is at C:\Program Files\SciTools\bin\pc-win32\understand.exe</p>
<p><a href="http://www.scitools.com/blog/wp-content/uploads/2010/08/screenshot.21.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="screenshot.21" border="0" alt="screenshot.21" src="http://www.scitools.com/blog/wp-content/uploads/2010/08/screenshot.21_thumb.jpg" width="395" height="248" /></a> </p>
<p>Understand will now show up in the list of programs available to open this file. Select Understand and make sure the checkbox is checked that says: “Always use the selected program to open this kind of file”. Then click ok</p>
<p><a href="http://www.scitools.com/blog/wp-content/uploads/2010/08/screenshot.22.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="screenshot.22" border="0" alt="screenshot.22" src="http://www.scitools.com/blog/wp-content/uploads/2010/08/screenshot.22_thumb.jpg" width="385" height="317" /></a> </p>
</p>
</p>
<p>That’s it. Now Understand will handle those files everytime.</p>
]]></content:encoded>
			<wfw:commentRss>http://scitools.com/blog/2010/08/open-code-files-with-understand.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Understand now supports Web Languages</title>
		<link>http://scitools.com/blog/2010/07/understand-now-supports-web-languages.html</link>
		<comments>http://scitools.com/blog/2010/07/understand-now-supports-web-languages.html#comments</comments>
		<pubDate>Thu, 08 Jul 2010 22:36:23 +0000</pubDate>
		<dc:creator>KevinG</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Understand 2.5]]></category>
		<category><![CDATA[features]]></category>
		<category><![CDATA[web languages]]></category>

		<guid isPermaLink="false">http://scitools.com/blog/2010/07/understand-now-supports-web-languages.html</guid>
		<description><![CDATA[You can now analyze PHP, HTML, CSS and JavaScript files with Understand. Just select “Web” In the New Project Wizard and add your files.
We’re excited about this new feature and would like your feedback, please let us know what you think or if you run into any problems.

]]></description>
			<content:encoded><![CDATA[<p>You can now analyze PHP, HTML, CSS and JavaScript files with Understand. Just select “Web” In the New Project Wizard and add your files.</p>
<p>We’re excited about this new feature and would like your feedback, please <a href="mailto://support@scitools.com">let us know</a> what you think or if you run into any problems.</p>
<p><a href="http://www.scitools.com/blog/wp-content/uploads/2010/07/screenshot.11.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="screenshot.11" border="0" alt="screenshot.11" src="http://www.scitools.com/blog/wp-content/uploads/2010/07/screenshot.11_thumb.jpg" width="405" height="251" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://scitools.com/blog/2010/07/understand-now-supports-web-languages.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Share Your Project</title>
		<link>http://scitools.com/blog/2010/06/share-your-project.html</link>
		<comments>http://scitools.com/blog/2010/06/share-your-project.html#comments</comments>
		<pubDate>Fri, 11 Jun 2010 21:36:00 +0000</pubDate>
		<dc:creator>KevinG</dc:creator>
				<category><![CDATA[Quick-Tip]]></category>
		<category><![CDATA[Understand 2.5]]></category>
		<category><![CDATA[portablity]]></category>

		<guid isPermaLink="false">http://scitools.com/blog/2010/06/share-your-project.html</guid>
		<description><![CDATA[Use the Project Portability button (Project-&#62;Configure Project-&#62;Files) to make your project sharable/portable.
More details
]]></description>
			<content:encoded><![CDATA[<p>Use the Project Portability button (Project-&gt;Configure Project-&gt;Files) to make your project sharable/portable.</p>
<p><a href="http://scitools.com/blog/2008/04/understand-20-making-your-projects-portable.html">More details</a></p>
]]></content:encoded>
			<wfw:commentRss>http://scitools.com/blog/2010/06/share-your-project.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>UML Class Diagram</title>
		<link>http://scitools.com/blog/2010/06/uml-class-diagram.html</link>
		<comments>http://scitools.com/blog/2010/06/uml-class-diagram.html#comments</comments>
		<pubDate>Tue, 08 Jun 2010 21:26:00 +0000</pubDate>
		<dc:creator>KevinG</dc:creator>
				<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Quick-Tip]]></category>
		<category><![CDATA[Understand 2.5]]></category>
		<category><![CDATA[diagram]]></category>
		<category><![CDATA[graphs]]></category>
		<category><![CDATA[uml]]></category>

		<guid isPermaLink="false">http://scitools.com/blog/2010/06/uml-class-diagram.html</guid>
		<description><![CDATA[We’ve developed a UML Class Diagram for Understand. You can grab it from the plugins page.

]]></description>
			<content:encoded><![CDATA[<p>We’ve developed a UML Class Diagram for Understand. You can grab it from the <a href="http://www.scitools.com/plugins/plugins.php">plugins page</a>.</p>
<p><a href="http://www.scitools.com/blog/wp-content/uploads/2010/06/image.png"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://www.scitools.com/blog/wp-content/uploads/2010/06/image_thumb.png" width="268" height="407" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://scitools.com/blog/2010/06/uml-class-diagram.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Edit Companion File with Ctrl + Apostrophe</title>
		<link>http://scitools.com/blog/2010/06/edit-companion-file-with-ctrl-apostrophe.html</link>
		<comments>http://scitools.com/blog/2010/06/edit-companion-file-with-ctrl-apostrophe.html#comments</comments>
		<pubDate>Thu, 03 Jun 2010 21:01:28 +0000</pubDate>
		<dc:creator>KevinG</dc:creator>
				<category><![CDATA[Quick-Tip]]></category>
		<category><![CDATA[Understand 2.5]]></category>
		<category><![CDATA[keybinding]]></category>

		<guid isPermaLink="false">http://scitools.com/blog/2010/06/edit-companion-file-with-ctrl-apostrophe.html</guid>
		<description><![CDATA[As of build 516 If you are editing a code file you can quickly switch to the corresponding header file and back again with Ctrl+&#8217; (apostrophe).
]]></description>
			<content:encoded><![CDATA[<p>As of build 516 If you are editing a code file you can quickly switch to the corresponding header file and back again with Ctrl+&#8217; (apostrophe).</p>
]]></content:encoded>
			<wfw:commentRss>http://scitools.com/blog/2010/06/edit-companion-file-with-ctrl-apostrophe.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Forum Grand Opening (again)</title>
		<link>http://scitools.com/blog/2010/05/forum-grand-opening-again.html</link>
		<comments>http://scitools.com/blog/2010/05/forum-grand-opening-again.html#comments</comments>
		<pubDate>Tue, 11 May 2010 20:06:47 +0000</pubDate>
		<dc:creator>KevinG</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[forum]]></category>

		<guid isPermaLink="false">http://scitools.com/blog/2010/05/forum-grand-opening-again.html</guid>
		<description><![CDATA[Last month, we decided to temporarily close the forum. We have finished setting up a new forum and are “open for business” again. 
We are focusing the new forum on Understand 2.5 so are not migrating the content from the old forum. If you need to access old posts for some reason you can temporarily [...]]]></description>
			<content:encoded><![CDATA[<p>Last month, we decided to <a href="http://scitools.com/blog/2010/03/support-forum-temporarily-disabled.html" target="_blank">temporarily close the forum</a>. We have finished setting up a new forum and are “open for business” again. </p>
<p>We are focusing the new forum on <em>Understand 2.5</em> so are not migrating the content from the old forum. If you need to access old posts for some reason you can temporarily find them <a href="http://server.scitools.com/support/forum/" target="_blank">here</a>.</p>
<p>You will need to create a new user account, and to prevent spam, all new user registrations are reviewed before you can post the first time. We apologize for the initial inconvenience but feel it will make the forum much more useable for everyone in the long run.</p>
<p>You can access the forum on the support page of the website, or here:</p>
<p><a href="http://www.scitools.com/support/forum">http://www.scitools.com/support/forum</a></p>
]]></content:encoded>
			<wfw:commentRss>http://scitools.com/blog/2010/05/forum-grand-opening-again.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Code Refactoring</title>
		<link>http://scitools.com/blog/2010/04/code-refactoring.html</link>
		<comments>http://scitools.com/blog/2010/04/code-refactoring.html#comments</comments>
		<pubDate>Tue, 06 Apr 2010 04:10:28 +0000</pubDate>
		<dc:creator>KevinG</dc:creator>
				<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Understand 2.5]]></category>
		<category><![CDATA[addons]]></category>
		<category><![CDATA[astyle]]></category>
		<category><![CDATA[complexity]]></category>
		<category><![CDATA[cyclomatic]]></category>
		<category><![CDATA[mccabe]]></category>
		<category><![CDATA[metics]]></category>

		<guid isPermaLink="false">http://scitools.com/blog/?p=642</guid>
		<description><![CDATA[Refactoring is a disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external behavior. Its heart is a series of small behavior preserving transformations. Each transformation (called a &#8216;refactoring&#8217;) does little, but a sequence of transformations can produce a significant restructuring. Since each refactoring is small, it&#8217;s less [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>Refactoring is a disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external behavior. Its heart is a series of small behavior preserving transformations. Each transformation (called a &#8216;refactoring&#8217;) does little, but a sequence of transformations can produce a significant restructuring. Since each refactoring is small, it&#8217;s less likely to go wrong. The system is also kept fully working after each small refactoring, reducing the chances that a system can get seriously broken during the restructuring.&#160; &#8212; Martin Fowler&#160; <a title="http://www.refactoring.com/" href="http://www.refactoring.com/">http://www.refactoring.com/</a></p>
</blockquote>
<p>In other words, refactoring is making your code cleaner, safer, and easier to use. Understand can be a very powerful tool in your re-factoring arsenal. Here are a few ways you can use Understand in your refactoring process.</p>
</p>
<p> <span id="more-642"></span>
</p>
<h3>Quickly Identify References</h3>
<p>In the long <a href="http://www.refactoring.com/catalog/index.html" target="_blank">list of refactorings</a>, many of the suggested refactorings involve replacing one data type with another. In many cases that can involve changing the calls to that data type as well. Understand can instantly show you everywhere that that entity is used, called, referenced, modified or typed. Just right click on the entity, select View Information, and expand the references section.</p>
<p><a href="http://www.scitools.com/blog/wp-content/uploads/2010/04/image.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.scitools.com/blog/wp-content/uploads/2010/04/image_thumb.png" width="284" height="205" /></a>&#160;</p>
<h3>Identify Complex Functions</h3>
<p>Many overly-complex functions can be refactored into smaller, more maintainable units. Knowing the McCabe <a href="http://en.wikipedia.org/wiki/Cyclomatic_complexity" target="_blank">Cyclomatic complexity</a> can help you quickly identify functions and methods that are overly complicated and may be good candidates for refactoring. You can quickly find the complexity of every function in an Understand project by selecting Metrics –&gt; Export Metrics. If you’re just looking for a quick list of complex functions, this plugin will show you the most complex functions in your project.</p>
<p>Download it from our <a href="http://www.scitools.com/plugins/plugins.php" target="_blank">Plugin page</a> and you’ll see a list of the most complex functions in your project.</p>
<p>&#160;<a href="http://www.scitools.com/blog/wp-content/uploads/2010/04/image1.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.scitools.com/blog/wp-content/uploads/2010/04/image_thumb1.png" width="343" height="264" /></a></p>
<h3>Reformat your code</h3>
<p>If you have ugly code, you can beautify it quickly with the the tip reported in this entry:</p>
<p><a href="http://scitools.com/blog/2008/11/tip-beautify-your-code.html" target="_blank">Tip &#8211; Beautify your code</a></p>
<p>With one button press, turn a file that looks like this:</p>
<p><a href="http://www.scitools.com/blog/wp-content/uploads/2010/04/image2.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.scitools.com/blog/wp-content/uploads/2010/04/image_thumb2.png" width="644" height="73" /></a></p>
<p>into this:</p>
<p><a href="http://www.scitools.com/blog/wp-content/uploads/2010/04/image3.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.scitools.com/blog/wp-content/uploads/2010/04/image_thumb3.png" width="644" height="226" /></a>&#160;</p>
<h3>Rename Entities</h3>
<p>Sometimes renaming an entity can go a long way towards making the code readable, perhaps a missed name class or method.</p>
<p>Download <a href="http://scitools.com/blog/wp-content/uploads/2010/04/rename.zip" target="_blank">rename.zip</a> for a user tool to quickly rename entities in Understand – it goes through the references and replaces each instance of the class or object with the new name.</p>
<p>Save the .pl script to your hard drive, and then in Understand under <em>Tools | User Tools| Configure</em> select Import to load the .ini file. Change the path to the location of the .pl file. Then to use it, right click on any entity in Understand and select User Tools | Rename. You&#8217;ll be prompted for the new text, and then all references to that entity will be renamed. You&#8217;ll want to reparse the changed files after each rename so that the database stays up to date (Ctrl+R by default).</p>
<p><a href="http://www.scitools.com/blog/wp-content/uploads/2010/04/image4.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.scitools.com/blog/wp-content/uploads/2010/04/image_thumb4.png" width="499" height="114" /></a></p>
<h3>Follow Dependencies</h3>
<table border="0" cellspacing="0" cellpadding="2" width="600">
<tbody>
<tr>
<td valign="top" width="300">Understand’s new Dependency features can help you to quickly get a handle on what parts of the code are dependant on other parts of the code, letting you define what logical lines to divide your code into.          <br /><a href="http://www.scitools.com/features/dependencyBrowser.php">Dependency Browser</a>           <br /><a href="http://www.scitools.com/features/dependenciesGraphs.php">Dependency Graphs</a>           <br /><a href="http://www.scitools.com/features/exportDependencies.php">Exporting Dependencies</a></td>
<td valign="top" width="39"><a href="http://www.scitools.com/blog/wp-content/uploads/2010/04/image5.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.scitools.com/blog/wp-content/uploads/2010/04/image_thumb5.png" width="255" height="275" /></a></td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://scitools.com/blog/2010/04/code-refactoring.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Line and Statement Counting Metrics</title>
		<link>http://scitools.com/blog/2010/03/line-and-statement-counting-metrics.html</link>
		<comments>http://scitools.com/blog/2010/03/line-and-statement-counting-metrics.html#comments</comments>
		<pubDate>Mon, 22 Mar 2010 15:11:44 +0000</pubDate>
		<dc:creator>KevinG</dc:creator>
				<category><![CDATA[Documentation]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Understand 2.5]]></category>
		<category><![CDATA[code count]]></category>
		<category><![CDATA[countlinecode]]></category>
		<category><![CDATA[loc]]></category>
		<category><![CDATA[metrics]]></category>
		<category><![CDATA[sloc]]></category>

		<guid isPermaLink="false">http://scitools.com/blog/2010/03/line-and-statement-counting-metrics.html</guid>
		<description><![CDATA[Understand has many different metrics, including a large number that focus on counting the number of statements and lines of code, including Lines of Code (LOC or SLOC), Lines with Comments (CLOC), empty lines (BLOC), Number of Statements, Number of Executable Statements, etc.
The short C/C++ example below shows how each line and statement contribute to [...]]]></description>
			<content:encoded><![CDATA[<p><em>Understand</em> has many different <a href="http://www.scitools.com/documents/metrics.php" target="_blank">metrics</a>, including a large number that focus on counting the number of statements and lines of code, including Lines of Code (LOC or SLOC), Lines with Comments (CLOC), empty lines (BLOC), Number of Statements, Number of Executable Statements, etc.</p>
<p>The short C/C++ example below shows how each line and statement contribute to these metrics in <em>Understand</em>. You can <a href="https://spreadsheets.google.com/ccc?key=0AtU7sTc8vnbbdGtkc3dFRzVNYUtpNjdSU1Q5T0N1MkE&amp;hl=en" target="_blank">view the larger version here</a>.</p>
<p>&#160;</p>
<p><iframe height="500" src="http://spreadsheets.google.com/pub?key=tkdswEG5MaKi67RST9OCu2A&amp;single=true&amp;gid=0&amp;output=html&amp;widget=true" frameborder="0" width="600"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://scitools.com/blog/2010/03/line-and-statement-counting-metrics.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>2.5 Upgrade Free if Maintenance Current</title>
		<link>http://scitools.com/blog/2010/03/2-5-upgrade-free-if-maintenance-current.html</link>
		<comments>http://scitools.com/blog/2010/03/2-5-upgrade-free-if-maintenance-current.html#comments</comments>
		<pubDate>Mon, 15 Mar 2010 17:15:51 +0000</pubDate>
		<dc:creator>KevinG</dc:creator>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[Understand 2.5]]></category>
		<category><![CDATA[licensing]]></category>
		<category><![CDATA[pricing]]></category>
		<category><![CDATA[upgrade]]></category>

		<guid isPermaLink="false">http://scitools.com/blog/2010/03/2-5-upgrade-free-if-maintenance-current.html</guid>
		<description><![CDATA[
We have made a lot of changes to the licensing in Understand 2.5. How does this affect you?

These changes require a new license key. 
All Understand features are now available to all users 

As always, as long as your maintenance is up-to-date, there is no cost for the new version of Understand, we just need [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://scitools.com/blog/wp-content/uploads/2010/03/image1.png" target="_blank"><img style="border-right-width: 0px; margin: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" align="right" src="http://scitools.com/blog/wp-content/uploads/2010/03/image_thumb1.png" width="194" height="244" /></a>
<p>We have made a lot of changes to the licensing in <em>Understand 2.5.</em> How does this affect you?</p>
<ol>
<li>These changes require a new license key. </li>
<li>All Understand features are now available to all users </li>
</ol>
<p>As always, as long as your maintenance is up-to-date, there is no cost for the new version of <em>Understand</em>, we just need to generate a new license for you. The dialog that pops up when you start <em>Understand</em> has three options for getting that new license, whichever you choose, we will get the license to you quickly and without any hassle.</p>
<p>What if your maintenance is not current? You can still use any of these options, and we will get you a quote for getting back up-to-date. Also, the 2.5 install does not overwrite your previous version, so you can continue to use Understand 2.0 with your previous license.</p>
<p> <span id="more-632"></span>
<p>We have a philosophy here that licensing should never get in the way of engineers using our tools. Over time this philosophy has resulted in many different experiments as we have tried to simplify licensing and added different ways for people to access <em>Understand</em>. As we prepared to release Understand 2.5 we realized there were now 36 different license types. As you might imagine that resulted in some very messy code, this feature is only available for these 16 license types, etc.</p>
<p>It was getting hard to maintain and we were seeing more and more licensing related issues. We decided to make a clean break, and created a new license that supports all features, thus bypassing the complicated licensing logic and we hope providing the best possible experience to our customers.</p>
]]></content:encoded>
			<wfw:commentRss>http://scitools.com/blog/2010/03/2-5-upgrade-free-if-maintenance-current.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Awesome New Graph</title>
		<link>http://scitools.com/blog/2010/03/awesome-new-graph.html</link>
		<comments>http://scitools.com/blog/2010/03/awesome-new-graph.html#comments</comments>
		<pubDate>Thu, 11 Mar 2010 00:43:18 +0000</pubDate>
		<dc:creator>KevinG</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Documentation]]></category>
		<category><![CDATA[Understand 2.5]]></category>
		<category><![CDATA[dependencies]]></category>
		<category><![CDATA[features]]></category>
		<category><![CDATA[graphs]]></category>

		<guid isPermaLink="false">http://scitools.com/blog/2010/03/awesome-new-graph.html</guid>
		<description><![CDATA[We’ve added a new dependency graph with some great interactive capabilities. If you’ve been looking for a way to visualize your high level code layout and intra-project dependencies, this is it. Watch this short video to get a taste of how useful these graphs are.

]]></description>
			<content:encoded><![CDATA[<p>We’ve added a new dependency graph with some great interactive capabilities. If you’ve been looking for a way to visualize your high level code layout and intra-project dependencies, this is it. Watch this short video to get a taste of how useful these graphs are.</p>
<p><object id="csSWF" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="640" height="498" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,115,0"><param name="src" value="http://www.scitools.com/videos/DependencyGraphs/DependencyGraphs_controller.swf" /><param name="bgcolor" value="#1a1a1a" /><param name="quality" value="best" /><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="true" /><param name="scale" value="showall" /><param name="flashVars" value="autostart=false" /><embed name="csSWF" src="http://www.scitools.com/videos/DependencyGraphs/DependencyGraphs_controller.swf" width="640" height="498" bgcolor="#1a1a1a" quality="best" allowScriptAccess="always" allowFullScreen="true" scale="showall" flashVars="autostart=false&#038;thumb=FirstFrame.png&#038;thumbscale=45&#038;color=0x000000,0x000000" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://scitools.com/blog/2010/03/awesome-new-graph.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Understand powers metrics in recent IEEE Software article</title>
		<link>http://scitools.com/blog/2010/03/understand-powers-metrics-in-recent-ieee-software-article.html</link>
		<comments>http://scitools.com/blog/2010/03/understand-powers-metrics-in-recent-ieee-software-article.html#comments</comments>
		<pubDate>Wed, 10 Mar 2010 14:39:00 +0000</pubDate>
		<dc:creator>ken</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Scitools Announcements]]></category>

		<guid isPermaLink="false">http://scitools.com/blog/2010/03/understand-powers-metrics-in-recent-ieee-software-article.html</guid>
		<description><![CDATA[Dr. A. Gunes Koru and Dr. Khaled El Emam’s latest paper in IEEE Software, titled “The Theory of Relative Dependency: Higher Coupling Concentration in Smaller Modules”, turns conventional thoughts on where to test upside down by showing that smaller modules, not larger or more complex modules, can provide more effective testing payback in terms of [...]]]></description>
			<content:encoded><![CDATA[<p>Dr. A. Gunes Koru and Dr. Khaled El Emam’s <a href="http://www.computer.org/portal/web/csdl/doi/10.1109/MS.2009.118" target="_blank">latest paper in IEEE Software</a>, titled “The Theory of Relative Dependency: Higher Coupling Concentration in Smaller Modules”, turns conventional thoughts on where to test upside down by showing that smaller modules, not larger or more complex modules, can provide more effective testing payback in terms of defects eliminated:</p>
<p>Abstract:</p>
<blockquote><p><em>Recent studies have repeatedly found that smaller modules are proportionally more defect-prone. In this article, the authors formulate and test a hypothesis stating that smaller modules are proportionally more coupled, given that dependencies caused by coupling have been consistently associated with defect-proneness. Strong evidence supports this hypothesis. Furthermore, refactoring exacerbates this effect. On the basis of this study&#8217;s highly consistent results, the authors state the empirically based theory of relative dependency. That is, in large-scale software systems, smaller modules will be proportionally more dependent compared to larger ones. These findings have two implications for practice. First, we now have an empirically supported mechanism explaining the observations that defect concentration is higher in smaller modules. Practitioners can use this mechanism as evidence while seeking resources and support to revise or amend their organizations&#8217; quality assurance and quality control practices. Second, particularly for the projects that refactor extensively, such as those using agile methods, focusing defect detection activities on smaller modules will increase their efficiency and effectiveness even more.</em></p>
</blockquote>
<p>They used <em>Understand</em> to generate the C++ measurements of many large open source projects.&#160; We donate licenses of <em>Understand</em> to worthy research projects frequently. We’ve e-mailed many times with Dr. Koru to support his efforts and are pleased his work was accepted by IEEE. </p>
<p>The team extensively used the DIT (Depth Inheritance Tree) and CBO (Coupling Between Objects) that <em>Understand</em> provides.</p>
<p>We’ve noted a few ideas for product enhancements from reading their article.</p>
]]></content:encoded>
			<wfw:commentRss>http://scitools.com/blog/2010/03/understand-powers-metrics-in-recent-ieee-software-article.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Support Forum temporarily disabled</title>
		<link>http://scitools.com/blog/2010/03/support-forum-temporarily-disabled.html</link>
		<comments>http://scitools.com/blog/2010/03/support-forum-temporarily-disabled.html#comments</comments>
		<pubDate>Tue, 09 Mar 2010 23:14:29 +0000</pubDate>
		<dc:creator>ken</dc:creator>
				<category><![CDATA[Announcements]]></category>

		<guid isPermaLink="false">http://scitools.com/blog/2010/03/support-forum-temporarily-disabled.html</guid>
		<description><![CDATA[We changed our website concurrent to introducing Understand 2.5.  We hope you like it. We’ve tried to keep it stylish and focused on information, not fluff.
You will notice, however, that the Support Forum hasn’t been moved.  We’ve had trouble with it and our searching for a replacement.
It will come back on line, but not until [...]]]></description>
			<content:encoded><![CDATA[<p>We changed our website concurrent to introducing Understand 2.5.  We hope you like it. We’ve tried to keep it stylish and focused on information, not fluff.</p>
<p>You will notice, however, that the Support Forum hasn’t been moved.  We’ve had trouble with it and our searching for a replacement.</p>
<p>It will come back on line, but not until we have a replacement we think we can stick with long term.</p>
<p>For now, use <a href="mailto:support@scitools.com">support@scitools.com</a> or the Chat available on the website for support.</p>
]]></content:encoded>
			<wfw:commentRss>http://scitools.com/blog/2010/03/support-forum-temporarily-disabled.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Understand 2.5</title>
		<link>http://scitools.com/blog/2010/03/understand-2-5.html</link>
		<comments>http://scitools.com/blog/2010/03/understand-2-5.html#comments</comments>
		<pubDate>Tue, 09 Mar 2010 22:29:19 +0000</pubDate>
		<dc:creator>ken</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Scitools Announcements]]></category>
		<category><![CDATA[Understand 2.5]]></category>

		<guid isPermaLink="false">http://scitools.com/blog/2010/03/understand-2-5.html</guid>
		<description><![CDATA[
This weekend we released Understand 2.5 (build 507).  Its main changes include:

Instant Search – a new feature which permits instant searching in even the largest bodies of code. Indexing starts after parsing ends. It operates in the background without holding up any other activities. When complete the search box in the upper right instantly answers [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://scitools.com/blog/wp-content/uploads/2010/03/image.png"><img style="display: block; float: none; margin-left: auto; margin-right: auto; border-width: 0px;" title="image" src="http://scitools.com/blog/wp-content/uploads/2010/03/image_thumb.png" border="0" alt="image" width="244" height="194" /></a></p>
<p>This weekend we released <em>Understand 2.5 (build 507)</em>.  Its main changes include:</p>
<ul>
<li><strong>Instant Search</strong> – a new feature which permits instant searching in even the largest bodies of code. Indexing starts after parsing ends. It operates in the background without holding up any other activities. When complete the search box in the upper right instantly answers your queries.</li>
<li><strong>Dependency Graphs</strong> -  these replace our old dependency graphs with new layout, saving, and cool clustering, save, undo, and redo options. They use a much updated layout engine, which we will roll into our other graphs and use to create new ones in the coming months.</li>
<li><strong>Simplified Licensing</strong> – <em>Understand 2.5</em> includes all languages and all features. The only licensing difference, in terms of price, is the use of floating or specific developer licenses.  Understand 2.5 does use a new license – your old one will not run it permanently. Instead, it will operate for 30 days, giving you time to request a replacement license if you are under maintenance. This is done directly from <em>Understand</em> or via our website.</li>
<li><strong>Pricing</strong> -  we’ve removed all levels and language variants. <em>Understand 2.5</em> has it all. This will be our path going forward with new features as well.  The new price is <a href="http://scitools.com/store">a little higher</a> and the only differentiation is if you need a Single Developer or Floating License.   If you are under maintenance you can update to <em>Understand 2.5</em> without any cost. Nor will the higher price affect your maintenance going forward. It will remain 18% of your purchase price annually.</li>
<li><strong>TrackBack Removed &#8211; </strong>this will be missed by many users, but we needed to focus on core analysis capabilities.<br />
Take heart, the engineer who wrote much of it will be taking it open source very soon. Look for an announcement here. To be notified by e-mail send a request to <a href="mailto:support@scitools.com">support@scitools.com</a>.</li>
<li><strong>Menu Revamping</strong> &#8211; menus were moved about and standardized to be more in common with most applications. Additionally, edit menu items are now contextual with editor and graph operations. As an application ages, menus become complex and suffer from bloat. We wanted to simplify and reduce clutter.</li>
<li><strong>License Manager GUI</strong> <strong>with Improved Diagnostics</strong> – our old license manager does not need to be updated. If it is updated, or for new installations, a new License Manager GUI simplifies operation. Additionally, the server and clients have many more diagnostics embedded to diagnose any licensing manager problems.</li>
<li>And many hundreds of bug fixes and minor improvements.</li>
</ul>
<p>We know change can make winners and losers. We’ve tried to make every user a winner with <em>Understand 2.5.</em> If we failed for you, let us know how, and we will try to sort it out and make you as happy as we can.</p>
]]></content:encoded>
			<wfw:commentRss>http://scitools.com/blog/2010/03/understand-2-5.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Understand on Facebook &#8211; Become a fan</title>
		<link>http://scitools.com/blog/2009/09/understand-on-facebook-become-a-fan.html</link>
		<comments>http://scitools.com/blog/2009/09/understand-on-facebook-become-a-fan.html#comments</comments>
		<pubDate>Wed, 02 Sep 2009 16:32:26 +0000</pubDate>
		<dc:creator>KevinG</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://scitools.com/blog/?p=508</guid>
		<description><![CDATA[Help us prove that not all programmers are anti-social, join our Facebook Fan page!
FB.init("d90ac7cbd9833459e2052632ed05a5f7");
Understand on Facebook
]]></description>
			<content:encoded><![CDATA[<p>Help us prove that not all programmers are anti-social, join our Facebook Fan page!<br />
<script type="text/javascript" src="http://static.ak.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php/en_US"></script><script type="text/javascript">FB.init("d90ac7cbd9833459e2052632ed05a5f7");</script><fb:fan profile_id="120970514908" stream="" connections="" width="300"></fb:fan>
<div style="font-size:8px; padding-left:10px"><a href="http://www.facebook.com/pages/Understand/120970514908">Understand</a> on Facebook</div>
]]></content:encoded>
			<wfw:commentRss>http://scitools.com/blog/2009/09/understand-on-facebook-become-a-fan.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>.NET API for Understand</title>
		<link>http://scitools.com/blog/2009/09/net-api-for-understand.html</link>
		<comments>http://scitools.com/blog/2009/09/net-api-for-understand.html#comments</comments>
		<pubDate>Wed, 02 Sep 2009 00:26:11 +0000</pubDate>
		<dc:creator>KevinG</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://scitools.com/blog/2009/09/net-api-for-understand.html</guid>
		<description><![CDATA[One of our users, Chris Johnson, has developed a .NET sdk wrapper for the Understand API.
I have written a .NET sdk wrapper around the understand API during the early spring and last fall. I wrote it because I didn&#8217;t want to use Perl anymore, and I wanted the strong type safety of .NET along with [...]]]></description>
			<content:encoded><![CDATA[<p>One of our users, Chris Johnson, has developed a .NET sdk wrapper for the Understand API.</p>
<blockquote><p>I have written a .NET sdk wrapper around the understand API during the early spring and last fall. I wrote it because I didn&#8217;t want to use Perl anymore, and I wanted the strong type safety of .NET along with it&#8217;s wonderful debugging tools.      <br />The API is written in managed C++ (i.e. C++/CLI), and once compiled, can be accessed by any programming language that targets the .NET framework.</p>
</blockquote>
<p>More details at <a title="http://www.scitools.com/support/forum/viewtopic.php?p=5550" href="http://www.scitools.com/support/forum/viewtopic.php?p=5550">http://www.scitools.com/support/forum/viewtopic.php?p=5550</a></p>
<p>Thanks, Chris!</p>
]]></content:encoded>
			<wfw:commentRss>http://scitools.com/blog/2009/09/net-api-for-understand.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CVS commands in Understand</title>
		<link>http://scitools.com/blog/2009/06/cvs-commands-in-understand.html</link>
		<comments>http://scitools.com/blog/2009/06/cvs-commands-in-understand.html#comments</comments>
		<pubDate>Fri, 12 Jun 2009 04:05:00 +0000</pubDate>
		<dc:creator>KevinG</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://scitools.com/blog/?p=443</guid>
		<description><![CDATA[Several users have asked for a CVS user tool similar to the one Ken created for SVN
This is easy to do, and you can create your own User Tools to do many different things.
I went and bundled some CVS commands into a User Tool. Just import it via the Tools &#124; Configure User Tools &#124; [...]]]></description>
			<content:encoded><![CDATA[<p>Several users have asked for a CVS user tool similar to the<a href="http://scitools.com/blog/2008/06/tip-setting-up-user-tools-for-svn.html"> one Ken created for SVN</a></p>
<p>This is easy to do, and you can <a href="http://scitools.com/blog/2008/07/tip-making-a-custom-user-tool.html">create your own User Tools</a> to do many different things.</p>
<p>I went and bundled some CVS commands into a User Tool. Just import it via the Tools | Configure User Tools | Import button.</p>
<p><a href="http://scitools.com/blog/wp-content/uploads/2009/06/cvstools.ini">Download CVS User Tool</a></p>
<p>I haven&#8217;t used CVS in years, so let me know if I got anything wrong <img src='http://scitools.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://scitools.com/blog/2009/06/cvs-commands-in-understand.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>User Tools enhancements (input/output)</title>
		<link>http://scitools.com/blog/2009/04/user-tools-enhancements-inputoutput.html</link>
		<comments>http://scitools.com/blog/2009/04/user-tools-enhancements-inputoutput.html#comments</comments>
		<pubDate>Fri, 10 Apr 2009 23:39:20 +0000</pubDate>
		<dc:creator>KevinG</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Understand 2.0]]></category>
		<category><![CDATA[user tools]]></category>

		<guid isPermaLink="false">http://scitools.com/blog/?p=405</guid>
		<description><![CDATA[With build 476 we are adding an exciting new capability to User Tools. The ability to perform operations directly in the editor. In the the User Tool configuration menu (Tools &#124; Configure User Tools), there are two new fields, Input and Output. As you might expect, the Input field lets you select what text you [...]]]></description>
			<content:encoded><![CDATA[<p>With build 476 we are adding an exciting new capability to User Tools. The ability to perform operations directly in the editor. In the the User Tool configuration menu (Tools | Configure User Tools), there are two new fields, Input and Output. As you might expect, the Input field lets you select what text you want to feed into your tool, and the output field lets you choose where you want the output redirected.<span id="more-405"></span><img class="size-full wp-image-406 aligncenter" title="screenshot_15" src="http://scitools.com/blog/wp-content/uploads/2009/04/screenshot_15.jpeg" alt="screenshot_15" width="382" height="396" /></p>
<p>For Input you can chose to use the selected text, the text of the entire current file, or not to use any input. You can output your results into the command output window like previous versions allowed, discard it, copy it to the clipboard, or overwrite the current selected text or file.</p>
<p>For example, the following would replace the word int with float in the currently highlighted text:</p>
<p style="text-align: center;"><img class="size-full wp-image-407 aligncenter" title="screenshot_16" src="http://scitools.com/blog/wp-content/uploads/2009/04/screenshot_16.jpeg" alt="screenshot_16" width="302" height="170" /></p>
<p>Yes, Find &amp; Replace would do the same thing, it&#8217;s just an example <img src='http://scitools.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>An example of replacing an entire file would be when <a href="http://scitools.com/blog/2008/11/tip-beautify-your-code.html" target="_blank">using astyle to format your code</a>. In that blog posting we had to overwrite the current file, and then reload it. Now we can feed the file text straight into the command and then the editor contents get automatically overwritten. No need to confirm the file reload every time:</p>
<p style="text-align: center;"><img class="size-full wp-image-408 aligncenter" title="screenshot_17" src="http://scitools.com/blog/wp-content/uploads/2009/04/screenshot_17.jpeg" alt="screenshot_17" width="308" height="169" /></p>
<p>As with many new Understand features, this was requested by a cutomer, we thought it was a good idea and that other people would use it, so we implemented it. If you have a good idea don&#8217;t hesitate to let us know. Just drop us an email at <a href="mailto://support@scitools.com">support@scitools.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://scitools.com/blog/2009/04/user-tools-enhancements-inputoutput.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Changes to the Perl API</title>
		<link>http://scitools.com/blog/2009/04/changes-to-the-perl-api.html</link>
		<comments>http://scitools.com/blog/2009/04/changes-to-the-perl-api.html#comments</comments>
		<pubDate>Thu, 09 Apr 2009 14:16:15 +0000</pubDate>
		<dc:creator>KevinG</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Scitools Labs]]></category>
		<category><![CDATA[Understand 2.0]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[perl]]></category>

		<guid isPermaLink="false">http://scitools.com/blog/http:/scitools.com/blog/archives/2009/04/changes-to-the-perl-api.html</guid>
		<description><![CDATA[We&#8217;ve made several changes to the Understand Perl API recently. The largest change was upgrading from Perl 5.6.0 to 5.10.0 in build 473.
In addition to several cool new features like the smart match operators and switch statements, Perl 5.10 runs faster and has a smaller memory footprint. For more details on what the changes are [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve made several changes to the <em>Understand</em> <a href="http://www.scitools.com/products/understand/perl.php">Perl API</a> recently. The largest change was upgrading from Perl 5.6.0 to 5.10.0 in build <a href="http://scitools.com/blog/2009/03/understand-20-build-notes-b473.html" target="_blank">473</a>.<br />
In addition to several cool new features like the smart match operators and switch statements, Perl 5.10 runs faster and has a smaller memory footprint. For more details on what the changes are and how to use<br />
them, see the <a href="http://dev.perl.org/perl5/news/2007/perl-5.10.0.html" target="_blank">Perl 5.10 Release Announcement</a>.</p>
<p>We are also in the process of adding Snapshot support for the Perl API for build 476. Now you can access historical versions of the code through your scripts as well. For example you can compare versions of files or write a script to compare metrics between versions. <span id="more-395"></span><strong> </strong></p>
<p><strong>What does this mean to you as an <em>Understand</em> script user?</strong><br />
In addition to the new features, the main side effect might be that some scripts might no longer work.</p>
<p>If any of your scripts stop working, review this list of incompatabilites in the <a href="http://search.cpan.org/dist/perl-5.10.0/pod/perl5100delta.pod#Incompatible_Changes/">Perl delta document</a>. You can also make sure the scripts are still valid syntax by running <strong>maintain_uperl -c myscipt.pl</strong>.</p>
<p>The new snapshot changes modify the API in a few different ways:</p>
<ul>
<li> Db::snapshots() to get a list of snapshots for the db.</li>
<li>$snapshot-&gt;name() to get the name of a snapshot and</li>
<li>$snapshot-&gt;open() to open the snapshot and return a $db variable that represents the snapshot.</li>
<li>The $db object is now &#8220;live&#8221;. It never used to be and it was never important that a script pass around and use the correct object. It is now critical.</li>
<li>Entity objects carry with them knowledge of the database/snapshot they belong to. Multiple databases/snapshots can be open and you can have entities from them all at once.</li>
<li>Any <strong>scripts which used entity ids <em>$ent-&gt;id() </em>as keys in hashes must be updated</strong> &#8211; the $ent-&gt;id is no longer unique across snapshots and multiple databases
<ul>
<li><span style="text-decoration: line-through;">At the beginning of the script add:   <em>use Tie::RefHash;</em></span></li>
<li><span style="text-decoration: line-through;">declare the hash with:  <em>tie my %my_hash, &#8216;Tie::RefHash&#8217;;</em></span></li>
<li><span style="text-decoration: line-through;">use the actual entity object as the key <em>$my_hash{$ent}</em>, not the dereference of the entity <em>$my_hash{$ent-&gt;id}</em>.</span></li>
<li><span style="text-decoration: line-through;">Don&#8217;t use Understand::ent-&gt;new($id) to reconstruct an Ent object from the id.</span></li>
</ul>
</li>
</ul>
<p>If you run into any problems that you need help with, feel free to post a question on the <a href="http://www.scitools.com/support/forum/viewforum.php?f=5" target="_blank">scripting forum</a>, or shoot us an email at support@scitools.com</p>
<p>UPDATE- We found some issues with the above approach to $ent-&gt;id and changed it with build 477. Using a Tie::RefHash for entities does not work as intended and is no longer recommended. We added a new call $db-&gt;<strong>ent_from_id</strong>($id), to reconstruct entity objects from ids.  To use entities as hash keys without later retrieving the entities from keys, it is sufficient to simply use $ent for the key. To later retrieve an entity from a key, instead, use the entity id as the key ($ent-&gt;id()), and retrieve the entity from the key with $db-&gt;ent_from_id($key). Note, it is not possible to safely store entities from different db&#8217;s into the same hash using this technique, since id&#8217;s are not unique across multiple open db&#8217;s.</p>
]]></content:encoded>
			<wfw:commentRss>http://scitools.com/blog/2009/04/changes-to-the-perl-api.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scitools Labs: Dependency Analysis</title>
		<link>http://scitools.com/blog/2009/02/scitools-labs-dependency-analysis.html</link>
		<comments>http://scitools.com/blog/2009/02/scitools-labs-dependency-analysis.html#comments</comments>
		<pubDate>Fri, 13 Feb 2009 14:58:19 +0000</pubDate>
		<dc:creator>ken</dc:creator>
				<category><![CDATA[Scitools Labs]]></category>
		<category><![CDATA[Understand 2.0]]></category>

		<guid isPermaLink="false">http://scitools.com/blog/http:/scitools.com/blog/archives/2009/02/scitools-labs-dependency-analysis.html</guid>
		<description><![CDATA[

We&#8217;ve had dependency analysis in Understand for many years.&#160; With B471 of Understand 2.0 we have consolidated it into a functional area of the tool, improved what it does and also added a few new dependency views.
The Dependency Analysis capability provides these features:

rapid browsing of dependencies for files and Understand architectures
Dependents, Depends On, and Butterfly [...]]]></description>
			<content:encoded><![CDATA[<p align="center"><a href="http://scitools.com/blog/wp-content/uploads/mt-old/Butterfly_2DDependency_2Dadler32_2Dc.png"><img alt="Butterfly-Dependency-adler32-c" src="http://scitools.com/blog/wp-content/uploads/mt-old/Butterfly_2DDependency_2Dadler32_2Dc_thumb1.jpg" border="0" /><font color="#800080"></a></p>
<p></font></p>
<p>We&rsquo;ve had dependency analysis in <em>Understand</em> for many years.&nbsp; With B471 of <em>Understand 2.0 </em>we have consolidated it into a functional area of the tool, improved what it does and also added a few new dependency views.</p>
<p>The Dependency Analysis capability provides these features:</p>
<ul>
<li>rapid browsing of dependencies for files and <em>Understand</em> architectures</li>
<li>Dependents, Depends On, and Butterfly graphs for files and architectures</li>
<li>Spreadsheet export of dependency relationships</li>
<li>A new Dependency Browsing dock that shows all depedency information </li>
</ul>
<p>Read on to learn more about the Dependency Analysis capability and what we plan for it. </p>
<p>Or watch the video <a href="http://www.screencast.com/users/Scitools/folders/Jing/media/b3cd613b-ebab-429b-8458-30d4505eab21" target="_blank">here</a>.</p>
<p><span id="more-388"></span></p>
<p><strong>Lots of Data</strong></p>
<p>To calculate dependency we have to examine every refererence in an <em>Understand</em> project. We then build up dependency data structures for every file and architecture. This includes the nature of the dependency and the references that caused the depedency. </p>
<p>Because this can be a lot of data, we don&rsquo;t calculate this as you ask for a given dependency relationship. Instead, we calculate all dependency information, cache it, and this makes subsquent exploration and browsing quick.</p>
<p>So the first step is to tell <em>Understand</em> you want to explore dependency information, by choosing:</p>
<p><img alt="10 2009-02-13 10.37" src="http://scitools.com/blog/wp-content/uploads/mt-old/10_202009_2D02_2D13_2010.37.jpg" border="0" /></p>
<p>Note the <em>Scitools Labs</em> icon next to the menu. This means this is an early feature, so don&rsquo;t depend on it and also send feedback if you have ideas about it.</p>
<p>Depending on the size of the project building this cache can take a while. On 2 million lines of code, it will take about 15 seconds, but the time will depend on the reference density of the code.</p>
<p>After reparsing the cache will still be used, you currently have to remember to update it, although in a build or two we will ask if you want to update it.</p>
<p><strong>Exploring Dependencies</strong></p>
<p>Once the cache is created, you can now explore dependencies using the Dependency Browser. To get it, right click on a file or an architecture and choose &ldquo;View Dependencies&rdquo;</p>
<p><img alt="2009-02-13 10.41" src="http://scitools.com/blog/wp-content/uploads/mt-old/2009_2D02_2D13_2010.41.jpg" border="0" /></p>
<p>The Dependency Browser then pops up, by default docked to the right side of the interface.</p>
<p><img alt="2009-02-13 10.42" src="http://scitools.com/blog/wp-content/uploads/mt-old/2009_2D02_2D13_2010.42.jpg" border="0" /></p>
<p>The browser shows that &ldquo;adler32.c&rdquo; depends on two other files (zconf.h and zlib.h).&nbsp; Clicking on zconf.h shows the references that caused the dependence.&nbsp;&nbsp; It also shows that adler.c is depended on by 3 files, to see them click on the tab.&nbsp; Note that these references are hot, click on them to visit the source location.</p>
<p>The [x] Sync button at the top tells <em>Understand</em> to show dependency information for whatever entity you click on elsewhere in the interface.</p>
<p><strong>Dependence Graphs</strong></p>
<p>We provide, currently, three graphs for files and architectures:</p>
<ul>
<li>Dependency Graph &ndash; edges show that node a depends on node b</li>
<li>Reverse Dependency Graph &ndash; edges show that node a is depended on by node b</li>
<li>ButterFly&nbsp; &ndash; shows dependence and dependency </li>
</ul>
<p>&nbsp;</p>
<p>To get a graph, just right click on the file or node in question, or choose the graph icon in the Dependency Browser:</p>
<p><img alt="2009-02-13 10.47" src="http://scitools.com/blog/wp-content/uploads/mt-old/2009_2D02_2D13_2010.47.jpg" border="0" /></p>
<p>Choosing the Dependency Graph for adler.c we get:</p>
<p><img alt="DependencyGraph-adler32-c" src="http://scitools.com/blog/wp-content/uploads/mt-old/DependencyGraph_2Dadler32_2Dc.png" border="0" /></p>
<p>Adler.c depends on zlib.h twice in the code, and 4 times on zconf.h, and so on.</p>
<p><strong>Data Export</strong></p>
<p>You can export relationship information for a file or architecture to CSV format by clicking on the <img alt="2009-02-13 10.50" src="http://scitools.com/blog/wp-content/uploads/mt-old/2009_2D02_2D13_2010.50.jpg" border="0" />&nbsp;icon. This will do output dependency relationships in matrix form for that entity.&nbsp; </p>
<p>You can also get the matrix for all files or architectures by choosing the CSV export options from the main Dependency menu:</p>
<p><img alt="2009-02-13 10.53" src="http://scitools.com/blog/wp-content/uploads/mt-old/2009_2D02_2D13_2010.53.jpg" border="0" /></p>
<p>&nbsp;</p>
<p><a href="http://scitools.com/blog/wp-content/uploads/mt-old/2009_2D02_2D13_2010.55.jpg"><img alt="2009-02-13 10.55" src="http://scitools.com/blog/wp-content/uploads/mt-old/2009_2D02_2D13_2010.55_thumb.jpg" border="0" /></a></p>
<p><strong>Our Intentions</strong></p>
<p>We want your feedback on these features &ndash; both in how we implement them and also what else we should do.</p>
<p>Our plans currently include:</p>
<ul>
<li>Dependency information for Java, C#, C++ Classes&nbsp; &amp; Ada Packages</li>
<li>Dependency Rules &ndash; a specification system indicating permited and non-permitted dependencies</li>
<li>Dependency Corrections &ndash; system for correcting false positives dependencies</li>
<li>Access to Dependency Information from the C++ and PERL APIs</li>
</ul>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://scitools.com/blog/2009/02/scitools-labs-dependency-analysis.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
