<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.2.1" -->
<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/"
	>

<channel>
	<title>IT with Passion</title>
	<link>http://dawelbeit.info</link>
	<description>Rich Internet Applications design methodologies</description>
	<pubDate>Tue, 29 Jul 2008 20:33:19 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.2.1</generator>
	<language>en</language>
			<item>
		<title>The frustration with IE</title>
		<link>http://dawelbeit.info/2008/07/13/the-frustration-with-ie/</link>
		<comments>http://dawelbeit.info/2008/07/13/the-frustration-with-ie/#comments</comments>
		<pubDate>Sun, 13 Jul 2008 15:15:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://dawelbeit.info/2008/07/13/the-frustration-with-ie/</guid>
		<description><![CDATA[Until recently I did not like JavaScript, mainly due to the inability to find bugs and debug the code. Years of developing for IE I learnt that using JavaScript is a muddy path full of IE error popups. Until I came across Firebug and I started using Firefox for developing and testing Web pages that [...]]]></description>
			<content:encoded><![CDATA[<p>Until recently I did not like JavaScript, mainly due to the inability to find bugs and debug the code. Years of developing for IE I learnt that using JavaScript is a muddy path full of IE error popups. Until I came across Firebug and I started using Firefox for developing and testing Web pages that use JavaScript. Slowly I could write and debug JavaScript code and understand the DOM and the JavaScript OO nature by inspecting objects in Firebug. Now I can write OO JavaScript for any purpose without the frustration about loose JavaScript typing or the unexplained error messages.</p>
<p>Sounds great, but I get really frustrated when I write JavaScript code that works fine in Firefox and Safari, but errors in IE. These errors usually result in hours of cursing and hair pulling, which lead me to believe that if Microsoft did not bundle IE free with Windows in the first place it would have never been the first browser anyway. Normal people do not really care, but for developers IE is a great pain. You either develop for IE or other browsers, or go to great length and cost to ensure your code works in at least IE, Firefox, Safari and may be Opera. The cross browser compatibility issue is hindering the adoption of browser based Rich Internet Applications that are based on JavaScript, DHTML and CSS. Many toolkits such as Dojo and ExtJS are compatible with many browsers, but you have to write your own JavaScript code which might not be compatible with all browsers.</p>
<p>I have faced two issues with IE where I pulled my hair for a while, but was glad to find some answers in Google before I ended up with no hair, apparently many other developers experienced the hair pulling over IE behaviour and if you feel the same you are not alone.</p>
<p><strong>First problem: tr.innerHTML</strong>, I developed a nice piece of JavaScript that manipulates a table and dynamically create and delete table rows based on available data and user’s actions. Since I developed it in Firefox I used the innerHTML function to populate the table columns in the table rows, a piece of code that worked fine in Firefox, but failed miserably in IE, after some hair pulling and Googling the answer was you can not use innerHTML with TR in IE. You have to use the tr.deleteCell and insertCell functions I had to grow my code considerably to also work in IE.</p>
<p><strong>Second problem: IE error message ‘Expected identifier, string or number’</strong>. I got this error message on some code that worked successfully in Firefox. And although the Microsoft Script debugger pointed me at the error location, I just could not see any problem with the code. A couple of hours of frustration and hair pulling I decided to search for the error message in Google and voila I found the answer it is to do with comma in the code below which will work successfully in Firefox, but fail in IE:</p>
<p><font color="blue"><br />
// private functions<br />
/**<br />
* @return window if found<br />
* @param {Object} windowName<br />
*/<br />
var getWindow = function(windowName) {<br />
var win = Ext.WindowMgr.get(windows[windowName]);<br />
if(!win)    {<br />
// create a new window<br />
win = new Church.windows.addChurchWindow({<br />
id: &#8216;add-church&#8217;<font color="red"><strong><u>,</u></strong><u></u></font><br />
});<br />
if (desktopEl) {<br />
win.render(desktopEl);<br />
}<br />
}<br />
return win;<br />
};</font><br />
I think I left this comma in place by mistake after deleting a second line. Anyway I would not expect more from IE, I just wish everyone will be convinced to move away from IE and use Firefox or Safari, so we developers don’t have to go through the pain of developing for IE. And I also wish that IE would degrade gracefully in case of the issues mentioned above and many others.</p>
]]></content:encoded>
			<wfw:commentRss>http://dawelbeit.info/2008/07/13/the-frustration-with-ie/feed/</wfw:commentRss>
		</item>
		<item>
		<title>An alternative to SOHO routers</title>
		<link>http://dawelbeit.info/2008/06/29/an-alternative-to-soho-routers/</link>
		<comments>http://dawelbeit.info/2008/06/29/an-alternative-to-soho-routers/#comments</comments>
		<pubDate>Sun, 29 Jun 2008 19:54:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Linux &amp; Networking]]></category>

		<guid isPermaLink="false">http://dawelbeit.info/2008/06/29/an-alternative-to-soho-routers/</guid>
		<description><![CDATA[I had many routers in the past and had problems with almost all of them. ISP supplied routers are usually okay for casual usage, if you want something where you have advanced configurations such as custom routing, VPN, etc…you have to shed £50+ on a decent router. For me I had a reliable network with [...]]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal"><span lang="EN-GB">I had many routers in the past and had problems with almost all of them. ISP supplied routers are usually okay for casual usage, if you want something where you have advanced configurations such as custom routing, VPN, etc…you have to shed £50+ on a decent router. For me I had a reliable network with two subnets, but the weakest point was the router, so I set on a quest to replace my router.</span></p>
<p class="MsoNormal">&nbsp;</p>
<p> <img src="http://www.omer.dawelbeit.info/images/homelan_network.jpg" title="My Homelan Layout" alt="My Homelan Layout" /></p>
<p class="MsoNormal">&nbsp;</p>
<p class="MsoNormal"><st1:place w:st="on"><span lang="EN-GB">SOHO</span></st1:place><span lang="EN-GB"> routers are not designed for heavy use or to handle a large number of UDP connections usually required by VPN connections. This is a great pain for someone working from home and using VPN to connect to their company’s network. So cheap <st1:place w:st="on">SOHO</st1:place> and ISP supplied routers tend to run very slow and drop the connections sometimes if they get overheated or if they have to handle many VPN or P2P connections. There is a good article on the &#8217;slow running&#8217; of routers on <a href="http://www.dd-wrt.com/wiki/index.php/Router_Slowdown">dd-wrt.com</a> website. For me I’ve decided to ditch my router and look for an alternative, reliable and cheap solution.</span></p>
<p class="MsoNormal"><span lang="EN-GB"><o:p></o:p>Using a computer as a router seemed as a good idea at the time, after all <st1:place w:st="on">SOHO</st1:place> routers have the following features:</span></p>
<ul style="margin-top: 0cm" type="disc">
<li><span lang="EN-GB"><o:p> </o:p></span><span lang="EN-GB">Microprocessors run at around 75MHz </span></li>
<li class="MsoNormal"><span lang="EN-GB">Have a number of RJ45 interfaces, at least one for WAN and one      for LAN access </span></li>
<li class="MsoNormal"><span lang="EN-GB">Use IP Masquerading (NAT) to allow LAN computers to access the      WAN using a single WAN IP address.</span></li>
</ul>
<p class="MsoNormal"><span lang="EN-GB"><o:p> </o:p><br />
Now all the above features are achievable using a computer. I looked around and couldn’t find a 75MHz computer and I regretted throwing away my old 8086 Amstrad. Anyway I had a Pentium 1 233MHz MMX motherboard with a processor lingering around since 1998 so I decided to use it to build a computer and use as a network router. This is what I needed:</span></p>
<ul style="margin-top: 0cm" type="disc">
<li><span lang="EN-GB"><o:p> </o:p></span><span lang="EN-GB">Pentium 1 233MHz MMX motherboard with a processor</span></li>
<li class="MsoNormal"><span lang="EN-GB">2 Network cards, one for WAN (Red Interface) and one for LAN      (Green Interface)</span></li>
<li class="MsoNormal"><span lang="EN-GB">An old 5GB hard disk</span></li>
<li class="MsoNormal"><span lang="EN-GB">256MB of memory</span></li>
<li class="MsoNormal"><span lang="EN-GB">An old VGA display adapter</span></li>
<li class="MsoNormal"><span lang="EN-GB">Some sexy neon lights and bio-hazard logo to spicen up things.</span></li>
<li class="MsoNormal"><span lang="EN-GB">Keyboard and monitor only needed to setup the OS, after that      they can be taken away</span></li>
</ul>
<p><img src="http://www.omer.dawelbeit.info/images/pc_router.JPG" title="PC Router Hardware" alt="PC Router Hardware" /></p>
<p class="MsoNormal"><span lang="EN-GB">For the operating system, using a lightweight Linux distro seemed like a good option, so searching around on Google I found two good Linux distros for firewall routers: <a href="http://www.smoothwall.org/">SmoothWall</a> and <a href="http://www.ipcop.org/">IPCop</a>. Having briefly looked at the manual for both, it seemed like IPCop has most of the features I needed specially the ability to setup custom routing. I run two subnets with the traffic between them hitting the router, so the router needed to forward the traffic between the two subnets as configured, bearing in mind the router is not the gateway between these two subnets, I use a Fedora Core server for this purpose.</span></p>
<p class="MsoNormal">&nbsp;</p>
<p><img src="http://www.omer.dawelbeit.info/images/ipcop_ui.jpg" title="IPCop Admin Web UI" alt="IPCop Admin Web UI" /></p>
<p class="MsoNormal">&nbsp;</p>
<p class="MsoNormal"><span lang="EN-GB">IPCop is basically a cut-down Linux destro with an Admin Web interface. There is no graphical interface, but remote login through SSH is available and can be switched on or off as required. There are so many other features available from the Admin Web interface such as Intrusion Detection, Traffic Shaping and Dynamic DNS, to mention only a few. Ever since it was installed, my IPCop Firewall Router is running effortlessly day-in and day-out without any issues so farewell routers.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://dawelbeit.info/2008/06/29/an-alternative-to-soho-routers/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Mapping ER-Model into JPA Annotations</title>
		<link>http://dawelbeit.info/2008/06/24/mapping-er-model-into-jpa-annotations/</link>
		<comments>http://dawelbeit.info/2008/06/24/mapping-er-model-into-jpa-annotations/#comments</comments>
		<pubDate>Tue, 24 Jun 2008 22:30:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://dawelbeit.info/2008/06/24/mapping-er-model-into-jpa-annotations/</guid>
		<description><![CDATA[&#160;
Java Persistence API  (JPA) coined with Java 5 Annotations made Object to Relational Mapping (ORM) a bliss. The problem is most of the detailed documentations available usually consider JPA from the POJOs perspective, but what if we are creating a JPA application that should persist to an existing database. An Entity Relationship diagram can [...]]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal" style="text-align: justify">&nbsp;</p>
<p class="MsoNormal" style="text-align: justify">Java Persistence API  (JPA) coined with Java 5 Annotations made Object to Relational Mapping (ORM) a bliss. The problem is most of the detailed documentations available usually consider JPA from the POJOs perspective, but what if we are creating a JPA application that should persist to an existing database. An Entity Relationship diagram can easily be constructed for existing databases using a tool such as <a href="http://www.toadsoft.com/toaddm/toad_data_modeler.htm">Toad Data Modeler</a>. From the ER Model we can work backwards to create the JPA annotations required to presist to the existing database. This article provides a mapping that can be used to create the JPA annotations for an existing database&#8217;s ER Model using Hibernate&#8217;s implementation of JPA.</p>
<p class="MsoNormal" style="text-align: justify"><span lang="EN-GB">I prefer to use the <a href="http://openlearn.open.ac.uk/mod/resource/view.php?id=190584" target="_blank">crow’s feet notation</a> in the ER model to represent the cordiality of the relations and the participation conditions as explained in Table 1 below. An example of an ER model that uses this notation is shown in Figure 1 below.<br />
</span></p>
<p class="MsoNormal"><span lang="EN-GB"><o:p> </o:p></span></p>
<p class="StyleCaptionJustified"><a title="_Toc199911587" name="_Toc199911587"></a><span lang="EN-GB">Table </span><!--[if supportFields]><span style='mso-bookmark:_Toc199911587'></span><span style='mso-element:field-begin'></span><span style='mso-bookmark:_Toc199911587'><span lang=EN-GB><span style='mso-spacerun:yes'> </span>SEQ Table \* ARABIC <span style='mso-element: field-separator'></span></span></span><![endif]--><span><span lang="EN-GB"><span>1</span></span></span><!--[if supportFields]><span style='mso-bookmark:_Toc199911587'></span><span style='mso-element:field-end'></span><![endif]--><span><span lang="EN-GB"> – Crow’s feet notation used in the ER- modelling</span></span></p>
<table class="MsoTableGrid" style="border: medium none ; border-collapse: collapse" border="1" cellpadding="0" cellspacing="0">
<tr>
<td style="border: 1pt solid windowtext; padding: 0cm 5.4pt; background: #e6e6e6 none repeat scroll 0% 50%; width: 221.55pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" valign="top" width="295">
<p class="MsoNormal"><strong><span lang="EN-GB">Symbol<o:p></o:p></span></strong></p>
</td>
<td style="border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; background: #e6e6e6 none repeat scroll 0% 50%; width: 221.55pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" valign="top" width="295">
<p class="MsoNormal"><strong><span lang="EN-GB">Meaning<o:p></o:p></span></strong></p>
</td>
</tr>
<tr>
<td style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 221.55pt" valign="top" width="295">
<p class="MsoNormal"><span lang="EN-GB">Open blob - <!--[if gte vml 1]><v:shapetype    id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t"    path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f">    <v:stroke joinstyle="miter"/>    <v:formulas>     <v:f eqn="if lineDrawn pixelLineWidth 0"/>     <v:f eqn="sum @0 1 0"/>     <v:f eqn="sum 0 0 @1"/>     <v:f eqn="prod @2 1 2"/>     <v:f eqn="prod @3 21600 pixelWidth"/>     <v:f eqn="prod @3 21600 pixelHeight"/>     <v:f eqn="sum @0 0 1"/>     <v:f eqn="prod @6 1 2"/>     <v:f eqn="prod @7 21600 pixelWidth"/>     <v:f eqn="sum @8 21600 0"/>     <v:f eqn="prod @7 21600 pixelHeight"/>     <v:f eqn="sum @10 21600 0"/>    </v:formulas>    <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>    <o:lock v:ext="edit" aspectratio="t"/>   </v:shapetype><v:shape id="_x0000_i1028" type="#_x0000_t75" style='width:10.5pt;    height:11.25pt'>    <v:imagedata src="file:///C:\DOCUME~1\omerio\LOCALS~1\Temp\msohtml1\12\clip_image001.emz"     o:title=""/>   </v:shape><![endif]--><!--[if !vml]--><img src="http://www.omer.dawelbeit.info/downloads/blob1.gif" v:shapes="_x0000_i1028" height="15" width="14" /><!--[endif]--></span></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 221.55pt" valign="top" width="295">
<p class="MsoNormal"><span lang="EN-GB">Zero or one participation</span></p>
</td>
</tr>
<tr>
<td style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 221.55pt" valign="top" width="295">
<p class="MsoNormal"><span lang="EN-GB">Closed blob - <!--[if gte vml 1]><v:shape    id="_x0000_i1025" type="#_x0000_t75" style='width:10.5pt;height:10.5pt'>    <v:imagedata src="file:///C:\DOCUME~1\omerio\LOCALS~1\Temp\msohtml1\12\clip_image003.emz"     o:title=""/>   </v:shape><![endif]--><!--[if !vml]--><img src="http://www.omer.dawelbeit.info/downloads/blob2.gif" v:shapes="_x0000_i1025" height="14" width="14" /><!--[endif]--></span></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 221.55pt" valign="top" width="295">
<p class="MsoNormal"><span lang="EN-GB">Exactly one participation</span></p>
</td>
</tr>
<tr>
<td style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 221.55pt" valign="top" width="295">
<p class="MsoNormal"><span lang="EN-GB">Open blob and crow’s foot - <!--[if gte vml 1]><v:shape    id="_x0000_i1026" type="#_x0000_t75" style='width:12.75pt;height:13.5pt'>    <v:imagedata src="file:///C:\DOCUME~1\omerio\LOCALS~1\Temp\msohtml1\12\clip_image005.emz"     o:title=""/>   </v:shape><![endif]--><!--[if !vml]--><img src="http://www.omer.dawelbeit.info/downloads/blob3.gif" v:shapes="_x0000_i1026" height="18" width="17" /><!--[endif]--></span></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 221.55pt" valign="top" width="295">
<p class="MsoNormal"><span lang="EN-GB">Zero or more participation</span></p>
</td>
</tr>
<tr>
<td style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 221.55pt" valign="top" width="295">
<p class="MsoNormal"><span lang="EN-GB">Closed blob and crow’s foot - <!--[if gte vml 1]><v:shape    id="_x0000_i1027" type="#_x0000_t75" style='width:12.75pt;height:12pt'>    <v:imagedata src="file:///C:\DOCUME~1\omerio\LOCALS~1\Temp\msohtml1\12\clip_image007.emz"     o:title=""/>   </v:shape><![endif]--><!--[if !vml]--><img src="http://www.omer.dawelbeit.info/downloads/blob4.gif" v:shapes="_x0000_i1027" height="16" width="17" /><!--[endif]--></span></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 221.55pt" valign="top" width="295">
<p class="MsoNormal"><span lang="EN-GB">One or more participation</span></p>
</td>
</tr>
</table>
<p class="MsoNormal" style="text-align: justify">&nbsp;</p>
<p class="MsoNormal" style="text-align: justify">&nbsp;</p>
<p class="MsoNormal" style="text-align: justify"><a href="http://www.omer.dawelbeit.info/downloads/ER-Diagram%20final.gif" target="_blank"><img src="http://www.omer.dawelbeit.info/downloads/ER-Diagram%20final.gif" height="412" width="605" /></a></p>
<p class="MsoNormal" style="text-align: justify" align="center"> Figure 1 - Sample ER Model using crow&#8217;s feet annotation</p>
<p class="MsoNormal" style="text-align: justify">&nbsp;</p>
<p class="MsoNormal" style="text-align: justify"><span lang="EN-GB">The approach that can be used to map relations form the E-R model into JPA annotations is summarised in Table 2 below. This approach can be followed to map the entity classes into the existing data schema using JPA annotations.  Good database design should resolve all the Many to Many relationships during the logical database design stage by introducing a third dependent relation, and hence there was no need to use @ManyToMany JPA mapping. </span></p>
<p class="MsoNormal" style="text-align: justify"><span lang="EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify"><span lang="EN-GB">I have also discovered that the Cascade annotation for foreign key updates on the parent table should not be included in the child entity as this will result in the deletion of the parent row whenever a child row is deleted. It was clear that this constraint should be implemented in the database schema and not included in the JPA annotation as it does not have the desired effect.</span></p>
<p><span lang="EN-GB"><o:p></o:p></span><a title="_Toc199911588" name="_Toc199911588"></a><span lang="EN-GB">Table 2</span><span><span lang="EN-GB"><span></span></span></span><!--[if supportFields]><span style='mso-bookmark:_Toc199911588'></span><span style='mso-element:field-end'></span><![endif]--><span><span lang="EN-GB"> – ER-Model and Relational Mode to JPA and Hibernate mappings</span></span></p>
<table class="MsoTableGrid" style="border: medium none ; border-collapse: collapse" border="1" cellpadding="0" cellspacing="0">
<tr>
<td style="border: 1pt solid windowtext; padding: 0cm 5.4pt; background: #e0e0e0 none repeat scroll 0% 50%; width: 86.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" valign="top" width="115">
<p class="MsoNormal"><strong><span style="font-size: 10pt" lang="EN-GB">ER-Model <o:p></o:p></span></strong></p>
</td>
<td style="border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; background: #e0e0e0 none repeat scroll 0% 50%; width: 187.85pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" valign="top" width="250">
<p class="MsoNormal"><strong><span style="font-size: 10pt" lang="EN-GB">Relational   Mode <o:p></o:p></span></strong></p>
</td>
<td style="border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; background: #e0e0e0 none repeat scroll 0% 50%; width: 168.85pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" valign="top" width="225">
<p class="MsoNormal"><strong><span style="font-size: 10pt" lang="EN-GB">JPA   Annotation<o:p></o:p></span></strong></p>
</td>
</tr>
<tr>
<td style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 86.4pt" valign="top" width="115">
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB">Entity<o:p></o:p></span></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 187.85pt" valign="top" width="250">
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB">Relation<o:p></o:p></span></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 168.85pt" valign="top" width="225">
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB">@Entity<o:p></o:p></span></p>
</td>
</tr>
<tr>
<td style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 86.4pt" valign="top" width="115">
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB">Identifier<o:p></o:p></span></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 187.85pt" valign="top" width="250">
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB">Primary key<o:p></o:p></span></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 168.85pt" valign="top" width="225">
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB">@Id<o:p></o:p></span></p>
</td>
</tr>
<tr>
<td style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 86.4pt" valign="top" width="115">
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB"><o:p> </o:p></span></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 187.85pt" valign="top" width="250">
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB">Alternate Key<o:p></o:p></span></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 168.85pt" valign="top" width="225">
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB">@UniqueConstraint(columnNames   = {&#8221;staff_id&#8221;, &#8220;holiday_year&#8221;})<o:p></o:p></span></p>
</td>
</tr>
<tr>
<td colspan="3" style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 443.1pt" valign="top" width="591">
<p class="MsoNormal"><strong><span style="font-size: 10pt" lang="EN-GB">Relationships:<o:p></o:p></span></strong></p>
</td>
</tr>
<tr>
<td style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 86.4pt" valign="top" width="115">
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB">One to One<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: center" align="center"><span style="font-size: 10pt" lang="EN-GB"><!--[if gte vml 1]><v:shapetype id="_x0000_t75"    coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe"    filled="f" stroked="f">    <v:stroke joinstyle="miter"/>    <v:formulas>     <v:f eqn="if lineDrawn pixelLineWidth 0"/>     <v:f eqn="sum @0 1 0"/>     <v:f eqn="sum 0 0 @1"/>     <v:f eqn="prod @2 1 2"/>     <v:f eqn="prod @3 21600 pixelWidth"/>     <v:f eqn="prod @3 21600 pixelHeight"/>     <v:f eqn="sum @0 0 1"/>     <v:f eqn="prod @6 1 2"/>     <v:f eqn="prod @7 21600 pixelWidth"/>     <v:f eqn="sum @8 21600 0"/>     <v:f eqn="prod @7 21600 pixelHeight"/>     <v:f eqn="sum @10 21600 0"/>    </v:formulas>    <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>    <o:lock v:ext="edit" aspectratio="t"/>   </v:shapetype><v:shape id="_x0000_i1025" type="#_x0000_t75" style='width:63.75pt;    height:102.75pt'>    <v:imagedata src="file:///C:\DOCUME~1\omerio\LOCALS~1\Temp\msohtml1\01\clip_image001.emz"     o:title=""/>   </v:shape><![endif]--><!--[if !vml]--><img src="http://www.omer.dawelbeit.info/downloads/Image1.gif" v:shapes="_x0000_i1025" height="137" width="85" /><!--[endif]--><o:p></o:p></span></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 187.85pt" valign="top" width="250">
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB">Primary key +   Foreign key mechanism – plus declaring the Foreign key as alternate key. <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><u><span style="font-size: 10pt" lang="EN-GB">Mandatory   participation condition:<o:p></o:p></span></u></p>
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB">Left side – can   be achieved using a constraint. <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB">Right side – not   allowing null for Foreign key.<o:p></o:p></span></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 168.85pt" valign="top" width="225">
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB">@OneToOne<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><u><span style="font-size: 10pt" lang="EN-GB">Declaring   alternate key:<o:p></o:p></span></u></p>
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB">@UniqueConstraint(columnNames   = {&#8221;staff_id&#8221;, &#8220;holiday_year&#8221;})<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><u><span style="font-size: 10pt" lang="EN-GB">Declaring a   check constraint:<o:p></o:p></span></u></p>
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB">@org.hibernate.annotations.Check(<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB"><span>            </span><span>      </span>constraints = &#8220;(mileage is not null) or (amount is not   null)&#8221;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB">)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><u><span style="font-size: 10pt" lang="EN-GB">Declaring not   null:<o:p></o:p></span></u></p>
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB">@Column(nullable   = false)<o:p></o:p></span></p>
</td>
</tr>
<tr>
<td style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 86.4pt" valign="top" width="115">
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB">One to Many<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: center" align="center"><span style="font-size: 10pt" lang="EN-GB"><!--[if gte vml 1]><v:shape id="_x0000_i1026"    type="#_x0000_t75" style='width:67.5pt;height:108.75pt'>    <v:imagedata src="file:///C:\DOCUME~1\omerio\LOCALS~1\Temp\msohtml1\01\clip_image003.emz"     o:title=""/>   </v:shape><![endif]--><!--[if !vml]--><img src="http://www.omer.dawelbeit.info/downloads/Image2.gif" v:shapes="_x0000_i1026" height="145" width="90" /><!--[endif]--><o:p></o:p></span></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 187.85pt" valign="top" width="250">
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB">Primary key +   Foreign key mechanism.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><u><span style="font-size: 10pt" lang="EN-GB">Mandatory   Participation condition:<o:p></o:p></span></u></p>
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB">Left side – can   be achieved using a constraint.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB">Right side – not   allowing null for Foreign key.<o:p></o:p></span></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 168.85pt" valign="top" width="225">
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB">@OneToMany   annotation created in the owning class<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><u><span style="font-size: 10pt" lang="EN-GB">Declaring a   check constraint:<o:p></o:p></span></u></p>
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB">@org.hibernate.annotations.Check(<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB"><span>            </span><span>      </span>constraints = &#8220;(mileage is not null) or (amount is not   null)&#8221;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB">)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><u><span style="font-size: 10pt" lang="EN-GB">Declaring not   null:<o:p></o:p></span></u></p>
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB">@Column(nullable   = false)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><u><span style="font-size: 10pt" lang="EN-GB">Cascading:<o:p></o:p></span></u></p>
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB">Cascading works   well when annotating the owning relationship<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB">@OneToMany(cascade   = {CascadeType.ALL})<o:p></o:p></span></p>
</td>
</tr>
<tr>
<td style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 86.4pt" valign="top" width="115">
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB">Many to One<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: center" align="center"><span style="font-size: 10pt" lang="EN-GB"><!--[if gte vml 1]><v:shape id="_x0000_i1027"    type="#_x0000_t75" style='width:70.5pt;height:114pt'>    <v:imagedata src="file:///C:\DOCUME~1\omerio\LOCALS~1\Temp\msohtml1\01\clip_image005.emz"     o:title=""/>   </v:shape><![endif]--><!--[if !vml]--><img src="http://www.omer.dawelbeit.info/downloads/Image3.gif" v:shapes="_x0000_i1027" height="152" width="94" /><!--[endif]--><o:p></o:p></span></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 187.85pt" valign="top" width="250">
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB">Primary key +   Foreign key mechanism.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><u><span style="font-size: 10pt" lang="EN-GB">Mandatory   Participation condition:<o:p></o:p></span></u></p>
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB">Left side – not   allowing null for Foreign key.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB">Right side – can   be achieved using a constraint.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB"><o:p> </o:p></span></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 168.85pt" valign="top" width="225">
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB">@ManyToOne   annotation created in the owned class<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><u><span style="font-size: 10pt" lang="EN-GB">Declaring a   check constraint:<o:p></o:p></span></u></p>
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB">@org.hibernate.annotations.Check(<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB"><span>            </span><span>      </span>constraints = &#8220;(mileage is not null) or (amount is not   null)&#8221;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB">)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><u><span style="font-size: 10pt" lang="EN-GB">Declaring not   null:<o:p></o:p></span></u></p>
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB">@Column(nullable   = false)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><u><span style="font-size: 10pt" lang="EN-GB">Cascading:<o:p></o:p></span></u></p>
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB">Cascading   annotation should not be used in the child class, as will result in the   primary key table being updated. Should be included in the database schema<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB"><o:p> </o:p></span></p>
</td>
</tr>
<tr>
<td style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 86.4pt" valign="top" width="115">
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB">Many to Many<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: center" align="center"><span style="font-size: 10pt" lang="EN-GB"><!--[if gte vml 1]><v:shape id="_x0000_i1028"    type="#_x0000_t75" style='width:75pt;height:107.25pt'>    <v:imagedata src="file:///C:\DOCUME~1\omerio\LOCALS~1\Temp\msohtml1\01\clip_image007.emz"     o:title=""/>   </v:shape><![endif]--><!--[if !vml]--><img src="http://www.omer.dawelbeit.info/downloads/Image4.gif" v:shapes="_x0000_i1028" height="143" width="100" /><!--[endif]--><o:p></o:p></span></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 187.85pt" valign="top" width="250">
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB">Should be   resolved at the Logical database design, by resolving the M-N relationships   into 3 relations<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><u><span style="font-size: 10pt" lang="EN-GB">Mandatory   Participation condition:<o:p></o:p></span></u></p>
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB">Implemented as   above for One to Many relationships on the One side of the two owning   relations<o:p></o:p></span></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 168.85pt" valign="top" width="225">
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB">@ManyToMany<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt" lang="EN-GB">The expected   name for the intermediate table is table1_table2 unless specified otherwise   in the annotation.<o:p></o:p></span></p>
</td>
</tr>
</table>
<p class="MsoNormal"><span lang="EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB"><o:p> </o:p></span></p>
]]></content:encoded>
			<wfw:commentRss>http://dawelbeit.info/2008/06/24/mapping-er-model-into-jpa-annotations/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Web User Interface from Prototype to Implementation</title>
		<link>http://dawelbeit.info/2008/03/09/web-user-interface-from-prototype-to-implementation/</link>
		<comments>http://dawelbeit.info/2008/03/09/web-user-interface-from-prototype-to-implementation/#comments</comments>
		<pubDate>Sun, 09 Mar 2008 21:36:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://dawelbeit.info/2008/03/09/web-user-interface-from-prototype-to-implementation/</guid>
		<description><![CDATA[Introduction
One approach to user interface design is the use of prototypes. Prototypes are incomplete versions of the user interface for the software being developed. Using prototypes at the early stages of requirement gathering and analysis helps in clarifying the requirements with the client and forms the starting point for the user interface design and implementation. [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-size:180%;">Introduction</span>
<p class="western" style="margin-bottom: 0cm;" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">One approach to user interface design is the use of prototypes. Prototypes are incomplete versions of the user interface for the software being developed. Using prototypes at the early stages of requirement gathering and analysis helps in clarifying the requirements with the client and forms the starting point for the user interface design and implementation. In this article we look at the prototyping approach to user interface development for Rich Internet Applications.</span></span></span></p>
<p class="western" style="margin-bottom: 0cm;"><span style="font-family:Arial,sans-serif;">User interface prototypes are usually developed to look informal, but yet functional. The problem with developing a complete GUI for prototype is the fact that it gives the client the impression that large parts of the development is already done and leads them later to question why the development is taking such a long time when almost all of the application was done during the requirement gathering. A good article on this is the “<a href="http://headrush.typepad.com/creating_passionate_users/2006/12/dont_make_the_d.html">Don’t make the Demo look Done</a>”, from Kathy Sierra’s blog</span><span style="font-family:Arial,sans-serif;">. Below is an example of two user interfaces, one that looks almost done and the other one look extremely informal by using the <a href="http://napkinlaf.sourceforge.net/">Napkin look and feel</a> for Java applications.</span></p>
<p class="western" style="margin-bottom: 0cm;" lang="en-GB">
<p class="western" style="margin-bottom: 0cm;" align="center" lang="en-GB"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_SvabM8hrUv0/R9RZk4KWKmI/AAAAAAAAALU/s3PHlrHG7XQ/s1600-h/swing_ui.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 357px; height: 245px;" src="http://bp3.blogger.com/_SvabM8hrUv0/R9RZk4KWKmI/AAAAAAAAALU/s3PHlrHG7XQ/s320/swing_ui.jpg" alt="" id="BLOGGER_PHOTO_ID_5175860361841486434" border="0" /></a> <span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Figure 1. Prototype that looks almost done.</span></span></span></p>
<p class="western" style="margin-bottom: 0cm;" align="center" lang="en-GB"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_SvabM8hrUv0/R9RarYKWKnI/AAAAAAAAALc/397H0KK6Pc4/s1600-h/swing_prototype_ui.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_SvabM8hrUv0/R9RarYKWKnI/AAAAAAAAALc/397H0KK6Pc4/s320/swing_prototype_ui.jpg" alt="" id="BLOGGER_PHOTO_ID_5175861573022263922" border="0" /></a><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Figure 2. Prototype that looks informal</span></span></span></p>
<p class="western" style="margin-bottom: 0cm;" align="center" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;"><br /></span></span></span></p>
<p class="western" style="margin-bottom: 0cm;" lang="en-GB">
<p class="western" style="margin-bottom: 0cm;" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">An established approach to software design is the use of the USDP (Unified Software Development Process). The main focus of the USDP is on modelling the business requirements using standards such as UML. This approach reinforces the focus on business first then technology, enabling the business model to exist independent of any platform or technology. The prototype is usually developed during the preliminary system design stage, which aims at providing an analysis model.</span></span></span></p>
<p class="western" style="margin-bottom: 0cm;" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;"><br /></span></span></span></p>
<h2 class="western" style="page-break-after: avoid;"><span style="font-size:180%;">Requirement Capture and Modelling</span></h2>
<p class="western" style="margin-bottom: 0cm;" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Typical steps followed during the requirement capture and modelling stage are summarised below:</span></span></span></p>
<h4 class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);font-size:130%;" ><span style="font-family:Arial,sans-serif;"><b>Techniques</b></span></span></h4>
<ol>
<li>
<p class="western" style="margin-bottom: 0cm;"><span style="color: rgb(0, 0, 0);">  <span lang="en-GB"><span style="font-size:100%;"><span style="font-family:Arial,sans-serif;"><b>Requirement  elicitation</b> using methods such as: </span></span></span></span>  </p>
</li>
</ol>
<ul>
<li>
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Background  reading</span></span></span></p>
</li>
<li>
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Fact  finding interviews with the client</span></span></span></p>
</li>
<li>
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Observation</span></span></span></p>
</li>
<li>
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Document  sampling</span></span></span></p>
</li>
<li>
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Questionnaires.</span></span></span></p>
</li>
</ul>
<p>
<ol start="2">
<li>
<p class="western" style="margin-bottom: 0cm;"><span style="color: rgb(0, 0, 0);">  <span lang="en-GB"><span style="font-size:100%;"><span style="font-family:Arial,sans-serif;"><b>Use  case modelling</b> to be carried out and documented as follows: </span></span></span></span>  </p>
</li>
</ol>
<ul>
<li>
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Use  case diagram. </span></span></span>  </p>
</li>
<li>
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Use  case description</span></span></span></p>
</li>
<li>
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">One  or more flow of events (i.e. Normal or baseline flow, alternative  flows and exception flows)</span></span></span></p>
</li>
<li>
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Activity  diagram to aid the understanding of the use case. Activity diagrams  are less technical than sequence diagrams so their use at such an  early stage can aid the understanding of the business stakeholders.</span></span></span></p>
</li>
</ul>
<ol start="3">
<li>
<p class="western"><span lang="en-GB"><span style="font-size:100%;"><span style="font-family:Arial,sans-serif;"><span style="color: rgb(0, 0, 0);"><b>Initial  system architecture</b> can be developed to help guide subsequent  steps during the development process and can be refined and adjusted  as the development process progresses. The initial system  architecture is usually the package structure of the system.</span></span></span></span></p>
</li>
</ol>
<ol start="4">
<li>
<p class="western"><span style="color: rgb(0, 0, 0);"> <span lang="en-GB"><span style="font-size:100%;"><span style="font-family:Arial,sans-serif;"><b>Prototypes</b>  of some key user interfaces are to be produced to aid the  requirement understanding and gathering.</span></span></span></span></p>
</li>
</ol>
<h4 class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);font-size:130%;" ><span style="font-family:Arial,sans-serif;"><b>Key Deliverables</b></span></span></h4>
<ul>
<li>
<p class="western" style="margin-bottom: 0cm;" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Use  case model</span></span></span></p>
</li>
<li>
<p class="western" style="margin-bottom: 0cm;" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Requirements  list</span></span></span></p>
</li>
<li>
<p class="western" style="margin-bottom: 0cm;" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Initial  architecture</span></span></span></p>
</li>
<li>
<p class="western" style="margin-bottom: 0cm;" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Prototypes</span></span></span></p>
</li>
</ul>
<p>
<h2 class="western" style="page-break-after: avoid;"><span style="font-size:180%;">Prototyping for the web</span></h2>
<p class="western" style="margin-bottom: 0cm;"><span style="font-family:Arial,sans-serif;">When developing prototypes for the Web a distinction have to be made be made between web sites and web applications. Web sites are mainly concerned about information; on the other hand web applications are concerned with tasks such as the steps involved in a process. This basic duality of the web was discussed by Jesse James in his book “<a href="http://www.jjg.net/elements/">The Elements of User Experience</a>”</span><span style="font-family:Arial,sans-serif;">. The web can basically be treated as a software interface or as a hypertext system and software developed for the web can categorised as either an application or a hypertext information space or a hybrid of the two. In this article I would use the term websites to refer to applications that utilize the web as a hypertext system and the term web applications to refer to applications that utilize the web as a software interface or a hybrid of both.</span></p>
<p class="western" style="margin-bottom: 0cm;"><span style="font-family:Arial,sans-serif;">Based on new concepts such as Web 2.0 I will go a step further and divide web applications into two categories:</span></p>
<ol>
<li>
<p class="western" style="margin-bottom: 0cm;" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Traditional  web applications based on web pages where the progress in the  application is largely based on form submission or Hyperlink  navigation to post or retrieve data/contents from the server.</span></span></span></p>
</li>
</ol>
<ol start="2">
<li>
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Rich  Internet Applications based on using AJAX or some other technology  to submit or retrieve data from the server without having to use  forms or submit a whole page. These applications resemble desktop  thick clients in their interactivity, responsiveness, flexibility  and rich user interface. RIA can be divided into two types:</span></span></span></p>
<ul>
<li>
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">In-Browser   or browser based – These utilize the browser capabilities such as   HTML, JavaScript, CSS and XMLHTTPRequest. </span></span></span>   </p>
</li>
<li>
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Out-of-browser   or plug-in based – These utilize the capabilities of external   plugins such as Adobe AIR, Microsoft’s Silverlight and JavaFX   from Sun.</span></span></span></p>
</li>
</ul>
</li>
</ol>
<p>
<h3 class="western" style="page-break-after: avoid;"><span style="font-size:130%;">Prototyping for traditional web applications:</span></h3>
<p><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">For traditional web applications prototyping can be done using paper or computer based wire-frames. Microsoft Power Point, Visio or Open Office Impress can be used to construct these wire-frames; in fact any image authoring tool can be used to draw up a prototype. But such prototypes are simply static and lack the interactivity. <a href="http://dub.washington.edu/denim/">DENIM</a> is a tool that can be used to create prototypes for websites and web applications. Such prototypes do look informal and can be designed to have some elements of interactivity. </span></span></span>
<p class="western" lang="en-GB"></p>
<p class="western" style="margin-bottom: 0cm;" lang="en-GB">
<p>
<div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_SvabM8hrUv0/R9Rh84KWKtI/AAAAAAAAAMM/_RHFKVBcjwQ/s1600-h/doc_nav_arrow_sample.gif"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 369px; height: 219px;" src="http://bp3.blogger.com/_SvabM8hrUv0/R9Rh84KWKtI/AAAAAAAAAMM/_RHFKVBcjwQ/s320/doc_nav_arrow_sample.gif" alt="" id="BLOGGER_PHOTO_ID_5175869570251369170" border="0" /></a><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Figure 3. DENIM prototype for web application</p>
<p></span></span></span></div>
<h3 class="western" style="page-break-after: avoid;"><span style="font-size:130%;">Prototyping for RIA</span></h3>
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">As Rich Internet Applications closely resembles traditional desktop applications there is nothing that stops us from using the same prototyping methods used for the desktop clients to design prototypes for RIA. The user interface for RIA runs entirely on the client side, but the UI is first transferred from the server to the client upon first request.  For subsequent requests the client only exchanges data with the server. RIAs now benefit from a large number of rich widgets that sometimes look even better than widgets available for traditional thick clients; this analogy between these two types of applications is shown below.</span></span></span></p>
<p class="western"><span lang="en-GB"><span style="font-size:100%;"><span style="font-family:Arial,sans-serif;"><span style="color: rgb(0, 0, 0);">But before starting to prototype for RIAs we probably need to have a catalogue of currently used visual widgets such as controls, commands, pointers and windows. A good starting place is the Visual Index on the <a href="http://msdn2.microsoft.com/en-us/library/aa511258.aspx">Microsoft Window Vista User Experience guide</a> </span></span></span></span><span lang="en-GB"><span style="font-size:100%;"><span style="font-family:Arial,sans-serif;"><span style="color: rgb(0, 0, 0);">. We can then short-list the widgets that can be included in the prototype and the completed user interface later on.</span></span></span></span></p>
<p>
<div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_SvabM8hrUv0/R9Rl_IKWKwI/AAAAAAAAAMk/1J7AsTwxU5A/s1600-h/ria_vs_thick_client.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_SvabM8hrUv0/R9Rl_IKWKwI/AAAAAAAAAMk/1J7AsTwxU5A/s320/ria_vs_thick_client.jpg" alt="" id="BLOGGER_PHOTO_ID_5175874006952585986" border="0" /></a><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Figure 4. Analogy between RIA and thick clients</p>
<p></span></span></span></div>
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Many tools can be used to prototype for RIAs, I personally prefer using the NetBeans Swing GUI builder but you can also use other Visual IDEs such as Visual Basic IDE. NetBeans GUI builder is based on Java Swing so the Napkin look and feel can easily be integrated to create informal prototypes. The builder has a good size palette of widgets such as tab containers, grids, panels, buttons ,etc&#8230;</span></span></span></p>
<p class="western" lang="en-GB"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_SvabM8hrUv0/R9RnoIKWKxI/AAAAAAAAAMs/man566X9SSA/s1600-h/User+Interface_html_67d6931f.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_SvabM8hrUv0/R9RnoIKWKxI/AAAAAAAAAMs/man566X9SSA/s320/User+Interface_html_67d6931f.png" alt="" id="BLOGGER_PHOTO_ID_5175875810838850322" border="0" /></a> </p>
<p class="western" align="center" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Figure 5. Swing UI builder</span></span></span></p>
<h3 class="western" style="page-break-after: avoid;"><span style="font-size:130%;">Prototype Example</span></h3>
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Below is a prototype developed for a window that deals with the user’s tasks. Each user has a number of tasks that they can view; the user can refresh all the tasks, delete a task or set a task as completed. The prototype was first developed in NetBeans builder then exported to Paint to customize the look and feel of the action buttons.</span></span></span></p>
<p>
<div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_SvabM8hrUv0/R9RoZYKWKyI/AAAAAAAAAM0/3XUGmFuZdh8/s1600-h/MyTasks.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_SvabM8hrUv0/R9RoZYKWKyI/AAAAAAAAAM0/3XUGmFuZdh8/s320/MyTasks.jpg" alt="" id="BLOGGER_PHOTO_ID_5175876656947407650" border="0" /></a><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Figure 6. Modified Swing GUI for tasks window</p>
<p></span></span></span></div>
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Below is the use case diagram for the view tasks use case.</span></span></span></p>
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;"><br /></span></span></span></p>
<p class="western" align="center" lang="en-GB"><span style="color: rgb(0, 0, 0);"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_SvabM8hrUv0/R9RtK4KWKzI/AAAAAAAAANU/zZ7euA1Cjq4/s1600-h/task_management.gif"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_SvabM8hrUv0/R9RtK4KWKzI/AAAAAAAAANU/zZ7euA1Cjq4/s320/task_management.gif" alt="" id="BLOGGER_PHOTO_ID_5175881905397443378" border="0" /></a><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Figure 7. Use case diagram for tasks requirements</span></span></span></p>
<p class="western" align="center" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;"><br /></span></span></span></p>
<h3 class="western" style="page-break-after: avoid;"><span style="font-size:130%;">Choosing the user interface development toolkit</span></h3>
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">You could write HTML, JavaScript and CSS to create a RIA, but this will be time consuming and why invent the wheel when there are many free toolkits and frameworks out there with many features to offer. Below is a summary of the widely used toolkits/frameworks to develop the user interface for Rich Internet Applications</span></span></span></p>
<table style="color: rgb(0, 0, 0); width: 557px; height: 412px;" border="1" cellpadding="7" cellspacing="0">  <col width="124">  <col width="83">  <col width="69">  <col width="258"><br />
<tbody>
<tr valign="top">
<td bg="" style="color: rgb(230, 230, 230);" width="124">
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Toolkit</span></span></span></p>
</td>
<td bg="" style="color: rgb(230, 230, 230);" width="83">
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Vendor</span></span></span></p>
</td>
<td bg="" style="color: rgb(230, 230, 230);" width="69">
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Type</span></span></span></p>
</td>
<td bg="" style="color: rgb(230, 230, 230);" width="258">
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Technologies</span></span></span></p>
</td>
</tr>
<tr valign="top">
<td width="124">
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Adobe    AIR</span></span></span></p>
</td>
<td width="83">
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Adobe</span></span></span></p>
</td>
<td width="69">
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Plugin</span></span></span></p>
</td>
<td width="258">
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">JavaScript,    AJAX, Flex or Flash</span></span></span></p>
</td>
</tr>
<tr valign="top">
<td width="124">
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Silverlight</span></span></span></p>
</td>
<td width="83">
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Microsoft</span></span></span></p>
</td>
<td width="69">
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Plugin</span></span></span></p>
</td>
<td width="258">
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">JavaScript,    C#, VB.NET, AJAX, IronPython or IronRuby</span></span></span></p>
</td>
</tr>
<tr valign="top">
<td width="124">
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">JavaFX</span></span></span></p>
</td>
<td width="83">
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Sun</span></span></span></p>
</td>
<td width="69">
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Plugin</span></span></span></p>
</td>
<td width="258">
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">JavaFX</span></span></span></p>
</td>
</tr>
<tr valign="top">
<td width="124">
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Dojo    Toolkit</span></span></span></p>
</td>
<td width="83">
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Dojo    Foundation</span></span></span></p>
</td>
<td width="69">
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">In    browser</span></span></span></p>
</td>
<td width="258">
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">DHTML,    JavaScript and CSS</span></span></span></p>
</td>
</tr>
<tr valign="top">
<td width="124">
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Yahoo!    UI Library</span></span></span></p>
</td>
<td width="83">
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Yahoo</span></span></span></p>
</td>
<td width="69">
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">In    browser</span></span></span></p>
</td>
<td width="258">
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">DHTML,    JavaScript and CSS.</span></span></span></p>
</td>
</tr>
<tr valign="top">
<td width="124">
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Google    Web Toolkit</span></span></span></p>
</td>
<td width="83">
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Google</span></span></span></p>
</td>
<td width="69">
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">In    browser</span></span></span></p>
</td>
<td width="258">
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Java</span></span></span></p>
</td>
</tr>
<tr valign="top">
<td width="124">
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">DWR</span></span></span></p>
</td>
<td width="83">
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">GetaHead</span></span></span></p>
</td>
<td width="69">
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">In    browser</span></span></span></p>
</td>
<td width="258">
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Java,    etc&#8230;</span></span></span></p>
</td>
</tr>
<tr>
<td colspan="4" valign="top" width="576">
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">And    many more&#8230;</span></span></span></p>
</td>
</tr>
</tbody>
</table>
<p class="western" lang="en-GB"></p>
<h2 class="western" style="page-break-after: avoid;"><span style="font-size:180%;">User Interface Design using MVC</span></h2>
<p><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Below I will explain the implementation of the prototype in Figure 6 above into a fully fledged user interface using the Dojo Toolkit and the MVC pattern. The dojo toolkit streamlines JavaScript development by providing custom rich widgets, many utility functions and an Ajax library. JavaScript can be used as an object oriented language based on prototyping, the dojo toolkit provide a Java like style to defining objects and inheritance in JavaScript.</p>
<p></span></span></span>
<p class="western" style="margin-bottom: 0cm;" align="center" lang="en-GB"> <span style="color: rgb(0, 0, 0);"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_SvabM8hrUv0/R9Rt0IKWK0I/AAAAAAAAANc/_ziQ65rISP8/s1600-h/client_side_mvc.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_SvabM8hrUv0/R9Rt0IKWK0I/AAAAAAAAANc/_ziQ65rISP8/s320/client_side_mvc.jpg" alt="" id="BLOGGER_PHOTO_ID_5175882614067047234" border="0" /></a><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Figure 8. Client side MVC GUI</span></span></span></p>
<p class="western" style="margin-bottom: 0cm;" lang="en-GB"></p>
<p class="western" style="margin-bottom: 0cm;" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Widget objects defined in Dojo can also have a HTML template and linked to DOM nodes. The widget object then manipulates the HTML nodes to display information or responds to user actions such as button clicks, etc…. </span></span></span> </p>
<h4 class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);font-size:130%;" ><span style="font-family:Arial,sans-serif;"><b>A new approach to web user interface development</b></span></span></h4>
<p class="western" style="margin-bottom: 0cm;" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">The approach I have followed here to develop the rich HTML user interface is not widely used for web applications, although the process used is deeply rooted in the USDP and was used for a long time to model user interface for desktop applications developed in languages such as Java and Visual Basic. Saying this, the fact that JavaScript supports object orientation, there nothing that prevents us from using the same methodology to design the user interface for rich internet applications. These steps are based on the methodology outlined by Bennett et al in their book “Object Oriented Systems Analysis and Design Using UML”:</span></span></span></p>
<p>
<ul>
<li>
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Prototyping  the user interface.</span></span></span></p>
</li>
<li>
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Designing  the classes.</span></span></span></p>
</li>
<li>
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Modelling  the interaction involved in the interface using interaction or  communication diagrams.</span></span></span></p>
</li>
<li>
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Modelling  the control of the interface using state machines for complex UI  components.</span></span></span></p>
</li>
</ul>
<h4 class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);font-size:130%;" ><span style="font-family:Arial,sans-serif;"><b>View – Presentation (HTML, CSS and DOM objects)</b></span></span></h4>
<p class="western" style="margin-bottom: 0cm;" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">The view on the client side user interface is created either as HTML or JavaScript Widgets. HTML view is created when widgets are not required to provide functionality depending on user input or when it’s owned by a JavaScript Widget. On the other hand JavaScript widgets are used for complex user interface components such as widgets that control other widgets to perform a specific operation as shown above for the “My Tasks” widget. </span></span></span> </p>
<p class="western" style="margin-bottom: 0cm;" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Each JavaScript widget consists of the following:</span></span></span></p>
<ol>
<li>
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">JavaScript  object, I use the term View Support Object (VSO) to describe these  JavaScript Objects as they control the DOM nodes attached to them  (Figure 8).</span></span></span></p>
</li>
<li>
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">DOM  nodes to represent the HTML template for the widget.</span></span></span></p>
</li>
<li>
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Can  also include other child widgets as widgets can be nested.</span></span></span></p>
</li>
</ol>
<p class="western" style="margin-bottom: 0cm;" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">For each view component the view is implemented using this widget approach as follow:</span></span></span></p>
<ul>
<li>
<p class="western"><span lang="en-GB"><span style="font-size:100%;"><span style="font-family:Arial,sans-serif;"><span style="color: rgb(0, 0, 0);">Define  the widget template which consists of HTML, CSS and other widgets,  this is defined in a HTML file e.g. <b>manageTasks.html</b>.</span></span></span></span></p>
</li>
<li>
<p class="western"><span lang="en-GB"><span style="font-size:100%;"><span style="font-family:Arial,sans-serif;"><span style="color: rgb(0, 0, 0);">Define  the VSO for the widget in a JavaScript file, e.g. <b>manageTasks.js</b>  using a JavaScript class definition from the Dojo toolkit as  follows:</span></span></span></span></p>
</li>
</ul>
<p>
<table style="color: rgb(0, 0, 0); width: 478px; height: 776px;" border="1" cellpadding="7" cellspacing="0">  <col width="576"><br />
<tbody>
<tr>
<td valign="top" width="576">
<p class="western" style="margin-bottom: 0cm;" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-size:85%;"><b>To    define a widget class (supports Mixins, multiple inheritance):</b></span></span></p>
<p class="western" style="margin-bottom: 0cm;" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-size:85%;"><i>dojo.widget.defineWidget(&#8221;ClassName&#8221;,    [SuperClass1, SuperClass2, …], {</i></span></span></p>
<p class="western" style="margin-bottom: 0cm;" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-size:85%;"><i>    property1:    “”,</i></span></span></p>
<p class="western" style="margin-bottom: 0cm;" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-size:85%;"><i>    property2:    “”,</i></span></span></p>
<p class="western" style="margin-bottom: 0cm;" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-size:85%;"><i>    method1:    function() {</i></span></span></p>
<p class="western" style="margin-bottom: 0cm;" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-size:85%;"><i>        //    method code here</i></span></span></p>
<p class="western" style="margin-bottom: 0cm;" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-size:85%;"><i>    }</i></span></span></p>
<p class="western" style="margin-bottom: 0cm;" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-size:85%;"><i>}</i></span></span></p>
<p class="western" style="margin-bottom: 0cm;"><span style="font-size:85%;"><b>To    define a non-widget class (supports Mixins, multiple inheritance):</b></span></p>
<p class="western" style="margin-bottom: 0cm;" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-size:85%;"><i>dojo.declare(&#8221;ClassName&#8221;,[SuperClass1,    SuperClass2, …], {</i></span></span></p>
<p class="western" style="margin-bottom: 0cm;"><span style="font-size:85%;"><i>    property1:    “”,</i></span></p>
<p class="western" style="margin-bottom: 0cm;" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-size:85%;"><i>    property2:    “”,</i></span></span></p>
<p class="western" style="margin-bottom: 0cm;" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-size:85%;"><i>    //    acts as a Java constructor</i></span></span></p>
<p class="western" style="margin-bottom: 0cm;" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-size:85%;"><i>    initializer    : function(urls) {</i></span></span></p>
<p class="western" style="margin-bottom: 0cm;" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-size:85%;"><i>        this.urls    = urls;</i></span></span></p>
<p class="western" style="margin-bottom: 0cm;" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-size:85%;"><i>        this.user    = &#8220;&#8221;;</i></span></span></p>
<p class="western" style="margin-bottom: 0cm;" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-size:85%;"><i>        this.ajaxTimeOut    = 600; // 600s, 10mins to wait for ajax</i></span></span></p>
<p class="western" style="margin-bottom: 0cm;" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-size:85%;"><i>        //    calls</i></span></span></p>
<p class="western" style="margin-bottom: 0cm;" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-size:85%;"><i>    },</i></span></span></p>
<p class="western" style="margin-bottom: 0cm;" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-size:85%;"><i>    method1:    function() {</i></span></span></p>
<p class="western" style="margin-bottom: 0cm;" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-size:85%;"><i>       //    method code here</i></span></span></p>
<p class="western" style="margin-bottom: 0cm;" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-size:85%;"><i>    }</i></span></span></p>
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-size:85%;"><i>}</i></span></span></p>
</td>
</tr>
</tbody>
</table>
<p style="margin-bottom: 0cm;" align="center" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Listing 1. Dojo classes declaration</span></span></span></p>
<p class="western" style="margin-left: 0.63cm;" align="center" lang="en-GB"></p>
<ul>
<li>
<p class="western"><span lang="en-GB"><span style="font-size:100%;"><span style="font-family:Arial,sans-serif;"><span style="color: rgb(0, 0, 0);">Implement  the methods required for the VSO to control the DOM nodes. These  methods follow from the user interface models such as boundary  classes and interaction diagrams as shown in the diagrams below. For  the <b>ManageTasks</b> widget a boundary class diagram and an  interaction diagram was developed to detail the functionality of the  <b>ManageTasks</b> JavaScript widget. If I treat JavaScript as  Object oriented language then there is nothing that stops me  Modelling Java alongside JavaScript Using a UML CASE tool as shown  in the sequence diagram below showing client and server side  objects. JavaScript built-in types can also be modelled using a  js.lang namespace or package, the same applies to the classes  provided by the toolkit being used.</span></span></span></span></p>
</li>
</ul>
<p class="western" align="center" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_SvabM8hrUv0/R9RvB4KWK1I/AAAAAAAAANk/VbH_twtoTT0/s1600-h/User+Interface_html_3e8de24.gif"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_SvabM8hrUv0/R9RvB4KWK1I/AAAAAAAAANk/VbH_twtoTT0/s320/User+Interface_html_3e8de24.gif" alt="" id="BLOGGER_PHOTO_ID_5175883949801876306" border="0" /></a>Figure 9. Modelling JavaScript using UML</span></span></p>
<p class="western" align="center" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><br /></span></span></p>
<p class="western" align="center" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_SvabM8hrUv0/R9RzoIKWK3I/AAAAAAAAAOo/joXOEJ7yJcE/s1600-h/task_classes.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_SvabM8hrUv0/R9RzoIKWK3I/AAAAAAAAAOo/joXOEJ7yJcE/s320/task_classes.jpg" alt="" id="BLOGGER_PHOTO_ID_5175889004978383730" border="0" /></a><br /><span style="font-size:100%;">Figure 10. Boundary Class Diagram for ManageTasks Widget</span></span></span></p>
<p class="western" align="left" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">The sequence diagram below demonstrates the modelling of server and client components together. The blue object denotes client side JavaScript object whilst the green one symbolise the server side classes. As shown the call queryAll is an asynchronous (AJAX) call as symbolised by the open arrow message and the queryAllTasksLoad call the call back method provided for AJAX response</span></span></span></p>
<p class="western" align="center" lang="en-GB"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_SvabM8hrUv0/R9Ry1YKWK2I/AAAAAAAAAOg/17h6w5h3QnY/s1600-h/task_sequence.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_SvabM8hrUv0/R9Ry1YKWK2I/AAAAAAAAAOg/17h6w5h3QnY/s320/task_sequence.jpg" alt="" id="BLOGGER_PHOTO_ID_5175888133100022626" border="0" /></a><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Figure 11. Sequence diagram for View Task use case on the ManageTasks widget</span></span></span></p>
<h4 class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);font-size:130%;" ><span style="font-family:Arial,sans-serif;"><b>Model – Data</b></span></span></h4>
<p class="western" style="margin-bottom: 0cm;" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Using JSON the server side domain model can be serialized and transferred to the client in JSON format, it will then be build into client side JavaScript objects  using the eval method. This way the model on the client side will reflect the objects on the server side and there is no need to create class definition for the model on the client side. </span></span></span> </p>
<p class="western" style="margin-bottom: 0cm;" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">An example is the sequence diagram shown above, the server side object TaskWrapper is serialized into JSON format and delivered to the client side, so the same object graph will also exist on the client side. The main advantage of this approach is the fact that there is no need to maintain two sets of class definitions for TaskWrapper on the client and server side, as the server side definition can be used in both layers.</span></span></span></p>
<p class="western" style="margin-bottom: 0cm;" lang="en-GB"></p>
<h4 class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);font-size:130%;" ><span style="font-family:Arial,sans-serif;"><b>Controller</b></span></span></h4>
<p class="western" style="margin-bottom: 0cm;" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">The controller orchestrates the view, the model and facilitates communications with the server to retrieve/save data using Ajax. The controller does the following:</span></span></span></p>
<ul>
<li>
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Holds  reference to and controls all the JavaScript widgets.</span></span></span></p>
</li>
<li>
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Queries  data from the server using Ajax and reconstructs the response into  JavaScript model objects.</span></span></span></p>
</li>
<li>
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Saves  data to the server from the updated model.</span></span></span></p>
</li>
<li>
<p class="western" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">Enforces  security and authorisation on the client side. The same enforcements  are done on the server side to ensure no JavaScript tampering was  done.</span></span></span></p>
</li>
</ul>
<p class="western" style="margin-bottom: 0cm;" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;">The controller can be programmed to use the JavaScript prototype or the dojo.declare to inherit from a generic controller class, which defines common functionality such as dirty flags, etc…. The controller can have methods such as: Show, Hide, Delete, Create, Save, Retrieve, etc…</span></span></span></p>
<p class="western" style="margin-bottom: 0cm;" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-family:Arial,sans-serif;"><span style="font-size:100%;"><br /></span></span></span> </p>
<h2 class="western"  style="page-break-after: avoid;font-family:arial;"><span style="font-size:180%;">The Final User Interface</span></h2>
<p class="western"  style="margin-bottom: 0cm;font-family:arial;" lang="en-GB">The final user interface for the task management window is shown below:</p>
<div style="text-align: center; font-family: arial;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_SvabM8hrUv0/R9R1o4KWK5I/AAAAAAAAAO4/1z8It_P8b3Y/s1600-h/managetasks_loading.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_SvabM8hrUv0/R9R1o4KWK5I/AAAAAAAAAO4/1z8It_P8b3Y/s320/managetasks_loading.jpg" alt="" id="BLOGGER_PHOTO_ID_5175891216886541202" border="0" /></a>Figure 12. The data is loading using AJAX</p>
<p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_SvabM8hrUv0/R9R1DYKWK4I/AAAAAAAAAOw/XVj7I-TTE7k/s1600-h/managetasks_loaded.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_SvabM8hrUv0/R9R1DYKWK4I/AAAAAAAAAOw/XVj7I-TTE7k/s320/managetasks_loaded.jpg" alt="" id="BLOGGER_PHOTO_ID_5175890572641446786" border="0" /></a>Figure 13. The data is loadedand displayed</div>
<p class="western" face="arial" style="margin-bottom: 0cm;" lang="en-GB"></p>
<div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_SvabM8hrUv0/R9R3OoKWK6I/AAAAAAAAAPA/rTnnlPpJuPk/s1600-h/managetasks_selected.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_SvabM8hrUv0/R9R3OoKWK6I/AAAAAAAAAPA/rTnnlPpJuPk/s320/managetasks_selected.jpg" alt="" id="BLOGGER_PHOTO_ID_5175892964938230690" border="0" /></a></div>
<div style="text-align: center;"><span style="font-family:arial;">Figure 14. The user make a selection.</span></div>
<p class="western" face="arial" style="margin-bottom: 0cm;" lang="en-GB"><span style="color: rgb(0, 0, 0);font-size:180%;" ><br /></span></p>
<p class="western" style="margin-bottom: 0cm; font-family: arial;" lang="en-GB"><span style="color: rgb(0, 0, 0);font-size:180%;" >References</span></p>
<ul  style="font-family:arial;">
<li>
<p class="western" style="margin-bottom: 0.1cm;" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-size:100%;">Arrington,  C.T. and Rayhan, S.H. (2003). <i>Enterprise Java with UML</i>. 2<sup>nd</sup>  ed. Wiley</span></span></p>
</li>
<li>
<p class="western" style="margin-bottom: 0.1cm;" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-size:100%;">Bennett,  S. McRobb, S. and Farmer, R. (2006). <i>Object-oriented systems  analysis and design using UML</i>. 3<sup>rd</sup> ed. London:  McGraw-Hill Companies.</span></span></p>
</li>
<li>
<p class="western" style="margin-bottom: 0.1cm;" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-size:100%;">Bennett,  S. Skelton, J. Lunn, K. (2004<i>). Schaum’s Outline UML</i>. 2<sup>nd</sup>  ed. McGraw-Hill.</span></span></p>
</li>
<li>
<p class="western" style="margin-bottom: 0.1cm;">Dojo  Ajax Toolkit. URL: <span style="color: rgb(0, 0, 255);"><u><a href="http://dojotoolkit.org/">http://dojotoolkit.org/</a></u></span></p>
</li>
<li>
<p class="western" style="margin-bottom: 0.1cm;" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="color: rgb(0, 0, 255);"><span style="text-decoration: none;"><span style="color: rgb(0, 0, 0);">  <span style="font-size:100%;">Dojo  Toolkit Object oriented concepts and inheritance. URL:  <span style="color: rgb(0, 0, 255);"><u><a href="http://dojotoolkit.org/book/dojo-book-0-4/part-3-dojo-programming-model/object-oriented-concepts-and-inheritance">http://dojotoolkit.org/book/dojo-book-0-4/part-3-dojo-programming-model/object-oriented-concepts-and-inheritance</a></u></span></span></span></span></span></span></p>
</li>
<li>
<p class="western" style="margin-bottom: 0.1cm;">Gadge,  V. <i>Technology options for Rich Internet Applications</i>. URL:  <span style="color: rgb(0, 0, 255);"><u><a href="http://www-128.ibm.com/developerworks/library/wa-richiapp/">http://www-128.ibm.com/developerworks/library/wa-richiapp/</a></u></span></p>
<p class="western" style="margin-bottom: 0.1cm;" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-size:100%;">[16  September 2007]</span></span></p>
</li>
<li>
<p class="western" style="margin-bottom: 0.1cm;" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-size:100%;">Garrett,  J. J. (2002). <i>The Elements of User Experience: User-Centered  Design for the Web</i>. New Riders Press.</span></span></p>
</li>
<li>
<p class="western" style="margin-bottom: 0.1cm;" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-size:100%;">JavaScript  Object Notation. URL: <a href="http://www.json.org/">http://www.json.org/</a></span></span></p>
</li>
<li>
<p class="western" face="arial" style="margin-bottom: 0.1cm;">O’Reilly,  T. <i>What Is Web 2.0, Design Patterns and Business Models for the  Next Generation of Software</i>.<br />URL: <span style="color: rgb(0, 0, 255);"><u><a href="http://www.oreillynet.com/pub/a/oreilly/tim/news/2005/09/30/what-is-web-20.html?page=1">http://www.oreillynet.com/pub/a/oreilly/tim/news/2005/09/30/what-is-web-20.html?page=1</a></u></span></p>
</li>
</ul>
<ul  style="font-family:arial;">
<p class="western" style="margin-bottom: 0.1cm;" lang="en-GB"><span style="color: rgb(0, 0, 0);"><span style="font-size:100%;"><span style="color: rgb(0, 0, 255);"><span style="text-decoration: none;"><span style="color: rgb(0, 0, 0);">[16  September 2007]</span></span></span></span></span></p>
</ul>
<p class="western" style="margin-bottom: 0cm;" lang="en-GB">
]]></content:encoded>
			<wfw:commentRss>http://dawelbeit.info/2008/03/09/web-user-interface-from-prototype-to-implementation/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Future of the web</title>
		<link>http://dawelbeit.info/2008/03/05/future-of-the-web-2/</link>
		<comments>http://dawelbeit.info/2008/03/05/future-of-the-web-2/#comments</comments>
		<pubDate>Wed, 05 Mar 2008 22:05:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://dawelbeit.info/2008/03/05/future-of-the-web-2/</guid>
		<description><![CDATA[It&#8217;s been quite an exciting journey for the Internet from being a hypertext medium to being an interface for deploying software applications. But there is still that confusion between websites, web applications and rich Internet applications, a confusion rooted in the duality of the web and the emergence of new technologies that enable a wide [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been quite an exciting journey for the Internet from being a hypertext medium to being an interface for deploying software applications. But there is still that confusion between websites, web applications and rich Internet applications, a confusion rooted in the duality of the web and the emergence of new technologies that enable a wide range of functionality and applications.</p>
<p>The term Web 2.0 is widely used these days to point to a range of technologies enabling some amazing things. Developers, reviewers, analysts and organisations all excited about the new web, people are even talking about Web 3.0 &#8220;Semantic Web&#8221;. There is a great deal of hype surrounding the web these days and a lot of promises, however there is a lack of clear strategy or consistent methodology for building applications for the new web</p>
<p>Different organisations are trying to come up with a toolkit, framework or a methodology to cash in the users&#8217; excitement. In spite of all this the web will definitely continue to grow and who knows what the future of the web will hold&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://dawelbeit.info/2008/03/05/future-of-the-web-2/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
