Search in Tech-lender

Showing posts with label mobile development. Show all posts
Showing posts with label mobile development. Show all posts

Friday, 16 September 2011

Mobile application development

Mobile application development is the process by which application software is developed for small low-power handheld devices such as personal digital assistants, enterprise digital assistants or mobile phones. These applications are either pre-installed on phones during manufacture, or downloaded by customers from various mobile software distribution platforms.

Execution environments


Android, iOS, BlackBerry, HP webOS, Symbian OS, and Windows Mobile support typical application binaries as found on personal computers with code which executes in the native machine format of the processor (the ARM architecture is a dominant design used on many current models). Windows Mobile can also be compiled to x86 executables for debugging on a PC without a processor emulator, and also supports the Portable Executable (PE) format associated with the .NET Framework. Windows Mobile, HP webOS and iOS offer free SDKs and integrated development environments to developers. Machine language executables offer considerable performance advantages over Java.

Platform development environment


Each of the platforms for mobile applications also has an integrated development environment which provides tools to allow a developer to write, test and deploy applications into the target platform environment.

The following table summarises the elements in each of the development environments.

Testing


Definition


Testing is a technique to uncover the hidden bugs in the application developed on mobile platform.Mobile Application Testing is a challenging process as it involves testing of applications across different handsets, carriers, languages and locations.

Types


Mobile application testing involves Functional testing, Security testing, Load testing & Performance testing, Localization testing, Usability Testing Many types of tests are automatable.

Tools


  • FoneMonkey: Free Mobile Application Testing tool for iphone apps
  • Robotium : Automation tool for Android Mobile Application

Factors affecting success of testing


The critical factors that determine the success of mobile testing program are:

  • Use of test automation.
  • Use of emulators and actual device
  • Testing for mobile environment and application complexity

Application stores


Several initiatives exist both from mobile vendor and mobile operators around the world. Application developers can propose and publish their applications on the stores, being rewarded by a revenue sharing of the selling price. Most famous is Apple's App Store, where only approved applications may be distributed and run on iOS devices (otherwise known as a walled garden). HP / Palm, Inc have also created the Palm App Catalog where HP / Palm, Inc webOS device users can download applications directly from the device or send a link to the application via a unique web distribution method. Recently, mobile operators such as Telefonica Group and Telecom Italia have launched cross-platform application stores for their subscribers.

Patents


There are numerous patent applications pending for new mobile phone apps. Most of these are in the technological fields of Business methods, Database management, Data transfer and Operator interface.

Patent Enforcement



On May 31, 2011, Lodsys asserted two of its four patents: U.S. Patent No. 7,620,565 ("the '565 patent") on a "customer-based design module" and U.S. Patent No. 7,222,078 ("the '078 patent") on "Methods and Systems for Gathering Information from Units of a Commodity Across a Network." against the following app developers:

  • Combay
  • Iconfactory
  • Illusion Labs
  • Shovelmate
  • Quickoffice
  • Richard Shinderman of Brooklyn, New York
  • Wulven Games of Hanoi, Vietnam

Thursday, 15 September 2011

Challenges and Opportunities in Mobile Application Development And Mobile DSLs

