<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Software Engineering for LabVIEW</title>
	<atom:link href="http://ekerry.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://ekerry.wordpress.com</link>
	<description>Large LabVIEW Application Development</description>
	<lastBuildDate>Mon, 01 Jun 2009 14:45:03 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='ekerry.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/cbda3b6c81f29f32a04757cba2c952a7?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Software Engineering for LabVIEW</title>
		<link>http://ekerry.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://ekerry.wordpress.com/osd.xml" title="Software Engineering for LabVIEW" />
		<item>
		<title>Scripting for LabVIEW Released!</title>
		<link>http://ekerry.wordpress.com/2009/06/01/scripting-for-labview-released/</link>
		<comments>http://ekerry.wordpress.com/2009/06/01/scripting-for-labview-released/#comments</comments>
		<pubDate>Mon, 01 Jun 2009 14:44:12 +0000</pubDate>
		<dc:creator>ekerry</dc:creator>
				<category><![CDATA[Software Engineering with LabVIEW]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[LabVIEW]]></category>
		<category><![CDATA[programmatic]]></category>
		<category><![CDATA[Right Click Framework]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[VI Server]]></category>

		<guid isPermaLink="false">http://ekerry.wordpress.com/?p=80</guid>
		<description><![CDATA[After a few weeks of vacation, I&#8217;m back in Austin and have some hot news for all you Large LabVIEW App developers out there.  Scripting is now officially available!
For all you &#8216;rebels&#8217; who have been using scripting for years, you can now do so with a clean conscience.  Download the installer from this link and [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ekerry.wordpress.com&blog=7010111&post=80&subd=ekerry&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>After a few weeks of vacation, I&#8217;m back in Austin and have some hot news for all you Large LabVIEW App developers out there.  Scripting is now <em>officially</em> available!</p>
<p>For all you &#8216;rebels&#8217; who have been using scripting for years, you can now do so with a clean conscience.  Download the installer from <a href="http://decibel.ni.com/content/docs/DOC-4973">this link</a> and follow the instructions to activate your new scripting license.</p>
<p>For those of you who are unfamiliar with scripting, this is not to be confused with scripting languages like Python or Perl.  LabVIEW scripting exposes additional VI Server properties and methods that allow more programmatic control over the development environemnt.  Why is this valuable?  For an example of what can be done with scripting, check out JKI&#8217;s new <a href="http://decibel.ni.com/content/docs/DOC-4678">Right-Click Framework.</a></p>
<p>So why didn&#8217;t we expose this sooner?  Scripting was initially developed for internal programming purposes, but was soon discovered by LabVIEW aficionados.  Concerns regarding forward compatibility and unsupported functionality were one of the largest reasons we didn&#8217;t make this formally available before now.  For now, LabVIEW scripting resides within NI Labs and is not formally supported by the Applications Engineering group.  To discuss questions, feedback or any problems, visit the <a href="http://decibel.ni.com/content/groups/labview-apis">API Community</a>.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ekerry.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ekerry.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ekerry.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ekerry.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ekerry.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ekerry.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ekerry.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ekerry.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ekerry.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ekerry.wordpress.com/80/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ekerry.wordpress.com&blog=7010111&post=80&subd=ekerry&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://ekerry.wordpress.com/2009/06/01/scripting-for-labview-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/213e1b04bd4b56be0d2b01cc0f9c3aa2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ekerry</media:title>
		</media:content>
	</item>
		<item>
		<title>VIPM Makes Managing Re-Use Libraries in LabVIEW Easier</title>
		<link>http://ekerry.wordpress.com/2009/04/23/vipm-makes-managing-re-use-libraries-in-labview-easier/</link>
		<comments>http://ekerry.wordpress.com/2009/04/23/vipm-makes-managing-re-use-libraries-in-labview-easier/#comments</comments>
		<pubDate>Thu, 23 Apr 2009 18:16:35 +0000</pubDate>
		<dc:creator>ekerry</dc:creator>
				<category><![CDATA[Software Engineering with LabVIEW]]></category>
		<category><![CDATA[old]]></category>
		<category><![CDATA[code re-use]]></category>
		<category><![CDATA[configuration]]></category>
		<category><![CDATA[group development]]></category>
		<category><![CDATA[LabVIEW]]></category>
		<category><![CDATA[management]]></category>
		<category><![CDATA[software engineering]]></category>
		<category><![CDATA[team based]]></category>
		<category><![CDATA[VIPM]]></category>

		<guid isPermaLink="false">http://ekerry.wordpress.com/?p=74</guid>
		<description><![CDATA[Distributing code and re-use libraries can be a surprisingly difficult task.  Luckily for us, our friends at JKI have come up with an extremely elegant and professional solution for LabVIEW called the VI Package Manager.  If you&#8217;ve never heard of this tool, I strongly encourage that you check it out.  In addition to making code [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ekerry.wordpress.com&blog=7010111&post=74&subd=ekerry&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Distributing code and re-use libraries can be a surprisingly difficult task.  Luckily for us, our friends at <a href="http://jkisoft.com/">JKI</a> have come up with an extremely elegant and professional solution for LabVIEW called the <a href="http://jkisoft.com/vipm/">VI Package Manager</a>.  If you&#8217;ve never heard of this tool, I strongly encourage that you check it out.  In addition to making code management easier, VIPM lets you download all the <a href="http://wiki.openg.org/Main_Page">OpenG</a> libraries, which adds some very useful functionality to LabVIEW.</p>
<p>To understand when VIPM is especially useful, consider several common examples of when you want to distribute your code:</p>
<ol>
<li>You have a set of common VIs that you want to re-use in multiple applications</li>
<li>You are working in a team-based environment and other developers need your code</li>
<li>You want to share a set of development tools with a colleague</li>
<li>You want to post VIs online for the community to use</li>
</ol>
<p>These all seem simple enough, but now lets throw a wrench in the works with a few common tasks:</p>
<ul>
<li><strong>Updating code</strong> &#8211; it&#8217;s common to make changes or updates to shared libraries during development.  All team-based environments should be using some form of source code control to track and manage changes from multiple developers, but it can still be challenging to make sure you have the right version of all the subVIs installed and in-use at the same time.</li>
</ul>
<ul>
<li><strong>Professional distribution</strong> &#8211; how do you share code in such a way that it minimizes the work required by the recipient?  Instead of having to move multiple files into the correct directory locations, everything is installed automatically and appears on the palettes.</li>
</ul>
<ul>
<li><strong>Dependency management</strong> &#8211; ever opened up an application on a new machine and discovered that it&#8217;s broken because you forgot some dependencies from a re-use library or a toolkit you forgot to install?</li>
</ul>
<ul>
<li><strong>Multiple LabVIEW Versions</strong> &#8211; how do you make sure that the updates have been made available in all versions of LabVIEW, and not just the most recent version?</li>
</ul>
<p>As you&#8217;ve probably already guessed, these are some of the biggest challenges that VIPM is designed to help with.</p>
<p>There are two flavors of VIPM: the professional version facilitates creation of &#8216;VI Packages&#8217; and the free version enables anyone to install and manage these packages.  You can download packages from a number of places online, or VIPM can automatically scan dedicated servers to see what&#8217;s available.  I&#8217;ve also spoken with a number of LabVIEW users who are using the professional version of VIPM to distribute code internally during development.</p>
<p>As an example, <a href="http://decibel.ni.com/content/people/SimonH">Simon </a>recently posted a <a href="http://decibel.ni.com/content/docs/DOC-4028">set of custom controls for use in LabVIEW</a>.  Minutes after making them available, Jim had created a package and posted it on the document, which made installing them in LabVIEW a breeze.  A few clicks, and the swanky new controls were in my controls palette.</p>
<p><a href="http://zone.ni.com/cms/images/devzone/epd/vipm_32x32.png"><img style="float:left;padding-right:5px;" src="http://zone.ni.com/cms/images/devzone/epd/vipm_32x32.png" border="0" alt="" align="middle" /></a></p>
<p><a class="jive-link-external-small" href="http://decibel.ni.com/content/servlet/JiveServlet/download/4028-7-5195/ni_lib_ni.com_inspired_controls-1.1.0-1.vip">ni_lib_ni.com_inspired_controls-1.1.0-1.vip</a></p>
<p>These were updated a few times, and each time I just downloaded the package and VIPM took care of replacing the old controls.</p>
<p>Download VIPM and give it a try yourself.  Thanks to JKI for making such a great tool!</p>
<p><a href="http://jkisoft.com/vipm/download"><img src="http://jkisoft.com/spread/getvipm.png" border="0" alt="Download VI Package Manager" /></a></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ekerry.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ekerry.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ekerry.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ekerry.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ekerry.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ekerry.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ekerry.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ekerry.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ekerry.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ekerry.wordpress.com/74/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ekerry.wordpress.com&blog=7010111&post=74&subd=ekerry&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://ekerry.wordpress.com/2009/04/23/vipm-makes-managing-re-use-libraries-in-labview-easier/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/213e1b04bd4b56be0d2b01cc0f9c3aa2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ekerry</media:title>
		</media:content>

		<media:content url="http://zone.ni.com/cms/images/devzone/epd/vipm_32x32.png" medium="image" />

		<media:content url="http://jkisoft.com/spread/getvipm.png" medium="image">
			<media:title type="html">Download VI Package Manager</media:title>
		</media:content>
	</item>
		<item>
		<title>Applying &#8216;12 Steps to Better Software&#8217; to LabVIEW</title>
		<link>http://ekerry.wordpress.com/2009/04/10/applying-12-steps-to-better-software-to-labview/</link>
		<comments>http://ekerry.wordpress.com/2009/04/10/applying-12-steps-to-better-software-to-labview/#comments</comments>
		<pubDate>Fri, 10 Apr 2009 05:40:29 +0000</pubDate>
		<dc:creator>ekerry</dc:creator>
				<category><![CDATA[Software Engineering with LabVIEW]]></category>
		<category><![CDATA[LabVIEW]]></category>
		<category><![CDATA[language]]></category>
		<category><![CDATA[npi]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[quality]]></category>
		<category><![CDATA[rules]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://ekerry.wordpress.com/?p=70</guid>
		<description><![CDATA[If any of you subscribe to Joel on Software, you may have come across this article where he provides a 12-step checklist for developing quality software.  These recommendations are just as true of LabVIEW development as they are of any other programming language:
   1. Do you use source control?
   2. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ekerry.wordpress.com&blog=7010111&post=70&subd=ekerry&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>If any of you subscribe to Joel on Software, you may have come across this <a href="http://www.joelonsoftware.com/articles/fog0000000043.html">article</a> where he provides a 12-step checklist for developing quality software.  These recommendations are just as true of LabVIEW development as they are of any other programming language:</p>
<p>   1. Do you use source control?<br />
   2. Can you make a build in one step?<br />
   3. Do you make daily builds?<br />
   4. Do you have a bug database?<br />
   5. Do you fix bugs before writing new code?<br />
   6. Do you have an up-to-date schedule?<br />
   7. Do you have a spec?<br />
   8. Do programmers have quiet working conditions?<br />
   9. Do you use the best tools money can buy?<br />
  10. Do you have testers?<br />
  11. Do new candidates write code during their interview?<br />
  12. Do you do hallway usability testing? </p>
<p>In Joel&#8217;s opinion, if you can&#8217;t answer &#8216;Yes&#8217; to at least 10 of these, you have serious problems with your development process that could slow you down and lead to low-quality code.  I went through these with NI&#8217;s <a href="http://zone.ni.com/devzone/cda/tut/p/id/6301">NPI process</a> in mind and happily scored a 12.  </p>
<p>As a LabVIEW developer, if you would like to share insights or feedback on any of these topics, we&#8217;re eagerly hoping to hear from you&#8230;</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ekerry.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ekerry.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ekerry.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ekerry.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ekerry.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ekerry.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ekerry.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ekerry.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ekerry.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ekerry.wordpress.com/70/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ekerry.wordpress.com&blog=7010111&post=70&subd=ekerry&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://ekerry.wordpress.com/2009/04/10/applying-12-steps-to-better-software-to-labview/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/213e1b04bd4b56be0d2b01cc0f9c3aa2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ekerry</media:title>
		</media:content>
	</item>
		<item>
		<title>Taking a Bite Out of Upgrades and Preparing for LabVIEW 2009</title>
		<link>http://ekerry.wordpress.com/2009/04/03/taking-a-bite-out-of-upgrades-and-preparing-for-labview-2009/</link>
		<comments>http://ekerry.wordpress.com/2009/04/03/taking-a-bite-out-of-upgrades-and-preparing-for-labview-2009/#comments</comments>
		<pubDate>Fri, 03 Apr 2009 15:07:33 +0000</pubDate>
		<dc:creator>ekerry</dc:creator>
				<category><![CDATA[Software Engineering with LabVIEW]]></category>
		<category><![CDATA[2009]]></category>
		<category><![CDATA[beta]]></category>
		<category><![CDATA[LabVIEW]]></category>
		<category><![CDATA[programming language]]></category>
		<category><![CDATA[software engineering]]></category>
		<category><![CDATA[update]]></category>
		<category><![CDATA[upgrade]]></category>

		<guid isPermaLink="false">http://ekerry.wordpress.com/?p=42</guid>
		<description><![CDATA[To anyone who is afraid or worried about upgrading, we hear you and we&#8217;ve made changes to help.  Back in January of this year, David Fuller wrote an entry on John Pasquarette&#8217;s blog  describing what we&#8217;re doing in R&#38;D to reduce problems associated with upgrading.  To summarize:

Our move towards an annual release schedule results in incremental [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ekerry.wordpress.com&blog=7010111&post=42&subd=ekerry&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>To anyone who is afraid or worried about upgrading, we hear you and we&#8217;ve made changes to help.  Back in January of this year, <a href="http://pasquarette.wordpress.com/2009/01/28/guest-post-from-labview-rd-director-david-fuller-stability-vs-annual-releases-chapter-2/">David Fuller wrote an entry on John Pasquarette&#8217;s blog </a> describing what we&#8217;re doing in R&amp;D to reduce problems associated with upgrading.  To summarize:</p>
<ul>
<li>Our move towards an annual release schedule results in incremental changes and updates, which mitigates the risk associated with introducing several completely new features at once, as we did with LabVIEW 8.0.</li>
<li>The regular release cycle provides more opportunities for guidance from customers as features evolve &#8211; consider the changes to the LabVIEW Project Explorer between 8.0 and 8.5 as an example of this evolution.</li>
<li>Internal alignment across all teams means better coordination between all software products, drivers, and hardware</li>
</ul>
<p>However, it&#8217;s important to realize that there is something you can do to help.  <a href="http://www.ni.com/beta">Try the Beta of LabVIEW 2009</a>.  Upgrade issues are top priority for us - the trick has always been finding these problems, and for that we need your help. </p>
<p>As of April 2nd, the entire platform of the next version of LabVIEW is now in Beta and available for your evaluation &#8211; this means all software, toolkits and drivers. </p>
<p>As always, the new version contains new features that aim to improve developer productivity and application performance.  To see a list of new features and provide feedback to the community, click <a href="http://forums.ni.com/ni/board?board.id=beta13">here</a>.</p>
<p>Finally, for more resources on best-practices for upgrading your application, consult <a href="http://zone.ni.com/devzone/cda/tut/p/id/7417">this guide on ni.com.</a></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ekerry.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ekerry.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ekerry.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ekerry.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ekerry.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ekerry.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ekerry.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ekerry.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ekerry.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ekerry.wordpress.com/42/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ekerry.wordpress.com&blog=7010111&post=42&subd=ekerry&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://ekerry.wordpress.com/2009/04/03/taking-a-bite-out-of-upgrades-and-preparing-for-labview-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/213e1b04bd4b56be0d2b01cc0f9c3aa2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ekerry</media:title>
		</media:content>
	</item>
		<item>
		<title>Professional User Interfaces in LabVIEW</title>
		<link>http://ekerry.wordpress.com/2009/03/23/professional-user-interfaces-in-labview/</link>
		<comments>http://ekerry.wordpress.com/2009/03/23/professional-user-interfaces-in-labview/#comments</comments>
		<pubDate>Mon, 23 Mar 2009 14:29:42 +0000</pubDate>
		<dc:creator>ekerry</dc:creator>
				<category><![CDATA[Software Engineering with LabVIEW]]></category>
		<category><![CDATA[User Interfaces]]></category>
		<category><![CDATA[custom controls]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[LabVIEW]]></category>
		<category><![CDATA[software engineering]]></category>
		<category><![CDATA[ui]]></category>
		<category><![CDATA[user interface]]></category>

		<guid isPermaLink="false">http://ekerry.wordpress.com/?p=35</guid>
		<description><![CDATA[

The flexibility of front panel objects in LabVIEW is something many people, including myself, take for granted.  We quickly drop down charts, knobs, and sliders, leaving them unchanged, and as a result, most LabVIEW programs have an unmistakably similar look and feel.  Of course, this makes it much easier to spot in a lab or [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ekerry.wordpress.com&blog=7010111&post=35&subd=ekerry&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><div class="jive-blog-post-message"><!-- [DocumentBodyStart:fa05d6eb-13c3-40a6-b1b1-2886b0f4df3d] --></div>
<div class="jive-rendered-content">
<p>The flexibility of front panel objects in LabVIEW is something many people, including myself, take for granted.  We quickly drop down charts, knobs, and sliders, leaving them unchanged, and as a result, most LabVIEW programs have an unmistakably similar look and feel.  Of course, this makes it much easier to spot in a lab or during cameo appearances on shows like <a class="jive-link-external-small" href="http://forums.lavag.org/LabVIEW-Sighting-on-Mythbusters-t9690.html&amp;pid=39367&amp;mode=threaded"><span style="color:#065fa3;">MythBusters</span></a>, but many people are looking for ways to make more impressive and even &#8217;sexy&#8217; user interfaces.</p>
<p>The success of commercial products like the iPhone are clear examples of the growing desire for intuitive user interfaces, but the world of engineers and scientists is not exempt.  There are a lot of practical reasons why a clear and appealing UI is valuable for a large LabVIEW application, as it can reduce learning curves and improve the effeciency of the user.</p>
<p>What many LabVIEW developers don&#8217;t realize, is the level of customization and flexibility that LabVIEW controls and indicators provide.  Realizing this, my friend and colleage, <a class="jive-link-external-small" href="http://decibel.ni.com/content/people/SimonH"><span style="color:#065fa3;">SimonH</span></a>, set out to see just how easy it would be to make some impressive controls and indicators for LabVIEW that broke the mold.  He&#8217;s posted his first few examples in his new <a class="jive-link-external-small" href="http://decibel.ni.com/content/groups/ui"><span style="color:#065fa3;">UI Interest Group</span></a>, but I happen to know he&#8217;s got a lot more up his sleeve.  Join his group and look for more soon!</p>
<p><a href="http://decibel.ni.com/content/servlet/JiveServlet/downloadImage/102-4028-3-3603/ni.com+theme+-+Preview+Image.png"></a></p>
<p><img class="alignnone size-thumbnail wp-image-38" title="Preview of ni.com theme" src="http://ekerry.files.wordpress.com/2009/03/ni_comtheme-previewimage.png?w=150&#038;h=139" alt="Preview of ni.com theme" width="150" height="139" /></p>
<p>Here&#8217;s another particularly slick user interface that was made in LabVIEW for <a class="jive-link-external-small" href="http://sine.ni.com/cs/app/doc/p/id/cs-698"><span style="color:#065fa3;">OptiMedica</span></a></p>
<p><img class="alignnone size-thumbnail wp-image-40" title="lvui" src="http://ekerry.files.wordpress.com/2009/03/lvui.png?w=148&#038;h=150" alt="lvui" width="148" height="150" /><a href="http://decibel.ni.com/content/servlet/JiveServlet/showImage/38-1599-3642/LV+UI.png"></a></div>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ekerry.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ekerry.wordpress.com/35/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ekerry.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ekerry.wordpress.com/35/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ekerry.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ekerry.wordpress.com/35/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ekerry.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ekerry.wordpress.com/35/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ekerry.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ekerry.wordpress.com/35/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ekerry.wordpress.com&blog=7010111&post=35&subd=ekerry&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://ekerry.wordpress.com/2009/03/23/professional-user-interfaces-in-labview/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/213e1b04bd4b56be0d2b01cc0f9c3aa2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ekerry</media:title>
		</media:content>

		<media:content url="http://ekerry.files.wordpress.com/2009/03/ni_comtheme-previewimage.png?w=150" medium="image">
			<media:title type="html">Preview of ni.com theme</media:title>
		</media:content>

		<media:content url="http://ekerry.files.wordpress.com/2009/03/lvui.png?w=148" medium="image">
			<media:title type="html">lvui</media:title>
		</media:content>
	</item>
		<item>
		<title>Advanced Application Specific Architecture Resources</title>
		<link>http://ekerry.wordpress.com/2009/03/12/advanced-application-specific-architecture-resources/</link>
		<comments>http://ekerry.wordpress.com/2009/03/12/advanced-application-specific-architecture-resources/#comments</comments>
		<pubDate>Thu, 12 Mar 2009 05:47:11 +0000</pubDate>
		<dc:creator>ekerry</dc:creator>
				<category><![CDATA[Software Engineering with LabVIEW]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Control Primer]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[LabVIEW]]></category>
		<category><![CDATA[Machine Control]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[Reference architectures]]></category>

		<guid isPermaLink="false">http://ekerry.wordpress.com/?p=22</guid>
		<description><![CDATA[
About a month ago I wrote a blog on LabVIEW application architectures, but I wanted to supplement that with links to more advanced resources that are specific to certain applications and offer a more holistic insight into the task of designing your LabVIEW applications.

A Primer for Machine Control &#8211; If you&#8217;re building a large system [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ekerry.wordpress.com&blog=7010111&post=22&subd=ekerry&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><div class="jive-rendered-content">
<p>About a month ago I wrote a blog on <a class="jive-link-blog-small" href="http://decibel.ni.com/content/groups/large-labview-application-development/blog/2009/01/26/architecting-an-application-to-avoid-spaghetti">LabVIEW application architectures</a>, but I wanted to supplement that with links to more advanced resources that are specific to certain applications and offer a more holistic insight into the task of designing your LabVIEW applications.</p>
<ul>
<li><a class="jive-link-external-small" href="http://zone.ni.com/devzone/cda/tut/p/id/8348">A Primer for Machine Control</a> &#8211; If you&#8217;re building a large system for machine control using CompactRIO and aren&#8217;t sure where to start, this should help.  It includes example applications and insights into networking and how to manage multiple tasks.</li>
<li><a class="jive-link-external-small" href="http://zone.ni.com/devzone/fn/p/sn/n24:RefDesigns">100+ Open-Source Reference Architectures</a>- our systems engineering group is frequently exposed to common architectural challenges faced by LabVIEW programmers on large applications.  To keep from re-inventing the wheel, they&#8217;ve been publishing elegant solutions to these recurring problems.  Examples include <a class="jive-link-external-small" href="http://zone.ni.com/devzone/cda/epd/p/id/2739">Simple Messaging Reference Library</a>, which offers an alternative to shared variables for network communication, <a class="jive-link-external-small" href="http://zone.ni.com/devzone/cda/epd/p/id/5966">3D Obstacle detection</a> for machine control applications, and a variety of <a class="jive-link-external-small" href="http://zone.ni.com/devzone/cda/tut/p/id/7022">example application architectures.</a></li>
<li><a class="jive-link-external-small" href="http://zone.ni.com/devzone/cda/tut/p/id/7022">TestStand Architecture Series</a> &#8211; as automated test systems are becoming larger and more complex, it&#8217;s becoming increasingly important to architect your code to ensure scalability, quality and re-usability.  This series of content was written largely by NI Alliance Partners who have extensive experience with applications of this nature.  The architecture applications in any language is one of the biggest challenges any software programmer faces.</li>
</ul>
<p>Compared to the task of designing code, the task of actually developing it is often the easiest par.  Without careful consideration, many programmers get the &#8216;re-factor&#8217; twinge about half-way into the development process.  If any of this sounds familiar, spend some time looking through these resources to get some insight into paradigms that might help you and your application succeed.</p></div>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ekerry.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ekerry.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ekerry.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ekerry.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ekerry.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ekerry.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ekerry.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ekerry.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ekerry.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ekerry.wordpress.com/22/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ekerry.wordpress.com&blog=7010111&post=22&subd=ekerry&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://ekerry.wordpress.com/2009/03/12/advanced-application-specific-architecture-resources/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/213e1b04bd4b56be0d2b01cc0f9c3aa2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ekerry</media:title>
		</media:content>
	</item>
		<item>
		<title>&#8216;Software that makes Software Better&#8217; Economist Article</title>
		<link>http://ekerry.wordpress.com/2009/02/18/software-that-makes-software-better-economist-article/</link>
		<comments>http://ekerry.wordpress.com/2009/02/18/software-that-makes-software-better-economist-article/#comments</comments>
		<pubDate>Wed, 18 Feb 2009 05:46:15 +0000</pubDate>
		<dc:creator>ekerry</dc:creator>
				<category><![CDATA[old]]></category>
		<category><![CDATA[software engineering]]></category>
		<category><![CDATA[software testing]]></category>
		<category><![CDATA[unit testing]]></category>

		<guid isPermaLink="false">http://ekerry.wordpress.com/?p=20</guid>
		<description><![CDATA[I read a great article in The Economist this morning entitled &#8216;Software that makes Software Better.&#8217;  This article discusses the growing role and importance of development tools for improving the quality of software and talks about the growing challenge developers face.
This article is proof of how far we&#8217;ve come in the last half-century.  We&#8217;re seeing [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ekerry.wordpress.com&blog=7010111&post=20&subd=ekerry&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I read a great article in The Economist this morning entitled <a href="http://www.economist.com/search/displaystory.cfm?story_id=10789417&amp;CFID=17372566&amp;CFTOKEN=3c1e61b449f2d541-BCED4E67-B27C-BB00-012737090C1B7D74">&#8216;Software that makes Software Better</a>.&#8217;  This article discusses the growing role and importance of development tools for improving the quality of software and talks about the growing challenge developers face.</p>
<p>This article is proof of how far we&#8217;ve come in the last half-century.  We&#8217;re seeing a number of trends converge and software engineers are struggling to keep up.  Development times are shorter, team size is bigger, the criticality of the applications is increasing, the expectations for quality and reliability are greater, code has to be modular and re-usable, and on top of all this, developers are expected to learn how to use numerous, poorly integrated tools that claim to make everything easier.</p>
<p>I&#8217;ve had a number of engineers, especially those in the mil/aero industry, tell me that they spend a mere 20% of their time actually developing code.  This may be slightly over-exaggerated, but a study conducted by the Standish group revealed that this number was closer to about 30%.  The rest is dedicated to refining requirements, discussing work with teammates, documenting, unit testing, integration testing&#8230; you get the picture.</p>
<p>The good news is that we&#8217;re making progress.  As another study revealed, the Standish group &#8220;<em>found that 35% of software projects started in 2006 were completed on time, on budget and did what they were supposed to, up from 16% in 1994; the proportion that failed outright fell from 31% to 19%</em>.&#8221;</p>
<p>LabVIEW is being used in larger applications, with larger code bases, and larger development teams.  Of course, graphical programming inherently abstracts many of the common tasks text-based developers struggle with during development, and with a set of tightly integrated software engineering tools, we aim to automate and improve the experience of applying software engineering practices to LabVIEW.  If you&#8217;re interested in learning more about best-practices for software engineering with LabVIEW, visit <a class="jive-link-external-small" href="http://ni.com/largeapps">ni.com/largeapps</a>or go to <a class="jive-link-external-small" href="http://ni.com/SoftwareEngineering">ni.com/SoftwareEngineering</a> to see a list of products that can help.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ekerry.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ekerry.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ekerry.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ekerry.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ekerry.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ekerry.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ekerry.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ekerry.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ekerry.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ekerry.wordpress.com/20/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ekerry.wordpress.com&blog=7010111&post=20&subd=ekerry&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://ekerry.wordpress.com/2009/02/18/software-that-makes-software-better-economist-article/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/213e1b04bd4b56be0d2b01cc0f9c3aa2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ekerry</media:title>
		</media:content>
	</item>
		<item>
		<title>New Software Engineering Tools for LabVIEW</title>
		<link>http://ekerry.wordpress.com/2009/02/06/new-software-engineering-tools-for-labview/</link>
		<comments>http://ekerry.wordpress.com/2009/02/06/new-software-engineering-tools-for-labview/#comments</comments>
		<pubDate>Fri, 06 Feb 2009 05:43:52 +0000</pubDate>
		<dc:creator>ekerry</dc:creator>
				<category><![CDATA[old]]></category>
		<category><![CDATA[code analysis]]></category>
		<category><![CDATA[Desktop Execution trace Toolkit]]></category>
		<category><![CDATA[dynamic analysis]]></category>
		<category><![CDATA[LabVIEW]]></category>
		<category><![CDATA[memory leaks]]></category>
		<category><![CDATA[requirements]]></category>
		<category><![CDATA[software engineering]]></category>
		<category><![CDATA[unit testing]]></category>
		<category><![CDATA[validation]]></category>

		<guid isPermaLink="false">http://ekerry.wordpress.com/?p=17</guid>
		<description><![CDATA[There is perhaps no more appropriate place to announce the arrival of two new toolkits for large application development than here in the Large LabVIEW Application Community.  The Desktop Execution Trace and Unit Test Framework Toolkits have been introduced to automate common practices for software engineering and help developers improve code quality.
The Desktop Execution Trace [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ekerry.wordpress.com&blog=7010111&post=17&subd=ekerry&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>There is perhaps no more appropriate place to announce the arrival of two new toolkits for large application development than here in the Large LabVIEW Application Community.  The <a href="http://zone.ni.com/devzone/cda/tut/p/id/8083">Desktop Execution Trace</a> and <a href="http://zone.ni.com/devzone/cda/tut/p/id/8082">Unit Test Framework</a> Toolkits have been introduced to automate common practices for software engineering and help developers improve code quality.</p>
<p>The Desktop Execution Trace Toolkit facilitates <a href="http://zone.ni.com/devzone/cda/tut/p/id/8083">dynamic code analysis for low-level debugging of applications during runtime</a>.   The Unit Test Framework is designed for <a href="http://zone.ni.com/devzone/cda/tut/p/id/8082">automated unit testing and requirements-based validation</a> of software.</p>
<p>Feedback from users in highly regulated industries was one of the primary motivations for creating these products.  As we continue to invest in LabVIEW for large applications, we are benefited by feedback on these products and the needs of our users.</p>
<p>So to those of you who have had a chance to use these and similar tools, please use this community as an opportunity to share and exchange your ideas.  We look forward to hearing form you.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ekerry.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ekerry.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ekerry.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ekerry.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ekerry.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ekerry.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ekerry.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ekerry.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ekerry.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ekerry.wordpress.com/17/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ekerry.wordpress.com&blog=7010111&post=17&subd=ekerry&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://ekerry.wordpress.com/2009/02/06/new-software-engineering-tools-for-labview/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/213e1b04bd4b56be0d2b01cc0f9c3aa2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ekerry</media:title>
		</media:content>
	</item>
		<item>
		<title>Architecting an Application to Avoid Spaghetti</title>
		<link>http://ekerry.wordpress.com/2009/01/16/architecting-an-application-to-avoid-spaghetti/</link>
		<comments>http://ekerry.wordpress.com/2009/01/16/architecting-an-application-to-avoid-spaghetti/#comments</comments>
		<pubDate>Fri, 16 Jan 2009 05:41:00 +0000</pubDate>
		<dc:creator>ekerry</dc:creator>
				<category><![CDATA[old]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[design patterns]]></category>
		<category><![CDATA[LabVIEW]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[quality]]></category>
		<category><![CDATA[software engineering]]></category>

		<guid isPermaLink="false">http://ekerry.wordpress.com/?p=15</guid>
		<description><![CDATA[One of the most appealing things about LabVIEW is that you don&#8217;t need to be a computer scientist to write fairly large and complex software. For many, their journey with LabVIEW starts in school or at a benchtop with a simple application to quickly acquire some data. Once they&#8217;re hooked on the ease of graphical [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ekerry.wordpress.com&blog=7010111&post=15&subd=ekerry&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>One of the most appealing things about LabVIEW is that you don&#8217;t need to be a computer scientist to write fairly large and complex software. For many, their journey with LabVIEW starts in school or at a benchtop with a simple application to quickly acquire some data. Once they&#8217;re hooked on the ease of graphical programming, it&#8217;s only a matter of time beforethe ideas start flowing, and pretty soon they&#8217;re off developing amazing applications like a <a href="http://www.viroadshow.com/2007/02/wheelchair-controlled-only-by-your.html">mind-controlled wheel chair</a>, the world&#8217;s <a href="http://zone.ni.com/devzone/cda/pub/p/id/360">largest particle accelerator</a>, or how about a <a href="http://www.youtube.com/watch?v=9F-17ux1E9I&amp;feature=related">3D Space Ship that flies through a starflied.</a></p>
<p>The problem is that the same approach people use when throwing together a prototype or a proof of concept will land them in a world of pain if they don&#8217;t ever stop and consider fundamental questions like, &#8220;how should I architect this application?&#8221; All too often, I see the tangled mess of spheghetti code emerge as the result of thoughtless, or ill-planned development.</p>
<p><a href="http://decibel.ni.com/content/servlet/JiveServlet/showImage/38-1423-2619/badCode.png"><img style="float:left;" src="http://decibel.ni.com/content/servlet/JiveServlet/downloadImage/38-1423-2619/badCode.png" alt="badCode.png" width="200" /></a>For most people, their very first experience with LabVIEW leads to messy, un-readible code.  Even LabVIEW gurus have humble beginnings.  The expert G developer, D Natt, was kind enough to send me a screenshot of his very first LabVIEW program. Let the image on the right serve as an example of what not to do. If you find yourself wishing you had 8 more screens to see a single block diagram, or if your block diagram looks anything at all like this one, you may want to consider giving more thought to the architecture of your application. As an exercise, see how long it takes to determine what the VI on the right actually does.</p>
<p>It&#8217;s important to realize that spaghetti code is not unique to LabVIEW. As someone who started with text-based languages, I&#8217;ve seen plenty in all sorts of different languages. The difference is that it&#8217;s a lot easier to write graphical code that will run, even if it&#8217;s completely illegible. When the result doesn&#8217;t work correctly or yields unexpected performance, it can be very difficult to debug and many prefer to point the finger at LabVIEW rather than acknowledge their own lack of foresight or experience.</p>
<p>So lets turn our attention to how we can architect our LabVIEW application. Start with the main problem you&#8217;re trying to solve and figure out what the software needs to be able to do in order to be considered &#8217;succesful.&#8217; The criteria that emerges from this assessment will help you make informed decisions about how the code should be structured. This is, in many cases, the product of experimenting, prototyping and developing proof of concepts that highlight the areas of difficulty and help you understand what type of information or data will need to be shared between different &#8216;pieces&#8217; of an application.  At this point, we need to take a step back and make sure we understand design patterns.</p>
<p><a href="http://decibel.ni.com/content/servlet/JiveServlet/showImage/38-1423-2620/LabVIEW+Design+Patterns.png"><img style="float:right;" src="http://decibel.ni.com/content/servlet/JiveServlet/downloadImage/38-1423-2620/LabVIEW+Design+Patterns.png" alt="LabVIEW Design Patterns.png" width="200" /></a>A &#8216;Design pattern&#8217; refers to a template that serves as the building blocks for software. If you have an application that requires a responsive user interface, consider how many other developers have been faced with the exact same requirement. You&#8217;re not alone, and there&#8217;s no reason you should be starting from scratch. Design patterns are universal to programmers in any programming language. They save you time by helping you avoid reinventing the wheel and give us the solutions to common problems that have evolved over time to be the best, and most appropriate solution. If you&#8217;re new to design patterns, check out the File &gt;&gt; New dialog in LabVIEW (show on the left). This is a great place to get started with some basic design patterns that are very specific to LabVIEW. Be sure to read the descriptions to understand exactly what problemsthey can best help you solve.</p>
<p>I also recommend visiting expressionflow.com. Anthony Lukindo wrote an <a href="http://expressionflow.com/2007/10/01/labview-queued-state-machine-architecture/">excellent, indepth article on the QSM-PC</a> (Queued State Machine &#8211; Producer / Consumer) design pattern, which is a fairly common and very useful pattern for a-sychronous computations in a fairly large application.</p>
<p>For those of you familiar with text-based design patterns, <a href="http://decibel.ni.com/content/docs/DOC-2875">AristosQueue posted a great article filled with examples of how to map classics like the Factory Design Pattern to LabVIEW using object-orientation.</a></p>
<p style="min-height:8pt;height:8pt;padding:0;">
<p>The <a href="http://jkisoft.com/state-machine/">JKI State Machine</a> also serves as another great template for developing clean code.</p>
<p>Architecting a high-quality piece of code ensures that it&#8217;s readible, scalable, maintainable and reduces the chance that errors or incorrect behavior will occur. I&#8217;ve focused a lot on design patterns, but don&#8217;t lose sight of the fact that just is one small piece of the puzzle. You&#8217;ll also want to think about how the application can be modularized and design APIs early on. Oh and of course, documentation is paramount.</p>
<p>One final word of caution: keep it simple and pick the archicture best suited to what you&#8217;re doing. But as always, have fun</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ekerry.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ekerry.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ekerry.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ekerry.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ekerry.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ekerry.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ekerry.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ekerry.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ekerry.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ekerry.wordpress.com/15/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ekerry.wordpress.com&blog=7010111&post=15&subd=ekerry&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://ekerry.wordpress.com/2009/01/16/architecting-an-application-to-avoid-spaghetti/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/213e1b04bd4b56be0d2b01cc0f9c3aa2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ekerry</media:title>
		</media:content>

		<media:content url="http://decibel.ni.com/content/servlet/JiveServlet/downloadImage/38-1423-2619/badCode.png" medium="image">
			<media:title type="html">badCode.png</media:title>
		</media:content>

		<media:content url="http://decibel.ni.com/content/servlet/JiveServlet/downloadImage/38-1423-2620/LabVIEW+Design+Patterns.png" medium="image">
			<media:title type="html">LabVIEW Design Patterns.png</media:title>
		</media:content>
	</item>
		<item>
		<title>Developing Requirements: The Cost of Getting It Wrong</title>
		<link>http://ekerry.wordpress.com/2008/12/10/developing-requirements-the-cost-of-getting-it-wrong/</link>
		<comments>http://ekerry.wordpress.com/2008/12/10/developing-requirements-the-cost-of-getting-it-wrong/#comments</comments>
		<pubDate>Wed, 10 Dec 2008 05:38:37 +0000</pubDate>
		<dc:creator>ekerry</dc:creator>
				<category><![CDATA[Software Engineering with LabVIEW]]></category>
		<category><![CDATA[old]]></category>

		<guid isPermaLink="false">http://ekerry.wordpress.com/?p=11</guid>
		<description><![CDATA[I had a thread on the LAVA forums brought to my attention on the topic of &#8216;What is your LabVIEW application development process?, Best and worst development practices?&#8217; This thread prompted an interesting discussion regarding some of the common challenges developers face when tackling a large application.
One of the primary goals of creating this group [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ekerry.wordpress.com&blog=7010111&post=11&subd=ekerry&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I had a thread on the <a href="http://forums.lavag.org/What-is-your-LabVIEW-application-development-process-t12581.html">LAVA forums</a> brought to my attention on the topic of &#8216;<a href="http://forums.lavag.org/What-is-your-LabVIEW-application-development-process-t12581.html">What is your LabVIEW application development process?, Best and worst development practices?&#8217;</a> This thread prompted an interesting discussion regarding some of the common challenges developers face when tackling a large application.</p>
<p>One of the primary goals of creating this group in the new NI community was to foster conversation and dialog amonst those of you working on these large LabVIEW applications and to share your insights on what you&#8217;ve learned from experience &#8211; both good and bad.  I&#8217;m excited to see that this same exchange is taking place in a number of different venues, including the thread that I stumbled across and the <a href="http://wiki.lavag.org/SoftwareEngineeringAndLabVIEW">new wiki on LAVA dedicated to Software Engineering</a>.  <a href="http://zone.ni.com/devzone/cda/tut/p/id/7117">http://zone.ni.com/devzone/cda/tut/p/id/7117</a></p>
<p>Several people mentioned the difficulty of requirements management in this thread.  The consensus amongst software developers is that requirements gathering is a difficult art to master, but the fact is that it can be extremely costly if overlooked.  After analysis of 63 different software projects at companies such as IBM, GTE and TRW, we can actually put a number next to the &#8216;cost of getting it wrong&#8217;</p>
<p><a href="http://decibel.ni.com/content/servlet/JiveServlet/downloadImage/2284/Cost+of+getting+it+wrong.png"><img src="http://decibel.ni.com/content/servlet/JiveServlet/downloadImage/2284/Cost+of+getting+it+wrong.png" alt="Cost of getting it wrong.png" width="232" height="176" /></a></p>
<p>The fact is that LabVIEW often falls victom to oversight of requirements as well as a lack of due dillegence for other software engineering practices due to the fact that it is so commonly used for rapid prototyping of small applications.  Too often, I&#8217;ve seen developers try to scale these initially small projects into much larger and more complex systems without giving proper thought to requirements and especially to code architecture.  Good requirements are typically generated as a result of iteratations between prototyping and documenting the findings of prototyping, which then lend themsleves to proper archiecture and better insight into how an application should be designed and help developers apply sound software engineering practices to ensure quality and reliability.</p>
<p>If you&#8217;re interested to learn more about requirements management with LabVIEW,<a href="http://zone.ni.com/devzone/cda/tut/p/id/7117#2"> check out some of these links.</a></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ekerry.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ekerry.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ekerry.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ekerry.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ekerry.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ekerry.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ekerry.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ekerry.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ekerry.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ekerry.wordpress.com/11/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ekerry.wordpress.com&blog=7010111&post=11&subd=ekerry&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://ekerry.wordpress.com/2008/12/10/developing-requirements-the-cost-of-getting-it-wrong/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/213e1b04bd4b56be0d2b01cc0f9c3aa2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ekerry</media:title>
		</media:content>

		<media:content url="http://decibel.ni.com/content/servlet/JiveServlet/downloadImage/2284/Cost+of+getting+it+wrong.png" medium="image">
			<media:title type="html">Cost of getting it wrong.png</media:title>
		</media:content>
	</item>
	</channel>
</rss>