<?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>Adrian SmithAdrian Smith</title>
	<atom:link href="http://www.agileengineeringdesign.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.agileengineeringdesign.com</link>
	<description>Engineering design and Agile software development</description>
	<lastBuildDate>Sat, 22 Sep 2012 20:59:02 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Agile Coaching Tips &#8211; AgileTODAY Article</title>
		<link>http://www.agileengineeringdesign.com/2012/03/agile-coaching-tips-agiletoday-article/</link>
		<comments>http://www.agileengineeringdesign.com/2012/03/agile-coaching-tips-agiletoday-article/#comments</comments>
		<pubDate>Sat, 31 Mar 2012 03:50:29 +0000</pubDate>
		<dc:creator>Adrian Smith</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Coaching]]></category>

		<guid isPermaLink="false">http://www.agileengineeringdesign.com/?p=365</guid>
		<description><![CDATA[A couple a months ago I was asked to put together an article for the quarterly AgileTODAY magazine as part of the 2012 Agile Australia conference workshops. After a whiteboard session with Craig Smith, I put together these 8 tips which&#8230;<p class="more-link-p"><a class="more-link" href="http://www.agileengineeringdesign.com/2012/03/agile-coaching-tips-agiletoday-article/">Read more &#8594;</a></p>]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.agileengineeringdesign.com/wp-content/uploads/2012/03/AgileTODAY.png"><img src="http://www.agileengineeringdesign.com/wp-content/uploads/2012/03/AgileTODAY.png" alt="" title="AgileTODAY" width="300" height="56" class="alignright size-full wp-image-394" /></a><br />
<em>A couple a months ago I was asked to put together an article for the quarterly <a href="http://www.agileaustralia.com.au/AgileTODAY/" target="_blank">AgileTODAY</a> magazine as part of the 2012 <a href="http://www.agileaustralia.com.au/workshops.html" target="_blank">Agile Australia conference workshops</a>. After a whiteboard session with <a href="http://twitter.com/#!/smithcdau">Craig Smith</a>, I put together these 8 tips which will hopefully help aspiring Agile coaches.</em></p>
<p><span id="more-365"></span></p>
<h1>Introduction</h1>
<p>The Agile coach is a critical role in helping leaders, teams and individuals understand, adopt and improve Agile methods and practice. For new and aspiring coaches, starting a coaching engagement can be daunting. It is easy to become distracted from the original mandate and get embroiled in the issues and politics of the team. The following tips were put together to help Agile coaches stay focused and achieve successful outcomes.</p>
<p><a href="http://www.agileengineeringdesign.com/wp-content/uploads/2012/03/Slide32.png"><img class="aligncenter size-full wp-image-390" title="StartWithTheEndInMind" src="http://www.agileengineeringdesign.com/wp-content/uploads/2012/03/Slide32.png" alt="" width="550" height="413" /></a>Before beginning an engagement with a team try to define success in terms of measurable outcomes and a realistic timescale. Share the outcomes with the team and sponsor to ensure there is a shared understanding of what you are trying to achieve. This will help clarify your role within the team and can help reduce any fears the team may have about the coming changes. Setting a clear end date will also ensure that both you and the team are clear that the team have to own and understand their way of working.</p>
<p><a href="http://www.agileengineeringdesign.com/wp-content/uploads/2012/03/Slide33.png"><img src="http://www.agileengineeringdesign.com/wp-content/uploads/2012/03/Slide33.png" alt="" title="BeTheChange" width="550" height="413" class="aligncenter size-full wp-image-398" /></a>Showing the team how it is done the first time then supporting them as they take ownership of the new way of working is a great way to bootstrap new practices and build trust in new practices. Role model behaviours you want to see in the team. If there are techniques or technologies you cannot model yourself, you may need to mentor an enthusiastic team member or bring in an expert.</p>
<p><a href="http://www.agileengineeringdesign.com/wp-content/uploads/2012/03/Slide34.png"><img src="http://www.agileengineeringdesign.com/wp-content/uploads/2012/03/Slide34.png" alt="" title="KeepYourDistance" width="550" height="413" class="aligncenter size-full wp-image-399" /></a>There is always a temptation to get involved and help with the team’s delivery work &#8211; especially when you see them struggling. While this may offer some short term help and can be useful as a learning exercise, it is unlikely to help in the long term. Becoming part of the team will also make it difficult to have tough conversations with team members, call-out unproductive behaviours and stay focused on your coaching objectives. Try to stand back, your role is to support the team and let them take credit for their success.</p>
<p><a href="http://www.agileengineeringdesign.com/wp-content/uploads/2012/03/Slide35.png"><img src="http://www.agileengineeringdesign.com/wp-content/uploads/2012/03/Slide35.png" alt="" title="AskTheTeam" width="550" height="413" class="aligncenter size-full wp-image-401" /></a>The team has probably faced a majority of the issues long before you got involved. If they are to own the solution after you have gone, it is important to have them involved in the decision making process. Remember you are trying to help the team learn to work without your help. This sometimes means you have to let them make a decision that goes against your best judgement. Teams need to learn by their mistakes (and sometimes their idea works out which means you can learn something too).</p>
<p><a href="http://www.agileengineeringdesign.com/wp-content/uploads/2012/03/Slide36.png"><img src="http://www.agileengineeringdesign.com/wp-content/uploads/2012/03/Slide36.png" alt="" title="StepByStep" width="550" height="413" class="aligncenter size-full wp-image-402" /></a>People can adapt to change more easily when it happens slowly and they see how it aligns to an overall plan. Additionally, change becomes natural when you are able to create a safe learning environment for the team that encourages experimentation. Try to change the practices that are causing problems first replacing them with simple alternatives. If you take away all the old practices that a team depended upon they can lose their way and not see the dysfunctions for themselves.</p>
<p><a href="http://www.agileengineeringdesign.com/wp-content/uploads/2012/03/Slide37.png"><img src="http://www.agileengineeringdesign.com/wp-content/uploads/2012/03/Slide37.png" alt="" title="JustTheFacts" width="550" height="413" class="aligncenter size-full wp-image-404" /></a>Asking questions is a fundamental skill for an Agile coach and can be used to drill down to the root cause of problems a team is facing. Don’t be afraid to ask “why” a couple of times to get to the facts behind a problem or to introduce the elephant in the room. As a coach you are in the privileged position of being able to raise sensitive issues and to legitimise discussion of difficult issues.</p>
<p><a href="http://www.agileengineeringdesign.com/wp-content/uploads/2012/03/Slide38.png"><img src="http://www.agileengineeringdesign.com/wp-content/uploads/2012/03/Slide38.png" alt="" title="MakeMeasure" width="550" height="413" class="aligncenter size-full wp-image-405" /></a>Helping the team identify what is important (especially from a customer’s perspective), making it visible and updating it regularly will focus a team. Example metrics include: throughput, cycle time, delivered value and many others. The corollary to this suggestion is that you need to be careful what you measure because you can incentivise behaviour that has the potential to be counter-productive.</p>
<p><a href="http://www.agileengineeringdesign.com/wp-content/uploads/2012/03/Slide39.png"><img src="http://www.agileengineeringdesign.com/wp-content/uploads/2012/03/Slide39.png" alt="" title="AgileIsNotTheGoal" width="550" height="413" class="aligncenter size-full wp-image-406" /></a>Although the Agile journey is important, Agile perfection is not the end goal. What does matter is delivering what your stakeholders want in a sustainable way. For this reason it is important to use Agile maturity assessments and other metrics with care. Helping a team become agile should focus on instilling Agile values and principles, while selecting and adapting Agile practices to help the team deliver.</p>
<h1>Summary</h1>
<p>Becoming an Agile coach requires a deep understanding of Agile, the confidence to drive change and a willingness for self-reflection. The role of an Agile coach is a rewarding one that allow you to use a wide range of skills across technical, social, business and communication disciplines.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agileengineeringdesign.com/2012/03/agile-coaching-tips-agiletoday-article/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>7 Deadly Sins of Automated Software Testing</title>
		<link>http://www.agileengineeringdesign.com/2012/01/7-deadly-sins-of-automated-software-testing/</link>
		<comments>http://www.agileengineeringdesign.com/2012/01/7-deadly-sins-of-automated-software-testing/#comments</comments>
		<pubDate>Tue, 03 Jan 2012 08:58:54 +0000</pubDate>
		<dc:creator>Adrian Smith</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Quality]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Testing]]></category>

		<guid isPermaLink="false">http://www.agileengineeringdesign.com/?p=328</guid>
		<description><![CDATA[When Craig Smith and I were planning our presentation for Agile 2011 &#8211; we toyed with the idea of listing 7 anti-patterns for automated testing. I&#8217;ve taken these patterns and loosely matched them to the classic seven-deadly-sins. This metaphor also allowed me&#8230;<p class="more-link-p"><a class="more-link" href="http://www.agileengineeringdesign.com/2012/01/7-deadly-sins-of-automated-software-testing/">Read more &#8594;</a></p>]]></description>
				<content:encoded><![CDATA[<p><em>When <a title="Craig Smith" href="http://twitter.com/#!/smithcdau" target="_blank">Craig Smith</a> and I were planning our presentation for <a title="Agile 2011" href="http://www.slideshare.net/smithcdau/the-speed-to-cool-agile-testing-building-quality-in" target="_blank">Agile 2011</a> &#8211; we toyed with the idea of listing 7 anti-patterns for automated testing. I&#8217;ve taken these patterns and loosely matched them to the classic <a title="Seven Deadly Sins" href="http://en.wikipedia.org/wiki/Seven_deadly_sins" target="_blank">seven-deadly-sins</a>. This metaphor also allowed me to include a <a title="linocut" href="http://en.wikipedia.org/wiki/Linocut" target="_blank">linocut</a> that my uncle Errol Smith made &#8211; pictured here.</em></p>
<p><img class="alignright size-medium wp-image-329" title="seven-deadly-sins" src="http://www.agileengineeringdesign.com/wp-content/uploads/2012/01/seven-deadly-sins-289x300.png" alt="" width="289" height="300" /></p>
<p>
Senior management often view automated testing as a silver bullet in reducing testing effort/costs and increasing delivery speed. While it is true that automated tests can provide rapid feedback on health of the system, all approaches to automated testing are not created equal and there are some gotchas that should be avoided.
</p>
<p><span id="more-328"></span></p>
<h3 style="clear: both;">1. Envy</h3>
<p><strong>Flawed comparison between manual testing and automation</strong><br />
<a href="http://www.agileengineeringdesign.com/wp-content/uploads/2012/01/Envy.006.png"><img src="http://www.agileengineeringdesign.com/wp-content/uploads/2012/01/Envy.006.png" alt="" title="Envy.006" width="300" height="225" class="alignright size-full wp-image-418" /></a></p>
<p>Automated tests are not a replacement for manual exploratory testing. A mixture of testing types and levels is needed to achieve the desired quality mitigate the risk associated with defects. This is because testing is not merely a sequence of repeatable actions. The <a title="automated testing triangle" href="http://www.softwarequalityconnection.com/2011/08/how-to-improve-communication-between-qa-and-development/" target="_blank">automated testing triangle</a> originally described by Mike Cohn explains the investment profile in tests should focus at the unit level and then reduce up through the application layers.
</p>
<h3 style="clear: both;">2. Gluttony</h3>
<p><strong>Over indulging on commercial testing tools</strong><br />
<a href="http://www.agileengineeringdesign.com/wp-content/uploads/2012/01/Gluttony.013.png"><img src="http://www.agileengineeringdesign.com/wp-content/uploads/2012/01/Gluttony.013.png" alt="" title="Gluttony.013" width="300" height="225" class="alignright size-full wp-image-420" /></a></p>
<p>Many commercial testing tools provide simple features for automating the capture and replay of manual test cases. While this approach seems sound, it encourages testing through the user-interface and results in inherently brittle and difficult to maintain tests. Additionally, the cost and restrictions that licensed tools place on who can access the test cases is an overhead that tends to prevent collaboration and team work. Furthermore, storing test cases outside the version control system creates unnecessary complexity. As an alternative, open source test tools can usually solve most automated testing problems and the test cases can be easily included in the version control system.
</p>
<h3 style="clear: both;">3. Lust</h3>
<p><strong>Loving the UI so much that all tests are executed through the UI</strong><br />
<a href="http://www.agileengineeringdesign.com/wp-content/uploads/2012/01/Lust.020.png"><img src="http://www.agileengineeringdesign.com/wp-content/uploads/2012/01/Lust.020.png" alt="" title="Lust.020" width="300" height="225" class="alignright size-full wp-image-421" /></a></p>
<p>Although automated UI tests provide a high level of confidence, they are expensive to build, slow to execute and fragile to maintain. Testing at the lowest possible level is a practice that encourages collaboration between developers and testers, increases the execution speed for tests and reduces the test implementation costs. Automated unit tests should be doing a majority of the test effort followed by integration, functional, system and acceptance tests. UI based tests should only be used when the UI is actually being tested or there is no practical alternative.
</p>
<h3 style="clear: both;">4. Pride</h3>
<p><strong>Too proud to collaborate when creating tests</strong><br />
<a href="http://www.agileengineeringdesign.com/wp-content/uploads/2012/01/Pride.028.png"><img src="http://www.agileengineeringdesign.com/wp-content/uploads/2012/01/Pride.028.png" alt="" title="Pride.028" width="300" height="225" class="alignright size-full wp-image-423" /></a></p>
<p><a title="Test-driven development" href="http://en.wikipedia.org/wiki/Test-driven_development" target="_blank">Test driven development</a> is an approach to development that is as much a design activity as it is a testing practice. The process of defining test cases (or executable specifications) is an excellent way ensuring that there is a shared understanding between all involved as to the actual requirement being developed and tested. The practice is often associated with unit testing but can be equally applied to other test types including acceptance testing.
</p>
<h3 style="clear: both;">5. Sloth</h3>
<p><strong>Too lazy to maintain automated tests</strong><br />
<a href="http://www.agileengineeringdesign.com/wp-content/uploads/2012/01/Sloth.036.png"><img src="http://www.agileengineeringdesign.com/wp-content/uploads/2012/01/Sloth.036.png" alt="" title="Sloth.036" width="300" height="225" class="alignright size-full wp-image-424" /></a></p>
<p>The cost and rapid feedback benefits of automated tests are best realised when the tests are regularly executed. This has the effect of highlighting failures and providing continuous feedback about the health of the system. If your automated tests are initiated manually rather than through the CI <a title="continuous integration" href="http://en.wikipedia.org/wiki/Continuous_integration" target="_blank">continuous integration</a> system then there is significant risk that they are not being run regularly and therefore may in fact be failing. Make the effort to ensure automated tests are executed through the CI system.
</p>
<h3 style="clear: both;">6. Rage</h3>
<p><strong>Frustration with slow, brittle or unreliable tests</strong><br />
<a href="http://www.agileengineeringdesign.com/wp-content/uploads/2012/01/Rage.042.png"><img src="http://www.agileengineeringdesign.com/wp-content/uploads/2012/01/Rage.042.png" alt="" title="Rage.042" width="300" height="225" class="alignright size-full wp-image-425" /></a></p>
<p>Unreliable tests are a major cause for teams ignoring or losing confidence in automated tests. Once confidence is lost the value initially invested in automated tests is dramatically reduced. Fixing failing tests and resolving issues associated with brittle tests should be a priority to eliminate false positives.
</p>
<h3 style="clear: both;">7. Avarice (Greed)</h3>
<p><strong>Trying to cut costs through automation</strong><br />
<a href="http://www.agileengineeringdesign.com/wp-content/uploads/2012/01/Greed.049.png"><img src="http://www.agileengineeringdesign.com/wp-content/uploads/2012/01/Greed.049.png" alt="" title="Greed.049" width="300" height="225" class="alignright size-full wp-image-426" /></a></p>
<p>Testing tool vendors often try to calculate a Return-on-Investment based purely on labour savings. This analysis is unreliable and under values the importance of testing, the investment required to adopt automation practices and the ongoing maintenance costs.
</p>
<h3 style="clear: both;">Summary</h3>
<p>Automated testing is not without pitfalls and some of these are identified here. There are of course many other anti-patterns for automated testing that justify further discussion.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agileengineeringdesign.com/2012/01/7-deadly-sins-of-automated-software-testing/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Agile and Lean for Construction</title>
		<link>http://www.agileengineeringdesign.com/2011/09/agile-and-lean-for-construction/</link>
		<comments>http://www.agileengineeringdesign.com/2011/09/agile-and-lean-for-construction/#comments</comments>
		<pubDate>Fri, 23 Sep 2011 08:32:54 +0000</pubDate>
		<dc:creator>Adrian Smith</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Construction]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Last Planner]]></category>
		<category><![CDATA[Lean]]></category>
		<category><![CDATA[Lean Constriuction]]></category>
		<category><![CDATA[WorkFace Planning]]></category>

		<guid isPermaLink="false">http://www.agileengineeringdesign.com/?p=276</guid>
		<description><![CDATA[Large scale construction projects suffer from cost and time overruns that are typically a symptom of productivity problems and directly affect overall industry profitability. As a result, methodologies have been developed to reduce the risk of overruns and improve project&#8230;<p class="more-link-p"><a class="more-link" href="http://www.agileengineeringdesign.com/2011/09/agile-and-lean-for-construction/">Read more &#8594;</a></p>]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.agileengineeringdesign.com/wp-content/uploads/2011/09/empire_state_building.jpg"><img class="alignleft size-medium wp-image-304" title="empire_state_building" src="http://www.agileengineeringdesign.com/wp-content/uploads/2011/09/empire_state_building-300x232.jpg" alt="" width="300" height="232" /></a>Large scale construction projects suffer from cost and time overruns that are typically a symptom of productivity problems and directly affect overall industry profitability. As a result, methodologies have been developed to reduce the risk of overruns and improve project outcomes. <span id="more-276"></span>A number of these methods are based upon Lean production principles that focus on identifying value, eliminating waste and creating a smooth flow of materials, information and work. The application of Lean to construction is based upon treating the construction site as a temporary production line and is referred to as Lean Construction.</p>
<p>Agile methods have been found to improve the reliability of project delivery in complex environments, by decomposing the scope into small manageable parts, then completing these parts in order of greatest value. Although Agile and Lean methods share many common values and principles, Agile methods have not been properly investigated as a means of reducing the overruns associated with large scale construction projects.</p>
<p>In the presentation below I explore the similarities and differences between Agile, Lean and Construction.</p>
<div id="__ss_9384237" style="width: 425px;"><strong style="display: block; margin: 12px 0 4px;"><a title="Agile and Lean for Construction" href="http://www.slideshare.net/adrianlsmith/agile-and-lean-for-construction-9384237" target="_blank">Agile and Lean for Construction</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/9384237" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="425" height="355"></iframe></p>
<div style="padding: 5px 0 12px;">View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/adrianlsmith" target="_blank">Adrian Smith</a></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.agileengineeringdesign.com/2011/09/agile-and-lean-for-construction/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>STANZ 2011 &#8211; Future Tester</title>
		<link>http://www.agileengineeringdesign.com/2011/09/software-testing-anz-2011-conference/</link>
		<comments>http://www.agileengineeringdesign.com/2011/09/software-testing-anz-2011-conference/#comments</comments>
		<pubDate>Mon, 05 Sep 2011 08:41:23 +0000</pubDate>
		<dc:creator>Adrian Smith</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.agileengineeringdesign.com/?p=280</guid>
		<description><![CDATA[Craig Smith and I be presented at STANZ 2011 on The Future Tester at Suncorp: A Journey of Building Quality In Through Agile in Melbourne, Australia. Our presentation was based around work that we have been doing at Suncorp to&#8230;<p class="more-link-p"><a class="more-link" href="http://www.agileengineeringdesign.com/2011/09/software-testing-anz-2011-conference/">Read more &#8594;</a></p>]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.agileengineeringdesign.com/wp-content/uploads/2011/09/stanz_2011.png"><img class="alignleft size-full wp-image-319" title="stanz_2011" src="http://www.agileengineeringdesign.com/wp-content/uploads/2011/09/stanz_2011.png" alt="" width="910" height="112" /></a>Craig Smith and I be presented at STANZ 2011 on The Future Tester at Suncorp: A Journey of Building Quality In Through Agile in Melbourne, Australia. Our presentation was based around work that we have been doing at Suncorp to improve testing capability, skills and approaches. We also included some of the work we&#8217;ve done at Ennova on Agile Test Strategies.<span id="more-280"></span></p>
<p>STANZ is the region&#8217;s premier software testing conference and this year is being held in Melbourne and Auckland. The conference has attracted speakers and authors from around the world including Karen Johnson (Co-Author of Beautiful Testing) and Goranka Bjedov (Capacity Engineer at Facebook).</p>
<div id="__ss_9103857" style="width: 425px;"><strong style="display: block; margin: 12px 0 4px;"><a title="The Future Tester at Suncorp - A Journey of Building Quality In Through Agile" href="http://www.slideshare.net/smithcdau/the-future-tester-at-suncorp-a-journey-of-building-quality-in-through-agile" target="_blank">The Future Tester at Suncorp &#8211; A Journey of Building Quality In Through Agile</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/9103857" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="425" height="355"></iframe></p>
<div style="padding: 5px 0 12px;">View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/smithcdau" target="_blank">Craig Smith</a></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.agileengineeringdesign.com/2011/09/software-testing-anz-2011-conference/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Agile 2011 &#8211; Building Quality In</title>
		<link>http://www.agileengineeringdesign.com/2011/08/285/</link>
		<comments>http://www.agileengineeringdesign.com/2011/08/285/#comments</comments>
		<pubDate>Tue, 23 Aug 2011 08:50:47 +0000</pubDate>
		<dc:creator>Adrian Smith</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Quality]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Testing]]></category>

		<guid isPermaLink="false">http://www.agileengineeringdesign.com/?p=285</guid>
		<description><![CDATA[Craig Smith and I presented a session called Accelerating the Speed To Cool On The Road To Building Quality In at Agile2011 in Salt Lake City. The talk was based around work that we have been doing at Suncorp to&#8230;<p class="more-link-p"><a class="more-link" href="http://www.agileengineeringdesign.com/2011/08/285/">Read more &#8594;</a></p>]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.agileengineeringdesign.com/wp-content/uploads/2011/08/Agile2011-badge.jpg"><img class="alignleft size-full wp-image-316" title="Agile2011-badge" src="http://www.agileengineeringdesign.com/wp-content/uploads/2011/08/Agile2011-badge.jpg" alt="" width="200" height="110" /></a>Craig Smith and I presented a session called Accelerating the Speed To Cool On The Road To Building Quality In at Agile2011 in Salt Lake City. The talk was based around work that we have been doing at Suncorp to improve testing capability, skills and approaches. We also included some of the work we&#8217;ve done at Ennova on Agile Test Strategies.<span id="more-285"></span></p>
<p>The key artefacts we discussed are linked below:</p>
<ul>
<li><a href="http://www.agileacademy.com.au/agile/sites/default/files/Defining%20Quality%20Workbook.pdf" target="_blank">Defining Quality Workbook</a></li>
<li><a href="http://www.agileacademy.com.au/agile/sites/default/files/Quality%20Focused%20Project%20BVC.pdf" target="_blank">Quality Focused BVC</a></li>
<li><a href="http://ennova.com.au/blog/2011/05/agile-test-strategy" target="_blank">Agile Test Strategies</a></li>
<li><a href="http://www.agileacademy.com.au/agile/sites/default/files/Agile%20QA%20Practices%20Worksheet.pdf" target="_blank">Agile QA Practices</a></li>
</ul>
<div id="__ss_8811502" style="width: 425px;"><strong style="display: block; margin: 12px 0 4px;"><a title="The Speed to Cool: Agile Testing &amp; Building Quality In" href="http://www.slideshare.net/smithcdau/the-speed-to-cool-agile-testing-building-quality-in" target="_blank">The Speed to Cool: Agile Testing &amp; Building Quality In</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/8811502" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="425" height="355"></iframe></p>
<div style="padding: 5px 0 12px;">View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/smithcdau" target="_blank">Craig Smith</a></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.agileengineeringdesign.com/2011/08/285/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Agile Australia 2011 &#8211; Startups</title>
		<link>http://www.agileengineeringdesign.com/2011/06/agile-australia-2011-agile-for-startups/</link>
		<comments>http://www.agileengineeringdesign.com/2011/06/agile-australia-2011-agile-for-startups/#comments</comments>
		<pubDate>Thu, 23 Jun 2011 08:57:44 +0000</pubDate>
		<dc:creator>Adrian Smith</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Startups]]></category>
		<category><![CDATA[Ennova]]></category>
		<category><![CDATA[Envision]]></category>
		<category><![CDATA[Lean Startup]]></category>
		<category><![CDATA[Startup]]></category>

		<guid isPermaLink="false">http://www.agileengineeringdesign.com/?p=288</guid>
		<description><![CDATA[Startup businesses face significant risk in the search for a sustainable, profitable and scalable business model. Consequently, the success rate for Startups is low, making them a typically high risk investment. Agile methods offer a way of reducing the risk&#8230;<p class="more-link-p"><a class="more-link" href="http://www.agileengineeringdesign.com/2011/06/agile-australia-2011-agile-for-startups/">Read more &#8594;</a></p>]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.agileengineeringdesign.com/wp-content/uploads/2011/06/agile-australia-2011.png"><img class="alignright  wp-image-324" title="agile-australia-2011" src="http://www.agileengineeringdesign.com/wp-content/uploads/2011/06/agile-australia-2011.png" alt="" width="300" height="138" /></a>Startup businesses face significant risk in the search for a sustainable, profitable and scalable business model. Consequently, the success rate for Startups is low, making them a typically high risk investment. Agile methods offer a way of reducing the risk for both the technical implementation and the development of customers. This is achieved by increasing the ability for a Startup to adapt to change and to incorporate the lessons learned from early customer engagement.<span id="more-288"></span></p>
<p>At the recent Agile Australia 2011 conference I discussed the nature of technology Startups and the application of Agile principles, practices and tools. Additionally,I shared some real life experiences in the application of Agile in <a href="http://ennova.com.au" target="_blank">Ennova</a> through the development of <a href="http://envisionapp.com" target="_blank">Envision</a>.</p>
<div id="__ss_4791710" style="width: 425px;"><strong style="display: block; margin: 12px 0 4px;"><a title="Agile for Startups" href="http://www.slideshare.net/adrianlsmith/agile-for-startups" target="_blank">Agile for Startups</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/4791710" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="425" height="355"></iframe></p>
<div style="padding: 5px 0 12px;">View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/adrianlsmith" target="_blank">Adrian Smith</a></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.agileengineeringdesign.com/2011/06/agile-australia-2011-agile-for-startups/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kanban and Construction Work Packages</title>
		<link>http://www.agileengineeringdesign.com/2010/11/kanban-and-construction-work-packages/</link>
		<comments>http://www.agileengineeringdesign.com/2010/11/kanban-and-construction-work-packages/#comments</comments>
		<pubDate>Wed, 17 Nov 2010 22:06:24 +0000</pubDate>
		<dc:creator>Adrian Smith</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Construction]]></category>
		<category><![CDATA[Kanban]]></category>

		<guid isPermaLink="false">http://www.agileengineeringdesign.com/?p=252</guid>
		<description><![CDATA[Recently I helped facilitate a workshop with a major engineering company focusing on the use of Work Packages to manage the execution of industrial construction projects. Part of the workshop included a team exercise that compared the efficiency of teams&#8230;<p class="more-link-p"><a class="more-link" href="http://www.agileengineeringdesign.com/2010/11/kanban-and-construction-work-packages/">Read more &#8594;</a></p>]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.agileengineeringdesign.com/wp-content/uploads/2010/11/lego-road-construction-set-1.jpg"><img class="size-medium wp-image-253 alignleft" title="lego-road-construction-set-1" src="http://www.agileengineeringdesign.com/wp-content/uploads/2010/11/lego-road-construction-set-1-300x203.jpg" alt="" width="280" height="189" /></a>Recently I helped facilitate a workshop with a major engineering company focusing on the use of Work Packages to manage the execution of industrial construction projects. Part of the workshop included a team exercise that compared the efficiency of teams working with and without Work Packages.</p>
<p><span id="more-252"></span></p>
<p>Each team was set the task of building the same lego model. <strong>Team A</strong> started with drawings for each build step and a box of unsorted lego parts. <strong>Team B</strong> started with the same drawings and the same lego parts. However, they were also provided with a part list for each build step and the parts were pre-sorted into groups. The teams started at the same time and within minutes both teams had self-organised and were progressing with their models.</p>
<p>The progress of each team was tracked and plotted against time then displayed on a big screen to demonstrate the productivity of each team. Within minutes Team B was able to demonstrate the benefits of <a href="http://www.workfaceplan.com/">WorkFace</a> planning by achieving progress milestones in substancially less time than Team A. We included some real-life complexities in the exercise such as missing parts and site delays. These further demonstrated the benefits of WorkFace planning.</p>
<p>The exercise was well received and the ensuing discussion provided the inspiration for a <a href="http://www.agileengineeringdesign.com/wp-content/uploads/2008/01/Kanban-for-Work-Package-Management.pdf">discussion paper</a> on using ideas from Kanban systems to support the visual management of Work Packages.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agileengineeringdesign.com/2010/11/kanban-and-construction-work-packages/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Agile Australia 2010</title>
		<link>http://www.agileengineeringdesign.com/2010/09/agile-australia-2010/</link>
		<comments>http://www.agileengineeringdesign.com/2010/09/agile-australia-2010/#comments</comments>
		<pubDate>Mon, 20 Sep 2010 07:47:17 +0000</pubDate>
		<dc:creator>Adrian Smith</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.agileengineeringdesign.com/?p=230</guid>
		<description><![CDATA[Agile Australia 2010 was one of the best conferences I&#8217;ve been to in a while. The following are my brief notes from the sessions I attended. Presenter Ideas Jim Highsmith - Focusing on speed will result in a poor quality&#8230;<p class="more-link-p"><a class="more-link" href="http://www.agileengineeringdesign.com/2010/09/agile-australia-2010/">Read more &#8594;</a></p>]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.agileengineeringdesign.com/wp-content/uploads/2010/09/AgileAustralia2010.png"><img class="size-medium wp-image-245 alignright" title="AgileAustralia2010" src="http://www.agileengineeringdesign.com/wp-content/uploads/2010/09/AgileAustralia2010-300x106.png" alt="" width="300" height="106" /></a></p>
<p><a href="http://www.slatteryit.com.au/agile2010/">Agile Australia 2010</a> was one of the best conferences I&#8217;ve been to in a while. The following are my brief notes from the sessions I attended.</p>
<p><span id="more-230"></span></p>
<table cellpadding="8">
<tbody>
<tr>
<th>Presenter</th>
<th>Ideas</th>
</tr>
<tr>
<td>Jim Highsmith</td>
<td>- Focusing on speed will result in a poor quality but focusing on quality will lead to greater speed.<br />
- Software development is one of the only industries where economies of scale do not work.</td>
</tr>
<tr>
<td>Jeff Smith</td>
<td>- People leave a company because of poor leadership.<br />
- Suncorp runs a leadership forum where the attendees are nominated and elected.</td>
</tr>
<tr>
<td>Neal Ford</td>
<td>- Emergent design enables design decisions to be deferred to the last responsible moment. Big up front design cannot solve the design problems that emerge during a project.<br />
- Measuring and tracking key code metrics like coupling and complexity can help identify recurring code anti-patterns that can be addressed on a continuous basis.</td>
</tr>
<tr>
<td>Panel Session on Flavours of Agile</td>
<td>- Scrum has become they &#8216;Gateway Drug&#8217; for organizations adopting Agile. Unfortunately this has lead to a lack of emphasis on quality.<br />
- Scrum often leads to the adoption of more technical agile practices including ATDD and similar practices.</td>
</tr>
<tr>
<td>Kane Mar</td>
<td>- Extending continuous integration practices into deployment helps ensure business value can be delivered but is only relevant for niche product types.</td>
</tr>
<tr>
<td>Craig Smith</td>
<td>- Discussed the factors affecting team performance.</td>
</tr>
<tr>
<td>Martin Fowler</td>
<td>- If a certain development practice is painful &#8211; then do it more frequently. This approach will ensure that it gets you&#8217;ll get better at the practice.<br />
- Technical debt quadrant is can be used to classify different types of technical debt.<br />
- Internal quality is invisible to the customer but external quality is visible. Customers should only be able to trade cost/quality on external quality aspects.</td>
</tr>
<tr>
<td>Dave Thomas</td>
<td>- Legacy system maintenance and enhancement can benefit from Lean and Agile approaches. Typically this offers significant business value because legacy systems are what is running the company and therefore generating revenue.</td>
</tr>
<tr>
<td>Nigel Dalton</td>
<td>- Demonstrated a variety of different implementations of task tracking in Kanban style within non-technical areas.<br />
- If you don&#8217;t like change, you&#8217;ll hate irrelevance even more.</td>
</tr>
<tr>
<td>Chris Mountford</td>
<td>- Demonstrated a variety of different approaches to reducing to time to get feedback from large continuous integration build systems.<br />
- Discussed rules around developers committing during broken builds. Typically no commits while unit tests are failing but okay to commit if automated functional tests are failing &#8230; provided someone is working on a fix.</td>
</tr>
<tr>
<td>Sharon Robson</td>
<td>- All agile team members are testers<br />
- The practice of testing practice in a agile project is no different to any other project, however the timing requires continuous involvement from an early stage.</td>
</tr>
<tr>
<td>Jez Humble</td>
<td>- Discussed value of deployment pipeline and emerging area called DevOps.<br />
- Discussed ATDD style testing on the provisioning of deployment environment.</td>
</tr>
</tbody>
</table>
<p>I really enjoyed the conference and met some great people &#8211; looking forward to next year.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agileengineeringdesign.com/2010/09/agile-australia-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Agile for Startups</title>
		<link>http://www.agileengineeringdesign.com/2010/05/agile-for-start-ups/</link>
		<comments>http://www.agileengineeringdesign.com/2010/05/agile-for-start-ups/#comments</comments>
		<pubDate>Tue, 04 May 2010 11:20:17 +0000</pubDate>
		<dc:creator>Adrian Smith</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.agileengineeringdesign.com/?p=220</guid>
		<description><![CDATA[I presented a session at the Brisbane Agile Academy Meetup group on Agile for Startups. I discussed some of the Agile principles and practices relevant to a startup and demonstrated some of the tools used by Ennova. Despite numerous technical&#8230;<p class="more-link-p"><a class="more-link" href="http://www.agileengineeringdesign.com/2010/05/agile-for-start-ups/">Read more &#8594;</a></p>]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.agileengineeringdesign.com/wp-content/uploads/2010/05/Agile.png"><img src="http://www.agileengineeringdesign.com/wp-content/uploads/2010/05/Agile-300x165.png" alt="" title="Agile for Startups" width="300" height="165" class="alignleft size-medium wp-image-228" /></a><br />
I presented a session at the <a href="http://agileacademy.com.au/agile/">Brisbane Agile Academy</a> Meetup group on <a href="http://www.meetup.com/The-Brisbane-Agile-Academy-Meetup-Group/calendar/13375077/">Agile for Startups</a>. </p>
<p>I discussed some of the Agile principles and practices relevant to a startup and demonstrated some of the tools used by <a href="http://www.ennova.com.au">Ennova</a>. Despite numerous technical issues (which rendered the video unusable) the content stimulated heaps of questions. </p>
<p><a href="http://cds43.wordpress.com/2010/07/13/agile-academy-meetup-agile-for-startups/">Craig Smith</a> and <a href="http://www.agileacademy.com.au/agile/knowledgehub/news/agile-startups-dr-adrian-smith">Fiona Mullen</a> have reviewed the presentation and the full slide pack is now available on <a href="http://www.slideshare.net/adrianlsmith/agile-for-startups">SlideShare</a>.</p>
<p>Thanks to all those who attended.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agileengineeringdesign.com/2010/05/agile-for-start-ups/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How Do Scientists Really Use Computers?</title>
		<link>http://www.agileengineeringdesign.com/2009/09/how-do-scientists-really-use-computers/</link>
		<comments>http://www.agileengineeringdesign.com/2009/09/how-do-scientists-really-use-computers/#comments</comments>
		<pubDate>Wed, 30 Sep 2009 20:32:49 +0000</pubDate>
		<dc:creator>Adrian Smith</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Scientific Computing]]></category>
		<category><![CDATA[Survey]]></category>

		<guid isPermaLink="false">http://www.agileengineeringdesign.com/?p=212</guid>
		<description><![CDATA[Gregory Wilson published an article in the American Scientist discussing the results from a web-based survey of how scientists use computers. Its worth a reading as it highlights the differences between the the scientific community and the IT industry. For&#8230;<p class="more-link-p"><a class="more-link" href="http://www.agileengineeringdesign.com/2009/09/how-do-scientists-really-use-computers/">Read more &#8594;</a></p>]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.agileengineeringdesign.com/wp-content/uploads/2009/09/zeke1-bw-75-dpi.jpg"><img class="alignright  wp-image-213" title="zeke1-bw-75-dpi" src="http://www.agileengineeringdesign.com/wp-content/uploads/2009/09/zeke1-bw-75-dpi.jpg" alt="zeke1-bw-75-dpi" width="319" height="317" /></a><br />
Gregory Wilson published an article in the <a href="http://www.americanscientist.org/">American Scientist</a> discussing the results from a web-based survey of how scientists use computers. Its worth a reading as it highlights the differences between the the scientific community and the IT industry. For me, the most important were collaboration, team work and reuse.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agileengineeringdesign.com/2009/09/how-do-scientists-really-use-computers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Designing an Estimation Process</title>
		<link>http://www.agileengineeringdesign.com/2009/08/designing-an-estimation-process/</link>
		<comments>http://www.agileengineeringdesign.com/2009/08/designing-an-estimation-process/#comments</comments>
		<pubDate>Sat, 15 Aug 2009 11:09:41 +0000</pubDate>
		<dc:creator>Adrian Smith</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Estimation]]></category>
		<category><![CDATA[Uncertainty]]></category>

		<guid isPermaLink="false">http://www.agileengineeringdesign.com/?p=158</guid>
		<description><![CDATA[In many organisations (especially larger commercial or government) it is common for the project governance processes to require an estimate of project costs before funds can be released and the project launched. Therefore, it is necessary to develop an estimate&#8230;<p class="more-link-p"><a class="more-link" href="http://www.agileengineeringdesign.com/2009/08/designing-an-estimation-process/">Read more &#8594;</a></p>]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.agileengineeringdesign.com/wp-content/uploads/2009/08/estimate.jpg"><img class="alignright size-full wp-image-173" title="estimate" src="http://www.agileengineeringdesign.com/wp-content/uploads/2009/08/estimate.jpg" alt="estimate" width="331" height="286" /></a><br />
In many organisations (especially larger commercial or government) it is common for the project governance processes to require an estimate of project costs before funds can be released and the project launched. Therefore, it is necessary to develop an estimate that can be used as the basis of a go/no-go decision.</p>
<p>In the example discussed below, I was asked to create a process for developing an estimate that satisfied the above requirements. Rather than simply creating process flow and swim-lane diagrams, I tried to consider how the process could be adapted and matured over time as the organisation changed over time.  In doing so I found the many agile/lean principles were being subtly introduced.<br />
<span id="more-158"></span></p>
<h2>Strategy</h2>
<p>As is common with most things, your first design isn’t going to be perfect and it will require progressive enhancement. With this in mind, my approach was to start simple, develop the most minimal process and then provide support in the form of training, infrastructure (tools, templates etc). Realising that my first iteration of the process would be a tactical solution allowed me to move past trying to make it perfect and enabled me to focus on the bigger picture of how the organisation could adapt and mature the process.</p>
<h3>Establishing the Current Issues</h3>
<p>To begin with I reviewed the state of the current estimation practices from a number of different perspectives including developers, project managers, business analysts and solution architects. I have included the results together with comments below as the issues are probably common to many larger organisations.</p>
<table border="0">
<tbody>
<tr>
<th>Issue</th>
<th>Comment</th>
</tr>
<tr>
<td>Current process is undocumented, poorly understood and not consistently followed</td>
<td>New process will require documentation and key staff will require training. Documentation may also serve as induction material</td>
</tr>
<tr>
<td>Lack of ownership during estimation</td>
<td>Process needs to assign a person to act as the estimate lead who is responsible for managing the estimate and coordinating all technical inputs</td>
</tr>
<tr>
<td>Importance of estimate is not properly understood</td>
<td>Project governance and purpose of different estimates needs to be properly understood by all involved</td>
</tr>
<tr>
<td>Insufficient detail within the proposal documents to properly estimate effort</td>
<td>Improve the process for requirements capture and quality of understanding</td>
</tr>
<tr>
<td>An adversarial environment is present that is fostered by poor communication and lack of understanding around accountability</td>
<td>Ensure process facilitates collaboration between all parties and that the estimate and added contingency remains transparent</td>
</tr>
<tr>
<td>No process metrics enabling measured or improvement</td>
<td>Implement a standard file/directory structure for estimate management and a register for recording past estimates and metrics</td>
</tr>
<tr>
<td>Confidence intervals required by project management methodology and governance are unrealistic</td>
<td>Develop common expectations around estimation complexity and risk using training materials. Ensure business priority for requirements is captured so that high value features can be estimated more thoroughly</td>
</tr>
</tbody>
</table>
<h3>Key Training and Process Concepts</h3>
<p>Based on the identified issues, I designed the training materials to focus on a number of key concepts. Additionally, I structured the process documentation inline with the following methodology for process design.</p>
<ol>
<li><strong>Design</strong><br />
Purpose<br />
Context<br />
Documentation
</li>
<li><strong>Metrics</strong><br />
Derivation<br />
Uses
</li>
<li><strong>Ownership</strong><br />
Identity<br />
Activities<br />
Authority
</li>
<li><strong>Infrastructure</strong><br />
Tools<br />
Templates
</li>
<li><strong>Roles</strong><br />
Skills<br />
Knowledge<br />
Behaviour
</li>
</ol>
<p>This approach is based on work by <a href="http://www.hammerandco.com/about-bio.asp">Dr. Michael Hammer</a> and is simple, but ensures that the major process areas are considered.</p>
<h3>What is an Estimate?</h3>
<p>An estimate is an informed assessment of an uncertain event. <em>Informed</em> means that there is an identified basis for the estimate, and <em>uncertain</em> recognizes that multiple outcomes are possible.</p>
<h3>Why Estimate?</h3>
<p>There are many reasons why estimates are created, but here are three important ones.</p>
<ul>
<li><strong>Estimates enable assessment of value.</strong> An estimate enables the customer to determine if the cost of the deliverable matches the expected value.</li>
<li><strong>Estimates enable prioritisation of work.</strong> Once the estimated size of a task is known its value can be determined and therefore priority assigned.</li>
<li><strong>Estimates assist planning.</strong> The process of preparing an estimate begins the process of planning a project and identifying task, skills, constraints, etc. This process adds value during project implementation.</li>
</ul>
<h3>Who is Accountable?</h3>
<p>It is common for project costs and/or timescales to be exceeded and for the person who developed the estimate being held to blame. To discourage this type of behaviour I tried to create a culture where everyone involved is held responsible for developing an estimate. In the event that the estimate is wrong, the whole business suffers, therefore it is in everyone’s interest to get the estimate as accurate as possible based on the given requirements.</p>
<h2>Redesigned Process</h2>
<h3>1. Design &#8211; Overview</h3>
<p>As mentioned earlier, I created a minimal and generic process because the majority of estimation tasks are different and this approach would provide the necessary flexibility and business agility. The process encourages collaboration and communication by incorporating 3 separate meetings and a number of progress discussions.</p>
<p><a href="http://www.agileengineeringdesign.com/wp-content/uploads/2009/08/estimation-process1.png"><img src="http://www.agileengineeringdesign.com/wp-content/uploads/2009/08/estimation-process1-1024x622.png" alt="estimation-process1" title="estimation-process1" height="400" class="aligncenter size-large wp-image-197" /></a></p>
<p>The process starts with a discovery meeting that occurs once a request for estimate is received together with a definition of solution requirements. This meeting is intended to set expectations around project scope, maturity, estimate timing and estimate uncertainty. Coming out the meeting is a decision verifying that the maturity of the solution matches the expectations for an estimate in terms or timing and uncertainty.</p>
<p>Moving forward, an estimate leader is assigned who has the responsibility of coordinating the creation of the estimate by drawing together the relevant technical inputs. As the time taken to gather the necessary data may span weeks (especially if key staff needed to be scheduled), it is suggest that the estimate leader provides progress advice to the customer/project manager to ensure that the process does not become a black-box.</p>
<p>Once the majority of technical tasks are identified and estimated a peer-review meeting is arranged to provide an independent review. Typically, experienced technical staff would review the estimate ensuring that lessons from past projects are incorporated and the estimate can be properly justified – especially when compared to previous similar projects.</p>
<p>The handover meeting is intended to discuss the final estimate with the customer and project manager and review task breakdown, estimate, confidence level and assumptions. Once accepted the estimate is closed and the documentation and register updated.</p>
<h3>2. Metrics</h3>
<p>Without metrics, a process cannot be properly measured and evaluated. The metrics proposed were intended to encourage practices that would address the identified issues.</p>
<table>
<tr>
<th>Metric</th>
<th>Purpose</th>
<th>How Measured</th>
<th>Target</th>
</tr>
<tr>
<td>Estimate completion time</td>
<td>Document time taken to complete estimates</td>
<td>Estimate register records start and end dates</td>
<td>Completion time to be agreed during discovery meeting. Target is to achieve that to within 10% of agreed time.</td>
</tr>
<tr>
<td>Change from previous estimate for same project</td>
<td>Document variation between estimates for the same project scope</td>
<td>Estimate Tracker Spreadsheet records each successive estimate for a project</td>
<td>Less than 50% of total project costs</td>
</tr>
<tr>
<td>Comparison with final costs</td>
<td>Measure the accuracy of estimation practices</td>
<td>Project effort extracted from time-tracking system</td>
<td>Less than 20% of actual project costs</td>
</tr>
</table>
<h3>3. Ownership</h3>
<p>A single person (and their role) was nominated as the process owner. This helps facilitate process change as they are able to approve process improvements.</p>
<h3>4. Infrastructure</h3>
<p>The infrastructure for this process consisted of templates that assisted the preparation of an estimate. The templates help ensure that the process can be consistently followed. Additionally, a file structure was established to support organisation of the documents supporting estimates as shown below.</p>
<h3>5. People</h3>
<p>The responsibilities for the roles of Project Manager, Solution Architect, Business Analyst, Application Architect and Estimate Leader were clearly articulated in the training documentation.</p>
<h2>Improving Estimates</h2>
<p>While there are numerous references in estimation, I tried to extract some key principles that would be easily adopted as part of the process. These included:</p>
<ul>
<li>Leveraging past experience on similar projects</li>
<li>Capturing better quality requirements</li>
<li>Utilizing multiple estimation methods</li>
<li>Prioritise requirements to ensure estimation concentrates on high priority</li>
<li>Scheduling resources rather than relying on just effort estimate</li>
</ul>
<h3>Task Breakdown</h3>
<p>I always recommend using as many different methods as possible to arrive at an estimate but starting with an initial task breakdown is a good starting point and helps with planning the project. The following are some guidelines on task breakdown.</p>
<p>Decompose tasks into activities that can be estimated.</p>
<ul>
<li>Tasks smaller than ½ day is probably too small</li>
<li>Tasks larger than 1 week are probably too large</li>
</ul>
<p>Link technical tasks to functional requirements where possible – or to a general/common group. This helps when a functional requirement is removed the effort to change the estimate is minimised. For every task consider the following:</p>
<table>
<tr>
<th>Requirement</th>
<th>Task</th>
<th>Priority</th>
<th>Skill</th>
<th>Effort</th>
<th>Uncertainty</th>
<th>Comments</th>
</tr>
<tr>
<td>Management</td>
<td>Project meetings</td>
<td>High</td>
<td>Team Leader</td>
<td>8</td>
<td>10%</td>
<td>Based on 1hr weekly meeting for 10 weeks for all team members</td>
</tr>
<tr>
<td>User Registration</td>
<td>Form design</td>
<td>High</td>
<td>Designer</td>
<td>16</td>
<td>50%</td>
<td></td>
</tr>
<tr>
<td>User Registration</td>
<td>User authentication</td>
<td>High</td>
<td>Developer</td>
<td>40</td>
<td>50%</td>
<td>Design must be completed before development can be finalised</td>
</tr>
</table>
<p>Everyone has different preferences on which tools are best for task planning but I generally use a spreadsheet as tools vary between organisations and spreadsheets offer good flexibility. In some cases I have setup template spreadsheets but rolling your own is pretty straightforward.</p>
<h3>Adding Uncertainty</h3>
<p>Typically uncertainty is added as a percentage of the estimated effort for the task. The effect of applying the uncertainty is that upper and lower limits of the estimate are created. These effectively provide a range that the actual effort/costs should fall within. </p>
<p>It is important to remember that the upper limit should be used for reserving budget, while the un-adjusted estimate should be used for scheduling tasks and resources. This is because schedule typically drives cost so planning effort against the unadjusted effort gives the most realistic requirement of resources. Planning against the upper value of effort would tend to keep resources working against a task longer than expected and therefore tend to increase costs.</p>
<h3>Adding Contingency</h3>
<p>Generally an estimate is based upon the most realistic scenario, and then contingency is included to account for uncertainty (known unknowns NOT unknown unknowns). It is important to be transparent about where contingency is being added so that (a) contingency it is not added in more than one place, and (b) contingency is not assumed to be included when it is has not been included. The need for contingency arises from things like staff skills and experience, project familiarisation, staff availability, task management, meetings, progress reporting, etc.</p>
<h2>Summary</h2>
<p>Estimation is a deceptively complex activity and I have tried to simplify and incorporate into a process that can be easily adopted by a large organisation. However, it is important to remember that processes have a level of maturity which often includes deficiencies, gaps or missing decision points. Therefore, for a process to be successful, the participating people need to collaborate and use the process as a guideline. Over time a process matures and the tools/artefacts improve and the tacit knowledge penetrates into the business, hence attitude and support is critical to the success.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agileengineeringdesign.com/2009/08/designing-an-estimation-process/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Building Community Centred Economies Conference</title>
		<link>http://www.agileengineeringdesign.com/2009/06/building-community-centred-economies-conference/</link>
		<comments>http://www.agileengineeringdesign.com/2009/06/building-community-centred-economies-conference/#comments</comments>
		<pubDate>Mon, 15 Jun 2009 11:06:58 +0000</pubDate>
		<dc:creator>Adrian Smith</dc:creator>
				<category><![CDATA[Agile]]></category>

		<guid isPermaLink="false">http://www.agileengineeringdesign.com/?p=146</guid>
		<description><![CDATA[Later this week I&#8217;m participating in a round table at the Building Community Centred Economies Conference in Brisbane. I&#8217;ll be one of the panelists discussing leadership. The session title is &#8220;Leading the Future: Is a new management paradigm a precondition&#8230;<p class="more-link-p"><a class="more-link" href="http://www.agileengineeringdesign.com/2009/06/building-community-centred-economies-conference/">Read more &#8594;</a></p>]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.agileengineeringdesign.com/wp-content/uploads/2009/06/feature_image5.jpg"><img src="http://www.agileengineeringdesign.com/wp-content/uploads/2009/06/feature_image5.jpg" alt="feature_image5" title="feature_image5" width="247" height="145" class="alignleft size-full wp-image-147" /></a>Later this week I&#8217;m participating in a <em>round table</em> at the <a href="http://www.cdconference.com.au/">Building Community Centred Economies Conference</a> in Brisbane. I&#8217;ll be one of the panelists discussing leadership. </p>
<p>The session title is <em>&#8220;Leading the Future: Is a new management paradigm a precondition for sustainability transition&#8221;</em>. The other panelists have interesting backgrounds so hopefully we&#8217;ll get some good discussion and audience interaction. I&#8217;ve included an overview of the conference below.</p>
<p><strong>Conference Overview:</strong><br />
<em>The conference is designed to attract a diverse local, national and international audience including community organisations and NGOs, large and small business, all spheres of government, academics, social enterprises and philanthropic trusts, writers, artists, community development practitioners, policy makers, and environmentalists. Participants from over 30 countries from the Oceania Region and around the world are expected to attend.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.agileengineeringdesign.com/2009/06/building-community-centred-economies-conference/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Agile Systems Integration</title>
		<link>http://www.agileengineeringdesign.com/2009/02/agile-systems-integration/</link>
		<comments>http://www.agileengineeringdesign.com/2009/02/agile-systems-integration/#comments</comments>
		<pubDate>Mon, 23 Feb 2009 11:15:43 +0000</pubDate>
		<dc:creator>Adrian Smith</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Continuous Integration]]></category>
		<category><![CDATA[PMBoK]]></category>
		<category><![CDATA[System Integration]]></category>

		<guid isPermaLink="false">http://www.agileengineeringdesign.com/?p=80</guid>
		<description><![CDATA[Before I started work on a recent project, I was asked if Agile methods could be applied to a systems integration project. Naturally I said yes, (responding more from instinct rather than first hand knowledge) &#8211; but as soon as&#8230;<p class="more-link-p"><a class="more-link" href="http://www.agileengineeringdesign.com/2009/02/agile-systems-integration/">Read more &#8594;</a></p>]]></description>
				<content:encoded><![CDATA[<p><img src="http://www.agileengineeringdesign.com/wp-content/uploads/2009/02/ship-loading-coal_4371-300x197.jpg" alt="Ship Loading Coal" title="Ship Loading Coal" width="300" height="197" class="alignright size-medium wp-image-94" />Before I started work on a recent project, I was asked if Agile methods could be applied to a systems integration project. Naturally I said yes, (responding more from instinct rather than first hand knowledge) &#8211; but as soon as I got a chance I typed &#8216;<em>agile</em>&#8216; and &#8216;<em>systems integration</em>&#8216; into the Google search bar. </p>
<p>Normally this is a pretty fail-safe approach (used by consultants globally) but I was a bit disturbed by how little information related to this activity. Apart from <a href="http://smoothspan.wordpress.com/2008/09/15/does-agile-development-work-for-sytems-integration/">one excellent post</a> and subsequent discussion &#8211; there was little to go on. </p>
<p><span id="more-80"></span></p>
<p>As I got further into the project I found there were some significant challenges in applying Agile methods to a large systems integration project. Below is a summary of the challenges faced for this project in utilising an Agile approach.</p>
<h3>Project Background</h3>
<p>The project involved a major upgrade to the transportation (rail and ship), materials handling (conveyor, stackers/reclaimers and stockpiles) and logistics planning systems for multiple port facilities. The customer had the opportunity to undertake a upgrade of the existing systems and planned to eliminate some legacy systems and to improve the overall functionality.</p>
<p>Historically, the customer had managed projects using a methodology based around <a href="http://en.wikipedia.org/wiki/Project_Management_Body_of_Knowledge">PMBoK</a> but realised that benefits exist in leveraging Agile methods to reduce delivery timescales and risks. Unfortunately, the customer had no experience in executing a project using Agile methods.</p>
<h3>Challenges and Strategies</h3>
<p>One of the first challenges was to increase the general understanding and awareness of how Agile methods compare with traditional project execution methods like PMBoK, that are much better understood by the customer. I found <em><a href="http://www.amazon.com/Software-Project-Managers-Agility-Development/dp/0321502752/ref=pd_bbs_sr_1?ie=UTF8&#038;s=books&#038;qid=1206233431&#038;sr=8-1">The Software Project Manager’s Bridge to Agility</a></em> by <a href="http://www.sligerconsulting.com/">Michele Sliger and Stacia Broderick</a> and excellent resource &#8211; especially the mapping between Agile methods and the PMBoK processes.</p>
<p><img src="http://www.agileengineeringdesign.com/wp-content/uploads/2009/02/picture-2-1024x563.png" alt="Agile + PMBoK" title="Agile + PMBoK" class="alignnone size-large wp-image-81" /></p>
<p>The other challenges are identified in the table below, together with the mitigation strategies.</p>
<table>
<tr>
<th>System Integration Challenge</th>
<th>Agile Risk Mitigation Strategy</th>
</tr>
<tr>
<td>Difficult to progressively replace a collection of tightly integrated legacy systems with other systems whilst maintaining service levels</td>
<td>
<ul>
<li>Continuous system integration using live data and configurations can help avoid the risks associated with big-bang style deployments</li>
<li>Customer and key user involvement in system testing</li>
</ul>
</td>
</tr>
<tr>
<td>Customers require certainty around project scope and cost</td>
<td>
<ul>
<li>Agile compatible contracts (such as Target Cost)</li>
<li>Project/Programme Manager involvement in implementation iterations provides transparency of spend and effort</li>
<li>Customer prioritised backlog of tasks ensures highest value items are always delivered first</li>
</ul>
</td>
</tr>
<tr>
<td>Geographically separated vendor teams operating under potentially different contractual terms</td>
<td>
<ul>
<li>Structure vendor contracts to ensure consistent incentives thereby minimising vendors pulling in different directions</li>
<li>Develop trust between teams by using a common integration environment</li>
<li>Exploit virtual team tools (net-meeting, webinar, daily teleconference, electronic whiteboards, team wiki, instant messaging) and support with regular face2face meetings for planning </li>
<li>Continuous integration of systems supported by automated testing</li>
</ul>
</td>
</tr>
<tr>
<td>Customer is time-poor and key users may be unable to participate in team meetings or find adequate time to review system</td>
<td>
<ul>
<li>Incorporate the cost of customer involvement into the project budget  so that there is funding available to backfill the normal jobs performed by key users</li>
<li>Create a proxy-customer who can support the implementation teams in understanding business requirements and also facilitate change-management activities</li>
</ul>
</td>
</tr>
<tr>
<td>Customer requires smooth transition from <em>as-is</em> to <em>to-be</em> business processes</td>
<td>
<ul>
<li>Develop to-be processes in collaboration with the end-users and stakeholders along side the configuration of products</li>
<li>Document business processes using a <a href="http://en.wikipedia.org/wiki/Business_process_management">BPM</a> tool and automate the generation of documentation as much as possible</li>
<li>Use a BPM tool to enforce governance and Enterprise Architectural patterns as much as possible</li>
</ul>
</td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.agileengineeringdesign.com/2009/02/agile-systems-integration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>KBE System Definition</title>
		<link>http://www.agileengineeringdesign.com/2009/01/kbe-system-definition/</link>
		<comments>http://www.agileengineeringdesign.com/2009/01/kbe-system-definition/#comments</comments>
		<pubDate>Sat, 17 Jan 2009 10:19:29 +0000</pubDate>
		<dc:creator>Adrian Smith</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[KBE]]></category>
		<category><![CDATA[Lisp]]></category>

		<guid isPermaLink="false">http://www.agileengineeringdesign.com/?p=78</guid>
		<description><![CDATA[Dave Cooper of Genworks published an AIAA paper where he defines the minimum set of features for a Knowledge-Based Engineering (KBE) system. These features include: Functional Coding Style: programs return values, rather than modifying things in memory or in the&#8230;<p class="more-link-p"><a class="more-link" href="http://www.agileengineeringdesign.com/2009/01/kbe-system-definition/">Read more &#8594;</a></p>]]></description>
				<content:encoded><![CDATA[<p>Dave Cooper of <a href="http://www.genworks.com/" target="_blank">Genworks</a> published an <a href="http://downloads.genworks.com/kbe2007.pdf" target="_self">AIAA paper</a> where he defines the minimum set of features for a Knowledge-Based Engineering (KBE) system. These features include:</p>
<p><strong>Functional Coding Style:</strong> programs return values, rather than modifying things in memory or in the model.</p>
<p><strong>Declarative Coding Style:</strong> there is no “begin” or “end” to a KBE model – only a description of the items to be modeled.</p>
<p><strong>Runtime Value Caching and Dependency Tracking:</strong> the system computes and memorizes those things which are required – and only those things which are required (no more, no less).</p>
<p><strong>Dynamic Data Types:</strong> Slot values and ob ject types do not have to be speciﬁed ahead of time. They are inferred automatically at runtime from the instantiated data. Their datatypes can also change at runtime. In fact, the entire structure and topology of a model tree can change, depending on the inputs.</p>
<p><strong>Automatic Memory Management:</strong> When an object or piece of data is no longer accessible to the system, the runtime environment automatically reclaims its memory.</p>
<p>The paper is well worth a read as it provides some interesting historic insight into KBE systems and the deficiencies of pseudo-KBE systems such as CATIA Knowledgeware.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agileengineeringdesign.com/2009/01/kbe-system-definition/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Cloud Computing Explained</title>
		<link>http://www.agileengineeringdesign.com/2008/09/cloud-computing-explained/</link>
		<comments>http://www.agileengineeringdesign.com/2008/09/cloud-computing-explained/#comments</comments>
		<pubDate>Sat, 20 Sep 2008 11:08:24 +0000</pubDate>
		<dc:creator>Adrian Smith</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Cloud Computing]]></category>

		<guid isPermaLink="false">http://www.agileengineeringdesign.com/?p=75</guid>
		<description><![CDATA[The launch of Google&#8217;s Chrome browser has triggered media hype around cloud computing issues. The ABC&#8217;s Background Briefing has a very entertaining podcast and the show page has some great links for further information. My favorite is the song about&#8230;<p class="more-link-p"><a class="more-link" href="http://www.agileengineeringdesign.com/2008/09/cloud-computing-explained/">Read more &#8594;</a></p>]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.agileengineeringdesign.com/wp-content/uploads/2008/09/serverfarm.jpg"><img class="alignright size-thumbnail wp-image-77" title="serverfarm" src="http://www.agileengineeringdesign.com/wp-content/uploads/2008/09/serverfarm-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>The launch of Google&#8217;s Chrome browser has triggered media hype around cloud computing issues.</p>
<p>The ABC&#8217;s Background Briefing has a very entertaining <a href="http://www.abc.net.au/rn/backgroundbriefing/stories/2008/2359128.htm">podcast</a> and the show page has some great links for further information.</p>
<p>My favorite is the song about life down on the <a href="http://www.youtube.com/watch?v=eaCeEBAIttk">Server Farm</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agileengineeringdesign.com/2008/09/cloud-computing-explained/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Classifying Social Networking Web Sites</title>
		<link>http://www.agileengineeringdesign.com/2008/09/classifying-social-networking-web-sites/</link>
		<comments>http://www.agileengineeringdesign.com/2008/09/classifying-social-networking-web-sites/#comments</comments>
		<pubDate>Tue, 16 Sep 2008 21:44:02 +0000</pubDate>
		<dc:creator>Adrian Smith</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Social Networking]]></category>

		<guid isPermaLink="false">http://www.agileengineeringdesign.com/?p=73</guid>
		<description><![CDATA[This image is an interesting picture I found on Brian Solis&#8217; Blog that groups social media web sites in terms of the forum they provide for sharing information, ideas and conversations.]]></description>
				<content:encoded><![CDATA[<p><a href='http://www.agileengineeringdesign.com/wp-content/uploads/2008/09/socialnetworking.jpg'><img src="http://www.agileengineeringdesign.com/wp-content/uploads/2008/09/socialnetworking-150x150.jpg" alt="Social Networking" title="socialnetworking" width="150" height="150" class="alignleft size-thumbnail wp-image-74" /></a></p>
<p>This image is an interesting picture I found on <a href="http://www.briansolis.com/" target="_blank">Brian Solis&#8217; Blog</a> that groups social media web sites in terms of the forum they provide for sharing information, ideas and conversations.</p>
<div style="clear:both">  </div>
]]></content:encoded>
			<wfw:commentRss>http://www.agileengineeringdesign.com/2008/09/classifying-social-networking-web-sites/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scientific Computing &#8211; Online Magazine</title>
		<link>http://www.agileengineeringdesign.com/2008/09/scientific-computing-online-magazine/</link>
		<comments>http://www.agileengineeringdesign.com/2008/09/scientific-computing-online-magazine/#comments</comments>
		<pubDate>Wed, 03 Sep 2008 20:11:16 +0000</pubDate>
		<dc:creator>Adrian Smith</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Education]]></category>
		<category><![CDATA[Resources]]></category>
		<category><![CDATA[Scientific Computing]]></category>

		<guid isPermaLink="false">http://www.agileengineeringdesign.com/?p=72</guid>
		<description><![CDATA[The Scientific Computing World web site is a great resource that provides information in the areas of Data Analysis, Modelling, Simulation, Data Management and High Performance Computing. The site also provides a free subscription to the magazine and numerous articles.]]></description>
				<content:encoded><![CDATA[<p>The <a href="http://www.scientific-computing.com" target="_blank">Scientific Computing World</a> web site is a great resource that provides information in the areas of Data Analysis, Modelling, Simulation, Data Management and High Performance Computing. The site also provides a free subscription to the magazine and numerous articles.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agileengineeringdesign.com/2008/09/scientific-computing-online-magazine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Automated Acceptance Tests for Engineering Design (Executable Specifications)</title>
		<link>http://www.agileengineeringdesign.com/2008/08/automated-acceptance-tests-for-engineering-design-executable-specifications/</link>
		<comments>http://www.agileengineeringdesign.com/2008/08/automated-acceptance-tests-for-engineering-design-executable-specifications/#comments</comments>
		<pubDate>Fri, 08 Aug 2008 05:00:52 +0000</pubDate>
		<dc:creator>Adrian Smith</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Analysis]]></category>
		<category><![CDATA[Behaviour Driven Development]]></category>
		<category><![CDATA[CATIA]]></category>
		<category><![CDATA[Executable Specifications]]></category>
		<category><![CDATA[FEA]]></category>
		<category><![CDATA[FitNesse]]></category>
		<category><![CDATA[iCHECK]]></category>
		<category><![CDATA[ISO 10303]]></category>
		<category><![CDATA[ISO 15926]]></category>
		<category><![CDATA[Knowledgeware]]></category>
		<category><![CDATA[RSpec]]></category>
		<category><![CDATA[Test Driven Development]]></category>

		<guid isPermaLink="false">http://engenuity.wordpress.com/?p=164</guid>
		<description><![CDATA[Acceptance tests define exactly what stake-holders expect of a system and are therefore a critical part of the system specification. Automation of these tests has gained popularity within the agile software community, following the success of Test and Behaviour Driven&#8230;<p class="more-link-p"><a class="more-link" href="http://www.agileengineeringdesign.com/2008/08/automated-acceptance-tests-for-engineering-design-executable-specifications/">Read more &#8594;</a></p>]]></description>
				<content:encoded><![CDATA[<p><a href='http://www.agileengineeringdesign.com/wp-content/uploads/2008/08/vehicle-vibration-test.jpg'><img src="http://www.agileengineeringdesign.com/wp-content/uploads/2008/08/vehicle-vibration-test-150x150.jpg" alt="" title="vehicle-vibration-test" width="150" class="alignright size-thumbnail wp-image-64" /></a>Acceptance tests define exactly what stake-holders expect of a system and are therefore a critical part of the system specification. Automation of these tests has gained popularity within the agile software community, following the success of <a href="http://dannorth.net/whats-in-a-story">Test and Behaviour Driven Development</a>, and are commonly referred to as Executable Specifications. The popularity has given rise to the development of a number of software tools that support the definition and execution of acceptance tests. As you would expect, there are also a range of engineering tools that support automated design verification. However, there seems to be some fundamental differences between the two approaches and a potential opportunity to improve engineering design by applying these software based techniques. </p>
<p><span id="more-4"></span></p>
<h3>Executable Specifications: Approach, Tools and Benefits</h3>
<p>Ideally, requirements would be written in a way that makes it easy for the development team to verify the system against them. Making them executable enables the team members to run them as often as necessary. Executable specifications can be based on stake-holder defined stories and are therefore a means for improving communication and clarifying interpretation.</p>
<p>The benefits to this approach are very compelling. Firstly, there is a much tighter link between the customer and the development team.  Secondly, it provides a tool that helps reduce the gap between what your customer wants the system to do, and what the system really does.</p>
<p><a href="http://rspec.info/">RSpec</a> is a Behaviour Driven Development framework for Ruby providing a story framework for describing application behaviour and a spec framework for defining object behaviour.</p>
<p><a href="http://fitnesse.org/">FitNesse</a> is another tool that is based around a Wiki that enables the collaborative definition and execution of tests.</p>
<p>Both tools present the tests in a form that is more user-readable than your average unit test. This allows stake-holders to see and understand the tests as well as seeing and understanding the test results. In theory it also allows stake-holders to write tests, but in practice this rarely happens.</p>
<h3>Engineering Design Verification</h3>
<p><a href='http://www.agileengineeringdesign.com/wp-content/uploads/2008/08/car-fem.jpg'><img src="http://www.agileengineeringdesign.com/wp-content/uploads/2008/08/car-fem-150x150.jpg" alt="" title="car-fem" width="150" height="150" class="alignleft size-thumbnail wp-image-65" /></a>Numerous computational tools exist for verifying the structural integrity of an engineering design.  These tools are generally based on either finite-element or classical analysis methods. While these tools are very effective in verifying design conformance against specific engineering requirements, they do not provide an effective means of either representing or verifying the design against stake-holder defined requirements. </p>
<p>Additionally, there are tools emerging that support automatic verification of 2D drawing and 3D model representations of a design. An example is the iCHECK product developed by <a href="http://www.incat.com/">INCAT</a>. iCHECK can help organizations minimize the risks associated with poorly-produced CAD data by applying a series of automated checks. </p>
<p>The available checks include:</p>
<ul>
<li>Model meta-data (filename, properties, tags, associations, &#8230;)</li>
<li>Modeling practices (properly constrained sketches, allowed features, feature order, sizes&#8230;)</li>
<li>Model annotations (dimension styles and overrides, line types, colors, &#8230;)</li>
<li>Model visibility setting (render settings, part visibility, &#8230;)</li>
</ul>
<p>One of the benefits of a tool like iCHECK is that a stake-holder can define their own checks and share this directly with the engineering design team enabling them to automatically verify the design for themselves. Although this approach can be effective, it does not verify the design against the actual stake-holder requirements for the part or assembly. This is because the tests focus on verifying the model representing the design rather than the design itself.</p>
<p>Many CAD systems have attempted to integrate tools that capture engineering product knowledge and design rules directly into the model.  An example is the <a href="http://www.3ds.com/products/catia">CATIA</a> Knowledgeware suite of tools. These tools have focused on the capture and application of business knowledge in an attempt to automate or generatively create, CAD based design data. Unfortunately, the business knowledge required to make these tools effective is generally not available in a suitable form. Additionally, these tools have lacked the technical maturity to be used reliably and the captured knowledge is not in a form that can be persisted or repurposed separately from the tool.</p>
<p>There are two problems that these tools are trying to solve: </p>
<ol>
<li>Automated/generative design based on product knowledge; and </li>
<li>Engineering design verification based on product knowledge. </li>
</ol>
<p>For the solutions to these problems to be effective, there needs to be a recognition of the importance of stake-holder involvement in the capture and execution of the business knowledge (or requirements) that drive the engineering solution. It is often the case that as an organization attempts to capture engineering knowledge a number of recurring problems emerge. Some of these include:</p>
<ol>
<li>Staff generally resist documenting knowledge as part of normal working practices and are even less enthusiastic in supporting specific knowledge led initiatives.</li>
<li>Staff tasked with eliciting and documenting the engineering knowledge are too inexperienced to appreciate the significance and implied context.</li>
<li>Lack of a commonly used and recognized standard for storing and persisting knowledge.</li>
<li>Lack of commonly available tools for automating the capture and persistence of engineering design knowledge.</li>
</ol>
<p><em>Note: The last two points may be challenged by those with specialist skills or experience in knowledge management &#8211; but I would argue that the lack of industry acceptance suggests that there are still significant opportunities for improvement.<br />
</em></p>
<p>So how could these tools be improved? Could the Behaviour Driven Development approach used in the software industry be applied?</p>
<h3>Acceptance Tests as Engineering Design Requirements</h3>
<p>As introduced earlier, acceptance testing frameworks are gaining momentum and provide a medium for stake-holders and software developers to communicate a common understanding a how a system should behave. Therefore, one approach would be to facilitate the definition of stake-holder requirements using a structured software approach. This would enable the definition of acceptance criteria for various aspects including structural integrity (strength, stiffness, service life, &#8230;), geometry (interfaces, fits, space-envelope, &#8230;) etc to be captured. The output from this could be a series executable tests that could be shared by the stake-holders and the engineering designers to run automatically to verify the design as it progresses.</p>
<p><strong>So what would these test look like?</strong><br />
Basing the syntax on RSpec, the tests would be defined as plain text stories.</p>
<pre>
Story: prevent vibration induced driver fatigue
  As a vehicle driver
  I want to reduce vehicle vibration
  So that I get a quite and comfortable ride

  Scenario: vehicle driving on dirt road
    Given my vehicle has Velocity of 60km/hr
    When my vehicle has RoadRoughness of 1000mm/km 
    Then the Time to reach a VibrationDoseValue of 8.5m/s1.75 is greater than 6hrs

  Scenario: vehicle driving on sealed road
    Given my vehicle has Velocity of 60km/hr
    When my vehicle has RoadRoughness of 200mm/km 
    Then the Time to reach a VibrationDoseValue of 8.5m/s1.75 is greater than 12hrs
</pre>
<p>As you can see keywords like <em>Given</em>, <em>When</em> and <em>Then</em> would then be translated into software based tests. Additional domain specific keywords (<em>Time</em>, <em>Velocity</em>, <em>RoadRoughness</em> and <em>VibrationDoseValue</em>) together with the associated units (<em>hrs</em>, <em>km/hr</em>, <em>mm/km</em> and <em>m/s1.75</em>) would also be used in the generation of test cases.</p>
<p>There are however a number of enabling technologies needed to make the suggested approach possible. These include:</p>
<ul>
<li>A domain specific language or standard for defining engineering acceptance tests similar to that demonstrated above</li>
<li>A testing framework enabling the execution of tests.</li>
<li>Closer integration and interoperability between CAD, FEA, CFD and other modeling or analysis tools to facilitate test execution.</li>
</ul>
<p>As far as I am aware there are currently no initiatives that address items 1 and 2. Progress towards the last item is largely a commercial issue with different engineering software vendors unwilling to trade competitive advantage for data interoperability. Standards for representing engineering data such as <a href="http://en.wikipedia.org/wiki/ISO_15926">ISO 15926</a> and <a href="http://en.wikipedia.org/wiki/ISO_10303">ISO 10303</a> are of benefit, however vendor adoption is slow, especially for more advanced definition of geometric features.</p>
<p>Finally, the relationship between engineering industry standards like Vibration Exposure &#8211; could be used to form the basis for a series of executable specifications. Together with the normal textual definition of compliance criteria, a set of software based test codes could also be provided to assist stake-holders and engineering designer to verify designs.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agileengineeringdesign.com/2008/08/automated-acceptance-tests-for-engineering-design-executable-specifications/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Open Source Computational Engineering Tools</title>
		<link>http://www.agileengineeringdesign.com/2008/08/open-source-computational-engineering-tools/</link>
		<comments>http://www.agileengineeringdesign.com/2008/08/open-source-computational-engineering-tools/#comments</comments>
		<pubDate>Sat, 02 Aug 2008 20:03:53 +0000</pubDate>
		<dc:creator>Adrian Smith</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[CAD]]></category>
		<category><![CDATA[CAE]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[FEA]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://www.agileengineeringdesign.com/?p=46</guid>
		<description><![CDATA[Engineering analysis software has been traditionally dominated by large commercial vendors such as MathWorks (MATLAB), MSC (NASTRAN/PATRAN), ANSYS (ANSYS and Fluent), Dassault Systemes (CATIA) and SIEMENS (NX and FEMAP). This is probably because these tools attract a comparatively small user&#8230;<p class="more-link-p"><a class="more-link" href="http://www.agileengineeringdesign.com/2008/08/open-source-computational-engineering-tools/">Read more &#8594;</a></p>]]></description>
				<content:encoded><![CDATA[<p><a href='http://www.agileengineeringdesign.com/wp-content/uploads/2008/08/f18_stream.jpg'><img src="http://www.agileengineeringdesign.com/wp-content/uploads/2008/08/f18_stream-300x262.jpg" alt="" title="f18_stream" width="300" height="262" class="alignright size-medium wp-image-62" /></a>Engineering analysis software has been traditionally dominated by large commercial vendors such as <a href="http://www.mathworks.com/">MathWorks</a> (MATLAB), <a href="http://www.mscsoftware.com/">MSC</a> (NASTRAN/PATRAN), <a href="http://www.ansys.com/">ANSYS</a> (ANSYS and Fluent), <a href="http://www.3ds.com/">Dassault Systemes</a> (CATIA) and <a href="http://www.plm.automation.siemens.com/en_us/index.shtml">SIEMENS</a> (NX and FEMAP). This is probably because these tools attract a comparatively small user base and therefore have not featured heavily within the Open Source community.  However, that assumption may now be seriously questioned, as there are numerous software tools emerging that challenge the commercial equivalents. </p>
<p><span id="more-46"></span><br />
The following list is by no means exhaustive but does identify some of the major open source solutions available in the computational engineering domain.</p>
<h3>A Complete Package</h3>
<p><a href="http://www.caelinux.com/">CAE Linux</a> is a LiveDVD Linux distribution dedicated to computer aided engineering based around softwares Salomé, Code_Aster, Code_Saturne and OpenFOAM.</p>
<h3>General Numerical Analysis</h3>
<p><a href="http://www.scilab.org/">Scilab</a> is a platform for numerical computations similar in capability to MATLAB.</p>
<p><a href="http://www.gnu.org/software/octave/">Octave</a> is also a platform for numerical computations with a command line language that is equivalent to MATLAB.</p>
<p><a href="http://www.scipy.org/">SciPy</a> is a software library for mathematics, science, and engineering with a very large community and its own conference. </p>
<h3>CAD and Geometry Tools</h3>
<p><a href="http://brlcad.org/">BRL-CAD</a> is a powerful cross-platform open source solid modeling system that includes interactive geometry editing, high-performance ray-tracing for rendering and geometric analysis, image and signal-processing tools, a system performance analysis benchmark suite, libraries for robust geometric representation, with more than 20 years of active development.</p>
<p><a href="http://www.salome-platform.org/">SALOME</a> is a generic platform for Pre and Post-Processing for numerical simulation.</p>
<p><a href="http://www.opencascade.org/">Open CASCADE Technology</a> is a software development platform that includes components for 3D surface and solid modeling, visualization, data exchange and rapid application development.</p>
<h3>FEA Codes</h3>
<p><a href="http://www.fetk.org/">FETK</a> is a collection of adaptive FE software libraries and tools for solving coupled systems of nonlinear geometric partial differential equations. The FETK libraries and tools are written in an object-oriented form of ANSI-C and in C++.</p>
<p><a href="http://www.code-aster.org">Code_Aster</a> is a FE solver capable of linear and non-linear analysis for statics and dynamics, fatigue, damage, fracture, contact, geomaterials, porous media and multi-physics coupling. <a href="http://www.code-aster.org/V2/IMG/pdf/plaq_V7_GB.pdf">English summary document.</a></p>
<h3>CFD Codes</h3>
<p><a href="http://www.opencfd.co.uk/openfoam/">OpenFOAM</a> is a CFD toolbox that can simulate a range of problems including complex fluid flows involving chemical reactions, turbulence and heat transfer, to solid dynamics, electromagnetics and the pricing of financial options.</p>
<p><a href="http://www.cfd-online.com/">CFD Online</a> provides online center CFD resources.</p>
<h3>Mesh Generation</h3>
<p><a href="http://www.geuz.org/gmsh/">Gmsh</a> is an automatic 3D finite element grid generator with a built-in CAD engine and post-processor.</p>
<p><a href="http://www.hpfem.jku.at/netgen/">NETGEN</a> is an automatic 3D tetrahedral mesh generator that is capable of working with constructive solid geometry (CSG) or boundary representation (BRep) geometry.</p>
<h3>Visualization Tools</h3>
<p><a href="http://www.paraview.org">ParaView</a> is a multi-platform application designed to visualize data sets of any size.</p>
<p><a href="https://svn.enthought.com/enthought/wiki/MayaVi">MayaVi2</a> is a general purpose visualization engine.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agileengineeringdesign.com/2008/08/open-source-computational-engineering-tools/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Tag Clouds With Wordle</title>
		<link>http://www.agileengineeringdesign.com/2008/07/tag-clouds-with-wordle/</link>
		<comments>http://www.agileengineeringdesign.com/2008/07/tag-clouds-with-wordle/#comments</comments>
		<pubDate>Wed, 23 Jul 2008 20:30:49 +0000</pubDate>
		<dc:creator>Adrian Smith</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Clouds]]></category>
		<category><![CDATA[Fun]]></category>
		<category><![CDATA[Wordle]]></category>

		<guid isPermaLink="false">http://www.agileengineeringdesign.com/?p=54</guid>
		<description><![CDATA[A while ago I wrote some code to generate tag clouds from a set of words &#8211; mainly for fun. But I have just discovered Wordle. From their web site &#8230; Wordle is a toy for generating “word clouds” from&#8230;<p class="more-link-p"><a class="more-link" href="http://www.agileengineeringdesign.com/2008/07/tag-clouds-with-wordle/">Read more &#8594;</a></p>]]></description>
				<content:encoded><![CDATA[<p>A while ago I wrote some code to generate tag clouds from a set of words &#8211; mainly for fun. But I have just discovered <a href="http://wordle.net/">Wordle</a>. From their web site &#8230;</p>
<blockquote><p>Wordle is a toy for generating “word clouds” from text that you provide. The clouds give greater prominence to words that appear more frequently in the source text. You can tweak your clouds with different fonts, layouts, and color schemes. The images you create with Wordle are yours to use however you like. You can print them out, or save them to the Wordle gallery to share with your friends. </p></blockquote>
<p>I ran this site through it and it generated the image below. Hours of fun!</p>
<p><a href='http://www.agileengineeringdesign.com/wp-content/uploads/2008/07/wordle-from-agileengineeringdesign1.png'><img src="http://www.agileengineeringdesign.com/wp-content/uploads/2008/07/wordle-from-agileengineeringdesign1.png" alt="" title="wordle-from-agileengineeringdesign1" width="499" height="311" class="aligncenter size-full wp-image-57" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.agileengineeringdesign.com/2008/07/tag-clouds-with-wordle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Open Channel Foundation</title>
		<link>http://www.agileengineeringdesign.com/2008/07/open-channel-foundation/</link>
		<comments>http://www.agileengineeringdesign.com/2008/07/open-channel-foundation/#comments</comments>
		<pubDate>Wed, 09 Jul 2008 07:18:22 +0000</pubDate>
		<dc:creator>Adrian Smith</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://www.agileengineeringdesign.com/?p=48</guid>
		<description><![CDATA[I came across the Open Channel Foundation in a quick search for the NASTRAN source code. They provide software for a wide range of engineering and scientific applications. Note: The NASTRAN source code costs around $4000 USD.]]></description>
				<content:encoded><![CDATA[<p>I came across the <a href="http://www.openchannelfoundation.org/">Open Channel Foundation</a> in a quick search for the NASTRAN source code. They provide software for a wide range of engineering and scientific applications.</p>
<p>Note: The NASTRAN source code costs around $4000 USD.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agileengineeringdesign.com/2008/07/open-channel-foundation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Software Carpentry</title>
		<link>http://www.agileengineeringdesign.com/2008/07/software-carpentry/</link>
		<comments>http://www.agileengineeringdesign.com/2008/07/software-carpentry/#comments</comments>
		<pubDate>Mon, 07 Jul 2008 18:51:35 +0000</pubDate>
		<dc:creator>Adrian Smith</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Carpentry]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Software Engineering]]></category>

		<guid isPermaLink="false">http://www.agileengineeringdesign.com/?p=47</guid>
		<description><![CDATA[Coming from an engineering background, I have seen the issues that well meaning engineers encounter when attempting to develop software. These include: Inappropriate technology or language selection Poor architecture and strong coupling between components Inadequate or non-existent testing As a&#8230;<p class="more-link-p"><a class="more-link" href="http://www.agileengineeringdesign.com/2008/07/software-carpentry/">Read more &#8594;</a></p>]]></description>
				<content:encoded><![CDATA[<p>Coming from an engineering background, I have seen the issues that well meaning engineers encounter when attempting to develop software. </p>
<p><a href='http://www.agileengineeringdesign.com/wp-content/uploads/2008/07/carpentry1.jpg'><img src="http://www.agileengineeringdesign.com/wp-content/uploads/2008/07/carpentry1.jpg" alt="" title="Carpentry Tools" height="200" class="alignright size-medium wp-image-61" /></a></p>
<p>These include:</p>
<ul>
<li>Inappropriate technology or language selection</li>
<li>Poor architecture and strong coupling between components</li>
<li>Inadequate or non-existent testing</li>
</ul>
<p>As a result they often spend much of their time fighting with the software instead of solving the design or research problem. Additionally, the reuse and extensibility of the software is limited, resulting in significant rework.</p>
<p><a href="http://www.swc.scipy.org/index.html">Software Carpentry</a> provides an excellent online course based on Open Source content intended to give scientists and engineers the fundamentals of software development.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agileengineeringdesign.com/2008/07/software-carpentry/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Are There Real Benefits to Follow the Sun and Remote Working?</title>
		<link>http://www.agileengineeringdesign.com/2008/06/are-there-real-benefits-to-follow-the-sun-and-remote-working-models/</link>
		<comments>http://www.agileengineeringdesign.com/2008/06/are-there-real-benefits-to-follow-the-sun-and-remote-working-models/#comments</comments>
		<pubDate>Fri, 27 Jun 2008 10:20:58 +0000</pubDate>
		<dc:creator>Adrian Smith</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[24hr]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Basecamp]]></category>
		<category><![CDATA[Communication]]></category>
		<category><![CDATA[Follow the Sun]]></category>
		<category><![CDATA[Lean]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[Peak Oil]]></category>
		<category><![CDATA[Remote Working]]></category>
		<category><![CDATA[Unfuddle]]></category>

		<guid isPermaLink="false">http://engenuity.wordpress.com/?p=37</guid>
		<description><![CDATA[I&#8217;ve had a couple of first hand experiences using both Follow the Sun and Remote Working models for both engineering design and software development. In each case the model was based on moving the work between sites in different time-zones/geographic&#8230;<p class="more-link-p"><a class="more-link" href="http://www.agileengineeringdesign.com/2008/06/are-there-real-benefits-to-follow-the-sun-and-remote-working-models/">Read more &#8594;</a></p>]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve had a couple of first hand experiences using both <em>Follow the Sun</em> and <em>Remote Working</em> models for both engineering design and software development. In each case the model was based on moving the work between sites in different time-zones/geographic locations and the results were mixed. Recently, the issue has come up again at work, as a result of a recent business acquisition and there have been numerous debates on how this might work. So the help clarify my thoughts, I want to consider the costs and benefits, together with some ideas for making and objective decision.</p>
<p><span id="more-38"></span></p>
<h3>Potential Benefits</h3>
<ul>
<li><strong>Reduced project delivery schedule / elapsed time (time to market)</strong><br />
This is a clear benefit, but may result in higher overall projects costs compared to an equivalent project completed by a co-located team because of the additional communications overhead.</li>
<li><strong>Access to global resources at lower costs</strong><br />
This only becomes a valid cost saving in the case where the operating and labour costs are much lower, such as in locations like India or China. In my experience the additional cost of communicating requirements and changes on a daily basis erodes the labour cost savings for all but the simplest business problems. This is probably why call and support centres are able to function (maybe not well, but well enough) using this model.</li>
<li><strong>Facilitate and enhance international partnerships</strong><br />
The case for building international partnerships is only valid when there is an appropriate business motivation and therefore not valid in all cases &#8211; especially for outsourced projects. A valid example might be the case of a business acquisition and need to harmonise organisational culture and working practices.</li>
<li><strong>Leverage skills and experience across all sites</strong><br />
The potential to leverage a broader and/or deeper skill base is a valid benefit and can offer a business unique skills otherwise unavailable and therefore provide an important competitive advantage.</li>
<li><strong>Frequent peer checking leading to increased quality</strong><br />
Peer review is a valid benefit and consistent with agile principles, but assumes that the same task is being progressed at each site rather than simply being divided amongst the sites. Peer review can be achieved in many other ways but the turn around time in this model is a real advantage.</li>
<li><strong>24hr availability without shift working</strong><br />
Business functions that require 24hr availability, such as call or support centres, can benefit from this model. However these business functions rarely involve the task being passed from one time-zone or location to another and so the required communication and infrastructure is significantly reduced.</li>
<li><strong>Reduced software licensing costs</strong><br />
In certain situations the cost of software tools is a significant proportion of the project costs. This is often true for specialised engineering tools (particularly CAD, FEA and CFD). When software licensing permits, there is a potential opportunity to share the license costs over more than one time zone thereby reducing the total number of licenses required.</li>
</ul>
<h3>Potential Costs</h3>
<ul>
<li><strong>Reduced customer contact and engagement</strong><br />
Software development and engineering design typically suffer when customer contact is reduced. However, there are instances when the constraint of limited customer contact has the effect of focusing the communication and ensuring that the limited time is used effectively. Communication can also be enhanced with web-based project management tools such as <a href="http://www.basecamphq.com/">Basecamp</a> or <a href="http://unfuddle.com/">Unfuddle</a>.</li>
<li><strong>Increased infrastructure complexity needed to facilitate data sharing</strong><br />
Information security policies typically restrict the sharing of company data across the open internet. As a result, additional infrastructure is needed to secure access to private networks.</li>
<li><strong>Higher start-up costs associated with resource allocation</strong><br />
The additional complexity and communication overhead associated with making the necessary resource available for a project typically increases the start-up costs.</li>
</ul>
<h3>Making an Objective Decision</h3>
<ul>
<li><strong>Clear business objectives</strong><br />
It is important to be clear about why a <em>Follow the Sun</em> or <em>Remote</em> working model is being considered. In the present case, when we began to discuss the issue in detail it was unclear if we were; (a) attempting to create a global development team, or (b) trying to maximize the opportunities to share developed software or (c) trying to forge stronger links between the two businesses. As it turned out the business objective was both (b) and (c) and these can be achieved without attempting to use a <em>Follow the Sun</em> working model. In any case, the set up costs are significant and so it pays to be clear about the objective as this will determine what benefits can be realized.</li>
<li><strong>Challenge the assumption that costs will be reduced</strong><br />
The advancement in communication technology has somewhat fuelled the hype around global teams and working practices. Despite this enthusiasm, the benefits can only be realised in certain situations and therefore it is important to challenge the benefits to ensure they are achievable.</li>
<li><strong>Peak Oil and travel costs</strong><br />
The case for remote working and less onsite travel will strengthen as the cost of travel increases. This will probably result in more emphasis on local resources, however the advances in communication could counter this effect.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.agileengineeringdesign.com/2008/06/are-there-real-benefits-to-follow-the-sun-and-remote-working-models/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>An Engineering Design Framework &#8211; Part 1</title>
		<link>http://www.agileengineeringdesign.com/2008/06/engineering-design-framework/</link>
		<comments>http://www.agileengineeringdesign.com/2008/06/engineering-design-framework/#comments</comments>
		<pubDate>Tue, 17 Jun 2008 19:15:40 +0000</pubDate>
		<dc:creator>Adrian Smith</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Automation]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[FemML]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[MatML]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Script]]></category>

		<guid isPermaLink="false">http://engenuity.wordpress.com/?p=10</guid>
		<description><![CDATA[The effectiveness of software application frameworks such as Ruby on Rails, automated build tools like Maven, and architectural design patterns like Model-View-Controller, demonstrate the value of a structured approach to development tasks. For me, the expression &#8220;convention over configuration&#8221; really&#8230;<p class="more-link-p"><a class="more-link" href="http://www.agileengineeringdesign.com/2008/06/engineering-design-framework/">Read more &#8594;</a></p>]]></description>
				<content:encoded><![CDATA[<p>The effectiveness of software application frameworks such as <a href="http://www.rubyonrails.org/" target="_blank">Ruby on Rails</a>, automated build tools like <a href="http://maven.apache.org/" target="_blank">Maven</a>,  and architectural design patterns like <a href="http://en.wikipedia.org/wiki/Model-view-controller">Model-View-Controller,</a> demonstrate the value of a structured approach to development tasks.  For me, the expression &#8220;convention over configuration&#8221; really sums it up. When I&#8217;m developing an application I&#8217;m far more interested in the business logic rather than the inner workings of the framework or how I should structure an application.</p>
<p>Ruby on Rails achieves this goal by simplifying web application development and removing configuration decisions so that the developer can focus on solving the business problem. With this in mind I thought there may be value in exploring an equivalent framework for mechanical part and assembly design.</p>
<p><span id="more-10"></span></p>
<p><a href="http://www.agileengineeringdesign.com/wp-content/uploads/2008/06/eda-fwk1.png"><img src="http://www.agileengineeringdesign.com/wp-content/uploads/2008/06/eda-fwk1.png?w=168" alt="" border="0" width="300" class="alignleft size-medium wp-image-20" /></a></p>
<h4>The Basic Framework</h4>
<p>The framework would be based on a file structure with names that follow the Principle of Least Surprise. The file structure would encourage engineers to organise their data and working files consistently across teams and projects. The default file structure would be generated and supported by scripts and file templates. Scripts would also be used to create new assemblies, parts, references, and generate reports. Additionally, the framework would leverage a number of established standards for engineering data – for example MatML for material property data. The following is a first pass at how this might look.</p>
<p>At the first level the framework would contain directories for configuration, management, references, scripts, templates and work.</p>
<p>The configuration directory would contain vendor, supplier and project details together with specific framework configurations.</p>
<p>The management directory would contain typical project management documents including customer supplied data, reports and commercial and technical quality plans. Registers of the data would also be included as XML and could be potentially maintained automatically using scripts.</p>
<p>The reference directory would contain engineering reference data such as MIL Handbook or ASME data that is used across the project and is approved by the customer. In some instances this data may be public domain but the majority is likely to be proprietary to either the customer or the vendor and would be separated accordingly. An important assumption (convention) would be that all data would be current and approved for use. Ensuring this assumption holds true may be difficult, especially on larger projects, but this is something the framework could help maintain using automation. Reference data would be separated into design, analysis, manufacturing and materials. Ideally data and methods would be stored in neutral formats to maximise reuse opportunities.</p>
<p>The scripts and templates directories would contain standard scripts and templates together with any customised functionality. Templates would be defined in XML and styled using XSLT. </p>
<p>The work directory would contain the parts and assemblies structured according to the part hierarchy. An XML file would store these relationships for interrogation or reporting purposes. Part numbers would be used to uniquely identify part and assembly directories. For each component the design inputs and outputs would be separated. Inputs would be further separated into geometry, applied loads and materials and ideally stored as XML files. The outputs would be representative of the design lifecycle and resulting data formats, typically CAD, FEA, structural analysis reports and manufacturing plans. The maturity of the design could be captured in an XML file for each part according to a standard product lifecycle.</p>
<h4>Framework Infrastructure and Automation</h4>
<p>A scripting language would be needed to support the framework and the obvious choice would be either Python or Ruby. Since the framework is intended for the engineering community, Python might seem like a prudent choice as it has always had a strong association with the scientific and technical computing community. However, the clean expressive nature of the Ruby language together with the Gem system for package management makes Ruby the preferred option.</p>
<p>Users would interact with the framework in the same way as they do with Ruby on Rails. For example from the command line:</p>
<div style="margin-bottom:5px;">Setting up a new project:</div>
<p><code>% engfwk project_name vendor_name client_name</code></p>
<p></p>
<div style="margin-bottom:5px;">Add a new assembly, part, material or load: </div>
<p><code>% ruby script/generate assembly assembly_name parent_assemby_name</code><br />
<code>% ruby script/generate part name parent_assembly_name</code><br />
<code>% ruby script/generate material source_filename.xml </code><br />
<code>% ruby script/generate load source_filename.xml</code></p>
<p></p>
<div style="margin-bottom:5px;">Create a progress report: </div>
<p><code>% rake report:progress</code></p>
<p></p>
<div style="margin-bottom:5px;">Clean the project file structure: </div>
<p><code>% rake verify:project</code></p>
<p></p>
<div style="margin-bottom:5px;">Generate project statistics:</div>
<p><code>% rake stats</code></p>
<h4>Benefits</h4>
<p>In my experience, on large engineering design projects the approach that different engineers take when they design or analyse parts is largely dependent on how they did it last time, rather than best practice guidelines or company standards. The benefits of coercing the design and analysis activity into a standard structure is that users know exactly where to find and store data. While this may sound minor, on large projects this makes a huge difference to team productivity, ensuring the right reference data is used and the ease with which engineers can pickup another engineers work. Another benefit to structuring data in a consistent and predictable way is that engineers would be able to developer tools or pluggable extensions to the framework that could be reused across other projects.<br />
<h4>Concerns</h4>
<p>The main concern with this idea is that the proposed framework could be considered just a simple, file-based PDM system. This is a valid concern, but the low costs and flexibility of the proposed framework probably negates this concern. </p>
<h4>Next Steps</h4>
<p>The best way to explore the potential benefits of an engineering design framework would be to try applying it to a design problem. This will be my next step&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agileengineeringdesign.com/2008/06/engineering-design-framework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Applying Agile Principles to Traditional Engineering Design</title>
		<link>http://www.agileengineeringdesign.com/2008/01/agile-engineering-design/</link>
		<comments>http://www.agileengineeringdesign.com/2008/01/agile-engineering-design/#comments</comments>
		<pubDate>Sun, 20 Jan 2008 20:49:50 +0000</pubDate>
		<dc:creator>Adrian Smith</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Automation]]></category>
		<category><![CDATA[CAD]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Digital Mock Up]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[Test Driven Development]]></category>
		<category><![CDATA[XP]]></category>

		<guid isPermaLink="false">http://engenuity.wordpress.com/2008/01/20/test-message/</guid>
		<description><![CDATA[Agile software development methods evolved as a reaction to traditional project management methods that focused on documentation, change control and the linear execution of tasks. Agile methods recognize the complex and highly non-linear nature of software development and address the&#8230;<p class="more-link-p"><a class="more-link" href="http://www.agileengineeringdesign.com/2008/01/agile-engineering-design/">Read more &#8594;</a></p>]]></description>
				<content:encoded><![CDATA[<p>Agile software development methods evolved as a reaction to traditional project management methods that focused on documentation, change control and the linear execution of tasks.  Agile methods recognize the complex and highly non-linear nature of software development and address the associated risks by encouraging a range of working practices. While these practices are well accepted within the software industry, they have not yet permeated into the more traditional engineering design disciplines found in the aerospace or automotive engineering industries. The following considers the how some of the main agile principles and practices associated with <a href="http://www.scrumalliance.org/" target="_blank">Scrum</a>, <a href="http://www.extremeprogramming.org/" target="_blank">eXtreme Programming </a>and <a href="http://en.wikipedia.org/wiki/Test-driven_development" target="_blank">Test-Driven Development</a>, could be applied.
<p>
<span id="more-6"></span></p>
<h4>Small Regular Deliverables</h4>
<p>At the heart of agile is the incremental delivery of projects in small regular intervals, rather than one large delivery at the end. Each of the delivery iterations is a subset of the entire development lifecycle and is demonstrated to the customer. This has the effect of reducing the risks associated with the development progressing in a direction that is not consistent with customer requirements. Applying this principle to engineering design does have some limitations, particularly since the cost and complexity of construction usually prohibits multiple iterations. However, within the design phase of an engineering project, there are good opportunities to use this approach and it is this part of the product life cycle that has been considered.</p>
<p>During the design phase of an engineering project, milestones are often introduced to mark preliminary and critical phases of the design. These milestones do encourage incremental delivery, but they are neither small enough, nor regular enough to be consistent with agile principles. Modern CAD tools enable rapid development of digital mock-ups that can fulfil this objective. The CAD model can contain sufficient design detail to accurately represent the product and surrounding structure. As a result the CAD model can be used as the basis for verifying many different acceptance criteria. Additionally, rapid prototyping systems enable the creation of physical mock-ups that greatly enhance customer engagement and interaction with the design process.</p>
<p>From an agile perspective these deliverables are important for customer engagement and verification of the design direction. However, prototypes that do not add directly to the final product are not valued as highly as actual progress toward the final delivered product. That said, there is still significant opportunity to make incremental deliverables part of the design process and no technical reason why this cannot occur throughout this phase of an engineering project.</p>
<h4>Deliverables Measure Progress</h4>
<p>Customers often propose an earned value schedule for a project that is based on deliverables and is linked to either financial payments, or the release of additional project funds. These types of earned value measures are compatible with agile principles, particularly if they are granular enough to encourage close customer involvement in the project.</p>
<p>For engineering design projects, the CAD model is increasingly becoming a digital representation of the complete product including geometry, materials, manufacturing details and even the original design intent. Measuring the progress of CAD model maturity and conformance with acceptance criteria will provide the most agile measure of project progress.</p>
<h4>Customer Collaboration</h4>
<p>Customer satisfaction is considered important in engineering design projects, but the value of customer involvement in the development and review of the design as it progresses, is not widely utilized. Many project resource models fail to consider the benefits that can be achieved through close engagement with the customer, even for tasks that may appear well defined and understood.</p>
<p>Traditionally, the approach has been to develop highly prescriptive specifications and then negotiate changes with the customer using forms and documents such as Engineering Change Notes. In an agile environment, changes are driven by the customer and embraced by the development team. During the design phase of an engineering project there appears no reason why the same approach cannot be used. Additionally, when collaboration occurs between the customer and the engineering design team, the customer will tend to accept a greater level of responsibility for decisions as they can clearly see their impact on scope, schedule and cost.</p>
<p>The Scrum model advocates meetings that occur daily and at the end of each delivery iteration or sprint. The daily meetings involve the customer and all team members and are an opportunity to discuss each team member’s progress, plans and any obstacles. The iteration review and planning meetings also involve the customer and is their opportunity to prioritise the order in which features are implemented. This ensures that the development team are always working on the features that are of the highest value to the customer. These meetings may not always be practical because of team size, geographic locations or prior commitments; however, even at a small scale they have significant value. In large projects where the majority of engineering design work occurs in a separate location, a daily telephone or internet conference call with all team members will achieve a similar result and is a technique that is very valuable.</p>
<h4>Simplicity and Design</h4>
<p>Starting with the simplest possible solution that satisfies customer requirements and then maturing the solution during course of the project, is a common agile practice. This approach is somewhat at odds with software architecture design principles, which often need to be addressed early in a project. The conflict is typically resolved by developing software in such a way that it can be re-structured as easily as possible.</p>
<p>The main techniques for achieving this include: maintaining loose coupling between components and implementing automated tests. The loose coupling provides the opportunity to easily replace components or restructure the overall design with minimum impact. Automated tests allow architectural or component changes to be verified quickly thus further lowering the cost associated with changing and evolving the solution through the course of the project. This process is often referred to as <a href="http://www.refactoring.com/" target="_blank">refactoring</a>.</p>
<p>For engineering design projects, implementing the simplest possible solution is an implicit assumption for most engineers and therefore compatible with agile principles. What is lacking however, is automated testing that verifies design changes. Significant work has already been done to automate structural analysis methods using both computational and classical analysis methods. However, this analysis is generally performed manually as a supplementary activity, rather than a concurrent activity that is automated. Therefore an opportunity exists to implement automatic design verification against customer defined acceptance criteria.</p>
<h4>Embracing Changing Requirements</h4>
<p>Traditionally, engineering project management practices have emphasized the need to control change. This is partly because project change has been closely associated with project cost, especially within a fixed price environment. Conversely, agile principles are based around an assumption that change will inevitably occur during the course of a project and that it is better to position the solution and working practices so that they can easily adapt. Furthermore, in an agile project it will be necessary to compromise at least one of either project; scope, cost or schedule and customers need to appreciate that they are responsible for guiding this compromise.</p>
<p>The agile practices of refactoring and automated testing help, software projects adapt to change, while the close customer involvement ensures that changes are identified as early as possible. For engineering design projects these principles can be applied as equivalent technical solutions exist, however the costs associated with automated testing can be very high. Consequently, engineers typically question the return on investment associated with automated verification. Additionally, engineers often take a conservative approach to alternate design methods and therefore changes are typically met with strong resistance. That said, there is generally a trend towards engineering automation and this is likely to evolve into automated testing.</p>
<h4>Pair Programming/Working</h4>
<p>Pair programming has attracted controversy because managers typically assume that having two developers implement the same functionality is only half as efficient as conventional working models. As an agile practice, pair programming has the effect of increasing software quality through peer review. Quality is critical as it ensures that the resultant software is in a state where it can be adapted to meet changing or additional requirements.</p>
<p>In a typical engineering design environment, the practice of pair working is uncommon. This maybe in part because of how tasks are broken down and matched to people with appropriate skills and experience. Another reason maybe the perceived cost ineffectiveness. Either way, the clear benefits that pair working provides should justify its adoption more widely.</p>
<p>With this in mind, there may be better ways to decompose engineering design tasks so as to exploit the skill and experience combinations that pair working offers. An example could be pairing a structural designer and analyst, instead of having the designer initiate structural layouts and the analyst size the structural features. This would encourage a more concurrent approach and result in a higher quality design and less rework.</p>
<h4>Summary</h4>
<p>Agile methods have become the default approach for software development projects. Many of the agile practices and principles can be more generally applied to other disciplines including engineering design. The opportunity for engineering design organizations is to improve the reliability of project success and the quality of resultant designs.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agileengineeringdesign.com/2008/01/agile-engineering-design/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
