<?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 &#187; Scitools Labs</title>
	<atom:link href="http://scitools.com/blog/category/scitools-labs/feed" rel="self" type="application/rss+xml" />
	<link>http://scitools.com/blog</link>
	<description>Maintain your Software</description>
	<lastBuildDate>Mon, 30 Jan 2012 19:15:21 +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>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>2</slash:comments>
		</item>
		<item>
		<title>Introducing Scitools Labs</title>
		<link>http://scitools.com/blog/2009/02/introducing-scitools-labs.html</link>
		<comments>http://scitools.com/blog/2009/02/introducing-scitools-labs.html#comments</comments>
		<pubDate>Wed, 11 Feb 2009 19:45:34 +0000</pubDate>
		<dc:creator>ken</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Scitools Announcements]]></category>
		<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/introducing-scitools-labs.html</guid>
		<description><![CDATA[
Customers tell us frequently that they appreciate our weekly builds. They provide a constant stream of new features and bug fixes to Understand users. We like weekly builds because it means we don&#8217;t have to provide patch binaries to customers in dire need of an update and also because we hate the idea of a [...]]]></description>
			<content:encoded><![CDATA[<p><img alt="" src="http://understandyourcode.com/images/ScitoolsLabsGlow.png" border="0" /></p>
<p>Customers tell us frequently that they appreciate our weekly builds. They provide a constant stream of new features and bug fixes to <em>Understand</em> users. We like weekly builds because it means we don&rsquo;t have to provide patch binaries to customers in dire need of an update and also because we hate the idea of a crash or bug existing in the wild longer than necessary.</p>
<p>But what do we do with new capabilities that we want feedback on, but aren&rsquo;t quite &ldquo;production ready&rdquo;?&nbsp;We faced this with <em>Understand 2.0,</em> which had lots of new features/capabilities.&nbsp; Frankly, I think we took too long getting feedback and had to redo more than we would have liked once we did get user experiences.</p>
<p>Going foward we have big plans for <em>Understand </em>and the core technology it is based on. And so that we can get rapid feedback, we will be exposing features much earlier than we have in the past using a vehicle called &ldquo;<em>Scitools Labs</em>&rdquo;.</p>
<p><em>Scitools Labs</em> isn&rsquo;t some effort to make us look bigger than we are. We are still the 20 something person company we&rsquo;ve always been.&nbsp; Instead, it is our way of asking&hellip; &ldquo;this is where we are heading, what do you think?&rdquo;.</p>
<p>Build 471, which will be released tomorrow, includes three <em>Scitools Labs</em> features:</p>
<ul>
<li>Dependence Analysis, Graphing and metrics&nbsp;for files and architectures</li>
<li>Stack Analysis specific to Microchip Corporation&rsquo;s compiler/micro-controllers</li>
<li><a href="http://www.understandyourcode.com/" target="_blank">UnderstandYourCode.Com</a>&nbsp;&ndash; a website hosting free tools, online analysis and new web oriented features we are putting into <em>Understand</em>.</li>
</ul>
<p>I&rsquo;ll write more specifically about&nbsp;each new&nbsp;<em>Scitools Labs</em> technology in blog postings prefixed with &ldquo;Scitools Labs:&ldquo;. </p>
<p>And remember, your input is the whole idea, so don&rsquo;t be shy &ndash; let us know what you think.</p>
<p><img src="http://scitools.com/blog/smile5.gif" /></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://scitools.com/blog/2009/02/introducing-scitools-labs.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

