<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Software Technology Blog</title>
	<atom:link href="http://blog.harbinger-systems.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.harbinger-systems.com</link>
	<description>Technology trends, design, delivery and Harbinger Systems</description>
	<lastBuildDate>Thu, 02 Feb 2012 08:03:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0-beta1</generator>
		<item>
		<title>Design considerations while migrating the application to cloud</title>
		<link>http://blog.harbinger-systems.com/2012/02/design-considerations-while-migrating-the-application-to-cloud/</link>
		<comments>http://blog.harbinger-systems.com/2012/02/design-considerations-while-migrating-the-application-to-cloud/#comments</comments>
		<pubDate>Thu, 02 Feb 2012 07:35:13 +0000</pubDate>
		<dc:creator>Prachi Kulkarni</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Agile Testing]]></category>
		<category><![CDATA[Asynchronous Communication]]></category>
		<category><![CDATA[Automatic Configuration Processes]]></category>
		<category><![CDATA[Choice of Database]]></category>
		<category><![CDATA[Cloud Application Framework]]></category>
		<category><![CDATA[Data Storage Strategy]]></category>
		<category><![CDATA[Decoupled Components]]></category>
		<category><![CDATA[Design considerations for cloud]]></category>
		<category><![CDATA[Guidelines for data and application deployment]]></category>
		<category><![CDATA[Shorter Deployment Cycles]]></category>
		<category><![CDATA[Stateless Application Design]]></category>

		<guid isPermaLink="false">http://blog.harbinger-systems.com/?p=810</guid>
		<description><![CDATA[As outlined in earlier blog (Is your application a candidate for cloud migration), any application can be deployed on cloud, using right cloud application framework. However, in order to take maximum advantage of cloud features like dynamic scaling and high availability, it is advisable to make some design changes in the application. Here is a [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float:right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.harbinger-systems.com%2F2012%2F02%2Fdesign-considerations-while-migrating-the-application-to-cloud%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.harbinger-systems.com%2F2012%2F02%2Fdesign-considerations-while-migrating-the-application-to-cloud%2F&amp;style=normal&amp;hashtags=Agile+Testing,Asynchronous+Communication,Automatic+Configuration+Processes,Choice+of+Database,Cloud+Application+Framework,Data+Storage+Strategy,Decoupled+Components,Design+considerations+for+cloud,Guidelines+for+data+and+application+deployment,Shorter+Deployment+Cycles,Stateless+Application+Design&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>As outlined in earlier blog (<a title="Is your application a candidate for cloud migration" href="http://blog.harbinger-systems.com/2012/01/is-your-application-a-candidate-for-cloud-migration/" target="_blank">Is your application a candidate for cloud migration</a>), any application can be deployed on cloud, using right cloud application framework. However, in order to take maximum advantage of cloud features like dynamic scaling and high availability, it is advisable to make some design changes in the application. Here is a list of a few such design considerations:</p>
<ul>
<li>Use of Decoupled Components</li>
<li>Asynchronous Communication</li>
<li>Stateless Application Design</li>
<li>Choice of Database</li>
<li>Data Storage Strategy</li>
</ul>
<p>I plan to discuss these design considerations in some detail, in the coming sections.<span id="more-810"></span></p>
<p><strong>Decoupled Components</strong></p>
<p>As in case of traditional designs, more modular the application design, more will be the scalability of the application in the cloud. The trick here is to make independent application modules in order to make distribution and in turn dynamic scaling of application easy. Some of the techniques used for such decoupling are as follows:<strong></strong></p>
<ul>
<li>Use of API interfaces or Web Service Interfaces for module integration and interaction<strong></strong></li>
<li>Use of atomic transactions within the modules<strong></strong></li>
<li>Avoiding direct data exchange between modules as far as possible. All module data should be derived from the database.<strong></strong></li>
</ul>
<p>All the steps described further in this article also contribute in decoupling the modules.</p>
<p><strong>Asynchronous Communication</strong></p>
<p>In addition to use of API/web services, the application can have Message Based communication between its modules instead of procedure based tight coupling. This will function something similar to the asynchronous communication in standard workflow modules.</p>
<p><strong>Stateless Application Design</strong></p>
<p>Stateless application design enables distribution. As a part of this, session state needs to be stored outside the application or component, in the database.</p>
<p><strong>Choice of Database</strong></p>
<p>Almost all the available cloud platforms support a variety of databases. Various extensions offered by cloud application frameworks make using these databases easier. Now-a-days in addition to traditional RDBMS like SQL Server and MYSQL, there is support for NOSQL database like MongoDB. Distributed database are offered as a service in the cloud application frameworks. The application design may want to evaluate use of any such databases, to further support distribution.</p>
<p><strong>Data Storage Strategy</strong></p>
<p>As a strategy, consider keeping dynamic data closer to the compute and static data closer to the end-user. This translates to storing the data generated in the cloud, within the cloud and storing the static data on CDN, near the end user.</p>
<p><strong>Further Guidelines for data and application deployment</strong></p>
<ul>
<li><strong>Use of Cloud Application Framework:</strong> There are various cloud application platforms that provide faster deployment as they work directly off the source code repository like GitHub. Development using the cloud application framework may also be easier and faster compared to that using Cloud Platform API</li>
<li><strong>Automatic Configuration Processes:</strong> Automated configuration of new machines to be added in the deployment environment is vital in order to enable dynamic scaling. Machine images as well as various scripts can be used for this.</li>
<li><strong>Shorter Deployment Cycles:</strong> This will keep the cloud version latest, offering new features often</li>
<li><strong>Agile Testing:</strong> The testing needs to be faster and modular for the cloud setup. This will save time in the functional and regression testing. Most cloud application frameworks offer choice of test driven development, which can be very helpful here.</li>
<li><strong>Decision about which part of the application to be moved on cloud:</strong> This decision can be critical for big enterprise applications, where moving everything to the Hybrid / Public cloud may not be possible due to various security policies as well as need of complete control on the module deployment and workflow. Following guidelines can be used here:
<ul>
<li>Modules which are compute intensive and are needed for short bursts of time can be moved to the cloud</li>
<li>Peripheral modules can be moved to the cloud</li>
<li>Modules that may experience varying user load can be moved to the cloud</li>
<li>Use of private cloud or deployment restricted to the private portion of hybrid cloud can be considered for critical modules</li>
</ul>
</li>
</ul>
<p>Other than this, there are various design considerations related to security and cloud type. We will look at these in detail in subsequent blogs.</p>
<p>Any application can go on cloud, even without any design changes. However, following these guidelines, it is possible to design horizontally scaling application and reap all the benefits of cloud deployment. We will look at the guidelines for selecting cloud provider in the next blog.</p>
<div id="_mcePaste" style="position: absolute; width: 1px; height: 1px; overflow: hidden; top: 114px; left: -10000px;">http://blog.harbinger-systems.com/</div>
<g:plusone href="http://blog.harbinger-systems.com/2012/02/design-considerations-while-migrating-the-application-to-cloud/"  size="standard"   ></g:plusone></script>
<span style=''><g:plusone count="true" size="tall"></g:plusone></span><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.harbinger-systems.com%2F2012%2F02%2Fdesign-considerations-while-migrating-the-application-to-cloud%2F&amp;title=Design%20considerations%20while%20migrating%20the%20application%20to%20cloud" id="wpa2a_2"><img src="http://blog.harbinger-systems.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.harbinger-systems.com/2012/02/design-considerations-while-migrating-the-application-to-cloud/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Is your application a candidate for cloud migration?</title>
		<link>http://blog.harbinger-systems.com/2012/01/is-your-application-a-candidate-for-cloud-migration/</link>
		<comments>http://blog.harbinger-systems.com/2012/01/is-your-application-a-candidate-for-cloud-migration/#comments</comments>
		<pubDate>Wed, 18 Jan 2012 08:54:16 +0000</pubDate>
		<dc:creator>Prachi Kulkarni</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Cloud application]]></category>
		<category><![CDATA[Cloud Application Frameworks]]></category>
		<category><![CDATA[cloud infrastructure]]></category>
		<category><![CDATA[cloud migration]]></category>
		<category><![CDATA[cloud platforms]]></category>
		<category><![CDATA[Cloud provisioning]]></category>
		<category><![CDATA[deployment security]]></category>

		<guid isPermaLink="false">http://blog.harbinger-systems.com/?p=802</guid>
		<description><![CDATA[It is now safe to say that the future of Software Application Space is ‘”Cloudy”, and for once, it is a very good thing! The Cloud platforms have been around for a while, but now more and more applications from Enterprise as well as Consumer space are seen to take advantage of them. So the [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float:right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.harbinger-systems.com%2F2012%2F01%2Fis-your-application-a-candidate-for-cloud-migration%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.harbinger-systems.com%2F2012%2F01%2Fis-your-application-a-candidate-for-cloud-migration%2F&amp;style=normal&amp;hashtags=Cloud+application,Cloud+Application+Frameworks,cloud+infrastructure,cloud+migration,cloud+platforms,Cloud+provisioning,deployment+security&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>It is now safe to say that the future of Software Application Space is ‘”Cloudy”, and for once, it is a very good thing! The Cloud platforms have been around for a while, but now more and more applications from Enterprise as well as Consumer space are seen to take advantage of them.</p>
<p>So the question is, which applications can migrate to cloud? Short answer: all applications.</p>
<p>For a descriptive answer, we should go into details of what the Cloud can provide us. <span id="more-802"></span> </p>
<p>Cloud is basically offering Infrastructure (Platform) as a service. Once I migrate my application to the Cloud, I transfer the headache of setting up proper infrastructure to the cloud provider. This translates into various benefits for the application:</p>
<p>• High Availability<br />
• Scalability<br />
• Distribution<br />
• Pay-Per-Use for infrastructure<br />
• Easy ability to integrate with Social and other collaboration portals*</p>
<p>The scalability and pay per use architecture is vastly important for many applications. In the application lifecycle, there are times, when for a specific duration, scaled up infrastructure is required. Some examples can be &#8211; the holiday seasons for an eCommerce Retail Application, the benefits enrollment period for a Healthcare Application, tournament seasons for Sports Application etc.</p>
<p>This is a period where the user load can increase multifold, and the application provider needs multiple servers to handle that load, without affecting performance. However, outside this specific period, the infrastructure needs are pretty regular. As a result, hardware investment becomes a tough decision.</p>
<p>Cloud provisioning can be a perfect answer for such dilemmas. The cloud providers can make multiple servers available for short duration for any application. This scaling can happen transparent to the end users. The providers will charge only for the time the infrastructure is used.</p>
<p>In addition, the cloud providers will also take care to make the application Highly Available. To support this, Virtualization, Replication and Distribution are taken care at the provider level. As scaled up infrastructure is used, application performance is also no longer a headache.</p>
<p>Security has been a critical aspect of cloud deployment. However, multiple efforts by the cloud infrastructure providers as well as advance security techniques available at application level have reduced the threat level significantly.</p>
<p>There are multiple cloud providers like <a href="http://aws.amazon.com/ec2/" target="_blank">Amazon</a>, <a href="http://www.windowsazure.com/en-us/" target="_blank">Azure</a>, <a href="http://www.rackspace.com/" target="_blank">Rackspace</a> in the market. However, the application to be migrated need not directly interface with the cloud providers. There are multiple Cloud Application Frameworks like <a href="http://www.heroku.com/" target="_blank">Heroku</a> and <a href="https://appharbor.com/" target="_blank">AppHarbor</a> that provide easy integration interfaces to make the cloud deployment possible at the click of the mouse. These Application Frameworks also work with multiple development platforms including .Net, Java, Ruby and PHP. In addition, they follow test driven development pattern, to make application development / migration easy.</p>
<p>Cloud supports SAAS whole-heartedly; however, it is not necessary for your application to follow the SAAS model in order to take advantage of cloud.</p>
<p>As per a survey published by <a href="http://www.cloud-council.org/" target="_blank">Cloud Standards Customer Council </a>(CSCC), cloud and the corresponding architecture changes also lets the application developers integrate easily with available social and other collaboration portals.<br />
In short, any application irrespective of domain, technology and architecture can be migrated to the cloud.</p>
<p>In next article, we will take a look at the design considerations for an application migrated to Cloud.</p>
<p><em>* As per survey published by CSCC</em></p>
<g:plusone href="http://blog.harbinger-systems.com/2012/01/is-your-application-a-candidate-for-cloud-migration/"  size="standard"   ></g:plusone></script>
<span style=''><g:plusone count="true" size="tall"></g:plusone></span><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.harbinger-systems.com%2F2012%2F01%2Fis-your-application-a-candidate-for-cloud-migration%2F&amp;title=Is%20your%20application%20a%20candidate%20for%20cloud%20migration%3F" id="wpa2a_4"><img src="http://blog.harbinger-systems.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.harbinger-systems.com/2012/01/is-your-application-a-candidate-for-cloud-migration/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Workspace – Better way of organizing your XCode projects</title>
		<link>http://blog.harbinger-systems.com/2011/11/workspace-%e2%80%93-better-way-of-organizing-your-xcode-projects/</link>
		<comments>http://blog.harbinger-systems.com/2011/11/workspace-%e2%80%93-better-way-of-organizing-your-xcode-projects/#comments</comments>
		<pubDate>Thu, 24 Nov 2011 08:50:21 +0000</pubDate>
		<dc:creator>Johnson</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.harbinger-systems.com/?p=796</guid>
		<description><![CDATA[Working with XCode IDE, I had always felt the need for a top-level entity that could support and organize my multiple XCode projects.  It wasn’t easy to access the files of one project from another in XCode 3.2, even if you had cross project references between them. Code sharing was always an issue if two [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float:right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.harbinger-systems.com%2F2011%2F11%2Fworkspace-%25e2%2580%2593-better-way-of-organizing-your-xcode-projects%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.harbinger-systems.com%2F2011%2F11%2Fworkspace-%25e2%2580%2593-better-way-of-organizing-your-xcode-projects%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Working with XCode IDE, I had always felt the need for a top-level entity that could support and organize my multiple XCode projects.  It wasn’t easy to access the files of one project from another in XCode 3.2, even if you had cross project references between them. Code sharing was always an issue if two or more projects used the same libraries and we had to copy them into each project folder separately.</p>
<p>Introduction of “Workspaces” brings in one of the new bits of &#8220;magic&#8221; that XCode 4 does for you: <em>Multiple-Project Support</em>. A workspace is basically a container meta-file that groups together multiple projects and other documents. It also provides implicit and explicit relationships among the included projects and their respective targets.<span id="more-796"></span>  </p>
<p> Concept of workspace also allows us to create and use third party libraries in iOS projects in a much simpler way. However, the procedure is still more complex than it needs to be. Apple documentation suggests that it should automatically detect dependencies and other index classes across workspace.</p>
<p><strong> </strong>There are few key behaviors of workspace on how to share code across different projects in XCode:</p>
<ul>
<li>All the projects in a workspace are built in the same directory, referred to as the workspace build directory.</li>
<li>XCode inspects the files in the build directory to discover implicit dependencies between them.</li>
</ul>
<ul>
<li>Each project in a workspace continues to have its own independent distinctiveness.</li>
</ul>
<p><strong> </strong><strong>Steps that worked for me:</strong></p>
<ol>
<li>Create a new workspace and add the shared library project.</li>
<li> Add the application project that would use the above shared library.  </li>
<li>Open Build Phase of shared library and make sure when copying headers it is grouped to public .</li>
<li>Open Build settings of application and in the Header Search Paths type in &#8220;BUILD_PRODUCTS_DIR&#8221;\usr\local\include .</li>
<li>And in Build Phase of target, include a link to static library (shared library) .</li>
<li>Now, clean and build and everything should build successfully.</li>
</ol>
<p> Incase you are having linking errors while setting up the workspace in XCode, you can refer this article <a href="http://stackoverflow.com/questions/5427396/whats-the-correct-way-to-configure-xcode-4-workspaces-to-build-dependencies-whe" target="_blank">whats-the-correct-way-to-configure-xcode-4-workspaces-to-build-dependencies</a></p>
<p> All said and done, this worked like a charm for me. The workspace concept benefited me by sharing the code and build folders across multiple projects. Now, with the use of XCode 4 workspace we don’t have to copy the library files in every project and this saves lot of development time and effort.</p>
<p> <strong>How is it better than eclipse workspace?</strong></p>
<p>There are two main aspects in which I found XCode workspace to be better than Eclipse workspace:</p>
<ol>
<li>In XCode 4.0, file indexing is done across the whole workspace so, code completion and refactoring operations act across all the content of the workspace. You can refactor the API in a framework project and in several application projects that use that framework all in one operation. This feature is missing in the current version of Eclipse.</li>
<li>All the XCode projects in a workspace are built in the same directory, which is referred to as the “workspace build directory”. As all of the files in all of the projects in a workspace are in the same build directory, all of these files are visible to each project. Hence, if two or more projects use the same libraries, you don’t need to include them into each project folder separately.</li>
</ol>
<p> <strong>How it improved my development process?</strong></p>
<p>This article might give you an impression that setting up the workspace is a lot of work; but fortunately it’s not, especially if you do it more than once (considering that the aim here is to share code across <em>multiple</em> projects). I have been using this workspace approach for about four months with several projects and it’s definitely saved me a lot of time especially when the application projects used the same static libraries again and again.</p>
<p> Instead of copying the source code from the “shared libraries” into every project (which used to take me an hour or so for every project), I just keep the shared library code in a separate XCode project and use it to build static libraries along with the application project. It is just a 5-minutes job now!</p>
<g:plusone href="http://blog.harbinger-systems.com/2011/11/workspace-%e2%80%93-better-way-of-organizing-your-xcode-projects/"  size="standard"   ></g:plusone></script>
<span style=''><g:plusone count="true" size="tall"></g:plusone></span><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.harbinger-systems.com%2F2011%2F11%2Fworkspace-%25e2%2580%2593-better-way-of-organizing-your-xcode-projects%2F&amp;title=Workspace%20%E2%80%93%20Better%20way%20of%20organizing%20your%20XCode%20projects" id="wpa2a_6"><img src="http://blog.harbinger-systems.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.harbinger-systems.com/2011/11/workspace-%e2%80%93-better-way-of-organizing-your-xcode-projects/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Automation Using Coded UI Test</title>
		<link>http://blog.harbinger-systems.com/2011/10/automation-using-coded-ui-test/</link>
		<comments>http://blog.harbinger-systems.com/2011/10/automation-using-coded-ui-test/#comments</comments>
		<pubDate>Thu, 20 Oct 2011 08:56:12 +0000</pubDate>
		<dc:creator>Pramod</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.harbinger-systems.com/?p=760</guid>
		<description><![CDATA[Coded UI Test (CUIT) is a new feature introduced by Microsoft for UI Automation. The automated tests created by CUIT are used for the functionality testing of an application. To know about this tool, we started exploring its ‘Record and Playback’ feature. A very simple test case that we initiated this effort with had the [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float:right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.harbinger-systems.com%2F2011%2F10%2Fautomation-using-coded-ui-test%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.harbinger-systems.com%2F2011%2F10%2Fautomation-using-coded-ui-test%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://msdn.microsoft.com/en-us/library/dd286726.aspx" target="_blank">Coded UI Test (CUIT)</a> is a new feature introduced by Microsoft for UI Automation. The automated tests created by CUIT are used for the functionality testing of an application.</p>
<p>To know about this tool, we started exploring its ‘Record and Playback’ feature. A very simple test case that we initiated this effort with had the following steps:</p>
<ol>
<li>Launch Internet Explorer</li>
<li>Navigate to <a href="http://www.google.com" target="_blank">www.google.com</a></li>
<li>Search for “Code UI Test”</li>
<li>Validate if the result returned “How to: Create a Coded UI Test” link (an MSDN article on the topic)</li>
</ol>
<p>Though it generated huge code for such a simple test case, the overall Record and Playback process highlighted the strengths of this tool. The well structured code and powerful element identification mechanism really caught our attention.<br />
<span id="more-760"></span> </p>
<p>Besides that, the CUIT playback engine is also powerful. Playback engine performs duties such as searching for a control and ensuring that the control is visible and ready to be acted upon. Once the control is ready the engine performs actions such as ‘Click’, ‘Select’, ‘Set a Value’, etc. on it.</p>
<p>Recording feature alone is of course, not sufficient for building a full-fledged automation suite. However, CUIT’s recording feature certainly helps you if you decide to write your own scripts. It primarily helps in getting proper hierarchy of controls on the page (such as browser – iframe – div – control) and a set of properties that can be used to identify a particular control uniquely.</p>
<p>We also developed a UI Automation Framework using CUIT. While developing this framework, we experienced that CUIT has got several strengths. Its Recording feature really helped us save development time to a good extent.</p>
<p>Overall, if you decide to go with CUIT, here are some pros and cons of using it for your product:</p>
<h3>Pros</h3>
<ol>
<li>The element identification mechanism is powerful</li>
<li>Uses C#, the compiled language, which comes with its own advantages over the scripting languages</li>
<li>Works well with Web as well as Desktop applications</li>
<li>Strong support for Synchronization. The Playback Engine allows settings such as “WaitForReadyLevel”, which can be either “UIThreadOnly” or “AllThreads”. It makes the Test Execution stop until either UI Threads or All threads are ready.</li>
</ol>
<p>Other supported settings are– “Stop on Error”, “Match exact hierarchy”, “Search in minimized window”, etc.</p>
<ol>
<li>It supports AJAX</li>
<li>The tests can be run on Remote Machines with the help of Tests Agents</li>
</ol>
<h3>Cons</h3>
<ol>
<li>Generates huge code for even a small UI operation, and hence hampers maintainability to some extent</li>
<li>Code Reusability is limited; it regenerates code even if it was already generated for a particular action</li>
<li>It uses almost all the Property &#8211; Value pairs to identify and locate the UI Controls which at times seems to affect the performance of the script</li>
</ol>
<h3>Guidelines for Automation using Code UI Test</h3>
<ol>
<li>Test creation is certainly a time consuming task, but it is worth going for it if the application under test is pretty stable and has got a large number of tests to be executed repetitively</li>
<li>Having said the above, it is not worth putting efforts in generating Test Scripts for an application which has frequently changing functionality</li>
<li>It can be used for Web as well as Windows applications. It supports,
<ol>
<li>AJAX</li>
<li>Silverlight</li>
</ol>
</li>
</ol>
<p>With such advantages and the reliability of the scripts, CUIT appears to be a promising tool for the UI Automation. There are other areas to explore. For example, we have not yet tried it with application containing Flash controls. That might be a topic for a future blog post, but in meanwhile, have you tried it with Flash? Write to us in comments and share your views.</p>
<g:plusone href="http://blog.harbinger-systems.com/2011/10/automation-using-coded-ui-test/"  size="standard"   ></g:plusone></script>
<span style=''><g:plusone count="true" size="tall"></g:plusone></span><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.harbinger-systems.com%2F2011%2F10%2Fautomation-using-coded-ui-test%2F&amp;title=Automation%20Using%20Coded%20UI%20Test" id="wpa2a_8"><img src="http://blog.harbinger-systems.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.harbinger-systems.com/2011/10/automation-using-coded-ui-test/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Mobile Application Development and Flex</title>
		<link>http://blog.harbinger-systems.com/2011/09/mobile-application-development-and-flex/</link>
		<comments>http://blog.harbinger-systems.com/2011/09/mobile-application-development-and-flex/#comments</comments>
		<pubDate>Thu, 15 Sep 2011 06:33:00 +0000</pubDate>
		<dc:creator>Maheshkumar</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.harbinger-systems.com/?p=745</guid>
		<description><![CDATA[Last month, I attended a RIA conference by Adobe at Pune. If I have to choose the most interesting part, I would go with the demo on use of Flash Builder 4.5 for Mobile application development with Flex 4.5. Adobe is trying to answer one of the most sought-after questions &#8211; is it possible to [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float:right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.harbinger-systems.com%2F2011%2F09%2Fmobile-application-development-and-flex%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.harbinger-systems.com%2F2011%2F09%2Fmobile-application-development-and-flex%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Last month, I attended a <a href="http://www.adobe.com/resources/business/rich_internet_apps/">RIA</a> conference by Adobe at Pune. If I have to choose the most interesting part, I would go with the demo on use of <a href="http://www.adobe.com/products/flex/mobile/">Flash Builder 4.5 for Mobile application development with Flex 4.5</a>.</p>
<p>Adobe is trying to answer one of the most sought-after questions &#8211; is it possible to develop an iPhone application without using <a href="http://developer.apple.com/technologies/tools/whats-new.html">Xcode</a>? Is it possible to develop an application for Android that will run on iPhone as well?<span id="more-745"></span>  </p>
<p>Adobe wants to use Flex as a mechanism to answer the above questions. If you know Flex, you can build apps for <a href="http://developer.android.com/index.html">Android</a>,<a href="http://us.blackberry.com/developers/tablet/"> BlackBerry Playbook</a>, <a href="http://developer.apple.com/ipad/sdk/">iPhone</a> and <a href="http://developer.apple.com/ipad/sdk/">iPad</a>.</p>
<p>Key features of this approach in creating applications for multiple mobile platforms are:</p>
<ul>
<li>In-built component library for UI
<ul>
<li>List, Busy Cursor, Scroller, ItemRenderer, different buttons and navigators etc.</li>
</ul>
</li>
<li>Auto scaling based on device pixel density</li>
<li>Support for mobile themes including default</li>
<li>Performance optimization</li>
<li>Multi-resolution bitmap support</li>
</ul>
<p>Here is a nice step-by-step overview on <a href="http://www.adobe.com/devnet/flex/articles/mobile-development-flex-flashbuilder.html">how to develop a mobile application using Flex 4.5 SDK</a>. I must agree that this is really a huge step forward to enable developers concentrate on business needs rather than different platforms when it comes to mobile development. If we look at the rich feature list and support mentioned, there is no doubt about bringing down the cost of developing and improving the time to market for developers.</p>
<p>So, is Flex something that everyone should consider when building a multi-platform mobile app? I think the following questions and considerations will help one decide.</p>
<ol>
<li>Do you have an existing app developed for either iPhone or Android.<br />
If you plan to extend support for additional platform, it would be 50-50 decision as development efforts involved will be same. Using <a href="http://www.adobe.com/products/flex/mobile/">Flex 4.5</a> could really make a difference if in the future, you plan to add more features to an existing app.</li>
<li>Which mobile platforms are you planning your app for?<br />
If your focus is mainly on platforms supported by Adobe, it’s worth evaluating.</li>
<li>Complexity of the app and features to be supported.<br />
I am yet to evaluate complete feature list, but overall it looks promising for simple data driven apps. It will take a while to evaluate and comment on its ability to support complex business requirements without compromising performance.</li>
<li>Is there any platform specific feature in your application?<br />
One of the challenges with respect to developing cross platform app is always the diverse set of platform specific feature list. For example, on Android, almost every device has back button to exit app whereas Apple apps are largely unaware of existence of back button or app exit functionality. Although you have a common code-base with Flex, it is purely based on similarities across multiple mobile platforms, which makes things difficult.</li>
</ol>
<p>As mobile platforms are continuously evolving, Adobe&#8217;s attempt is commendable. What I am looking forward to now is how Adobe is going to incorporate support for future versions of these mobile platforms &#8211; essentially, how fast Adobe can add support for newer versions of operating systems in the future, to position its Flex platform over the individual Android/iPhone/Blackberry platforms.</p>
<g:plusone href="http://blog.harbinger-systems.com/2011/09/mobile-application-development-and-flex/"  size="standard"   ></g:plusone></script>
<span style=''><g:plusone count="true" size="tall"></g:plusone></span><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.harbinger-systems.com%2F2011%2F09%2Fmobile-application-development-and-flex%2F&amp;title=Mobile%20Application%20Development%20and%20Flex" id="wpa2a_10"><img src="http://blog.harbinger-systems.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.harbinger-systems.com/2011/09/mobile-application-development-and-flex/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>NoSQL: Next Generation Databases</title>
		<link>http://blog.harbinger-systems.com/2011/09/nosql-next-generation-databases/</link>
		<comments>http://blog.harbinger-systems.com/2011/09/nosql-next-generation-databases/#comments</comments>
		<pubDate>Fri, 02 Sep 2011 07:07:01 +0000</pubDate>
		<dc:creator>Maheshkumar</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.harbinger-systems.com/?p=740</guid>
		<description><![CDATA[Since we all started using Google &#38; Facebook there is always a mentioning about performance these portals have provided. There are many articles/blogs/stories published on the same and all in all it stops at NoSQL. Early this year, when Netflix migrated to use NoSQL successfully, now almost everyone wants to evaluate this technique further. As [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float:right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.harbinger-systems.com%2F2011%2F09%2Fnosql-next-generation-databases%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.harbinger-systems.com%2F2011%2F09%2Fnosql-next-generation-databases%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Since we all started using <a href="http://labs.google.com/papers/bigtable.html">Google</a> &amp; Facebook there is always a mentioning about performance these portals have provided. There are many articles/blogs/stories published on the same and all in all it stops at <a href="http://nosql-database.org/">NoSQL</a>. Early this year, when <a href="http://techblog.netflix.com/2011/01/nosql-at-netflix.html">Netflix migrated to use NoSQL</a> successfully, now almost everyone wants to evaluate this technique further. As first major <a href="http://nosql2011.wilshireconferences.com/">NoSQL Now Conference</a> started in August (August 23 – 25) this post is to give quick introduction of NoSQL and touch base pointers that will help in evaluating its use in existing or future projects.<span id="more-740"></span> </p>
<p>NoSQL commonly expanded to ‘Not Only SQL’. In my observations, mostly it’s been considered as an alternative to RDMS as we are used to <strong>‘SQL’ means RDBMS</strong> because of its popularity. In fact it’s not an alternative; it’s a different database model with set of different objectives. One more point to be noted here is, NoSQL is not a single system/solution rather it’s a class of database management systems that differ from classic RDBMS.</p>
<p>Recently I was working on solving a performance issue in one of the project. It involved intensive File IO and huge set of DB operations. Due to complexity of queries and size of data, module was lacking with respect to desired performance. Ultimate solution for the problem was to de-normalize existing DB schema, add batch processing and on top of it distribute batch processing across multiple nodes to further enhance it. I don’t see much difference between this solution and NoSQL at concept level, NoSQL takes this concept to a broader level. I would say NoSQL engines rely on a distributed storage systems and parallel processing across different nodes.</p>
<p>NoSQL implementations are generally categorized as below:</p>
<ul>
<li>Document Store – <a href="http://couchdb.apache.org/">Apache CouchDB</a>, <a href="http://www.mongodb.org/">MongoDB</a>, <a href="http://aws.amazon.com/simpledb/">SimpleDB</a> etc.</li>
<li>Graph – <a href="http://www.franz.com/agraph/allegrograph/">AllegroGraph</a>, <a href="http://www.orientechnologies.com/orient-db.htm">OrientDB</a> etc.</li>
<li>Key-value Stores – <a href="http://cassandra.apache.org/">Apache Cassandra</a>, <a href="http://labs.google.com/papers/bigtable.html">BigTable</a>, <a href="http://hadoop.apache.org/">Apache Hadoop</a> etc.</li>
</ul>
<p><strong>So why or when I will use NoSQL?</strong></p>
<ul>
<li>For certain use cases so admired <a href="http://en.wikipedia.org/wiki/ACID">ACID</a> nature of RDBMS takes its toll on application performance and eventually availability of the application. Some of the applications may not need relationship between data stored along with it.</li>
<li>One of the most talked aspects is SCALABLITY. With classic RDBMS approach scalability is achieved with architecting the database properly. On the other hand, NoSQL datastructures have no predefined schemas. It focuses on only those datastrctures that can scale and restricting use of these datastructres ensures significantly higher horizontal scalability.</li>
<li>High Availability is another important dimension of NoSQL which comes at relative cheaper cost than RDBMS. With synchronous replication of data, it ensures high availability.</li>
</ul>
<p>As its still evolving, migration from RDBMS to NoSQL is not simple step; approach followed by Netflix is a very good example to consider here.</p>
<p>Though throughout this post I have compared NoSQL with RDBMS, it’s mainly to highlight features and explore use of NoSQL to solve problems faced with RDBMS. <strong>RDBMS is not going anywhere.</strong> In evaluating few of NoSQL engines; I have observed complexity as compared to RDBMS. Being this said, I think NoSQL implementations on Cloud will definitely be a next step forward.</p>
<g:plusone href="http://blog.harbinger-systems.com/2011/09/nosql-next-generation-databases/"  size="standard"   ></g:plusone></script>
<span style=''><g:plusone count="true" size="tall"></g:plusone></span><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.harbinger-systems.com%2F2011%2F09%2Fnosql-next-generation-databases%2F&amp;title=NoSQL%3A%20Next%20Generation%20Databases" id="wpa2a_12"><img src="http://blog.harbinger-systems.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.harbinger-systems.com/2011/09/nosql-next-generation-databases/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Usability Evaluation Methods &#8211; Making the right choice at the right phase</title>
		<link>http://blog.harbinger-systems.com/2011/06/usability-evaluation-methods-making-the-right-choice-at-the-right-phase/</link>
		<comments>http://blog.harbinger-systems.com/2011/06/usability-evaluation-methods-making-the-right-choice-at-the-right-phase/#comments</comments>
		<pubDate>Tue, 21 Jun 2011 13:36:34 +0000</pubDate>
		<dc:creator>vibhuti</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.harbinger-systems.com/?p=725</guid>
		<description><![CDATA[In this post, we’ll take a look at some usability evaluation methods most commonly used in software design today. These can be applied at different stages in User Centered Design process. These methods can be broadly categorized into 3 categories – Inquiry, Inspection and Testing. Contextual Inquiry (Inquiry) When – Early stages of development, the [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float:right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.harbinger-systems.com%2F2011%2F06%2Fusability-evaluation-methods-making-the-right-choice-at-the-right-phase%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.harbinger-systems.com%2F2011%2F06%2Fusability-evaluation-methods-making-the-right-choice-at-the-right-phase%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>In this post, we’ll take a look at some usability evaluation methods most commonly used in software design today. These can be applied at different stages in User Centered Design process. These methods can be broadly categorized into 3 categories – <strong>Inquiry, Inspection and Testing.</strong> <span id="more-725"></span> </p>
<ul>
<li><strong>Contextual Inquiry</strong> <em>(Inquiry)</em><br />
When      – Early stages of development, the information collected through this      techniques is quite subjective<br />
Why –  When it is important to see how      different users work in different environments/domains<br />
How      – It is sort of an interview      method where you need to go to the user’s workplace, ask them few standard      questions based on your purpose and observe them while they work</li>
</ul>
<ul>
<li><strong>Focus Groups</strong> <em>(Inquiry)<br />
</em>When – Early stages of project/product planning<br />
Why      – To obtain various reactions/opinion about a particular concept. It’s      also useful for gathering different insights &amp; preferences.<br />
How      – This is a group interaction      activity where a selected range of people gather to discuss a particular      topic and give their reactions, opinions, insights etc. This discussion      usually happens under the guidance of a moderator who follows a discussion      plan.</li>
<li><strong>Heuristic Evaluation</strong> <em>(Inspection)</em><br />
When      – At any stage of design phase<br />
Why –      To determine the usability problems in the design<br />
How – Usability experts (mostly one to three) judge      the compliance of various user interface elements with established      usability guidelines.</li>
</ul>
<ul>
<li><strong>Card Sorting</strong> <em>(Inspection)</em><br />
When– Early design phase of the project<br />
Why – To design the Information Architecture and know how users would categorize and label the information<br />
How – Test users are given a unsorted collection of items and asked to organize them into categories, determining associations, grouping and finally label them.</li>
</ul>
<ul>
<li><strong>Usability Testing</strong> <em>(Testing)<br />
</em>When – Wireframe stage &amp; also the later stage<br />
Why – To test the user friendliness of the      application/product in terms of speed of use, ease of use, overall      efficiency etc.<br />
How      – This is a testing method in      which the test user is observed using the product. Thinking Aloud      protocol is a popular technique used here in which the users are requested      to vocalize their thoughts while exploring the product or performing a      particular task. The observation can be either obtrusive or non-obtrusive.<strong> </strong></li>
</ul>
<p><strong> </strong></p>
<p>Above methods are followed by careful and systematic analysis through proper interpretation sessions which include evaluation of the most important usability problems and studying affinities.</p>
<p>At Harbinger, we use these methods regularly based on the needs of our clients. Do you use of any of these during your product design? Or are there any other techniques that make your product go from good to great?</p>
<g:plusone href="http://blog.harbinger-systems.com/2011/06/usability-evaluation-methods-making-the-right-choice-at-the-right-phase/"  size="standard"   ></g:plusone></script>
<span style=''><g:plusone count="true" size="tall"></g:plusone></span><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.harbinger-systems.com%2F2011%2F06%2Fusability-evaluation-methods-making-the-right-choice-at-the-right-phase%2F&amp;title=Usability%20Evaluation%20Methods%20%26%238211%3B%20Making%20the%20right%20choice%20at%20the%20right%20phase" id="wpa2a_14"><img src="http://blog.harbinger-systems.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.harbinger-systems.com/2011/06/usability-evaluation-methods-making-the-right-choice-at-the-right-phase/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

