<?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/"
	xmlns:series="http://unfoldingneurons.com/"
	>

<channel>
	<title>Xoriant Software Product Engineering Blog</title>
	<atom:link href="http://www.xoriant.com/blog/feed" rel="self" type="application/rss+xml" />
	<link>http://www.xoriant.com/blog</link>
	<description>Product Engineering Outsourcing, Tech Talk</description>
	<lastBuildDate>Tue, 01 Nov 2011 09:02:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Impact of Cloud Computing on Various Domains</title>
		<link>http://www.xoriant.com/blog/cloud-computing-for-isvs/impact-of-cloud-computing-on-various-domains.html</link>
		<comments>http://www.xoriant.com/blog/cloud-computing-for-isvs/impact-of-cloud-computing-on-various-domains.html#comments</comments>
		<pubDate>Tue, 01 Nov 2011 09:02:30 +0000</pubDate>
		<dc:creator>Jitendra Singh</dc:creator>
				<category><![CDATA[Cloud Computing for ISVs]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[Cloud Computing Advantages]]></category>
		<category><![CDATA[Cloud Computing in e-commerce]]></category>
		<category><![CDATA[Cloud Computing in Healthcare]]></category>
		<category><![CDATA[Cloud Computing in Outsourcing]]></category>
		<category><![CDATA[Cloud Computing in telecom]]></category>
		<category><![CDATA[Cloud Service Providers]]></category>

		<guid isPermaLink="false">http://www.xoriant.com/blog/?p=2036</guid>
		<description><![CDATA[Introduction: Cloud Computing can be seen as the logical evolution in outsourcing IT services. The promise is that, with Cloud Computing, every company (big or small) can get IT services in a very simple way. Cloud Computing is an epitome of the change in use of IT Infrastructure and Services as the consumers will not [...]


Related posts:<ol><li><a href='http://www.xoriant.com/blog/cloud-computing-for-isvs/cloud-computing-the-definition.html' rel='bookmark' title='Permanent Link: Cloud Computing &#8211; The Definition'>Cloud Computing &#8211; The Definition</a> <small>Introduction Cloud Computing now finds a way through most technical discussions. Irrespective of the medium (Web Search, Twitter, Online Journals), you will find Cloud Computing being discussed. But ask anyone...</small></li>
<li><a href='http://www.xoriant.com/blog/cloud-computing-for-isvs/cloud-computing-its-feasibility-and-emerging-paradigms.html' rel='bookmark' title='Permanent Link: Cloud computing- its feasibility and emerging paradigms'>Cloud computing- its feasibility and emerging paradigms</a> <small>Cloud computing is more than a concept. Let us understand what it is. This post gives a brief of what is cloud computing, its attached benefits and some of the...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><span style="color: #339966;"><strong><span style="font-size: medium;">Introduction:</span></strong></span></p>
<p>Cloud Computing can be seen as the logical evolution in outsourcing IT services. The promise is that, with Cloud Computing, every company (big or small) can get IT services in a very simple way. Cloud Computing is an epitome of the change in use of IT Infrastructure and Services as the consumers will not have to spend capital of owning or renting the Hardware/Software rather they can use the resources and expense is cut down to usage only.</p>
<p>So, cloud computing would give extra business value over a long period of time along ensuring that the quick changing business needs can be supported better than using traditional IT services. It seems like creating a prospective horizon for changing the Information Technology world into different form than what we perceive it today.</p>
<p>With this change there would be certain pros and cons associated. As of now the visibility on the implications is not very distant and requires a wait and watch strategy to gradually build/change the business models for different domains.</p>
<p><strong><span style="color: #339966;"><span style="font-size: medium;">Impact on various domains:</span></span></strong></p>
<p><a href="http://www.xoriant.com/blog/cloud-computing-for-isvs/cloud-computing-the-definition.html">Having the basic idea about Cloud Computing </a>,in this blog we will discuss the pros and cons of cloud computing in general and would try to understand possible impact of these on the different domains.</p>
<p>We would see large range of highly scalable new generation agile products and services to choose from. These would provide abstraction from current process and thereby reduction in the overall cost.We also expect some standardization to come into picture.</p>
<p>Some of Pros are enlisted here:</p>
<p><strong><em><span style="text-decoration: underline;">Reduced Cost:</span></em></strong> Costing model is incremental i.e. pay only for what you use thus saving the money.</p>
<p><strong><em><span style="text-decoration: underline;">Increased Storage:</span></em></strong> Since resources provided by the Cloud Service Provider are virtualized and can be scaled up as required gives the consumer flexibility of unlimited storage space.</p>
<p><strong><em><span style="text-decoration: underline;">Highly Automated:</span></em></strong> Most of the things are responsibility of CSP like Software/Server update, physical maintenance of infrastructure, licensing of software/tools etc</p>
<p><strong><em><span style="text-decoration: underline;">Mobility &amp; flexibility:</span></em></strong> Information/service is accessible from anywhere seamlessly if cloud is accessible</p>
<p>Currently this seems like dominance of few gig players (Amazon/Google/Oracle) and thus rise of new industry leaders and IT vendors will leave fewer options for small software companies to cope up with the evolving business model.</p>
<p>The other cons that we can list are:</p>
<p><strong><em><span style="text-decoration: underline;">Security:</span></em></strong> A proper security model for cloud computing is still awaited. Physical location of hardware and software being unknown would make site inspections and audits difficult. There is also risk of data loss due to improper backups or system failures in the virtualized environment.</p>
<p><strong><em><span style="text-decoration: underline;">Dependency (Loss of Control):</span></em></strong> Most of the critical things are under control of CSP (Cloud Service Provider) like &#8211; Quality of Service (QoS), Contingency Procedures, Measurement of resource utilization</p>
<p><strong><em><span style="text-decoration: underline;">Cost:</span></em></strong> Cost structure would be difficult to analyze during initial setup/migration as there could be associated hidden costs for backup, restore, disaster recovery, issue solving and compliancy regulations. Moreover future changes in the cost should also be taken into consideration.</p>
<p><strong><em><span style="text-decoration: underline;">Decreased Flexibility:</span></em></strong> Migration to different CSP would not be simple and would require proper planning starting right while developing the applications (making them generic and portable)</p>
<h2><span style="color: #339966;"><span style="font-size: medium;"><strong>Taking specific businesses into account: </strong></span></span></h2>
<p><strong><em>Telecom:</em></strong> Telecom sector is one of the biggest consumers of IT infrastructure, may it be software or hardware so we can expect it to be affected at all levels viz<strong> </strong>Software as a Service (SaaS), Platform as a Service (PaaS), and Infrastructure as a Service (IaaS). Cloud Computing is based on virtualization of the resources much like running multiple VMs on same hardware, we know that there would be some trade-off for this in terms of lag due to network/virtualization. The lag of fraction of second could be fine for data traffic on the network but may not be up to mark for real time voice/video based services. So it looks like some services would still require dedicated resources/hardware to meet up the SLAs.</p>
<p><strong> </strong></p>
<p><strong><em>Healthcare:</em></strong> Quite obviously medical businesses generate huge amount of data like patient records, biomedical research, insurance claims. It is one of the major concerns for hospitals, insurers and researchers to manage this large amount of data. Cloud computing would offer each of these players a potentially more cost-effective alternative to traditional data storage and management solutions. But still there is fear that sharing a platform in a public cloud would compromise privacy regulations, So need of a strong regulatory standard is necessary.</p>
<p><strong><em>E-Commerce: </em></strong>Cloud<strong> </strong>computing would be boon to the businesses in e-commerce as they are the ones working in a pretty similar fashion since a long time viz usually these businesses run virtually on the internet only,  for this  they have to setup virtual infrastructure and services from different vendors. Interaction with various vendors will now be eliminated and limited to a single service provider who can take care of all the requirements. So we expect a substantial growth of e-commerce to be obvious in near future.</p>
<p><strong><em>Outsourcing: </em></strong><em>M</em>ost of the current business models associated with IT infrastructure and services do include outsourcing of various activities may it be maintenance or labor. With business migrating to cloud the need for these would be decreasing in long run as most of the things would be taken care by CSP. This means that there would be a downfall expected in requirement of traditional outsourcing but on the other hand the increase in specific outsourced services for migration to cloud can be seen. Overall there should be major change/shift in the outsourced services but this would be gradual.</p>
<p>Currently IT costs seem to be quite competitive but still remains inflated as compared to other products and services that we use today. We do see cloud computing as a potential candidate who can play the role of game changer and help to regulate the IT economics.  But the side effects and implications are yet to be well totally foreseen and understood. Kindly share your thoughts and understanding on the above topic to have a fruitful interaction.
<div class="author_member_gravatar_pic" style="display:block;">
			   <a class="author_member_gravatar" style="display:block;float:left;" href="http://www.xoriant.com/blog/?author=32"><img alt='' src='http://0.gravatar.com/avatar/880117274a43652bb493d5e4031954b8?s=60&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D60&amp;r=G' class='avatar avatar-60 photo' height='60' width='60' /><br />
			   <a class="author_member_gravatar" style="padding:5px;font-size:12px;text-decoration:none;font-weight:bold;" href="http://www.xoriant.com/blog/?author=32">Jitendra Singh</a><span class="author-desc"><strong>&ndash; Senior Software Engineer</strong></span></div>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-knowledge">
<ul class="socials">
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.xoriant.com/blog/cloud-computing-for-isvs/impact-of-cloud-computing-on-various-domains.html&amp;title=Impact+of+Cloud+Computing+on+Various+Domains&amp;summary=Introduction%3A%0D%0A%0D%0ACloud%20Computing%20can%20be%20seen%20as%20the%20logical%20evolution%20in%20outsourcing%20IT%20services.%20The%20promise%20is%20that%2C%20with%20Cloud%20Computing%2C%20every%20company%20%28big%20or%20small%29%20can%20get%20IT%20services%20in%20a%20very%20simple%20way.%20Cloud%20Computing%20is%20an%20epitome%20of%20the%20change%20in%20use%20of%20IT%20Infrastructure%20and%20Services%20as%20&amp;source=Xoriant Software Product Engineering Blog" rel="nofollow" class="external" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Impact+of+Cloud+Computing+on+Various+Domains+-+http://bit.ly/srVeqo&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://www.xoriant.com/blog/cloud-computing-for-isvs/impact-of-cloud-computing-on-various-domains.html&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://www.xoriant.com/blog/cloud-computing-for-isvs/impact-of-cloud-computing-on-various-domains.html&amp;title=Impact+of+Cloud+Computing+on+Various+Domains" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.xoriant.com/blog/cloud-computing-for-isvs/impact-of-cloud-computing-on-various-domains.html&amp;title=Impact+of+Cloud+Computing+on+Various+Domains" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-comfeed">
			<a href="http://www.xoriant.com/blog/cloud-computing-for-isvs/impact-of-cloud-computing-on-various-domains.html/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
		<li class="shr-reddit">
			<a href="http://reddit.com/submit?url=http://www.xoriant.com/blog/cloud-computing-for-isvs/impact-of-cloud-computing-on-various-domains.html&amp;title=Impact+of+Cloud+Computing+on+Various+Domains" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.xoriant.com/blog/cloud-computing-for-isvs/impact-of-cloud-computing-on-various-domains.html&amp;t=Impact+of+Cloud+Computing+on+Various+Domains" rel="nofollow" class="external" title="Share this on Facebook">Share this on Facebook</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>



<p>Related posts:<ol><li><a href='http://www.xoriant.com/blog/cloud-computing-for-isvs/cloud-computing-the-definition.html' rel='bookmark' title='Permanent Link: Cloud Computing &#8211; The Definition'>Cloud Computing &#8211; The Definition</a> <small>Introduction Cloud Computing now finds a way through most technical discussions. Irrespective of the medium (Web Search, Twitter, Online Journals), you will find Cloud Computing being discussed. But ask anyone...</small></li>
<li><a href='http://www.xoriant.com/blog/cloud-computing-for-isvs/cloud-computing-its-feasibility-and-emerging-paradigms.html' rel='bookmark' title='Permanent Link: Cloud computing- its feasibility and emerging paradigms'>Cloud computing- its feasibility and emerging paradigms</a> <small>Cloud computing is more than a concept. Let us understand what it is. This post gives a brief of what is cloud computing, its attached benefits and some of the...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.xoriant.com/blog/cloud-computing-for-isvs/impact-of-cloud-computing-on-various-domains.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Driving Mobile Applications via the Cloud</title>
		<link>http://www.xoriant.com/blog/cloud-computing-for-isvs/driving-mobile-applications-via-the-cloud.html</link>
		<comments>http://www.xoriant.com/blog/cloud-computing-for-isvs/driving-mobile-applications-via-the-cloud.html#comments</comments>
		<pubDate>Tue, 27 Sep 2011 05:57:54 +0000</pubDate>
		<dc:creator>Romin Irani</dc:creator>
				<category><![CDATA[Cloud Computing for ISVs]]></category>
		<category><![CDATA[Cloud APIs]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[Mobile Cloud]]></category>
		<category><![CDATA[REST]]></category>

		<guid isPermaLink="false">http://www.xoriant.com/blog/?p=2016</guid>
		<description><![CDATA[Cloud Computing brings about real benefits to IT organizations by making available computing resources that you can pay as per your usage, while taking away the hassles of resource management. My previous blog gave a basic idea of what is cloud computing all about.This blog post focuses on how the Cloud can be architecturally used [...]


Related posts:<ol><li><a href='http://www.xoriant.com/blog/cloud-computing-for-isvs/riding-the-cloud.html' rel='bookmark' title='Permanent Link: Riding the Cloud'>Riding the Cloud</a> <small>Cloud computing redefines Enterprise Computing in ways beyond client-server model and web computing and is a talk of the town recently. Cloud computing extends beyond the concepts of distributed, grid...</small></li>
<li><a href='http://www.xoriant.com/blog/mobile-application-development/bringing-enterprise-applications-to-mobile.html' rel='bookmark' title='Permanent Link: Bringing Enterprise Applications to Mobile'>Bringing Enterprise Applications to Mobile</a> <small>Enterprise software is now going mobile. More and more work, which needed your presence in office/home, can be done on-the-go. With introduction of addictive UIs on smart phones, the market...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Cloud Computing brings about real benefits to IT organizations by making available computing resources that you can pay as per your usage, while taking away the hassles of resource management. My previous blog gave a <a href="http://www.xoriant.com/blog/cloud-computing-for-isvs/cloud-computing-the-definition.html">basic idea of what is cloud computing</a> all about.This blog post focuses on how the Cloud can be architecturally used to drive your mobile applications across various platforms. In the process, we shall see that using the cloud, we can achieve a single layer that can drive the same mobile application running on multiple mobile OS platforms.</p>
<p>The last few years have seen the emergence of APIs (Application Programming Interfaces). In fact various organizations are now solely known by their APIs and have become popular among developers. Every popular site, be it Facebook, Twitter or even start-ups like Twilio are focused on exposing their core services and data via an API so that developers can take advantage of it. There are a couple of important things that is highlighted by these APIs. The first one is that they are exposed via standard mechanisms like REST and provide data typically in JSON/XML formats. The second one is that these services are primarily hosted on Cloud infrastructure. The Cloud infrastructure here is typically from the IaaS vendors (Infrastructure as a Service). Some of the key players in IaaS are Amazon and Rackspace, which provide computing resources, storage and bandwidth via a pay per use billing cycle.</p>
<p>Entire ecosystems of applications have developed around these services that have been exposed in the Cloud. And a large number of those applications are mobile applications. The interesting part is that the mobile application development landscape is pretty much fragmented. Each of the big OS vendors have their own language, toolsets and operating systems that make interoperable applications difficult to write. But the one place where they is a sort of a common understanding and which has resulted in a large number of client applications is that the Server layer i.e. the Cloud API exposed is pretty much the same. The REST API mechanism that is exposed over standard HTTP protocol helps create a client platform agnostic mechanism in which a developer can pick a language of his/her choice on the client side and simply code up the front –end i.e. the client application.</p>
<p>So a combination of an API, exposed as a Cloud Service via standard HTTP bindings is a great way to write a common server layer and power all your mobile applications via that. Doing so also addresses one of the defining principles in software engineering of reusing as much as you can instead of writing a layer for each client programming environment.</p>
<p>At high level you have the following architecture that can drive multiple mobile applications via a single REST layer that you expose in the cloud:</p>
<p><a href="http://www.xoriant.com/blog/wp-content/uploads/2011/09/Picture1.png"><img class="aligncenter size-medium wp-image-2017" title="Architecture Diag" src="http://www.xoriant.com/blog/wp-content/uploads/2011/09/Picture1-300x211.png" alt="" width="300" height="211" /></a></p>
<p>You may refer to <a href="http://www.xoriant.com/html/cloud-mobile-storage-CaseStudy.html">&#8220;Extending cloud infrastructure to the mobile world”</a> for more exposure.</p>
<p>To summarize:</p>
<ul>
<li>Build a common REST layer (API) that will expose functionality over XML/HTTP</li>
<li>This common REST layer will be used by all <strong>Thick Client </strong>applications and <strong>Thin Clients. </strong>This means that even if you go the route of HTML web applications, they can use the same API.</li>
<li>Further sophistication can be provided on the Server side to restrict access to certain kinds of devices. This helps in ensuring that you deliver optimum experience to the devices or even restrict access as needed.</li>
</ul>
<div class="author_member_gravatar_pic" style="display:block;">
			   <a class="author_member_gravatar" style="display:block;float:left;" href="http://www.xoriant.com/blog/?author=10"><img src="http://www.xoriant.com/blog/wp-content/uploads/userphoto/romin-irani.thumbnail.jpg" alt="Romin Irani" width="80" height="80" class="photo" /><br />
			   <a class="author_member_gravatar" style="padding:5px;font-size:12px;text-decoration:none;font-weight:bold;" href="http://www.xoriant.com/blog/?author=10">Romin Irani</a><span class="author-desc"><strong>&ndash; Principal Architect</strong></span></div>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-knowledge">
<ul class="socials">
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.xoriant.com/blog/cloud-computing-for-isvs/driving-mobile-applications-via-the-cloud.html&amp;title=Driving+Mobile+Applications+via+the+Cloud&amp;summary=Cloud%20Computing%20brings%20about%20real%20benefits%20to%20IT%20organizations%20by%20making%20available%20computing%20resources%20that%20you%20can%20pay%20as%20per%20your%20usage%2C%20while%20taking%20away%20the%20hassles%20of%20resource%20management.%20My%20previous%20blog%20gave%20a%20basic%20idea%20of%20what%20is%20cloud%20computing%20all%20about.This%20blog%20post%20focuses%20on%20how%20the%20C&amp;source=Xoriant Software Product Engineering Blog" rel="nofollow" class="external" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Driving+Mobile+Applications+via+the+Cloud+-+http://bit.ly/oivjZB&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://www.xoriant.com/blog/cloud-computing-for-isvs/driving-mobile-applications-via-the-cloud.html&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://www.xoriant.com/blog/cloud-computing-for-isvs/driving-mobile-applications-via-the-cloud.html&amp;title=Driving+Mobile+Applications+via+the+Cloud" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.xoriant.com/blog/cloud-computing-for-isvs/driving-mobile-applications-via-the-cloud.html&amp;title=Driving+Mobile+Applications+via+the+Cloud" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-comfeed">
			<a href="http://www.xoriant.com/blog/cloud-computing-for-isvs/driving-mobile-applications-via-the-cloud.html/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
		<li class="shr-reddit">
			<a href="http://reddit.com/submit?url=http://www.xoriant.com/blog/cloud-computing-for-isvs/driving-mobile-applications-via-the-cloud.html&amp;title=Driving+Mobile+Applications+via+the+Cloud" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.xoriant.com/blog/cloud-computing-for-isvs/driving-mobile-applications-via-the-cloud.html&amp;t=Driving+Mobile+Applications+via+the+Cloud" rel="nofollow" class="external" title="Share this on Facebook">Share this on Facebook</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>



<p>Related posts:<ol><li><a href='http://www.xoriant.com/blog/cloud-computing-for-isvs/riding-the-cloud.html' rel='bookmark' title='Permanent Link: Riding the Cloud'>Riding the Cloud</a> <small>Cloud computing redefines Enterprise Computing in ways beyond client-server model and web computing and is a talk of the town recently. Cloud computing extends beyond the concepts of distributed, grid...</small></li>
<li><a href='http://www.xoriant.com/blog/mobile-application-development/bringing-enterprise-applications-to-mobile.html' rel='bookmark' title='Permanent Link: Bringing Enterprise Applications to Mobile'>Bringing Enterprise Applications to Mobile</a> <small>Enterprise software is now going mobile. More and more work, which needed your presence in office/home, can be done on-the-go. With introduction of addictive UIs on smart phones, the market...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.xoriant.com/blog/cloud-computing-for-isvs/driving-mobile-applications-via-the-cloud.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Single Sign-On Implementation in CLOUD</title>
		<link>http://www.xoriant.com/blog/cloud-computing-for-isvs/single-sign-on-implementation-in-cloud.html</link>
		<comments>http://www.xoriant.com/blog/cloud-computing-for-isvs/single-sign-on-implementation-in-cloud.html#comments</comments>
		<pubDate>Thu, 22 Sep 2011 10:47:42 +0000</pubDate>
		<dc:creator>Jitendra Singh</dc:creator>
				<category><![CDATA[Cloud Computing for ISVs]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[Cloud Services]]></category>
		<category><![CDATA[iGoogle]]></category>
		<category><![CDATA[Single Sign-On Implementation]]></category>

		<guid isPermaLink="false">http://www.xoriant.com/blog/?p=1998</guid>
		<description><![CDATA[Think about your usual work day where you invariably require authenticated logging in to various applications like your work station, checking your mails, etc. All these require you to put in your log in details to allow you access. It’s quite cumbersome, isn’t it? A single sign on would be a great solution to this [...]


Related posts:<ol><li><a href='http://www.xoriant.com/blog/cloud-computing-for-isvs/desktop-on-cloud.html' rel='bookmark' title='Permanent Link: Desktop on Cloud'>Desktop on Cloud</a> <small>Introduction Desktop systems gained prominence in late 80s and they derive their name from the concept in which the entire computing unit can be placed on top of a desk....</small></li>
<li><a href='http://www.xoriant.com/blog/cloud-computing-for-isvs/riding-the-cloud.html' rel='bookmark' title='Permanent Link: Riding the Cloud'>Riding the Cloud</a> <small>Cloud computing redefines Enterprise Computing in ways beyond client-server model and web computing and is a talk of the town recently. Cloud computing extends beyond the concepts of distributed, grid...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Think about your usual work day where you invariably require authenticated logging in to various applications like your work station, checking your mails, etc. All these require you to put in your log in details to allow you access. It’s quite cumbersome, isn’t it? A single sign on would be a great solution to this in the sense that single login takes you to all the application you visit in a day at work. A proactive step ahead to this would be implementing it in a cloud environment where a user can log in once to a cloud and can access the entire system of applications without having to log in separately.</p>
<p>In this blog we shall first discuss about generic implementation of Single Sign-On aka SSO.Then we would take the concept forward by extending the use of SSO in a cloud environment.</p>
<p><strong><span style="color: #339966;">Let’s start with what is SSO?</span></strong></p>
<p>Basically SSO is a centralized access control mechanism used for multiple applications which could be independent and may or may not be interrelated. User authentication is done only once and further user requests to multiple applications are handled seamlessly.<a rel="nofollow" href="http://en.wikipedia.org/wiki/Single_sign-on#Common_Single_Sign-On_Configurations">Know more about SSO here.</a></p>
<p>An appropriate analogy to help you visualize this would be iGoogle login where user once logged in can access multiple applications like Gmail/Google docs/Orkut  accounts without having to login to each individual applications. Hasn’t this made our lives simpler?</p>
<p><strong><span style="color: #339966;">Generic Implementation of SSO</span></strong></p>
<p>There are various security mechanisms e.g. Kerberos TGT, Smart Card, One Time Password Token OTP, Integrated Windows Authentication a re few of them. We would not go in to the implementation details of these security mechanisms but in general the basic set of implementation considerations would include the following:</p>
<p>•	SSO should know what all applications it would be catering to and accordingly it would be using the encryption/decryption keys for handling the authentication requests.<br />
•	Using different keys across applications is recommended as these keys are shared between SSO and Client applications. Securing these keys is equally important to make sure the credibility of encryption mechanism is not compromised.<br />
•	SSO would manage a central user Database which contains user roles along with the authentication parameters. These roles could be queried by the serving application to decide the user privilege/grants.</p>
<p><strong><span style="color: #339966;">SSO Implementation in Cloud</span></strong></p>
<p>Currently, , there are two approaches  available for using SSO in Cloud:</p>
<p>1.	Self implementation of SSO adapters based on the exposed APIs from the Cloud Service Providers, which would include writing the code to integrate with cloud applications.<br />
2.	Another approach, a simpler one would be to use Out-of-Box SSO Products available in the market or use the SSO as a service (SaaS) from Cloud itself</p>
<p><a rel="nofollow" href="http://cloudcomputingresourcecenter.com/single-sign-on-on-cloud">You can also refer this link for further related information that you may want.</a></p>
<p>Once in place, it would simplify things from the user perspective as user would have to login only once either on the machine or a web portal depending on design and then user can access various applications and resources seamlessly. By leveraging Single Sign-On capabilities an organization can merge their IT infrastructures and Cloud in a seamless manner and enable a user to access both the user’s desktops and any Cloud Services via a single password.</p>
<p><strong><span style="color: #339966;">Some of the Benefits to mention:</span></strong></p>
<p>•	Users get convenience of single user-id/password which is easier to manage/remember.<br />
•	Saves on user time by avoiding re-entering password while switching between applications.<br />
•	Stronger security and Easier for System Admin as the management of user accounts is centralized.<br />
•	Helpful for the provisioning and de-provisioning of passwords. If a new employee joins or leaves the organization there is only one single account to activate or deactivate rather than having multiple accounts to deal with.<br />
•	In addition to preventing security issues, there are significant costs savings to this approach.<br />
For example, Single Sign-On users are less likely to lose passwords reducing the assistance required by IT helpdesks.<br />
•	Allows anywhere, anytime seamless access.</p>
<p><strong><span style="color: #339966;">Benefits usually come with some tradeoffs like:</span></strong></p>
<p>•	Security threat due to password leak/misuse could affect multiple applications/resources.<br />
•	SSO System should be Highly Available (HA) as failure is critical for multiple applications.</p>
<p>We know that SSO is not a new concept, but it is now finding new horizon for connecting organizations to Cloud service providers like Google, Amazon, Oracle. It is an evolving concept providing potential for enabling users to experience seamless access to their corporate applications along with email/social-network accounts, documents/files/photos and shared resources. Big Organizations have been using SSO systems to manage internal applications/resources since a long time but extending the SSO to cloud would be a major step ahead. Do write in your views so that we can share this important information in an interactive manner.
<div class="author_member_gravatar_pic" style="display:block;">
			   <a class="author_member_gravatar" style="display:block;float:left;" href="http://www.xoriant.com/blog/?author=32"><img alt='' src='http://0.gravatar.com/avatar/880117274a43652bb493d5e4031954b8?s=60&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D60&amp;r=G' class='avatar avatar-60 photo' height='60' width='60' /><br />
			   <a class="author_member_gravatar" style="padding:5px;font-size:12px;text-decoration:none;font-weight:bold;" href="http://www.xoriant.com/blog/?author=32">Jitendra Singh</a><span class="author-desc"><strong>&ndash; Senior Software Engineer</strong></span></div>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-knowledge">
<ul class="socials">
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.xoriant.com/blog/cloud-computing-for-isvs/single-sign-on-implementation-in-cloud.html&amp;title=Single+Sign-On+Implementation+in+CLOUD&amp;summary=Think%20about%20your%20usual%20work%20day%20where%20you%20invariably%20require%20authenticated%20logging%20in%20to%20various%20applications%20like%20your%20work%20station%2C%20checking%20your%20mails%2C%20etc.%20All%20these%20require%20you%20to%20put%20in%20your%20log%20in%20details%20to%20allow%20you%20access.%20It%E2%80%99s%20quite%20cumbersome%2C%20isn%E2%80%99t%20it%3F%20A%20single%20sign%20on%20would%20be%20a%20gr&amp;source=Xoriant Software Product Engineering Blog" rel="nofollow" class="external" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Single+Sign-On+Implementation+in+CLOUD+-+http://bit.ly/nFp4O9&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://www.xoriant.com/blog/cloud-computing-for-isvs/single-sign-on-implementation-in-cloud.html&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://www.xoriant.com/blog/cloud-computing-for-isvs/single-sign-on-implementation-in-cloud.html&amp;title=Single+Sign-On+Implementation+in+CLOUD" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.xoriant.com/blog/cloud-computing-for-isvs/single-sign-on-implementation-in-cloud.html&amp;title=Single+Sign-On+Implementation+in+CLOUD" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-comfeed">
			<a href="http://www.xoriant.com/blog/cloud-computing-for-isvs/single-sign-on-implementation-in-cloud.html/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
		<li class="shr-reddit">
			<a href="http://reddit.com/submit?url=http://www.xoriant.com/blog/cloud-computing-for-isvs/single-sign-on-implementation-in-cloud.html&amp;title=Single+Sign-On+Implementation+in+CLOUD" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.xoriant.com/blog/cloud-computing-for-isvs/single-sign-on-implementation-in-cloud.html&amp;t=Single+Sign-On+Implementation+in+CLOUD" rel="nofollow" class="external" title="Share this on Facebook">Share this on Facebook</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>



<p>Related posts:<ol><li><a href='http://www.xoriant.com/blog/cloud-computing-for-isvs/desktop-on-cloud.html' rel='bookmark' title='Permanent Link: Desktop on Cloud'>Desktop on Cloud</a> <small>Introduction Desktop systems gained prominence in late 80s and they derive their name from the concept in which the entire computing unit can be placed on top of a desk....</small></li>
<li><a href='http://www.xoriant.com/blog/cloud-computing-for-isvs/riding-the-cloud.html' rel='bookmark' title='Permanent Link: Riding the Cloud'>Riding the Cloud</a> <small>Cloud computing redefines Enterprise Computing in ways beyond client-server model and web computing and is a talk of the town recently. Cloud computing extends beyond the concepts of distributed, grid...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.xoriant.com/blog/cloud-computing-for-isvs/single-sign-on-implementation-in-cloud.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Desktop on Cloud</title>
		<link>http://www.xoriant.com/blog/cloud-computing-for-isvs/desktop-on-cloud.html</link>
		<comments>http://www.xoriant.com/blog/cloud-computing-for-isvs/desktop-on-cloud.html#comments</comments>
		<pubDate>Wed, 21 Sep 2011 12:06:03 +0000</pubDate>
		<dc:creator>Pradeep Sharma</dc:creator>
				<category><![CDATA[Cloud Computing for ISVs]]></category>

		<guid isPermaLink="false">http://www.xoriant.com/blog/?p=1989</guid>
		<description><![CDATA[Introduction Desktop systems gained prominence in late 80s and they derive their name from the concept in which the entire computing unit can be placed on top of a desk. There are various uses of desktop computers dictated by the desktop users and their requirements. A student or business user might use the desktop for [...]


Related posts:<ol><li><a href='http://www.xoriant.com/blog/software-testing-and-qa/guidelines-for-testing-of-desktop-plug-ins.html' rel='bookmark' title='Permanent Link: Guidelines for Testing of Desktop Plug-ins'>Guidelines for Testing of Desktop Plug-ins</a> <small>Overview of a Plug-in A plug-in is a software component that resides in a software application (known as the parent application) and allows users to perform specific, customized activities within the application. Most...</small></li>
<li><a href='http://www.xoriant.com/blog/cloud-computing-for-isvs/riding-the-cloud.html' rel='bookmark' title='Permanent Link: Riding the Cloud'>Riding the Cloud</a> <small>Cloud computing redefines Enterprise Computing in ways beyond client-server model and web computing and is a talk of the town recently. Cloud computing extends beyond the concepts of distributed, grid...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<h3><strong><span style="text-decoration: underline;">Introduction </span></strong></h3>
<p>Desktop systems gained prominence in late 80s and they derive their name from the concept in which the entire computing unit can be placed on top of a desk. There are various uses of desktop computers dictated by the desktop users and their requirements.</p>
<ul>
<li>A student or business user might use the desktop for their daily activities like creating Word documents, spreadsheets, presentations or a calendar application to schedule events for the day /month / year.</li>
<li>A home desktop may be used for storing multimedia files like images, mp3, videos or browsing World Wide Web.</li>
<li>A person might be having some specific requirement depending on the job at hand and may use a software suite to do that. A good example would be photographer or designer using Photoshop for image editing Or a music artist using an Audio mixing setup for music recordings.</li>
</ul>
<p><strong> </strong></p>
<h4><strong>Desktop Systems:</strong></h4>
<p>Desktop systems are nothing but desktop computers but available on the cloud.Today internet connectivity and computers  have become quite inexpensive and are widely available while Mobile phones have moved beyond as a texting and calling to a ‘must have’ device, featuring giga bytes of Ram, giga htz of processing power and 4 ~ 7 inch displays.</p>
<p>With the multiple platforms available in the market, currently the convergence between different platforms is done by developing apps for each of the platforms. Let us take an example of a simple application – Dropbox.</p>
<p>Dropbox allows you to save your file on a remote system; it is your dedicated space on internet.  Dropbox offers a free space of 2 GB and it will automatically sync all the files that are in your Dropbox folders across all the devices that have Dropbox client installed. This is a typical example of SAAS where you dump your files on a system which gets replicated across all the devices (if they are connected and switched ON). There are many other cloud based services where not only software but platform and infrastructure also as a service.</p>
<p>A few more services available in the market are:</p>
<ul>
<li>For documents, spreadsheets etc &#8211; Docs by Google, Office 360 by Microsoft.</li>
<li>Music – iCloud by Apple and Google music by Google.</li>
<li>Books – Amazon Kindle, Google books and iBook by Apple.</li>
</ul>
<p>These applications can be installed on your current desktop system, mobiles and tablets. Space of your “device at use” will be used only for caching purpose to sync timely with cloud in case the application offers offline storage model. This makes your system pretty much a client in the SAAS model.</p>
<p>A cloud OS or desktop in Cloud is a concept that tries to provide an integrated space for all the services from within your browser either on desktop systems or on mobile devices. These systems will offer one stop solution for your daily computing needs whether it may be word processing, games, music or running development tools. Though still immature they try to mimic the current desktop offerings via a web browser.  Let us take a look at two such products –</p>
<h4><strong>EyeOS &#8211; Your desktop in the cloud</strong></h4>
<p><a href="http://www.eyeos.org/overview/">EyeOS</a> is an open source initiative; <a href="http://www.eyeos.org/try-eyeos-2-4/">Give it a try</a>. It requires Apache and PHP 5 and doesn’t require a database. It is nowhere near a  professional OS, but it will give you a look and feel of native desktop running in browser and it does comes preloaded with few applications like word processing tools, calendar, IM to name a few. As the name goes – right now it is just eye candy.</p>
<h5><strong>CloudMe </strong></h5>
<p><strong> </strong>Initially called iCloud,<strong> </strong>CloudMe is another company that is developing their operating system for the cloud since 2000. And yes they have made a pretty cool interface, it is best among the competitors. It is a clean, carefree, zero-configuration XML-based OS, running within browser.  They offer a suite of 40+ applications that you can install on your desktop in the cloud. It offers tools for SAAS application development that will run on their internet-OS.  Currently the registration is free and it also offers 3 GB of free space. <a href="http://www.cloudme.com/">You can try it here</a>.</p>
<h5><strong>There are three other major players which have recently done great cloud services and it would be worth taking a look at these. </strong></h5>
<p><strong> </strong></p>
<p><strong>Google cloud solutions</strong> – Applications from Google require an active data connection and are pretty fast. Google is targeting the future where internet will be available in every corner of the earth and they all run from within any browser. The data is stored in Google servers. Although the model is great and holds a lot of promise, in current scenario for people who are already connected with internet 24&#215;7, its full potential however will be realized only in near future with unlimited and uninterrupted connectivity being a reality.</p>
<p><strong>Apple iCloud </strong>– Apple has recently launched iCloud, it offers seamless data syncing between all the Apple devices. Data sync capabilities are built into the applications. Apple solution is good for current scenario where people do get disconnected with internet and have to rely on offline storage model for completing the task at hand, be it making a spreadsheet or listening to music.</p>
<p><strong>Microsoft LiveMesh </strong>– This is a product from Microsoft using which you can create a mesh of all the systems owned by you and having a browser running on any system to perform task on any system. It is like a refined version of Remote desktop. To add to this Microsoft also offers 5 GB of free storage – Windows Live Skydrive in the Mesh, that can be synced with all or a selective set of devices.</p>
<h3>To Conclude</h3>
<p>Desktop as a cloud is still immature, but yes it holds a lot of promise. To gain user acceptance, it has to provide the rich experience of desktop system and a facility to install majority of application or application clones that are currently used by a desktop consumer.
<div class="author_member_gravatar_pic" style="display:block;">
			   <a class="author_member_gravatar" style="display:block;float:left;" href="http://www.xoriant.com/blog/?author=28"><img src="http://www.xoriant.com/blog/wp-content/uploads/userphoto/pradeep-sharma.thumbnail.jpg" alt="Pradeep Sharma" width="80" height="80" class="photo" /><br />
			   <a class="author_member_gravatar" style="padding:5px;font-size:12px;text-decoration:none;font-weight:bold;" href="http://www.xoriant.com/blog/?author=28">Pradeep Sharma</a><span class="author-desc"><strong>&ndash; Technical Lead &#8211; Mobile CoE</strong></span></div>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-knowledge">
<ul class="socials">
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.xoriant.com/blog/cloud-computing-for-isvs/desktop-on-cloud.html&amp;title=Desktop+on+Cloud&amp;summary=Introduction%20%0D%0ADesktop%20systems%20gained%20prominence%20in%20late%2080s%20and%20they%20derive%20their%20name%20from%20the%20concept%20in%20which%20the%20entire%20computing%20unit%20can%20be%20placed%20on%20top%20of%20a%20desk.%20There%20are%20various%20uses%20of%20desktop%20computers%20dictated%20by%20the%20desktop%20users%20and%20their%20requirements.%0D%0A%0D%0A%09A%20student%20or%20business%20user&amp;source=Xoriant Software Product Engineering Blog" rel="nofollow" class="external" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Desktop+on+Cloud+-+http://bit.ly/oB3o7Z&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://www.xoriant.com/blog/cloud-computing-for-isvs/desktop-on-cloud.html&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://www.xoriant.com/blog/cloud-computing-for-isvs/desktop-on-cloud.html&amp;title=Desktop+on+Cloud" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.xoriant.com/blog/cloud-computing-for-isvs/desktop-on-cloud.html&amp;title=Desktop+on+Cloud" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-comfeed">
			<a href="http://www.xoriant.com/blog/cloud-computing-for-isvs/desktop-on-cloud.html/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
		<li class="shr-reddit">
			<a href="http://reddit.com/submit?url=http://www.xoriant.com/blog/cloud-computing-for-isvs/desktop-on-cloud.html&amp;title=Desktop+on+Cloud" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.xoriant.com/blog/cloud-computing-for-isvs/desktop-on-cloud.html&amp;t=Desktop+on+Cloud" rel="nofollow" class="external" title="Share this on Facebook">Share this on Facebook</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>



<p>Related posts:<ol><li><a href='http://www.xoriant.com/blog/software-testing-and-qa/guidelines-for-testing-of-desktop-plug-ins.html' rel='bookmark' title='Permanent Link: Guidelines for Testing of Desktop Plug-ins'>Guidelines for Testing of Desktop Plug-ins</a> <small>Overview of a Plug-in A plug-in is a software component that resides in a software application (known as the parent application) and allows users to perform specific, customized activities within the application. Most...</small></li>
<li><a href='http://www.xoriant.com/blog/cloud-computing-for-isvs/riding-the-cloud.html' rel='bookmark' title='Permanent Link: Riding the Cloud'>Riding the Cloud</a> <small>Cloud computing redefines Enterprise Computing in ways beyond client-server model and web computing and is a talk of the town recently. Cloud computing extends beyond the concepts of distributed, grid...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.xoriant.com/blog/cloud-computing-for-isvs/desktop-on-cloud.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Cloud Computing &#8211; The Definition</title>
		<link>http://www.xoriant.com/blog/cloud-computing-for-isvs/cloud-computing-the-definition.html</link>
		<comments>http://www.xoriant.com/blog/cloud-computing-for-isvs/cloud-computing-the-definition.html#comments</comments>
		<pubDate>Tue, 13 Sep 2011 07:20:35 +0000</pubDate>
		<dc:creator>Romin Irani</dc:creator>
				<category><![CDATA[Cloud Computing for ISVs]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[cloud computing characteristics]]></category>
		<category><![CDATA[cloud computing defined]]></category>
		<category><![CDATA[cloud delivery models]]></category>
		<category><![CDATA[cloud deployment models]]></category>

		<guid isPermaLink="false">http://www.xoriant.com/blog/?p=1939</guid>
		<description><![CDATA[Introduction Cloud Computing now finds a way through most technical discussions. Irrespective of the medium (Web Search, Twitter, Online Journals), you will find Cloud Computing being discussed. But ask anyone the definition of Cloud Computing and you will be hard pressed to get two exact definitions from different people. Some define it as servers available [...]


Related posts:<ol><li><a href='http://www.xoriant.com/blog/cloud-computing-for-isvs/impact-of-cloud-computing-on-various-domains.html' rel='bookmark' title='Permanent Link: Impact of Cloud Computing on Various Domains'>Impact of Cloud Computing on Various Domains</a> <small>Introduction: Cloud Computing can be seen as the logical evolution in outsourcing IT services. The promise is that, with Cloud Computing, every company (big or small) can get IT services...</small></li>
<li><a href='http://www.xoriant.com/blog/cloud-computing-for-isvs/cloud-computing-its-feasibility-and-emerging-paradigms.html' rel='bookmark' title='Permanent Link: Cloud computing- its feasibility and emerging paradigms'>Cloud computing- its feasibility and emerging paradigms</a> <small>Cloud computing is more than a concept. Let us understand what it is. This post gives a brief of what is cloud computing, its attached benefits and some of the...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<h3>Introduction</h3>
<p><strong>Cloud Computing</strong> now finds a way through most technical discussions. Irrespective of the medium (Web Search, Twitter, Online Journals), you will find Cloud Computing being discussed. But ask anyone the definition of Cloud Computing and you will be hard pressed to get two exact definitions from different people.</p>
<p>Some define it as servers available for rent to storage or applications that we access from the browser, etc. All of them are right in ways. But is there a definition that describes the essence of Cloud Computing. While there might be various definitions of that, we shall look at one of the definitions of Cloud Computing in this blog post. It is known as the <strong>5-3-4 Formula</strong>.</p>
<p>The <strong>5-3-4 Formula</strong> is further broken down into the following:</p>
<h3><strong>5 key characteristics</strong></h3>
<p>The key characteristics are:</p>
<ul>
<li><strong>On Demand Self Service: </strong>As the application owner, you should be able to provision additional computational resources for your application, look up reports and perform Administration tasks without requiring human intervention. Cloud vendors are now providing monitoring and provisioning tools where the user is in full control of provisioning things.<strong></strong></li>
<li><strong>Ubiquitous Network Access:</strong> We are living in a world where a desktop and laptop computer is not the only way that people access the Internet. Mobile device access is increasingly becoming a major source of traffic to your application. And it is not just mobile devices but devices fitted in vehicles and even our Televisions that are accessing the Internet. These explosion of device types and various networks around the world brings to the important concept of “ubiquity”. It means that no matter from what device or network , one should be able to reach your application via the public cloud networks. And this access is the cornerstone of cloud computing. Always available and from anywhere.</li>
<li><strong>Location Independent Resource Pooling:</strong> This feature is key to providing your additional resources. As a consumer one should not be worried about how the cloud allocates additional servers, takes care of multi-tenancy and allocation of physical and virtual servers in different geographical locations to meet your demand. Location Independent Resource Pooling is the ability of the Cloud to do exactly that.</li>
<li><strong>Elasticity:</strong> If you have released any online web application you can now look back and see those days where the number of hits to your sites peaked due to a new release or a press announcement. There will be spikes in user activity and you cannot scramble around for additional hardware when that happens. Cloud Computing addresses this through Elasticity. What it means is that the Cloud Vendors will automatically allocate you more resources as your application needs it. Extra Servers, more memory, more storage, etc will be available to your application if the need arises.</li>
<li><strong>Pay per Use:</strong> This is one of the key characteristics and one of the reasons for cloud computing gaining acceptance. Just like you can seldom predict your peak usage, it is important that you pay only for the amount of resources that you use. Cloud Computing vendors have various schemes starting with freemiums and then tiered pricing that clearly specify the quotas that are available based on what they charge you. At any point in time, you can switch between plans and allow for extra charging depending on additional resources that your application might use.</li>
</ul>
<h3><strong>3 delivery models</strong></h3>
<p>Cloud Computing is typically delivered in 3 models and each one builds on the other</p>
<ul>
<li><strong>IaaS : Infrastructure as a Service.</strong> This layer is about providing processing power (CPU cycles), storage, bandwidth, networks and other infrastructural resources. Some of the key players over here are Amazon Web Services (AWS) , Rackspace and others.</li>
<li><strong>PaaS: Platform as a Service.</strong> This layer builds on top of the IaaS layer and provides a developer with a complete stack on which to build applications. The stack comprises APIs that abstract out the low level details and allow the developer to quickly use them to build out the application. The key players in this space are Google (Google App Engine), Microsoft (Azure), Sales Force (force.com) and recent entrants like CloudFoundry from VmWare.</li>
<li><strong>SaaS: Software as a Service.</strong> In simple terms, these are ready made applications that you can use either for free or a fee. You simply need to sign up, optionally pay and login to use the software. Examples of this include SalesForce (CRM), Gmail, Google Apps, etc.</li>
</ul>
<h3><strong>4 deployment models</strong></h3>
<p>The 4 deployment models available are given below:</p>
<ul>
<li>Public</li>
<li>Private</li>
<li>Hybrid</li>
<li>Community</li>
</ul>
<p>Typically, the public cloud is what is best known to most of us. While classification does exist for other types like private, hybrid (mix of public/private) and community – they are not that prevalent and no clear classification exists. So for all practical purposes, when we refer to the cloud, it is public and with appropriate authentication and access control mechanisms built in.</p>
<p>So the next time, someone asks you to define “Cloud Computing”, you can simply say “5-3-4”.
<div class="author_member_gravatar_pic" style="display:block;">
			   <a class="author_member_gravatar" style="display:block;float:left;" href="http://www.xoriant.com/blog/?author=10"><img src="http://www.xoriant.com/blog/wp-content/uploads/userphoto/romin-irani.thumbnail.jpg" alt="Romin Irani" width="80" height="80" class="photo" /><br />
			   <a class="author_member_gravatar" style="padding:5px;font-size:12px;text-decoration:none;font-weight:bold;" href="http://www.xoriant.com/blog/?author=10">Romin Irani</a><span class="author-desc"><strong>&ndash; Principal Architect</strong></span></div>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-knowledge">
<ul class="socials">
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.xoriant.com/blog/cloud-computing-for-isvs/cloud-computing-the-definition.html&amp;title=Cloud+Computing+-+The+Definition&amp;summary=Introduction%0D%0ACloud%20Computing%20now%20finds%20a%20way%20through%20most%20technical%20discussions.%20Irrespective%20of%20the%20medium%20%28Web%20Search%2C%20Twitter%2C%20Online%20Journals%29%2C%20you%20will%20find%20Cloud%20Computing%20being%20discussed.%20But%20ask%20anyone%20the%20definition%20of%20Cloud%20Computing%20and%20you%20will%20be%20hard%20pressed%20to%20get%20two%20exact%20definitio&amp;source=Xoriant Software Product Engineering Blog" rel="nofollow" class="external" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Cloud+Computing+-+The+Definition+-+http://bit.ly/pOKEwJ&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://www.xoriant.com/blog/cloud-computing-for-isvs/cloud-computing-the-definition.html&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://www.xoriant.com/blog/cloud-computing-for-isvs/cloud-computing-the-definition.html&amp;title=Cloud+Computing+-+The+Definition" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.xoriant.com/blog/cloud-computing-for-isvs/cloud-computing-the-definition.html&amp;title=Cloud+Computing+-+The+Definition" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-comfeed">
			<a href="http://www.xoriant.com/blog/cloud-computing-for-isvs/cloud-computing-the-definition.html/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
		<li class="shr-reddit">
			<a href="http://reddit.com/submit?url=http://www.xoriant.com/blog/cloud-computing-for-isvs/cloud-computing-the-definition.html&amp;title=Cloud+Computing+-+The+Definition" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.xoriant.com/blog/cloud-computing-for-isvs/cloud-computing-the-definition.html&amp;t=Cloud+Computing+-+The+Definition" rel="nofollow" class="external" title="Share this on Facebook">Share this on Facebook</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>



<p>Related posts:<ol><li><a href='http://www.xoriant.com/blog/cloud-computing-for-isvs/impact-of-cloud-computing-on-various-domains.html' rel='bookmark' title='Permanent Link: Impact of Cloud Computing on Various Domains'>Impact of Cloud Computing on Various Domains</a> <small>Introduction: Cloud Computing can be seen as the logical evolution in outsourcing IT services. The promise is that, with Cloud Computing, every company (big or small) can get IT services...</small></li>
<li><a href='http://www.xoriant.com/blog/cloud-computing-for-isvs/cloud-computing-its-feasibility-and-emerging-paradigms.html' rel='bookmark' title='Permanent Link: Cloud computing- its feasibility and emerging paradigms'>Cloud computing- its feasibility and emerging paradigms</a> <small>Cloud computing is more than a concept. Let us understand what it is. This post gives a brief of what is cloud computing, its attached benefits and some of the...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.xoriant.com/blog/cloud-computing-for-isvs/cloud-computing-the-definition.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How to publish Android Apps into an Android Market</title>
		<link>http://www.xoriant.com/blog/android/how-to-publish-android-apps-in-to-an-android-market.html</link>
		<comments>http://www.xoriant.com/blog/android/how-to-publish-android-apps-in-to-an-android-market.html#comments</comments>
		<pubDate>Tue, 06 Sep 2011 11:51:31 +0000</pubDate>
		<dc:creator>Suresh Rapakala</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Android Application]]></category>
		<category><![CDATA[Android Applications Portfolio]]></category>
		<category><![CDATA[Android Market]]></category>
		<category><![CDATA[Mobile Apps]]></category>
		<category><![CDATA[Publishing Android App]]></category>
		<category><![CDATA[User Interfaces]]></category>

		<guid isPermaLink="false">http://www.xoriant.com/blog/?p=1924</guid>
		<description><![CDATA[After having invested your time and efforts in developing the most creative Android application, you surely want to make it available to a larger audience. Go ahead and read this blog to find information on How to sign your Android applications and publish them to the market. In this blog post, I am going to [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>After having invested your time and efforts in developing the most creative Android application, you surely want to make it available to a larger audience. Go ahead and read this blog to find information on How to sign your Android applications and publish them to the market.</p>
<p>In this blog post, I am going to talk about the very basic steps that are mandatory to get application published in to Android Market. Android Market <a rel="nofollow" href="https://market.android.com/">https://market.android.com</a> is a store developed by Google for Android devices, it allows users to download published apps of different developers.</p>
<p>Follow the below procedure to generate a suitable .apk file for Android market.</p>
<h1><span style="color: #339966;"><span style="font-size: medium;">1. Specify Version</span></span></h1>
<p>To define the version information for application, set following attributes in the application&#8217;s manifest file:</p>
<p><span style="color: #3366ff;">android:versionCode </span>- An integer value that represents the version of the application code</p>
<p><span style="color: #3366ff;">android:versionName</span> &#8211; A string value that represents the release version of the application code</p>
<p>Versioning is required for following reasons:</p>
<ol>
<li>To check compatibility and dependency issues      between applications.</li>
<li>While Publishing and Upgrading the application to      Android market</li>
<li>It is also used in the Android Market to automatically offer application upgrades to users.</li>
</ol>
<p>Here&#8217;s an example manifest file that shows the <span style="color: #3366ff;">android:versionCode</span> and <span style="color: #3366ff;">android:versionName</span> attributes in the <span style="color: #ff0000;">&lt;manifest&gt;</span> element.</p>
<pre class="brush: java; title: ; notranslate">
&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;manifest xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
package=&quot;com.example.package.name&quot;
android:versionCode=&quot;2&quot;
android:versionName=&quot;1.1&quot;&amp;gt;
&amp;lt;application android:icon=&quot;@drawable/icon&quot; android:label=&quot;@string/app_name&quot;&amp;gt;
...
&amp;lt;/application&amp;gt;
&amp;lt;/manifest&amp;gt;
</pre>
<h1><span style="color: #339966;"><span style="font-size: medium;">2. Signing of Application</span></span></h1>
<p>Google expects a Signed copy of the application in order to verify the developer account. The Android system will not install or run an application that is not signed. In preparation of signing the application, you must first ensure that you have a suitable private key, if you don’t have any private key then generate it with following 2 methods.</p>
<p style="padding-left: 30px;">A. Using Command line tools</p>
<p style="padding-left: 30px;">B. Using Eclipse ADT</p>
<p><span style="text-decoration: underline;"><strong>A.<span style="font-size: small;"> Using Command line tools</span></strong></span></p>
<p>Following are the 4 processes to generate published .apk file.</p>
<p style="padding-left: 30px;"><span style="text-decoration: underline;">a. Obtain a suitable private key</span></p>
<p style="padding-left: 30px;">Use following command to generate a private key:</p>
<p style="padding-left: 30px;"><span style="color: #3366ff;">$ keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000</span></p>
<p style="padding-left: 30px;">Command line attributes:</p>
<ul>
<li>-v = Verbose mode</li>
<li>my-release-key.keystore = generated key file</li>
<li>alias_name = alias name for application</li>
<li>validity = expiry time here is 10000</li>
</ul>
<p style="padding-left: 30px;">The above command generates the keystore as a file called <span style="color: #ff0000;">my-release-key.keystore</span>. The keystore and key are protected by the passwords you entered. The keystore is valid for 10000 days.</p>
<p style="padding-left: 30px;"><span style="text-decoration: underline;">b. Compile the application in release mode</span></p>
<p style="padding-left: 30px;">To export an unsigned .apk from Eclipse follows th steps:</p>
<ol>
<li>Right-click the project in the Package Explorer</li>
<li>Select <strong>Android Tools</strong> &gt; <strong>Export Unsigned Application Package</strong>.</li>
<li>Then specify the file location for the unsigned .apk.</li>
</ol>
<p style="padding-left: 30px;"><span style="text-decoration: underline;">c. Sign your application with your private key</span></p>
<p style="padding-left: 30px;">When application package is ready to be signed, then you can sign it by using the Jarsigner tool.</p>
<p style="padding-left: 30px;"><span style="color: #3366ff;">$ jarsigner -verbose -keystore my-release-key.keystore my_application.apk alias_name</span></p>
<p style="padding-left: 30px;">Command line attributes:</p>
<ul>
<li>-verbose = Verbose mode</li>
<li>my-release-key.keystore = generated key file.</li>
<li>alias_name = alias name for application</li>
<li>my_application.apk = unsigned application</li>
</ul>
<p style="padding-left: 30px;">While running the above command, Jarsigner prompts you to provide passwords for the keystore and key. It then signed the .apk file. Use following command to verify that your .apk is signed:</p>
<p style="padding-left: 30px;"><span style="color: #3366ff;">$ jarsigner -verify my_signed.apk</span></p>
<p style="padding-left: 30px;">If the .apk is signed properly, Jarsigner prints &#8220;jar verified&#8221;.</p>
<p style="padding-left: 30px;"><span style="text-decoration: underline;">d. Align the final APK package</span></p>
<p style="padding-left: 30px;">Once you have signed the .apk with your private key, run zipalign on the file.The zipalign tool is available inside the Android SDK, tools/ directory folder. Follow the command to align your .apk file:</p>
<p style="padding-left: 30px;"><span style="color: #3366ff;">$ zipalign -v 4 your_project_name-unaligned.apk your_project_name.apk</span></p>
<p style="padding-left: 30px;">The input .apk must be signed with your private key before you optimize the package with zipalign</p>
<p><strong><span style="font-size: small;"><span style="color: #000000;"><span style="text-decoration: underline;">B. Using Eclipse ADT</span></span></span></strong></p>
<p>Follow the steps to create a signed and aligned .apk by Eclipse ADT:</p>
<ol>
<li>Select the project in the Package and select <strong>File      &gt; Export</strong>.</li>
<li>Open the Android folder, select Export Android      Application, and click <strong>Next</strong>.</li>
<li>The wizard now guide you the process of signing      your application, including steps for selecting the private key or      creating a new keystore and private key.</li>
<li>Complete the Export Wizard and your application      will be compiled, signed, aligned, and ready for distribution.</li>
</ol>
<h1><span style="color: #339966;"><span style="font-size: medium;">3. Preparing to Publish: A Checklist</span></span></h1>
<p>Following checklist is useful while publishing android application to market.</p>
<ol>
<li>Complete your application testing extensively on      an actual device</li>
<li>Consider adding licensing support</li>
<li>Specify an icon and label in the application&#8217;s manifest, you define the attributes <span style="color: #3366ff;">android:icon</span> and <span style="color: #3366ff;">android:label</span> in the <span style="color: #ff0000;">&lt;application&gt;</span> element of the manifest.</li>
<li>Turn off logging and debugging and clean up      data/files</li>
<li>Remove the <span style="color: #3366ff;">android:debuggable</span><span style="color: #ff0000;">=&#8221;true&#8221;</span> attribute from the <span style="color: #ff0000;">&lt;application&gt;</span> element of the manifest.</li>
<li> Specifying an appropriate value for both the <span style="color: #3366ff;">android:versionCode</span> and <span style="color: #3366ff;">android:versionName</span> attributes of the <span style="color: #ff0000;">&lt;manifest&gt;</span> element in the application&#8217;s manifest file.</li>
<li>Generate a private key by keytool utility and      compile it with application by using release mode.</li>
<li>In <span style="color: #ff0000;">&lt;manifest&gt;</span> file check that the proper permissions are used, so that user can grant permissions when application is installed in device.</li>
</ol>
<p style="padding-left: 30px;">For example:</p>
<pre class="brush: java; title: ; notranslate">
&lt;pre&gt;&amp;lt;uses-permission android:name=&quot;android.permission.CAMERA&quot;&amp;gt;&amp;lt;/uses-permission&amp;gt;
&amp;lt;uses-permission android:name=&quot;android.permission.READ_PHONE_STATE&quot;&amp;gt;&amp;lt;/uses-permission&amp;gt;
&amp;lt;uses-permission android:name=&quot;android.permission.WRITE_EXTERNAL_STORAGE&quot;&amp;gt;&amp;lt;/uses-permission&amp;gt;
&amp;lt;uses-permission android:name=&quot;android.permission.INTERNET&quot;&amp;gt;&amp;lt;/uses-permission&amp;gt;&lt;/pre&gt;
</pre>
<p>9. For supporting maximum screen sizes of devices used by customers, following attribute must be added in the Manifest file.</p>
<p>With these steps and procedures you are quite set to upload and disclose your Android application to the world .Some attractive screenshots along with a perfect description should get you going. So <a href="http://www.xoriant.com/blog/mobile-application-development/android-user-interface-design-tips.html"> keep developing your applications with interesting UI</a> and continue adding more innovative apps to the market and your portfolio. And if you encounter issues do write us back here and we shall surely reply.
<div class="author_member_gravatar_pic" style="display:block;">
			   <a class="author_member_gravatar" style="display:block;float:left;" href="http://www.xoriant.com/blog/?author=30"><img alt='' src='http://1.gravatar.com/avatar/54b9ff816cdc6201f6c25b8858133aa1?s=60&amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D60&amp;r=G' class='avatar avatar-60 photo' height='60' width='60' /><br />
			   <a class="author_member_gravatar" style="padding:5px;font-size:12px;text-decoration:none;font-weight:bold;" href="http://www.xoriant.com/blog/?author=30">Suresh Rapakala</a><span class="author-desc"><strong>&ndash; Sr. Member at Xoriant QA Center of Excellence</strong></span></div>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-knowledge">
<ul class="socials">
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.xoriant.com/blog/android/how-to-publish-android-apps-in-to-an-android-market.html&amp;title=How+to+publish+Android+Apps+into+an+Android+Market&amp;summary=After%20having%20invested%20your%20time%20and%20efforts%20in%20developing%20the%20most%20creative%20Android%20application%2C%20you%20surely%20want%20to%20make%20it%20available%20to%20a%20larger%20audience.%20Go%20ahead%20and%20read%20this%20blog%20to%20find%20information%20on%20How%20to%20sign%20your%20Android%20applications%20and%20publish%20them%20to%20the%20market.%0D%0A%0D%0AIn%20this%20blog%20post%2C%20I&amp;source=Xoriant Software Product Engineering Blog" rel="nofollow" class="external" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=How+to+publish+Android+Apps+into+an+Android+Market+-+http://bit.ly/oPkF8A&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://www.xoriant.com/blog/android/how-to-publish-android-apps-in-to-an-android-market.html&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://www.xoriant.com/blog/android/how-to-publish-android-apps-in-to-an-android-market.html&amp;title=How+to+publish+Android+Apps+into+an+Android+Market" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.xoriant.com/blog/android/how-to-publish-android-apps-in-to-an-android-market.html&amp;title=How+to+publish+Android+Apps+into+an+Android+Market" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-comfeed">
			<a href="http://www.xoriant.com/blog/android/how-to-publish-android-apps-in-to-an-android-market.html/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
		<li class="shr-reddit">
			<a href="http://reddit.com/submit?url=http://www.xoriant.com/blog/android/how-to-publish-android-apps-in-to-an-android-market.html&amp;title=How+to+publish+Android+Apps+into+an+Android+Market" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.xoriant.com/blog/android/how-to-publish-android-apps-in-to-an-android-market.html&amp;t=How+to+publish+Android+Apps+into+an+Android+Market" rel="nofollow" class="external" title="Share this on Facebook">Share this on Facebook</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>



<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.xoriant.com/blog/android/how-to-publish-android-apps-in-to-an-android-market.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Know how to develop Widgets for Android Applications with code snippets</title>
		<link>http://www.xoriant.com/blog/android/know-how-to-develop-widgets-for-android-applications-with-code-snippets.html</link>
		<comments>http://www.xoriant.com/blog/android/know-how-to-develop-widgets-for-android-applications-with-code-snippets.html#comments</comments>
		<pubDate>Mon, 29 Aug 2011 11:56:02 +0000</pubDate>
		<dc:creator>Vinay Ramkrishnan</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Android Application]]></category>
		<category><![CDATA[android apps]]></category>
		<category><![CDATA[Android Manifest]]></category>
		<category><![CDATA[Mobile Apps]]></category>
		<category><![CDATA[Widgets]]></category>

		<guid isPermaLink="false">http://www.xoriant.com/blog/?p=1885</guid>
		<description><![CDATA[In the current scenario in the mobile space, there are a lot of discussions revolving around Android and its advantages and then there are those who just cannot avoid the constant comparison with the iPhone. Keeping up with the theme, now here is something that is definitely an edge for android and sure to make [...]


Related posts:<ol><li><a href='http://www.xoriant.com/blog/software-product-development/basics-of-securing-java-web-applications.html' rel='bookmark' title='Permanent Link: Basics of Securing Java Web Applications'>Basics of Securing Java Web Applications</a> <small>Web applications are exposed to a number of threats all the time by their very nature of serving content to the public. There are intruders, hackers, impersonators, and eavesdroppers out...</small></li>
<li><a href='http://www.xoriant.com/blog/mobile-application-development/bringing-enterprise-applications-to-mobile.html' rel='bookmark' title='Permanent Link: Bringing Enterprise Applications to Mobile'>Bringing Enterprise Applications to Mobile</a> <small>Enterprise software is now going mobile. More and more work, which needed your presence in office/home, can be done on-the-go. With introduction of addictive UIs on smart phones, the market...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>In the current scenario in the mobile space, there are a lot of discussions revolving around Android and its advantages and then there are those who just cannot avoid the constant comparison with the iPhone. Keeping up with the theme, now here is something that is definitely an edge for android and sure to make the iPhone users sit up and take notice. If you still haven’t guessed it, let me tell you, what  I am referring here  is the feature called widgets. For those of you who haven’t heard of widgets, this blog will give you all what you need to know.</p>
<p><span style="color: #339966;"><strong>What are Widgets?</strong></span></p>
<p>Well, basically they are simple miniature applications/app views that can be embedded in other applications for e.g. Home screen.. I am quite sure you must be hooked up to Facebook, so say you could have a miniature view on the home screen, that allows you to post on to your wall and then constantly update you with recent likes or comments and status updates in a small scrollable view. Well this is not just a possible concept, it exists. This is exactly what a widget is. Likewise widgets exist for a variety of applications like stock market, audio manager, battery manager etc. Everything is on the home screen and you don’t even have to launch the application. The best part about a widget is, it can update itself constantly if required without you having to refresh your screen. That’s precisely as easy as it gets!!!</p>
<p>Now have a look at the demo snaps and then let’s get on with creating these widgets. It’s really very simple. What we are going to do is create a simple digital clock. So let’s begin!!!</p>
<p><a href="http://www.xoriant.com/blog/wp-content/uploads/2011/08/snap20110719_130435.png"><img class="alignleft size-medium wp-image-1886" title="Widgets Sapmle 1" src="http://www.xoriant.com/blog/wp-content/uploads/2011/08/snap20110719_130435-180x300.png" alt="" width="180" height="300" /></a> <a href="http://www.xoriant.com/blog/wp-content/uploads/2011/08/snap20110719_1301162.png"><img class="aligncenter size-medium wp-image-1889" title="Widget Sample 2" src="http://www.xoriant.com/blog/wp-content/uploads/2011/08/snap20110719_1301162-180x300.png" alt="" width="180" height="300" /></a></p>
<p>Now follow these steps and you will be on your way to creating your very own widgets for the Android Application.</p>
<p><span style="color: #339966;"><strong>Step 1: Modify Android Manifest File For the Application:</strong></span></p>
<p>What we are essentially doing here is specifying the broadcast receiver that will process the app widget updates. The meta-data tag is used to inform android about the widget provider. In this case it is located in res/xml/widget.xml. The activity tag is used to declare the activity and the event that launches it.</p>
<p>Have a look at the code snippet below:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;application android:icon=&quot;@drawable/icon&quot;
                 android:label=&quot;@string/app_name&quot;
                 android:theme=&quot;@android:style/Theme.Translucent&quot;&gt;

		&lt;receiver android:name=&quot;.Widget&quot; android:label=&quot;Custom Digital Clock&quot;&gt;
            &lt;intent-filter&gt;
                &lt;action android:name=&quot;android.appwidget.action.APPWIDGET_UPDATE&quot; /&gt;
            &lt;/intent-filter&gt;
            &lt;meta-data android:name=&quot;android.appwidget.provider&quot; android:resource=&quot;@xml/widget&quot; /&gt;
        &lt;/receiver&gt;

        &lt;activity android:name=&quot;.info&quot;&gt;
        	&lt;intent-filter&gt;
                &lt;action android:name=&quot;android.intent.action.MAIN&quot; /&gt;
                &lt;category android:name=&quot;android.intent.category.INFO&quot; /&gt;
            &lt;/intent-filter&gt;
        &lt;/activity&gt;

    &lt;/application&gt;
</pre>
<p><strong> </strong><span style="color: #339966;"><strong>Step 2: Create Widget Provider xml file as specified in the manifest</strong>:</span></p>
<p>Following  is the definition of the widget. It has only one element i.e. appwidget-provider which takes attributes specifying minimum width, height, the update frequency and the initial layout or design for the widget. Now that was simple wasn’t it!!!</p>
<pre class="brush: xml; title: ; notranslate">
&lt;appwidget-provider xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
android:minWidth=&quot;294dip&quot;
android:minHeight=&quot;72dip&quot;
android:updatePeriodMillis=&quot;0&quot;
android:initialLayout=&quot;@layout/widget&quot;/&gt;
</pre>
<p><strong><br />
</strong><span style="color: #339966;"><strong>Step 3: Create Layout for the Widget(widget.xml)</strong></span></p>
<p>Now this step is pretty self explanatory. You simply have to create layout to represent the widget. Yet the Code sample is available as always for your reference.</p>
<pre class="brush: xml; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;RelativeLayout android:id=&quot;@+id/Widget&quot;
 	android:layout_width=&quot;wrap_content&quot;
	 android:layout_height=&quot;wrap_content&quot;
 	xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;&gt;

 &lt;TextView android:textColor=&quot;@android:color/primary_text_dark&quot;
	android:padding=&quot;10dip&quot;
	android:textSize=&quot;35dip&quot;
	android:layout_width=&quot;wrap_content&quot;
	android:text=&quot;12.30.35 PM&quot;
	android:layout_gravity=&quot;center_horizontal&quot;
	android:typeface=&quot;monospace&quot;
	android:textStyle=&quot;bold&quot;
	android:layout_marginRight=&quot;3dip&quot;
	android:background=&quot;@null&quot;
	android:layout_marginBottom=&quot;3dip&quot;
	android:layout_marginLeft=&quot;3dip&quot;
	android:id=&quot;@+id/widget_textview&quot;
	android:layout_height=&quot;wrap_content&quot;
	android:layout_marginTop=&quot;3dip&quot;/&gt;

&lt;/RelativeLayout&gt;
</pre>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong> </strong><span style="color: #339966;"><strong>Step 4: Create Widget Provider Class</strong></span></p>
<p>Don’t get alarmed by the name here, it’s very simple. All you need to do is create a class that extends the AppWidgetProvider class. This is the same provider specified in the manifest file as the receiver.</p>
<p>The onUpdate() method needs to be overridden to include the necessary code to update time, which can be easily done using the TimerTask class in the java.util package and then it can be represented in a text view as per layout.</p>
<p>The onUpdate() method is called whenever an update is to be performed. Additionally pending Intents may be used to configure action to be performed on click of the widget. In this case the widget will display a simple information activity on click. Pending Intents can be given to other applications which serve as permission for the app to perform specified operation.</p>
<pre class="brush: java; title: ; notranslate">
public class Widget extends AppWidgetProvider
{
    private Handler mHandler  = new Handler();
    RemoteViews views;
	AppWidgetManager appWidgetManager;
	ComponentName currentWidget;
	Context context;
	DateFormat format = SimpleDateFormat.getTimeInstance(SimpleDateFormat.SHORT,Locale.getDefault());

	public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds)
	{

		//Update Widget Using a a runnable and a handler to manage it.
		.
		// some code here.
		.
		mHandler.removeCallbacks(mUpdateTask);
       		mHandler.postDelayed(mUpdateTask, 100);

	} 

	final Runnable mUpdateTask = new Runnable()
	{
	   public void run()
	   {
		   Intent informationIntent = new Intent(context,info.class);
	       PendingIntent infoPendingIntent = PendingIntent.getActivity(context, 0, informationIntent, 0);
	       views.setOnClickPendingIntent(R.id.Widget, infoPendingIntent);
		   views.setTextViewText(R.id.widget_textview,format.format(new Date()));
		   appWidgetManager.updateAppWidget(currentWidget, views);
		   mHandler.postDelayed(mUpdateTask, 1000);

	   }
	};
</pre>
<pre></pre>
<p><span style="color: #339966;"><strong>Step 5: Create Information activity and xml file</strong></span></p>
<p>This is a simple activity with a text view that is used to display some information on click of the widget. Creating a layout may be a piece of cake for you by now but the sample is there for your reference as always.</p>
<pre class="brush: xml; title: ; notranslate">
&lt;RelativeLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
			    android:layout_width=&quot;fill_parent&quot;
			    android:layout_height=&quot;fill_parent&quot;
			    android:background =&quot;@android:color/white&quot;
			    android:scrollbars=&quot;vertical&quot;&gt;

	&lt;TextView android:layout_width=&quot;fill_parent&quot;
			  android:layout_margin=&quot;3dip&quot;
			  android:textColor=&quot;@android:color/black&quot;
			  android:layout_height=&quot;wrap_content&quot;
			  android:text=&quot;@string/information&quot; /&gt;

&lt;/RelativeLayout&gt;
</pre>
<p>So here we go, with the help of a few simple steps, we have created our very own widget. Wasn’t that straightforward? I am sure you would be amused at the simplicity of the thing and yet its elegant beauty which is there for all to see.</p>
<p>As with everything, along with a dozen of advantages there are a few downsides to it , else how would we improvise? So a few things that you must keep in mind while you are involved in creating widgets are:</p>
<ul>
<li>They can consume a lot of resources, battery life so you need to regularly kill open unused apps.</li>
<li>They take some real estate on screen, so you need alternate screens and launchers for some extra space.</li>
</ul>
<p>So keep these in mind while making and embedding widgets on your home screen and you should have absolutely no problem. If you still get stuck while making your widget you can always <a href="https://github.com/github-xoriant/Android-Widget-Demo">use the entire source</a> which is available for download or leave a comment and I would be pleased to answer it.
<div class="author_member_gravatar_pic" style="display:block;">
			   <a class="author_member_gravatar" style="display:block;float:left;" href="http://www.xoriant.com/blog/?author=29"><img src="http://www.xoriant.com/blog/wp-content/uploads/userphoto/vinay-ramkrishnan.thumbnail.jpg" alt="Vinay Ramkrishnan" width="80" height="78" class="photo" /><br />
			   <a class="author_member_gravatar" style="padding:5px;font-size:12px;text-decoration:none;font-weight:bold;" href="http://www.xoriant.com/blog/?author=29">Vinay Ramkrishnan</a><span class="author-desc"><strong>&ndash; Team Member &#8211; Mobile CoE</strong></span></div>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-knowledge">
<ul class="socials">
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.xoriant.com/blog/android/know-how-to-develop-widgets-for-android-applications-with-code-snippets.html&amp;title=Know+how+to+develop+Widgets+for+Android+Applications+with+code+snippets&amp;summary=In%20the%20current%20scenario%20in%20the%20mobile%20space%2C%20there%20are%20a%20lot%20of%20discussions%20revolving%20around%20Android%20and%20its%20advantages%20and%20then%20there%20are%20those%20who%20just%20cannot%20avoid%20the%20constant%20comparison%20with%20the%20iPhone.%20Keeping%20up%20with%20the%20theme%2C%20now%20here%20is%20something%20that%20is%20definitely%20an%20edge%20for%20android%20and%20&amp;source=Xoriant Software Product Engineering Blog" rel="nofollow" class="external" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Know+how+to+develop+Widgets+for+Android+Applications+with+code+snippets+-+http://bit.ly/q9ZJ7s&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://www.xoriant.com/blog/android/know-how-to-develop-widgets-for-android-applications-with-code-snippets.html&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://www.xoriant.com/blog/android/know-how-to-develop-widgets-for-android-applications-with-code-snippets.html&amp;title=Know+how+to+develop+Widgets+for+Android+Applications+with+code+snippets" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.xoriant.com/blog/android/know-how-to-develop-widgets-for-android-applications-with-code-snippets.html&amp;title=Know+how+to+develop+Widgets+for+Android+Applications+with+code+snippets" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-comfeed">
			<a href="http://www.xoriant.com/blog/android/know-how-to-develop-widgets-for-android-applications-with-code-snippets.html/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
		<li class="shr-reddit">
			<a href="http://reddit.com/submit?url=http://www.xoriant.com/blog/android/know-how-to-develop-widgets-for-android-applications-with-code-snippets.html&amp;title=Know+how+to+develop+Widgets+for+Android+Applications+with+code+snippets" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.xoriant.com/blog/android/know-how-to-develop-widgets-for-android-applications-with-code-snippets.html&amp;t=Know+how+to+develop+Widgets+for+Android+Applications+with+code+snippets" rel="nofollow" class="external" title="Share this on Facebook">Share this on Facebook</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>



<p>Related posts:<ol><li><a href='http://www.xoriant.com/blog/software-product-development/basics-of-securing-java-web-applications.html' rel='bookmark' title='Permanent Link: Basics of Securing Java Web Applications'>Basics of Securing Java Web Applications</a> <small>Web applications are exposed to a number of threats all the time by their very nature of serving content to the public. There are intruders, hackers, impersonators, and eavesdroppers out...</small></li>
<li><a href='http://www.xoriant.com/blog/mobile-application-development/bringing-enterprise-applications-to-mobile.html' rel='bookmark' title='Permanent Link: Bringing Enterprise Applications to Mobile'>Bringing Enterprise Applications to Mobile</a> <small>Enterprise software is now going mobile. More and more work, which needed your presence in office/home, can be done on-the-go. With introduction of addictive UIs on smart phones, the market...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.xoriant.com/blog/android/know-how-to-develop-widgets-for-android-applications-with-code-snippets.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Find Nth maximum record in Database</title>
		<link>http://www.xoriant.com/blog/software-product-development/find-nth-maximum-record-in-database-using-dense_rank.html</link>
		<comments>http://www.xoriant.com/blog/software-product-development/find-nth-maximum-record-in-database-using-dense_rank.html#comments</comments>
		<pubDate>Fri, 19 Aug 2011 05:34:02 +0000</pubDate>
		<dc:creator>Sachin Padha</dc:creator>
				<category><![CDATA[Software Product Development]]></category>
		<category><![CDATA[dense_rank function]]></category>
		<category><![CDATA[PL- SQL Programming]]></category>
		<category><![CDATA[SQL Database]]></category>

		<guid isPermaLink="false">http://www.xoriant.com/blog/?p=1805</guid>
		<description><![CDATA[While working on a project, I came across a requirement wherein I had to write a query to retrieve the Nth maximum (salary) of the records in a database. Sounds simple before starting to write the query but as and when progressed, I realized the need to find an efficient solution as compared to the [...]


Related posts:<ol><li><a href='http://www.xoriant.com/blog/mobile-application-development/android-sqlite-database.html' rel='bookmark' title='Permanent Link: Android SQLite Database'>Android SQLite Database</a> <small>At times we are in need to store some data locally for faster retrieving and processing. One of the ways to store data locally is to write it in the...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>While working on a project, I came across a requirement wherein I had to write a query to retrieve the Nth maximum (salary) of the records in a database. Sounds simple before starting to write the query but as and when progressed, I realized the need to find an efficient solution as compared to the ones normally used by all.<strong> </strong></p>
<p>Many of us have come across some sort of a disarray in retrieving the nth maximum record in a given database. Most of the PL-SQL developers and DBAs are in continuous efforts to execute enormous queries in order to get the desired output. I have myself encountered several critical issues during PL-SQL programming on the projects which I work. But out of those, I am keen on sharing one such case in point which shows ever pertinent issue of finding out the nth maximum record in a database.</p>
<p><strong>Nth maximum record</strong>:— It means retrieving the second or third or tenth maximum record for a given database.In my case, I had to retrieve nth maximum salary from a particular persons table i.e. employees of a company.<br />
There may be several ways to retrieve the above output. But a few developers include ‘rownum’.   in their queries which  is probably not going to give the correct result.</p>
<p>Lets us see for instance,</p>
<p><strong>A query normally written by most-</strong><br />
select * from (select persons.*, rownum as r1 from persons order by salary desc) where r1=2<br />
The result of the above query is totally based on the way of records inserted into the table.<br />
e.g. — The structure of the table persons is<br />
CREATE TABLE PERSONS<br />
(<br />
P_ID INTEGER NOT NULL,<br />
LASTNAME VARCHAR2 (255 BYTE) NOT NULL,<br />
FIRSTNAME VARCHAR2 (255 BYTE) NOT NULL,<br />
ADDRESS VARCHAR2 (255 BYTE),<br />
CITY VARCHAR2 (255 BYTE),<br />
SALARY NUMBER<br />
)</p>
<p>Following are the insertion statements for the persons table:</p>
<p>- INSERT INTO PERSONS ( P_ID, LASTNAME, FIRSTNAME, ADDRESS, CITY, SALARY ) VALUES ( 3, ‘first’, ‘ankush5′, ‘city1′,   NULL, 500);</p>
<p>-INSERT INTO PERSONS ( P_ID, LASTNAME, FIRSTNAME, ADDRESS, CITY, SALARY ) VALUES ( 1, ‘second’, ‘ankush8′, ‘city2′, NULL, 80);</p>
<p>-INSERT INTO PERSONS ( P_ID, LASTNAME, FIRSTNAME, ADDRESS, CITY, SALARY ) VALUES ( 4, ‘third’, ‘ankush’, ‘city3′, NULL, 90);</p>
<p>-INSERT INTO PERSONS ( P_ID, LASTNAME, FIRSTNAME, ADDRESS, CITY, SALARY ) VALUES ( 2, ‘fourth’, ‘eankus’, ‘city4′, NULL, 600);<br />
COMMIT;</p>
<p>If you keenly observe the above statements, there is no order of inserting the value of salary in persons table. In short the inserting values of salary are in random manner i.e not sorted. The person with salary of 500 comes first and 80 second and 600 in last as per the input in the database.</p>
<p>And, if a developer is to execute the query which includes rownum to retrieve the maximum second salary,<br />
select * from (select persons.*, rownum as r1 from persons order by salary desc) where r1=2 order by salary desc.<br />
Then, the output would be 80 because rownum for that row is 2. And the reason for the rownum =2 for this record just because it was inserted in 2nd place. So the logic of using rownum for retrieving the maximum 2nd salary is quite unjustifiable.</p>
<p>After many permutations and combinations, I finally arrived at what according to me is an accurate way of writing the query.That would be using dense_rank.</p>
<p><strong>A query written using dense _rank:</strong></p>
<p>SELECT * FROM (SELECT persons.*, DENSE_RANK() OVER (ORDER BY salary desc) s_dense_rank FROM persons ) WHERE s_dense_rank = 2</p>
<p>If I execute this query to retrieve the maximum second salary, I am most certain to get my desired output i.e. 500 even though it was inserted first in the table.</p>
<p>In Oracle/PL-SQL, the dense_rank function returns the rank of a row in a group of rows. The dense_rank function can be used two ways &#8211; as an Aggregate function or as an Analytic function. In my problem, I have used dense_rank as an Analytic function.</p>
<p>This is one of the ways I could arrive at. Please leave your comments and if you have any such similar situation and related solutions, please share them across to have a fruitful interaction.
<div class="author_member_gravatar_pic" style="display:block;">
			   <a class="author_member_gravatar" style="display:block;float:left;" href="http://www.xoriant.com/blog/?author=31"><img src="http://www.xoriant.com/blog/wp-content/uploads/userphoto/sachin-padha.thumbnail.png" alt="Sachin Padha" width="57" height="52" class="photo" /><br />
			   <a class="author_member_gravatar" style="padding:5px;font-size:12px;text-decoration:none;font-weight:bold;" href="http://www.xoriant.com/blog/?author=31">Sachin Padha</a><span class="author-desc"><strong>&ndash; Software Developer ( PL-SQL Developer )</strong></span></div>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-knowledge">
<ul class="socials">
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.xoriant.com/blog/software-product-development/find-nth-maximum-record-in-database-using-dense_rank.html&amp;title=Find+Nth+maximum+record+in+Database+&amp;summary=While%20working%20on%20a%20project%2C%20I%20came%20across%20a%20requirement%20wherein%20I%20had%20to%20write%20a%20query%20to%20retrieve%20the%20Nth%20maximum%20%28salary%29%20of%20the%20records%20in%20a%20database.%20Sounds%20simple%20before%20starting%20to%20write%20the%20query%20but%20as%20and%20when%20progressed%2C%20I%20realized%20the%20need%20to%20find%20an%20efficient%20solution%20as%20compared%20to%20the%20&amp;source=Xoriant Software Product Engineering Blog" rel="nofollow" class="external" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Find+Nth+maximum+record+in+Database++-+http://bit.ly/o2bdKW&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://www.xoriant.com/blog/software-product-development/find-nth-maximum-record-in-database-using-dense_rank.html&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://www.xoriant.com/blog/software-product-development/find-nth-maximum-record-in-database-using-dense_rank.html&amp;title=Find+Nth+maximum+record+in+Database+" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.xoriant.com/blog/software-product-development/find-nth-maximum-record-in-database-using-dense_rank.html&amp;title=Find+Nth+maximum+record+in+Database+" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-comfeed">
			<a href="http://www.xoriant.com/blog/software-product-development/find-nth-maximum-record-in-database-using-dense_rank.html/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
		<li class="shr-reddit">
			<a href="http://reddit.com/submit?url=http://www.xoriant.com/blog/software-product-development/find-nth-maximum-record-in-database-using-dense_rank.html&amp;title=Find+Nth+maximum+record+in+Database+" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.xoriant.com/blog/software-product-development/find-nth-maximum-record-in-database-using-dense_rank.html&amp;t=Find+Nth+maximum+record+in+Database+" rel="nofollow" class="external" title="Share this on Facebook">Share this on Facebook</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>



<p>Related posts:<ol><li><a href='http://www.xoriant.com/blog/mobile-application-development/android-sqlite-database.html' rel='bookmark' title='Permanent Link: Android SQLite Database'>Android SQLite Database</a> <small>At times we are in need to store some data locally for faster retrieving and processing. One of the ways to store data locally is to write it in the...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.xoriant.com/blog/software-product-development/find-nth-maximum-record-in-database-using-dense_rank.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android UI Design Pattern – Quick Action Bar</title>
		<link>http://www.xoriant.com/blog/mobile-application-development/android-ui-design-pattern-%e2%80%93-quick-action-bar.html</link>
		<comments>http://www.xoriant.com/blog/mobile-application-development/android-ui-design-pattern-%e2%80%93-quick-action-bar.html#comments</comments>
		<pubDate>Tue, 16 Aug 2011 11:12:56 +0000</pubDate>
		<dc:creator>Pradeep Sharma</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Mobile Application Development]]></category>
		<category><![CDATA[Android UI]]></category>
		<category><![CDATA[Android UI Action Bar]]></category>
		<category><![CDATA[Android UI Dashboard]]></category>
		<category><![CDATA[Android UI Quick Action Bar]]></category>
		<category><![CDATA[UI Pattern]]></category>

		<guid isPermaLink="false">http://www.xoriant.com/blog/?p=1707</guid>
		<description><![CDATA[So far with all the previous blogs we have been quite familiar to various aspects like Dashboard and Action bar for a user friendly Interface for Android mobile application. In this post we shall discuss about the Quick Action design pattern in more detail with which you will be  have a clear understanding of the [...]


Related posts:<ol><li><a href='http://www.xoriant.com/blog/mobile-application-development/android-ui-design-pattern-action-bar.html' rel='bookmark' title='Permanent Link: Android UI Design Pattern &#8211; Action Bar'>Android UI Design Pattern &#8211; Action Bar</a> <small>The previous posts on User Interface tips and Dashboard design pattern gave you a fair idea on how to get going with your User Interface. In this post, we shall...</small></li>
<li><a href='http://www.xoriant.com/blog/mobile-application-development/android-ui-design-pattern-dashboard-howto.html' rel='bookmark' title='Permanent Link: Android UI Design Pattern – Dashboard'>Android UI Design Pattern – Dashboard</a> <small>The earlier post here has covered the importance and the basics of developing a user friendly UI, taking this further we will be presenting to you a detailed view of...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>So far with all the previous blogs we have been quite familiar to various aspects like Dashboard and Action bar for a user friendly Interface for Android mobile application.</p>
<p>In this post we shall discuss about the Quick Action design pattern in more detail with which you will be  have a clear understanding of the significant parts of a typical user friendly interface.</p>
<p><strong><span style="color: #339966;">Introduction:</span></strong></p>
<p>As <a href="http://www.xoriant.com/blog/mobile-application-development/android-user-interface-design-tips.html">previously mentioned</a>, Quick Actions are basically actions/functions in a popup bar that are triggered by specific visual elements/buttons/items on the screen. Quick Actions are used to display contextual actions typically used in list views but not limited to it. You can imagine a phone-book or contact list on the phone. Now, there are certain set of actions that will be common to all contacts in the views like; make a call, send message, edit contact or may be even transfer files by  Email, Bluetooth etc. Basically these functions that are common to items in a context can be put in the Quick Action bar. This way the screen is uncluttered and simple and more importantly we needn’t sacrifice on the actions needed.</p>
<p>After having learnt about <a href="https://github.com/github-xoriant/Android-ActionBar-UI-Pattern"> detailed source code for an Action bar</a>, next let us begin with the creation of the Quick Actions bar. We will make this short and simple, so just follow on…</p>
<p><a href="http://www.xoriant.com/blog/mobile-application-development/user-interface-design-tips.html"> </a></p>
<p>To begin with, the demo snaps look like this:</p>
<p><a href="http://www.xoriant.com/blog/wp-content/uploads/2011/08/snap20110714_180237.png"><img class="alignleft size-medium wp-image-1708" title="Quick Action Sample 1" src="http://www.xoriant.com/blog/wp-content/uploads/2011/08/snap20110714_180237-180x300.png" alt="" width="180" height="300" /></a> <a href="http://www.xoriant.com/blog/wp-content/uploads/2011/08/snap20110714_180242.png"><img class="aligncenter size-medium wp-image-1709" title="Quick Action Sample 2" src="http://www.xoriant.com/blog/wp-content/uploads/2011/08/snap20110714_180242-180x300.png" alt="" width="180" height="300" /></a></p>
<p><span style="color: #339966;"><strong>Step 1. Create Actionable Items</strong></span></p>
<p>The below code snippet is used to create an actionable item i.e. the actions you would want to place in the quick action bar. Creating an actionable item involves specifying the title, setting an icon that represents the item which will help you relate to the action, and finally set a Listener for the action. The term itself is self-explanatory. Yes, it is used to determine the action to be performed when clicked or pressed. As far as the icon /image goes, it can be easily set by referring to it from the resources as is the case with any external resource set in android which you would aware of, I am most certain.</p>
<pre class="brush: java; title: ; notranslate">

final QuickActionIcons edit = new QuickActionIcons();;

 edit.setTitle(&quot;Edit&quot;);
 edit.setIcon(getResources().getDrawable(R.drawable.edit));
 edit.setOnClickListener(new OnClickListener()
 {
 public void onClick(View v)
 {
 Toast.makeText(QuickActionSampleAppActivity.this,&quot;Edit Contact&quot;,Toast.LENGTH_SHORT).show();
 }

 });]
</pre>
<p>The above actions can be repeated depending upon the number of actions to be put in.</p>
<p>With this, you have successfully created your actions. Next we shall create the quick action dialog that should be displayed on clicking some button or tab.</p>
<p><span style="color: #339966;"><strong>Step 2: Create Quick Action Dialog</strong></span></p>
<p>This part is even simpler. Like in this example, when an item in the list view is clicked / pressed, a new quick action bar/dialog is created. Then all the actionable items that you have created in the previous step are appended one by one to the quick action bar. After this you simply have to specify the animation style i.e. how do you want the dialog to be displayed on screen.</p>
<pre class="brush: java; title: ; notranslate">

resultPane.setOnItemClickListener(new OnItemClickListener()
    {
		public void onItemClick(AdapterView&lt;?&gt; parent, View view, int position, long id)
		{
			QuickActionBar qab = new QuickActionBar(view);

			qab.addItem(edit);
			qab.addItem(call);
			qab.addItem(send_data);
			qab.setAnimationStyle(QuickActionBar.GROW_FROM_LEFT);

			qab.show();
		}
    });
</pre>
<p>And then finally you display the created quick action bar.</p>
<p><span style="color: #339966;"><strong>Step 3: Create Animation Files</strong></span></p>
<p>All animations that you specify will have to be supported by corresponding XML files that allow the animation to play out. These XML files will form a part of your resources. It‘s really not that difficult to create these animation files. Have a look at a sample below.</p>
<pre class="brush: xml; title: ; notranslate">&lt;strong&gt;&lt;/strong&gt;

&lt;set xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;&gt;
 &lt;scale
 android:fromXScale=&quot;0.3&quot; android:toXScale=&quot;1.0&quot;
 android:fromYScale=&quot;0.3&quot; android:toYScale=&quot;1.0&quot;
 android:pivotX=&quot;50%&quot; android:pivotY=&quot;100%&quot;
 android:duration=&quot;@android:integer/config_shortAnimTime&quot;
 /&gt;
 &lt;alpha
 android:interpolator=&quot;@android:anim/decelerate_interpolator&quot;
 android:fromAlpha=&quot;0.0&quot; android:toAlpha=&quot;1.0&quot;
 android:duration=&quot;@android:integer/config_shortAnimTime&quot;
 /&gt;
&lt;/set&gt;
</pre>
<p><strong><br />
<span style="color: #339966;">Step 4: Create Layouts for actionable Items and Quick Action Bar</span></strong></p>
<p>Some additional things that you would have to do are create layouts for the quick action dialog and the actionable items. It’s as simple as the layouts that you are so used to creating in android day in and day out. Go on and have a look at the snippet for the quick action items any way.</p>
<pre class="brush: xml; title: ; notranslate">

&lt;LinearLayout
 xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
 android:orientation=&quot;vertical&quot;
 android:layout_width=&quot;fill_parent&quot;
 android:layout_height=&quot;wrap_content&quot;
 android:gravity=&quot;center_vertical|center_horizontal&quot;
 android:paddingTop=&quot;0dip&quot;
 android:paddingBottom=&quot;0dip&quot;
 android:paddingLeft=&quot;20dip&quot;
 android:paddingRight=&quot;20dip&quot;
 android:clickable=&quot;true&quot;
 android:background=&quot;@drawable/button_state&quot;&gt;

 &lt;ImageView
 android:id=&quot;@+id/image&quot;
 android:layout_width=&quot;fill_parent&quot;
 android:layout_height=&quot;wrap_content&quot;/&gt;

 &lt;TextView
 android:id=&quot;@+id/caption&quot;
 android:layout_width=&quot;fill_parent&quot;
 android:layout_height=&quot;fill_parent&quot;
 android:gravity=&quot;center_vertical&quot;
 android:textSize=&quot;12sp&quot;
 android:textColor=&quot;#ff000000&quot;/&gt;

&lt;/LinearLayout&gt;
</pre>
<p>You may try out the quick action dialog layout by yourself. If you’re stuck you can refer to <a href="https://github.com/github-xoriant/Android-QuickActionBar-UI-Pattern">the complete source code on Quick Action </a> that is available anyway.</p>
<p>By following these 4 simple steps , you are all set and ready to have quick action dialogs zooming around in your app. So go on and try them out.</p>
<p>With <a href="http://www.xoriant.com/blog/mobile-application-development/android-user-interface-design-tips.html"> a few design guidelines on User Friendly Interface for Android</a> followed by:</p>
<ul>
<li><a href="http://www.xoriant.com/blog/mobile-application-development/android-ui-design-pattern-dashboard-howto.html">Android UI Design Pattern-Dashboard</a></li>
<li><a href="http://www.xoriant.com/blog/mobile-application-development/android-ui-design-pattern-action-bar.html">Android UI Design Pattern-Action Bar</a><a></a></li>
<li>Android UI Design Pattern-Quick Action Bar;</li>
</ul>
<p>I am most certain that you can now design and develop an efficient interface. Should you have any questions on any topic, I would be pleased to answer them.
<div class="author_member_gravatar_pic" style="display:block;">
			   <a class="author_member_gravatar" style="display:block;float:left;" href="http://www.xoriant.com/blog/?author=28"><img src="http://www.xoriant.com/blog/wp-content/uploads/userphoto/pradeep-sharma.thumbnail.jpg" alt="Pradeep Sharma" width="80" height="80" class="photo" /><br />
			   <a class="author_member_gravatar" style="padding:5px;font-size:12px;text-decoration:none;font-weight:bold;" href="http://www.xoriant.com/blog/?author=28">Pradeep Sharma</a><span class="author-desc"><strong>&ndash; Technical Lead &#8211; Mobile CoE</strong></span></div>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-knowledge">
<ul class="socials">
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.xoriant.com/blog/mobile-application-development/android-ui-design-pattern-%e2%80%93-quick-action-bar.html&amp;title=Android+UI+Design+Pattern+%E2%80%93+Quick+Action+Bar&amp;summary=So%20far%20with%20all%20the%20previous%20blogs%20we%20have%20been%20quite%20familiar%20to%20various%20aspects%20like%20Dashboard%20and%20Action%20bar%20for%20a%20user%20friendly%20Interface%20for%20Android%20mobile%20application.%0D%0A%0D%0AIn%20this%20post%20we%20shall%20discuss%20about%20the%20Quick%20Action%20design%20pattern%20in%20more%20detail%20with%20which%20you%20will%20be%20%C2%A0have%20a%20clear%20un&amp;source=Xoriant Software Product Engineering Blog" rel="nofollow" class="external" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Android+UI+Design+Pattern+%E2%80%93+Quick+Action+Bar+-+http://bit.ly/n0e203&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://www.xoriant.com/blog/mobile-application-development/android-ui-design-pattern-%e2%80%93-quick-action-bar.html&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://www.xoriant.com/blog/mobile-application-development/android-ui-design-pattern-%e2%80%93-quick-action-bar.html&amp;title=Android+UI+Design+Pattern+%E2%80%93+Quick+Action+Bar" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.xoriant.com/blog/mobile-application-development/android-ui-design-pattern-%e2%80%93-quick-action-bar.html&amp;title=Android+UI+Design+Pattern+%E2%80%93+Quick+Action+Bar" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-comfeed">
			<a href="http://www.xoriant.com/blog/mobile-application-development/android-ui-design-pattern-–-quick-action-bar.html/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
		<li class="shr-reddit">
			<a href="http://reddit.com/submit?url=http://www.xoriant.com/blog/mobile-application-development/android-ui-design-pattern-%e2%80%93-quick-action-bar.html&amp;title=Android+UI+Design+Pattern+%E2%80%93+Quick+Action+Bar" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.xoriant.com/blog/mobile-application-development/android-ui-design-pattern-%e2%80%93-quick-action-bar.html&amp;t=Android+UI+Design+Pattern+%E2%80%93+Quick+Action+Bar" rel="nofollow" class="external" title="Share this on Facebook">Share this on Facebook</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>



<p>Related posts:<ol><li><a href='http://www.xoriant.com/blog/mobile-application-development/android-ui-design-pattern-action-bar.html' rel='bookmark' title='Permanent Link: Android UI Design Pattern &#8211; Action Bar'>Android UI Design Pattern &#8211; Action Bar</a> <small>The previous posts on User Interface tips and Dashboard design pattern gave you a fair idea on how to get going with your User Interface. In this post, we shall...</small></li>
<li><a href='http://www.xoriant.com/blog/mobile-application-development/android-ui-design-pattern-dashboard-howto.html' rel='bookmark' title='Permanent Link: Android UI Design Pattern – Dashboard'>Android UI Design Pattern – Dashboard</a> <small>The earlier post here has covered the importance and the basics of developing a user friendly UI, taking this further we will be presenting to you a detailed view of...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.xoriant.com/blog/mobile-application-development/android-ui-design-pattern-%e2%80%93-quick-action-bar.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<series:name><![CDATA[Mobile UI Design Pattern]]></series:name>
	</item>
		<item>
		<title>Mobile Application Testing – A Quality Approach</title>
		<link>http://www.xoriant.com/blog/software-testing-and-qa/mobile-application-testing-%e2%80%93-a-quality-approach.html</link>
		<comments>http://www.xoriant.com/blog/software-testing-and-qa/mobile-application-testing-%e2%80%93-a-quality-approach.html#comments</comments>
		<pubDate>Mon, 08 Aug 2011 12:32:23 +0000</pubDate>
		<dc:creator>Suresh Rapakala</dc:creator>
				<category><![CDATA[Software Testing and QA]]></category>
		<category><![CDATA[Automation Testing]]></category>
		<category><![CDATA[Manual Testing]]></category>
		<category><![CDATA[Mobile application development]]></category>
		<category><![CDATA[Mobile Application Testing]]></category>
		<category><![CDATA[Software Testing]]></category>
		<category><![CDATA[Testng-Mobile Apps]]></category>

		<guid isPermaLink="false">http://www.xoriant.com/blog/?p=1637</guid>
		<description><![CDATA[The ever increasing demand of mobile devices has given a push to software developers in taking the traditional web applications to mobile environment. The challenge is to provide user experience as similar and seamless across various mobile devices as possible in spite of the limitations which the mobile environment poses, adopting an agile methodology to [...]


Related posts:<ol><li><a href='http://www.xoriant.com/blog/software-testing-and-qa/best_practices_internationalization_testing.html' rel='bookmark' title='Permanent Link: Best practices in Internationalization testing'>Best practices in Internationalization testing</a> <small>This blog will focus on the best practices to be followed for Internationalization &amp; Localization testing of web based applications. Introduction Internationalization testing is the process of testing software which...</small></li>
<li><a href='http://www.xoriant.com/blog/mobile-application-development/bringing-enterprise-applications-to-mobile.html' rel='bookmark' title='Permanent Link: Bringing Enterprise Applications to Mobile'>Bringing Enterprise Applications to Mobile</a> <small>Enterprise software is now going mobile. More and more work, which needed your presence in office/home, can be done on-the-go. With introduction of addictive UIs on smart phones, the market...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>The ever increasing demand of mobile devices has given a push to software developers in taking the traditional web applications to mobile environment. The challenge is to provide user experience as similar and seamless across various mobile devices as possible in spite of the limitations which the mobile environment poses, adopting an agile methodology to develop the mobile applications for a diversified device environment, hardware and networking considerations.</p>
<p>Mobile device markets that includes Smartphones, Tablets, PDAs etc. is growing dynamically making the mobile application developers strive to deliver most robust, scalable applications with quality assurance Every device platform creates a unique testing environment challenging the mobile application developers to follow different testing strategies. Here we shall see how different types of testing approaches can be taken up for a variety of mobile platforms.</p>
<p><span style="color: #339966;"><strong>Numerous different mobile platforms available for mobile applications to name a few:</strong></span></p>
<ul style="padding-left: 30px;">
<li>Apple&#8217;s iOS</li>
<li>Google&#8217;s Android</li>
<li>Nokia&#8217;s Symbian, Maemo and      MeeGo</li>
<li>Palm/HP&#8217;s WebOS</li>
<li>Samsung&#8217;s Bada</li>
<li>RIM&#8217;s BlackBerry OS., and      many more.</li>
</ul>
<p>As mentioned, every platform needs a different testing approach. A combination of <strong>manual</strong> and <strong>automation</strong> testing can be done for an effective outcome.</p>
<p>Following are different types of manual testing for mobile environment:<strong> </strong></p>
<ul>
<li><strong>Functionality Testing:</strong></li>
</ul>
<p style="padding-left: 30px;">Functional testing mainly includes finding device specific bugs and      navigational issues of application. This type of testing should be done at      the initial stage when the application is under development. In functional      testing we can check database or network queries with response times, crashes      and memory issues. Functionality testing of a mobile application is a      black-box type of testing to assure that the application is functioning as      per the business specifications.</p>
<ul>
<li><strong>Usability Testing:</strong></li>
</ul>
<p style="padding-left: 30px;">Usability      testing encompasses mobile interface testing, application navigation      testing, and intuitiveness of the application, consistency, and soberness      of color scheme. <strong>An ISO standard </strong>defines usability as <em>&#8220;the      extent to which a product can be used by specified users to achieve      specified goals with effectiveness, efficiency and satisfaction in a      specified context of use&#8221;.</em></p>
<p style="padding-left: 30px;">In Usability testing ease and efficiency of the user and content verification will be tested as defined in common Usability guidelines.</p>
<ul>
<li><strong>Network Connection      Testing:</strong></li>
</ul>
<p style="padding-left: 30px;">Every mobile application which utilizes internet needs to be tested      under different networks. These are a few networks for testing      applications:</p>
<p style="padding-left: 30px;">2G (GPRS, CDMA, EDGE), 3G and WiFi.</p>
<p style="padding-left: 30px;">This is a necessity because most of the times the server responses are different for different type of networks. This testing helps us check application behavior under different networks.</p>
<ul>
<li><strong>Installation Testing:<br />
</strong></li>
</ul>
<p style="padding-left: 30px;">While      installing, the application should install required softwares      automatically on the device. And while uninstalling the application, it      should remove all the available content and databases from the device      which are used by application.</p>
<ul>
<li><strong>Performance Testing: </strong></li>
</ul>
<p style="padding-left: 30px;">Performance      testing is required for finding memory related issues in application when      data is excessive, due to devices having less memory as compared to      simulator, this testing is required to be done on device only. By this      testing approach, we can find the stability and performance of application      under excessive data.</p>
<ul>
<li><strong>Stress Testing:</strong></li>
</ul>
<p style="padding-left: 30px;">This testing is required for getting the application response time while clicking on different buttons regressively and adding more data on device. We can get different crashes and hangings of application while running the application for long time.</p>
<p>In absence of mobile devices, simulators have always played a vital role for testing mobile device applications, although device testing is always the ideal way as it represents more likely end user scenarios, the significance of simulators in testing cannot be ignored. To have an effective testing with the help of a simulator, it’s necessary to explore all the capabilities of simulator.</p>
<p><span style="color: #339966;"><strong>Simulator versus device testing:</strong></span></p>
<p>Simulators are mainly used for functional testing of basic flows. Simulators are not used for performance and usability testing, but the final testing is conducted on actual devices so crashes and hangings can be identified. One cannot get quality application while relying only on simulator. Device testing is necessary for all the applications, as with device testing we can understand the application behavior on different networks.</p>
<p><strong>Simulator:</strong></p>
<p>Is a software application that can accurately imitate a mobile phone. Simulator is mainly used by developers to check the functionalities implemented under development phase.</p>
<p>Let’s discuss the pros and cons of using simulators:</p>
<ul>
<li><strong>Pros</strong>:</li>
</ul>
<p style="padding-left: 30px;">- Helps in isolating issues which are not volatile network connection dependent<br />
- Provides a wide variety of testing over different types of device simulators for the same build<br />
- Allows to test the same build in multiple device screens.</p>
<ul>
<li><strong>Cons</strong>:</li>
</ul>
<p style="padding-left: 30px;">- Simulators of older generation handsets don’t resemble the device as closely<br />
- Some issues which are hit by the speed at which input was given cannot be reproduced easily<br />
- Hardware/Firmware environment variations detectable in device testing only<br />
- Device testing is always preferred as it represents more likely end user scenarios.</p>
<p><strong>Device: </strong>Is the actual handset where application installed and runs.</p>
<p>There are some pros and cons while using real devices for testing as well.</p>
<ul>
<li>Pros:</li>
</ul>
<p style="padding-left: 30px;">- Finds actual issues of application.<br />
- Finds crashes, memory leak issues which can not found on simulators.<br />
- Checks application over 2G and 3G and different networks<br />
- Checks application behavior while incoming call, SMS, MMS and alarm.</p>
<ul>
<li>Cons:</li>
</ul>
<p style="padding-left: 30px;">- Expensive for compatibility testing of application over wide range of devices<br />
- Consumes more time for adding excessive test data for testing purpose.</p>
<p><span style="color: #339966;"><strong>Checklist to follow while testing a mobile application:</strong></span></p>
<p><strong> </strong></p>
<p>Following is a basic checklist which is required while testing mobile application for any platform:</p>
<p>1.<span style="text-decoration: underline;"> </span>Installation &amp; Uninstallation: To verify whether the application can be installed &amp; uninstalled successfully.</p>
<p>2. Network Connectivity:</p>
<ul>
<li> The application can use simultaneous      connections properly</li>
<li>The application follows      the GSM Offline profile correctly when making connections.</li>
<li>When GSM Offline profile      is selected, application cannot take network connection or send an SMS/MMS</li>
<li>The application can      utilize WLAN, 2G and 3G networks correctly.</li>
<li>Performance of application      during network connectivity problem.</li>
</ul>
<p>3. Call/SMS/alarm handling: Verify that Application pauses and resumes for the same state when there is an incoming phone call/SMS/MMS/Alarm notification.</p>
<p>4. Check the look &amp; feel of the application</p>
<p>5. Content: Check if enough information is displayed</p>
<p>6. The application must function as defined in the Help, user&#8217;s guide, or functional specification</p>
<p>7. Performance : Application and inner pages load time.</p>
<p><span style="color: #339966;"><strong>Automation Testing:</strong></span></p>
<p><strong> </strong></p>
<p><strong>Automation testing is usually extended to perform tasks impossible with manual testing in large applications. </strong>An automated software testing tool<strong> i</strong>s capable of playing pre-recorded and predefined actions. The results are mapped to the expected behavior and report the success or failure of these manual tests. Once automated tests are created they can easily be repeated. Having experienced the efficiency of automated software testing, it has become an important part of an application testing.</p>
<p><strong> </strong></p>
<p><strong>Automation tools available for testing:</strong></p>
<p>Mainly mobile testing is done manually on actual devices. Some of the following tools are available in to test the functionality as well as usability of application.</p>
<ol>
<li>Robotium      for Android</li>
<li>Testquest,      try, and digia for Symbian</li>
<li>FoneMonkey      for IPhones</li>
<li>Memory      sweep for IPhone</li>
<li>Other      tools: eggplant, VNC Robot, Hopper and TestQuest.</li>
</ol>
<p><strong>Advantages and Limitations of Automation Tools:</strong></p>
<p><strong> </strong></p>
<p style="padding-left: 30px;"><span style="text-decoration: underline;">Advantages:</span><br />
- Multiple      tests can run in less time with fewer resources<br />
- Automated      Tools run tests faster than human users<br />
- Can      reuse tests on different versions of an application.</p>
<p style="padding-left: 30px;"><span style="text-decoration: underline;">Limitations:</span><br />
- Unable      to test all the functionalities and Usability of application through      automation tools<br />
- Proficiency      is required to write the automation test scripts for application different      functionalities<br />
- Debugging      the test script if any error is present in the automation test script<br />
- Storing      and maintenance of test data is difficult.</p>
<p><strong> </strong></p>
<p>I believe that this comprehensive information will be quite helpful to you if you are looking at some methods for an effective approach to test a mobile device application. You can leave your comments and/or questions; I would be looking forward to having an interactive conversation.</p>
<p style="padding-left: 30px;">
<p style="padding-left: 240px;">
<div class="author_member_gravatar_pic" style="display:block;">
			   <a class="author_member_gravatar" style="display:block;float:left;" href="http://www.xoriant.com/blog/?author=30"><img alt='' src='http://1.gravatar.com/avatar/54b9ff816cdc6201f6c25b8858133aa1?s=60&amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D60&amp;r=G' class='avatar avatar-60 photo' height='60' width='60' /><br />
			   <a class="author_member_gravatar" style="padding:5px;font-size:12px;text-decoration:none;font-weight:bold;" href="http://www.xoriant.com/blog/?author=30">Suresh Rapakala</a><span class="author-desc"><strong>&ndash; Sr. Member at Xoriant QA Center of Excellence</strong></span></div>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-knowledge">
<ul class="socials">
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.xoriant.com/blog/software-testing-and-qa/mobile-application-testing-%e2%80%93-a-quality-approach.html&amp;title=Mobile+Application+Testing+%E2%80%93+A+Quality+Approach&amp;summary=The%20ever%20increasing%20demand%20of%20mobile%20devices%20has%20given%20a%20push%20to%20software%20developers%20in%20taking%20the%20traditional%20web%20applications%20to%20mobile%20environment.%20The%20challenge%20is%20to%20provide%20user%20experience%20as%20similar%20and%20seamless%20across%20various%20mobile%20devices%20as%20possible%20in%20spite%20of%20the%20limitations%20which%20the%20m&amp;source=Xoriant Software Product Engineering Blog" rel="nofollow" class="external" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Mobile+Application+Testing+%E2%80%93+A+Quality+Approach+-+http://bit.ly/pTxZuV&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://www.xoriant.com/blog/software-testing-and-qa/mobile-application-testing-%e2%80%93-a-quality-approach.html&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://www.xoriant.com/blog/software-testing-and-qa/mobile-application-testing-%e2%80%93-a-quality-approach.html&amp;title=Mobile+Application+Testing+%E2%80%93+A+Quality+Approach" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.xoriant.com/blog/software-testing-and-qa/mobile-application-testing-%e2%80%93-a-quality-approach.html&amp;title=Mobile+Application+Testing+%E2%80%93+A+Quality+Approach" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-comfeed">
			<a href="http://www.xoriant.com/blog/software-testing-and-qa/mobile-application-testing-–-a-quality-approach.html/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
		<li class="shr-reddit">
			<a href="http://reddit.com/submit?url=http://www.xoriant.com/blog/software-testing-and-qa/mobile-application-testing-%e2%80%93-a-quality-approach.html&amp;title=Mobile+Application+Testing+%E2%80%93+A+Quality+Approach" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.xoriant.com/blog/software-testing-and-qa/mobile-application-testing-%e2%80%93-a-quality-approach.html&amp;t=Mobile+Application+Testing+%E2%80%93+A+Quality+Approach" rel="nofollow" class="external" title="Share this on Facebook">Share this on Facebook</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>



<p>Related posts:<ol><li><a href='http://www.xoriant.com/blog/software-testing-and-qa/best_practices_internationalization_testing.html' rel='bookmark' title='Permanent Link: Best practices in Internationalization testing'>Best practices in Internationalization testing</a> <small>This blog will focus on the best practices to be followed for Internationalization &amp; Localization testing of web based applications. Introduction Internationalization testing is the process of testing software which...</small></li>
<li><a href='http://www.xoriant.com/blog/mobile-application-development/bringing-enterprise-applications-to-mobile.html' rel='bookmark' title='Permanent Link: Bringing Enterprise Applications to Mobile'>Bringing Enterprise Applications to Mobile</a> <small>Enterprise software is now going mobile. More and more work, which needed your presence in office/home, can be done on-the-go. With introduction of addictive UIs on smart phones, the market...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.xoriant.com/blog/software-testing-and-qa/mobile-application-testing-%e2%80%93-a-quality-approach.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