>
The world is turning mobile, it would be hard to argue otherwise with over two hundred millions smartphones, tablets and airbooks already sold worldwide. This evolution introduces significant changes to the form factor of software solutions (Table 1) that mandate carefully vetting prior to initiating the development of a mobile solution.
Overall, mobile users generally pay more attention to the user experience (UX), and when they have a choice they prefer a native look and feel be it for email, social networking, checking weather, sport events … even Google is building native apps. Increasingly, developers can emulate a native experience in the browser thanks to the progress made by WebKit.
If these changes can already significantly impact a mobile solution delivery process, the most profound architectural change introduced by mobility is the evolution from “connected” applications to “converged” applications where voice, messaging, location services, data services and video may all contribute to deliver an experience simply unavailable to a desktop or a Web application. In the early 2000s, in the wake of SOA, several companies had developed the concept of Composite Applications or Connected Systems. Mobile applications advance this concept to the next level and enable an arbitrary application to consume a mashup of any number of voice, messaging, data, location and video services maintained by different 3rd parties which each may have a direct relationship with the end user, independent of the application. Converged Apps create strong privacy constraints (as the application is granted access to contacts, location, movies, TV programs …). Standards like OAuth 2.0 have emerged to support these scenarios. Oauth 2.0 requires the developer to maintain individual API keys and (user) access tokens for each type of services. Developers can no longer rely on a “single sign on” mechanism such as OpenID or LiveID because they share the identity of the subscriber with the application and do not provide any authorization capability. Converged Applications are also often requested to perform in a downgraded mode when the user does not grant the application full consent to consume all the services on his or her behalf.
Form Factor End-User Developer
End-users carry their client with them Users no longer need to access the same application on a number of computers (home, work, friends...). They want the best experience for each form factor. Need to support multiple experiences for each type of mobile client, in a cross platform way, which can be even more challenging than cross browser support
Power/Bandwidth Battery life/Bandwidth becomes a major UX element Need to develop software with least power/ bandwidth consumption
Screen size Seeking optimized UX on such a small screen Need to forget all current UX design rules and reinvent them for mobility
Sensors Expect apps take advantage of all on board sensors (camera, motion detectors, …) that can help build very smart applications Need to master specialized libraries and adapt their apps to device capabilities
Voice and Notifications Expect seamless integration between apps and voice and messaging, including speech processing Create compelling user experience and integrate notifications in application workflow
Near-field communication Help the user bootstrap sophisticated processes which are based on user identity (payments, local app download…) Complex back-end integration to securely share user data and manage transactions
Table 1. The Impact of Mobility on End-Users and Developers
There is another major change that can be easily overlooked, even dismissed: Mobility has revolutionized both monetization and software distribution strategies from a simple “ring tone” business model. We encourage you to pause for a moment and really focus on the impact on having the ability to reach hundreds of millions of customers, at any time, simply by uploading your app to a few App Stores. For us, this means that a developer has many more opportunities to create apps dedicated to specific market segments and on top of that seasonal features: a successful solution (think Angry Birds) need not only to be released for many types of devices, across several major platforms, but for each of these, we could offer several apps targeted at different market segments, each requiring continuous releases of new features during the course of a year. The bottom line is that, if you plan to be really successful at building a mobile solution you have to be ready to deliver a family of apps, not just “one app” like in the Web or Desktop era. The seasonal aspect and the relative high degree of competition between apps puts even more pressure on the development cycles, and requires that developers release new features often, especially when you factor in Ads and “in-app” payments business models.
Last but not least, by any measure, this new distribution model allows successful mobile applications to grow to reach tens of millions of users, in a short time frame, creating a scalability nightmare and the need to constantly re-architect the back-end ahead of the growth of the user base.
With such short development cycles, this rapidly changing, fragmented and technologically complex new frontier is set for the perfect storm: are Mobile Developers getting ready to face these challenges? Even though the functional scope of mobile applications looks small, the need for back-end development and integration, support for multiple platforms, security standards and optimized UX could potentially drag projects to a black hole and miss both the time and cost windows of a large number of potentially great applications.
And our list is far from exhaustive! The bottom line, is that attempting to build mobile applications with software paradigms, tools and processes that were developed for Desktop, Client/Server or even Web-based Application architectures is pretty much a guaranty of not taking advantage from all that mobility has to offer because no-one and no technology is ready to develop multiple variants of the same applications.
In this article we propose to review the broad choices facing developers in terms of mobile app technologies, tools and development in the light of the form factor of Mobile Solutions and offer a path forward to develop the engineering approach to a practice, which for the most part remains today a complex craft and cannot scale as is to build successful mobile solutions.
The arguments developed in this article do not always apply to “mobile gaming”. Our focus is rather a large class of productivity applications, which could be referred to as “data, and process centric mobile applications.”

The Technologies of Mobile Applications

There are roughly 4 major categories of technologies:
  • Web–based (HTML5/CSS3/JS) and related Frameworks (JQuery, Sencha, …)
  • Native platforms (iOS, Android, Windows Mobile 7…)
  • Hybrid WebKit/Native
  • Proprietary middleware and clients (Red Foundry,…)
In addition, there are two approaches to facilitate the development of cross platform mobile applications:
  • Thin Native Clients which provide access to native APIs and / or render Web-based applications with a native look and feel (PhoneGap, AppMobi, AppCelerator…)
  • Domain Specific Language from which native or Web-based code is generated (Applause, Mobl, Canappi…)