<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Object Mentor Blog: sinking castles</title>
    <link>http://blog.objectmentor.com/articles/2007/01/31/sinking-castles</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description></description>
    <item>
      <title>sinking castles</title>
      <description>I recently heard it suggested that large scale software projects should be built 3 times before releasing them:
	&lt;ul&gt;
	&lt;li&gt;once to prototype&lt;/li&gt;
		&lt;li&gt;once to prove out design&lt;/li&gt;
		&lt;li&gt;once with the intent of release.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;Today I heard this quote from Monty Python:&lt;/p&gt;


	&lt;p&gt;&amp;#8220;I built a castle in the swamp and it sunk. I built a second castle and it sunk too. I built a third castle and it burned down and then sunk. But the fourth castle, Ahhhh! That one stood.&amp;#8221;&lt;/p&gt;


	&lt;p&gt;Maybe they were on to something&amp;#8230;&lt;/p&gt;</description>
      <pubDate>Wed, 31 Jan 2007 17:54:11 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:cda6f89f-3ee8-41ab-9fc0-91d27bddfaa9</guid>
      <author>David Chelimsky</author>
      <link>http://blog.objectmentor.com/articles/2007/01/31/sinking-castles</link>
      <category>David's Delirium</category>
    </item>
    <item>
      <title>"sinking castles" by Esko Luontola</title>
      <description>&lt;p&gt;IMHO, all software projects (with an user interface) should first be built as a paper prototype, which would then be tested to verify that all the users&amp;#8217; tasks can be accomplished with the program effectively. In other words, acceptance testing will be done before a single line of code is written.&lt;/p&gt;


The process in TDD terminology:
	&lt;ol&gt;
	&lt;li&gt;find goal-based use cases based on the user&amp;#8217;s workflow (TDD: write unit tests)&lt;/li&gt;
		&lt;li&gt;design a user interface with which the goal-based use cases can be completed (TDD: write code for unit tests)&lt;/li&gt;
		&lt;li&gt;test that the use cases can be completed effectively  (TDD: run unit tests)&lt;/li&gt;
		&lt;li&gt;refactor the user interface to be more effective and clean (TDD: refactor the code to make it cleaner)&lt;/li&gt;
		&lt;li&gt;return to any of the previous steps until the design is complete (TDD: iterative development)&lt;/li&gt;
		&lt;li&gt;proceed to the implementation phase&lt;/li&gt;
	&lt;/ol&gt;


	&lt;p&gt;For more information: &lt;a href="http://www.cs.helsinki.fi/u/salaakso/papers/GUIDe.html" rel="nofollow"&gt;http://www.cs.helsinki.fi/u/salaakso/papers/GUIDe.html&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Fri, 02 Feb 2007 13:51:58 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:2f6af174-d253-4536-87d1-8e7a353f1c9e</guid>
      <link>http://blog.objectmentor.com/articles/2007/01/31/sinking-castles#comment-76</link>
    </item>
  </channel>
</rss>
