<?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>On Responsive Development &#187; Object Modeller Log</title>
	<atom:link href="http://www.responsive.se/thomas/category/object-modeller-log/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.responsive.se/thomas</link>
	<description>Thomas on Responsive Development of Systems and Software</description>
	<lastBuildDate>Tue, 15 Jun 2010 07:47:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>&#8220;Pairing with Thomas&#8221;</title>
		<link>http://www.responsive.se/thomas/2006/12/13/pairing-with-thomas/</link>
		<comments>http://www.responsive.se/thomas/2006/12/13/pairing-with-thomas/#comments</comments>
		<pubDate>Wed, 13 Dec 2006 10:31:32 +0000</pubDate>
		<dc:creator>Thomas</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Object Modeller Log]]></category>
		<category><![CDATA[TDD]]></category>

		<guid isPermaLink="false">http://www.responsive.se/thomas/2006/12/13/pairing-with-thomas/</guid>
		<description><![CDATA[I came across Ron Jeffries book Extreme Programming Adventures in C# on Agile Alliance members page, a book which he thinks should be called &#8220;Pairing with Ron&#8221;. It&#8217;s about the development of a small XML editing tool he did. But it describes every little test, refactoring and other anecdotes that are relevant. I thought this [...]]]></description>
			<content:encoded><![CDATA[<p>I came across Ron Jeffries book <a href="http://www.amazon.com/exec/obidos/ASIN/0735619492/ref=nosim/armaties" target="_blank">Extreme Programming Adventures in C#</a> on Agile Alliance members page, a book which he thinks should be called &#8220;Pairing with Ron&#8221;. It&#8217;s about the development of a small XML editing tool he did. But it describes every little test, refactoring and other anecdotes that are relevant.</p>
<p>I thought this to be fairly interesting, and since I have just started on a similar journey I though I&#8217;d start some kind of log of it here. Of course I have already done some basic things so I try to make this log catch up quickly.</p>
<p>I am trying to build an Object Application Modeller. The basic functionallity is to be able to define classes with attributes, relations and views. I have seen many applications where this is actually the basic functionallity, so maybe this tool exists already but since it&#8217;s a journey the goal is not the value, the journey in itself is.</p>
<p>The trick is to be able to &#8220;generate&#8221; an application from these definitions, with support for persistence of the instances of the classes and relations of course. *AND* with the possibility to upgrade, which will introduce the need to refactor the persistent storage (a.k.a database) on upgrade.</p>
<p>I&#8217;m sorry that I will not be able to remember all the steps I have already taken, but here are the initial list of User Stories:</p>
<ul>
<li>Define and Delete a Class</li>
<li>Save an Application Definition and Restore it</li>
<li>Add a (String/Integer type) attribute to a Class and Delete it</li>
<li>Create instances of the defined classes (implies deploying the Application)</li>
<li>Display instances as a table with attibutes</li>
<li>Select which attributes to show</li>
<li>Sort and filter data according to specific column</li>
<li>Define Relations with attributes between specified Classes</li>
<li>Show instances with attributes in a tree using a specific relation showing attributes</li>
<li>Show instances with all relations</li>
<li>Deploy an updated Application Definition to an existing Application</li>
</ul>
<p>So I started with a test that creates a Dictionary, adds a Class to it and then looks up that same Class. No problems there, implemented the Dictionary as an ArrayList which took Class.</p>
<p>Then save and restore, almost as straight forward. Decided to use a simple text file with one line per Class.</p>
<p>Then, GUI! Since many have talked about thin GUI:s I first decided to use the Eclipse Visual Class editor to just add a simple GUI on top of the functions. That was just somewhat successful. And it felt bad. Why couldn&#8217;t I do TDD on the GUI?</p>
<p>Having introduced Automatic Testing of the webapplication in my current project I knew there where a multitude of GUI testers, but I surely did not want to go down the path that lead us to Mercury Quicktest Professional!!</p>
<p>But I found <a href="http://sourceforge.net/projects/abbot" target="_blank">Abbot, &#8220;A Better Bot&#8221;</a>! It drives and inspects Java GUI, and JUnit functionallity to boot! So I added some tests to drive my GUI components, and of course I had to refactor those a bit to make the testing easier.</p>
<p>So now I could add tests to drive adding attributes. And since I implemented those as ArrayLists too I refactored out an ItemList to hold Items which became a super class to Class and Attribute.</p>
<p>I have just added a test to drive adding attributes from the GUI. The first test is to select a Class, press the Edit button and ensure that an &#8220;Edit Attributes for Class&#8221; window appears. And that&#8217;s where I am now.</p>
<p>To be continued&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.responsive.se/thomas/2006/12/13/pairing-with-thomas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
