Mobile app development is the act or process by which a mobile app is developed for one or more mobile devices, which can include personal digital assistants (PDA), enterprise digital assistants (EDA), or mobile phones. Such software applications are specifically designed to run on mobile devices, taking numerous hardware constraints into consideration. Common constraints include CPU architecture and speeds, available memory (RAM), limited data storage capacities, and considerable variation in displays (technology, size, dimensions, resolution) and input methods (buttons, keyboard, touch screens with/without styluses). These applications (or 'apps') can be pre-installed on phones during manufacturing or delivered as web applications, using server-side or client-side processing (e.g., JavaScript) to provide an "application-like" experience within a web browser.
Mobile app development has been steadily growing, in revenues and jobs created. A 2013 analyst report estimates there are 529,000 direct app economy jobs within the EU then 28 members (including the UK), 60 percent of which are mobile app developers.
In order to facilitate the development of applications for mobile devices, and consistency thereof, various approaches have been taken.
Most companies that ship a product (e.g. Apple, iPod/iPhone/iPad) provide an official software development kit (SDK). They may also opt to provide some form of Testing and/or Quality Assurance (QA). In exchange for being provided the SDK or other tools, it may be necessary for a prospective developer to sign a some form of non-disclosure agreement, or NDA, which restricts the sharing of privileged information.
As part of the development process, mobile user interface (UI) design is an essential step in the creation of mobile apps. Mobile UI designers consider constraints, contexts, screen space, input methods, and mobility as outlines for design. Constraints in mobile UI design in constraints include the limited attention span of the user and form factors, such as a mobile device's screen size for a user's hand(s).