Tout savoir sur le développement d’applications pour mobile (2021)
Lorsqu’on a une idée de projet d’application mobile, on a souvent l’impression que la réalisation sera simple, mais au fur et à mesure que l’on avance dans le processus, on se rend bien compte que ce n’est pas si aisé que ça. En sachant à quoi s’attendre à l’avance et en connaissant les points délicats pour lesquels il faut être vigilant, vous mettrez toutes les chances de votre côté pour que votre projet soit couronné de succès.
Ce petit guide vous explique tout ce que vous devez savoir sur le développement mobile, toutes les étapes qui vont vous mener de l’idée initiale à une application téléchargeable sur l’App Store et/ou sur Google Play.
Au sommaire :
- Qu’est-ce qu’une application mobile ?
- Pourquoi créer une application mobile ?
- Les bonnes questions à se poser avant de se lancer
- Le processus de développement d’une application mobile
- Les piles technologiques populaires pour le développement d’applications mobiles
- Combien coûte le développement d’une application mobile ?
- Les erreurs les plus fréquentes dans le développement mobile
- Prêt à vous lancer ?
Qu’est-ce qu’une application mobile ?
Une application mobile est un logiciel spécifiquement développé pour fonctionner sur un périphérique mobile à interface tactile. Cette définition prise au sens large inclut les tablettes et les montres intelligentes. Mais si l’on n’apporte pas de précision supplémentaire, tout le monde comprend que vous parlez d’une application développée pour les téléphones intelligents.
Dans de nombreux cas, une application mobile développée pour les téléphones peut aussi fonctionner sur des tablettes, puisque ces dernières utilisent généralement des systèmes d’exploitation dérivés de ceux des téléphones. Dans l’univers Apple, il est même possible de faire tourner une application iOS sur un ordinateur Macintosh (s’il est équipé au moins de la version 11 de macOS). Mais cela reste “expérimental” et les interfaces prévues pour le téléphone sont souvent inadaptées à un fonctionnement dans un environnement non tactile.
Quelles applications pour le mobile ?
Il existe une myriade d’applications pour mobile, autant pour téléphones Android que pour les iPhone. Le système d’exploitation qui est livré avec le téléphone comporte déjà un assortiment d’applications de base, comme un navigateur web, un logiciel de courriel, un gestionnaire de calendrier, un gestionnaire de contacts, une application de prise de vues pour utiliser la ou les caméras, etc. Vous pouvez ensuite compléter cette collection d’applications selon vos besoins par d’autres, à télécharger sur l’App Store d’Apple ou le Google Play Store (anciennement l’Android Market). Certaines applications sont gratuites, d’autres doivent être achetées.
Les applications se classent en 3 principales catégories dépendant des choix technologiques faits pour les produire : les applications natives, les applications multiplateformes et les applications web.
Applications natives
Les applications développées spécifiquement pour une plateforme mobile particulière sont connues sous le nom d’applications natives. Elles utilisent toutes les technologies offertes par le système d’exploitation (Android ou iOS) et par la plateforme matérielle. Elles offrent donc en théorie les meilleures performances possibles et le plus de possibilités en matière de fonctionnalités. Les applications iOS natives sont généralement écrites en langage Swift ou en Objective-C et les applications Android natives sont écrites en Java ou en Kotlin. Le revers de la médaille de l’application purement native, c’est qu’une application native destinée à un appareil Apple ne pourra pas fonctionner sur un appareil Android, et vice-versa.
Applications multiplateformes
Si l’on veut proposer une même application sur iOS comme sur Android, il existe des alternatives au développement de deux applications techniquement entièrement distinctes. Les équipes de développement ont l’option plus économique d’utiliser une base de code commune pour produire les deux versions nécessaires, ce qu’il est possible de faire grâce à certains outils comme Xamarin et Flutter. À l’arrivée, il y aura toujours deux applications produites (chacune est compilée pour sa plateforme), mais cela aura pris moins de temps à les développer. Cependant, ces applications ont certaines limitations et sont souvent plus exigeantes en matière de stockage, de puissance de calcul et de mémoire vive que des applications purement natives.
Applications web
Une application web est mise en œuvre avec les technologies du web, c’est-à-dire APIs natives, c’est-à-dire aux fonctionnalités de l’appareil). Leur principal avantage souvent avancé est un plus faible coût de développement comparativement aux apps natives et multiplateformes, mais cela n’a rien de systématique.
Il existe différents formats d’applications web. Citons parmi les plus courantes les applications hybrides qui sont encapsulées dans une application native de visualisation web (UIWebView sur iOS et WebView sur Android) et les Progressive Web Apps qui sont un format d’application en ligne poussé par Google.
Pourquoi créer une application mobile ?
C’est bien évidemment une question à se poser au préalable : pourquoi dois-je créer une application mobile ? Ai-je même vraiment besoin d’une application mobile ? Mais si vous lisez ces lignes, c’est probablement que vous avez déjà une idée assez précise du pourquoi vous avez besoin d’une application pour téléphone intelligent.
Aujourd’hui, en Amérique du Nord, 97 % des adultes possèdent un téléphone mobile et 85 % ont un téléphone intelligent (selon une étude du Pew Research Center de 2021). Chez les plus jeunes, les chiffres tendent à être encore plus forts. Le taux de pénétration des téléphones intelligents atteindrait les 89 % chez les 13-19 ans aux États-Unis (selon une étude de Common Sense de 2018). Et dès l’âge de 11 ans, plus de la moitié des enfants ont un téléphone intelligent (53 % selon la même étude).
Ainsi, le téléphone intelligent est devenu un outil de communication omniprésent, qui touche pratiquement toutes les catégories sociodémographiques. Pour beaucoup de gens, c’est aussi le seul moyen d’accès à Internet. De cet état de fait, il est le meilleur support pour atteindre la plus large population possible et accéder à des millions de nouveaux clients potentiels. Mais pour ce faire, il faudra toutefois réussir à développer l’application efficace qui répondra à un ou des besoins existants.
Il existe trois principaux types d’applications mobiles :
L’application produit : l’application est en elle-même le produit et elle est généralement vendue à l’utilisateur. Il peut s’agir d’une application grand public ou professionnelle. Elle remplit un besoin de l’utilisateur et sa manière de répondre à ce besoin conditionne son succès. Elle peut éventuellement être gratuite et se financer, par exemple, par la publicité ou par un abonnement qui permet de bénéficier de fonctionnalités additionnelles.
L’application service : généralement gratuite, elle est offerte par une entreprise en complément de son offre de services. C’est aussi un puissant outil de marketing pour entretenir le lien avec le client et lui présenter de nouvelles offres. Comme exemple typique, on citera l’application bancaire qui est offerte par toutes les banques aujourd’hui. Ces applications rendent de multiples services aux clients comme la consultation de leurs relevés de compte, le virement de sommes d’argent et la gestion de différents produits financiers. Une application de gestion de comptes bancaires réussie est utile pour l’acquisition de clients (par le bouche-à-oreille par exemple) et surtout leur rétention (puisque l’application est devenue de nos jours la principale interface d’échange entre le client et sa banque).
L’application vente : elle sert essentiellement à vendre des produits physiques et peut être accompagnée de services pour mieux fidéliser la clientèle. Elle est non seulement une “boutique en ligne” qui facilite la prise de commandes, mais aussi un important vecteur pour le marketing et la publicité. L’entreprise l’offre pour augmenter ses ventes, maintenir le lien avec sa clientèle, accroître la fidélité à la marque et accéder à de nouveaux publics dans le cadre d’une stratégie multicanale.
Les bonnes questions à se poser avant de se lancer
Après l’idéation initiale, il y a beaucoup de questions à se poser : comment puis-je créer un avantage unique pour mes futurs utilisateurs ? Quels problèmes souhaitent-ils résoudre ? Comment mon application mobile va-t-elle changer leur vie et la rendre meilleure ? Qu’est-ce qui est attrayant pour eux ? Quelle(s) fonction(s) mon application proposera-t-elle ? Est-il vraiment pertinent de se lancer dans ce projet ? Qu’offre la concurrence ? Est-ce qu’une application similaire existe déjà ? Le cas échéant, comment démontrer que votre projet sera rentable auprès des investisseurs ? Quelle stratégie marketing envisager ? Etc.
Apporter des réponses à ces questions est essentiel pour garantir le succès du projet et vous éviter d’errer en cours de route. Si vous devez faire appel à un financement externe pour le développement, répondre à ces questions est même une obligation, car les investisseurs vous les poseront.
Vous devez examiner 3 questions de base sous toutes leurs coutures : Quoi ? Pour qui ? Comment ?
Quoi : Quelle est l’idée de base de l’application et à quel besoin répond-elle ? Quelle sera sa valeur ajoutée par rapport au marché actuel ? Pourquoi maintenant ? Quelles sont les fonctionnalités de base minimales à implanter à court terme ? Quelles sont celles qui sont souhaitables à moyen terme ?
Il est important d’avoir une idée claire de ce que vous désirez créer comme application, il n’est pas nécessaire de savoir exactement le détail de toutes les fonctionnalités, mais plutôt de bien cerner à quel(s) besoin(s) cette application répondra ? En quoi se différenciera-t-elle de ce qui existe déjà… sinon, pourquoi refaire ce qui existe déjà ? Pour aller chercher le maximum de clients, vous devrez vous démarquer de vos compétiteurs.
Pour qui : Qui est votre public cible ? Des particuliers ? Des entreprises ? Et dans ce cas, les employés ou les dirigeants ? En fonction du public cible de votre application, les stratégies de vente-marketing-communication seront très différentes. Le contenu de l’application doit aussi être adapté à votre public, d’où la nécessité de définir à l’avance, et le plus précisément possible, à qui s’adressera le “produit fini”.
Comment : Quel est votre budget ? Quel est le bénéfice attendu ? Qui sont vos investisseurs ? Quels périphériques doivent-ils être compatibles ? Qui fera le développement de cette application ? Comment rentabiliser/monétiser cette application ? Quel est votre plan de communication/marketing ?
Budget alloué : Comment savoir combien coûtera votre projet d’application mobile ? C’est une question qui mérite d’être bien étudiée… Tout d’abord, quels sont le bénéfice et les retombées que vous attendez de ce projet ? Est-ce un bénéfice financier ou un bénéfice qualitatif ou les deux ? Est-ce que l’application vous permet d’automatiser des processus ou encore de générer de nouveaux revenus ? Tous ces éléments vous permettront de mieux évaluer combien vous serez prêt à investir.
Partenaires : Assurez-vous de vous entourer de vrais professionnels pour le développement de votre application. Faire le mauvais choix peut mettre en danger l’ensemble de votre projet. Faites des recherches approfondies avant de commencer. Trouvez plus un “partenaire” qu’un “fournisseur de services”, un qui vous impliquera tout au long du développement, réduisant donc les risques inhérents à tout projet.
Format de l’application : Natif, hybride, application web ? Quelles plateformes sont-elles ciblées ? Etc. Il faut répondre le plus tôt possible à ces questions et choisir le format et les technologies en ayant en tête votre vision à long terme ; vos partenaires sauront vous guider à ce stade. Si vous n’avez pas le budget nécessaire pour tout faire en même temps, il est toujours possible de prioriser et faire le projet par étapes, une version/plateforme à la fois par exemple.
Plan de communication et/ou de commercialisation : Le plan de communication ne doit pas être négligé, surtout dans le cadre d’une demande de financement ; c’est une des parties les plus importantes de votre préparation. Il aura un rôle à jouer afin de séduire les investisseurs au moment de présenter votre projet. Plus votre plan est clair et bien structuré, plus il sera convaincant.
Quand : Quel est votre échéancier ? À quelle date désirez-vous avoir votre première version ? Il vaut toujours mieux être un peu en avance qu’un peu en retard. Cela vous évite d’être forcé de prendre des décisions trop rapides, souvent à votre désavantage.
Le processus de développement d’une application mobile
1. La planification
C’est arrivé à la phase de planification que l’on s’assure d’avoir apporté des réponses à toutes les questions traitées dans le chapitre qui précède. La planification est une phase fondamentale du développement d’une application, basée essentiellement sur des rencontres exploratoires et d’analyse avec l’équipe multidisciplinaire chargée du développement. Elle vise à atténuer les risques et à partir sur de bonnes bases. Il ne faut pas la bâcler ou l’esquiver, car c’est souvent là que se décide le futur succès ou l’échec. Elle sert à définir le concept, à préciser les contours du produit, à identifier le public cible et à jauger la pertinence de chaque fonction offerte.
2. Les requis
Cette étape reprend le travail effectué à l’étape de planification et ajoute un niveau de précision supplémentaire pour faire un inventaire le plus exhaustif possible des besoins et des objectifs de l’application mobile. La transcription de ceux-ci se détaille en fonctionnalités applicatives qui pourront être priorisées en équipe (par “sprints”) pour le design et le développement. À la fin de cette tache, vous avez normalement tous les éléments pour évaluer les coûts du projet.
3. Le design et le prototypage
Une fois les requis bien définis, une schématisation de l’architecture de l’application est faite lors de cette phase. Elle peut prendre différentes formes. Elle peut décrire l’architecture technologique (matérielle et logicielle), les interfaces exposées à différents services ou à des sources de données, par exemple.
Aussi, une analyse de l’expérience usager (User Experience) permet de bâtir des maquettes fonctionnelles (Wireframes) pour valider la fonctionnalité visuelle (User Interface), l’ergonomie et l’usage efficient de navigation au sein de l’application. L’objectif de la conception UX/UI d’une application mobile est de créer d’excellentes expériences utilisateur via des interfaces interactives, intuitives, fluides, efficientes et conviviales. Le succès d’une application mobile repose en grande partie sur la qualité de son design qui influe sur la façon dont les utilisateurs adoptent et utilisent toutes les fonctionnalités.
Diverses preuves de concepts peuvent donner lieu à des prototypes fonctionnels. Elles sont ainsi validées et testées du côté frontal (Front-End) avec des utilisateurs représentatifs du public cible avant de pouvoir se lancer dans la prochaine étape.
ACME Dev Corp offre un service de “processus Découverte” qui inclut ces trois premières phases. Son l’objectif est de planifier tout futur produit logiciel et d’offrir en fin de parcours des prototypes fonctionnels et une feuille de route claire et complète.
4. Le développement logiciel
Comme le nom l’indique, c’est l’étape où les développeurs écrivent le code de l’application (Front-End et Back-End) et connectent les interfaces pour atteindre les objectifs définis. Suivant la plateforme (iOS ou Android) et le genre d’application, les développeurs sont appelés à utiliser différents langages de programmation et outils logiciels. Tout ceci est développé en détail dans la section “Piles technologiques” que vous trouverez plus bas.
Dans le cadre de la méthodologie Agile-Scrum, c’est un processus itératif. Le client est en mesure de suivre, tester et approuver les fonctionnalités déjà codées et à venir. Ceci permet de livrer une solution opérationnelle en fonction des besoins priorisés par cycles de développement (les “sprints”).
5. Les tests et l’assurance qualité
Pendant la phase de développement, divers tests mettent à l’épreuve l’application afin de valider son comportement, sa sécurité, ses performances et son fonctionnement sur différents modèles de téléphones (réels ou virtuels). Il s’agit de contrôler une grande quantité d’aspects : les interfaces s’affichent-elles correctement sur différents formats d’écrans en dans différentes orientations, sont-elles suffisamment réactives ? L’application a-t-elle est un trop fort impact sur la charge de la batterie ? Gère-t-elle correctement la bande passante du réseau si elle est amenée à communiquer ? Est-ce que les détails des comptes-utilisateurs sont stockés de façon suffisamment sécurisée ? Etc.
Les équipes suivent des plans de tests et les résultats sont passés en revue. Durant ce travail d’assurance qualité (AQ), il y a une rétroaction continuelle entre les analystes qualité et les développeurs pour supprimer tout dysfonctionnement, erreur ou non-conformité aux attentes. Une fois que tous les problèmes relevés par les analystes qualité ont été résolus, l’application est prête à être déployée.
La réalisation de tests d’assurance qualité approfondis pendant le processus de développement est le seul moyen de s’assurer que l’application mobile sera stable, utilisable et sûre dès son premier jour.
6. Le déploiement
Le déploiement marque la fin des développements et des tests sur l’application mobile et le moment où vous pouvez mettre une bouteille de champagne au frais. Cette phase est constituée pour la plupart des applications mobiles de la mise à disposition de l’application sur une plateforme de diffusion, comme l’App Store d’Apple pour les applications iOS ou Google Play pour les applications Android.
La procédure pour iOS est la plus complexe. Il faut soumettre l’application, accompagnée de métadonnées (descriptif, catégorie, mots clés pertinents, icône de lancement, déclaration de confidentialité, etc.), à l’App Store et passer par un processus de validation qui peut prendre de quelques jours à quelques semaines. Le délai varie en fonction de la qualité de votre app, de sa complexité et de son degré de conformité aux directives de développement iOS d’Apple. Si votre application nécessite que les utilisateurs se connectent, vous devrez fournir à Apple un compte utilisateur de test.
Du côté d’Android, il n’y a pas de processus de validation de la part de Google. Tout va ainsi beaucoup plus vite : votre application est disponible au téléchargement sur le Play Store après quelques heures seulement.
(Notez qu’à partir de 2022, à l’image ce qui se pratique déjà chez Apple, les applications présentes sur Google Play devront afficher des détails sur les données qu’elles collectent, ainsi que d’autres informations sur leurs pratiques en matière de confidentialité et de sécurité.)
Les deux plateformes offrent des outils statistiques qui permettent de mesurer le succès de votre application. Les premiers téléchargements par des utilisateurs se produisent-ils ? Il est temps de déboucher le champagne.
7. La maintenance
C’est une phase où, typiquement, une autre équipe prend la relève. Cette nouvelle équipe est en quelque sorte un service à la clientèle post-déploiement. À la suite d’une période de stabilisation de la solution déployée, l’équipe de support et maintenance reste en alerte face aux demandes du client, aux rapports de plantages et aux problèmes signalés par les utilisateurs finaux. C’est elle aussi qui s’assurera que l’application restera compatible avec de nouvelles générations d’appareils mobiles et de nouvelles versions des systèmes d’exploitation.
Notez qu’une assistance rapide aux utilisateurs finaux et la mise en production fréquente de correctifs pour améliorer l’application sont essentielles pour maintenir l’engagement des utilisateurs. Encouragez aussi les utilisateurs à vous faire part de leurs commentaires et suggestions concernant votre application. Ils peuvent être une aide majeure dans l’amélioration de votre application.
Les piles technologiques populaires pour le développement d’applications mobiles
Une pile technologique (“Tech Stack”) est un choix d’outils de développement qui est fait parmi l’offre de langages de programmation et d’aides logicielles disponibles pour une plateforme (iOS, Android ou multiplateforme) afin de développer le plus efficacement possible une application. Le choix de la bonne pile est dicté par la plateforme et les spécificités du projet. Certaines fonctionnalités ou performances attendues peuvent imposer un certain langage par exemple. Mais il n’y a pas en soi de bonne ou de mauvaise pile. Il y a celle qui sera le plus adaptée aux exigences de votre projet. Nous listons ci-après composants les plus communs d’une pile techno, par plateforme.
Composants de la pile technologique pour les applications iOS
Langages de programmation
Il existe deux principaux langages de programmation qui sont couramment utilisés pour le développement d’applications iOS : Objective-C et Swift.
Depuis la naissance de macOS X, Objective-C a été le langage de programmation privilégié par Apple pour écrire des logiciels autant pour les Macintosh que pour les iPhone. Il s’agit d’un surensemble du langage de programmation C, qui offre des fonctionnalités orientées objet et un moteur d’exécution dynamique. L’Objective-C est encore assez populaire, notamment dans le cadre du développement de produits complexes où il fait toujours autorité.
En 2014, Apple a introduit un nouveau langage dédié à son écosystème. Baptisé Swift, il est plus moderne, plus lisible et plus simple qu’Objective-C et il a vite suscité l’adhésion des programmeurs d’applications. En adoptant une syntaxe et des modèles de programmation modernes, il limite les erreurs les plus fréquentes et simplifie la vie des développeurs. Aussi, il est interopérable avec Objective-C. Utilisant la librairie de moteur d’exécution (runtime library) d’Objective-C, il autorise à faire coexister du code C, Objective-C et Swift dans une seule et même application.
Outils de développement
Les environnements de développement (IDE) les plus populaires sont Xcode et Appcode. Les deux sont puissants et conviviaux.
Xcode est développé par Apple et donne accès à toutes les fonctionnalités essentielles requises pour créer une application mobile iOS native. Cet outil fournit aux développeurs tous les outils nécessaires à la conception de l’interface utilisateur, au codage et aux tests. Étroitement intégré aux frameworks Cocoa et Cocoa Touch, Xcode est un environnement incroyablement productif pour créer des applications pour Mac, iPhone et iPad. Il a en outre le bénéfice d’être gratuit.
Appcode est un environnement de développement intégré pour le développement en Swift, Objective-C, C, C++ et JavaScript, construit sur la plateforme IntelliJ IDEA de JetBrains. Il offre de nombreuses fonctionnalités qui permettent d’augmenter grandement la productivité des développeurs. Contrairement à Xcode, Appcode n’est pas gratuit et il faut payer une licence annuelle pour l’utiliser.
Outils de création d’interfaces
Pour réaliser des interfaces utilisateur, les développeurs utilisent couramment UIKit et SwiftUI.
UIKit est le framework de base d’Apple pour élaborer et gérer les composants graphiques dans les applications pour iOS (iPhone), tvOS (Apple TV) et watchOS (Apple Watch).
SwiftUI est un ensemble d’outils plus moderne et sophistiqué, qui propose une approche complément différente, mais il n’offre cependant pas encore toutes les fonctionnalités d’UIKit, le framework qui a accompagné presque toute l’histoire du iPhone. De ce fait, son adoption est encore limitée, mais SwiftUI est certainement promis à un bel avenir, gagnant chaque année en maturité.
Composants de la pile technologique pour applications Android
Langages de programmation
Les développeurs d’application pour les téléphones Android ont massivement recours à deux langages de programmation : Java et Kotlin. On notera qu’il est aussi tout à fait possible de développer en C# et C++.
Java est un langage orienté objet apparu à la fin du siècle dernier, en même temps que le web. Développé à l’origine par Sun Microsystems, il est aujourd’hui la propriété d’Oracle. Naturellement portable et multiplateforme, il a vite trouvé sa place sur Android (qui est basé sur un noyau Linux) et il a été longtemps le langage en faveur de la plateforme.
Kotlin est plus léger et moins verbeux que Java, et a été créé par la société JetBrains. Largement adopté par les développeurs, il est devenu le langage le plus populaire sur la plateforme. Un état de fait entériné en 2019 par Google qui recommande Kotlin comme le langage à préférer pour le développement d’applications Android. Notons que Kotlin ne se limite pas à cette plateforme, puisqu’il permet aussi de développer pour Linux, iOS, macOS, watchOS et tvOS. Avec le SDK Kotlin Multiplatform Mobile (KMM), vous pouvez utiliser une base de code unique pour la logique métier des applications iOS et Android. Vous ne devez écrire du code spécifique à la plateforme que lorsque cela est nécessaire, par exemple pour mettre en œuvre une interface utilisateur native ou lorsque vous travaillez avec des API spécifiques à la plateforme.
Outils de développement
Android Studio est l’environnement de développement intégré (IDE) officiel du système d’exploitation Android. Construit sur la plateforme IntelliJ IDEA de JetBrains, il fonctionne sur Windows, macOS, Chrome OS et Linux. Sa fonction principale et d’éditer le code Java, Kotlin ou C# ainsi que les fichiers de configuration XML d’une application Android. Il permet également de construire l’interface de l’application. Android Studio vient avec un kit de développement logiciel (SDK) qui contient toute une panoplie d’outils nécessaires aux développeurs, notamment un compilateur, un débogueur, un émulateur basé sur QEMU, des exemples de code, des bibliothèques, des utilitaires, etc. Le SDK prend également en charge les anciennes versions de la plateforme Android, de sorte que nos développeurs peuvent corriger et améliorer des applications anciennes ou dépassées.
Outils de création d’interfaces
Jetpack Compose est une nouvelle boîte à outils moderne qui simplifie et accélère le développement de l’interface utilisateur native. Basé sur le langage Kotlin, il offre un puissant modèle de programmation déclarative, de sorte que vous pouvez simplement décrire ce à quoi votre interface utilisateur doit ressembler, et Compose s’occupe du reste.
Outils pour les développements multiplateformes
Dans de nombreux cas, une application pour téléphones intelligents vient en deux saveurs : iOS et Android. Il s’agit de ne pas laisser sur le bord de la route des clients qui n’auraient pas la bonne plateforme et de couvrir tout le marché du téléphone intelligent. Mais cela signifie devoir développer et maintenir parallèlement deux applications natives, ce qui a bien évidemment un coût loin d’être négligeable. Même si les deux versions semblent visuellement tout à fait similaires et offrent des fonctionnalités identiques, ce sont en fait deux logiciels différents avec leur propre architecture et leur propre code peu ou pas portable.
De ce problème est née l’idée de concevoir des outils qui permettent d’avoir une base de code commune pour les deux applications, et donc une seule équipe de développement. Les deux outils historiquement les plus connus pour le développement mobile multiplateforme sont Xamarin et React Native, mais une nouvelle option très séduisante a été rendue disponible en 2019 par Google : le kit de développement logiciel (SDK) à code source ouvert Flutter.
Xamarin est une solution de développement multiplateforme proposée par Microsoft. Elle permet de réutiliser pour l’essentiel le même code C# sur plusieurs plateformes : Android et iOS, mais aussi tvOS, watchOS, macOS et Windows. Cependant, vous devrez toujours écrire une couche de code spécifique à chaque plateforme en utilisant les API natives. Xamarin s’intègre parfaitement dans Visual Studio, ce qui fait que tout développeur C# reste en territoire connu. Il produit des applications compilées aux performances proches des applications purement natives.
React Native est un framework à code source ouvert utilisant JavaScript ou TypeScript pour la création d’applications mobiles. Créé par Facebook, il permet des développements accélérés et bénéficie d’une large communauté de programmeurs. React Native utilise les composants d’interface du système, ce qui donne aux applications une apparence tout à fait native. Ce framework n’est toutefois pas recommandé pour les applications qui font un usage soutenu des capacités de calcul ou qui ont certaines exigences en matière de latence.
Flutter repose sur le langage de programmation Dart lancé par Google en 2011 et conçu dès le départ pour le développement mobile. La particularité de ce SDK est d’inclure dans l’application mobile un moteur de rendu graphique ; l’affichage de l’interface ne dépend donc pas des composants du système. L’un des avantages d’une application Flutter est d’offrir une vraie compilation 32/64 bits pour les processeurs ARM, et donc d’excellentes performances.
Outils pour développer des applications web hybrides
Multiplateformes par nature, généralement rapides à développer (des outils permettent de bâtir des prototypes en un temps record), les applications hybrides peuvent beaucoup, mais elles ne peuvent pas tout, notamment en matière de performance. Elles sont cependant un choix tout à fait acceptable dans nombre de cas de figure. Pourquoi déployer toute une artillerie lourde quand une solution rapide et éprouvée se présente ? Ces applications reposent sur les technologies du web, à savoir HTML5, CSS3 et JavaScript, tout en ayant un accès plus ou moins limité aux APIs natives via des plug-ins (Cordova, Capacitor, Native Ionic). Elles sont en fait un genre d’application web en local qui est encapsulée dans une application native de visualisation web (UIWebView sur iOS et WebView sur Android).
Apache Cordova (anciennement Phone Gap) est un framework open-source qui permet d’exécuter des applications basées sur HTML/CSS pour l’aspect visuel et sur JavaScript pour la logique, et qui peuvent avoir accès à certaines fonctions matérielles matérielles telles que l’accéléromètre, la localisation (GPS), l’appareil photo, etc.
Ionic est basé sur Apache Cordova et le framework AngularJS. Également open-source, il offre plusieurs fonctionnalités additionnelles pour le développeur d’applications hybrides et offre des composants d’interface (Mobile UI Toolkit) qui permettent à l’application de sembler native.
Outils pour développer les Progressive Web Apps
Il n’y a pas d’outils spécifiques pour développer les Progressive Web Apps. Les développeurs ont un large choix d’éditeurs pour écrire les fichiers HTML, CSS, JavaScript et JSON nécessaires. Une PWA s’appuie sur des APIs web (interfaces de programmation d’applications web) pour accéder aux fonctionnalités matérielles. De ce fait, l’accès au matériel dans les PWA est très limité et différent suivant les environnements, car tous les navigateurs ne sont pas identiques.
Combien coûte le développement d’une application mobile ?
Le coût de développement d’une application mobile est bien sûr extrêmement variable. Chaque application est unique et répond à des besoins spécifiques qui varient en nombre et qui peuvent être plus ou moins complexes.
Portée et complexité du projet
La vraie réponse à la question du coût de développement est aussi réaliste que peut-être décevante. Elle est : “Ça dépend”. De nombreux facteurs entrent en ligne de compte, mais les principaux sont la portée et la complexité du projet qui vont se traduire en temps de développement, et donc, en argent. Si une application simplissime peut revenir à 20 000 $, une autre offrant de nombreuses fonctions et ayant à traiter des données sensibles peut en coûter 500 000, et même bien plus, et demander plus de 10 mois avant d’être livrée.
Plus l’application comporte de fonctionnalités, plus elle prend de temps à développer et plus elle sera donc coûteuse. Il est toutefois possible de dire que la plupart des projets d’application mobile sont dans la fourchette 120 000-200 000 $ pour leur première version et qu’il faut en général de 4 à 6 mois pour le développement.
Si vous n’avez pas le budget nécessaire pour le développement de votre application, la réduction de la portée et la complexité est votre principal levier d’action. Commencez par définir ce que serait votre produit minimum viable (PMV), c’est-à-dire l’application qui répondra aux besoins essentiels de ses utilisateurs, sans aucune fonction superflue ou dont l’utilité n’est pas parfaitement validée.
Les avantages du PMV sont multiples :
- En mettant rapidement et à moindre coût l’application sur le marché, le PMV peut permettre de commencer à générer des revenus qui serviront à financer les futurs développements.
- Une application fonctionnelle qui a déjà des utilisateurs aide à aller chercher l’appui d’investisseurs.
- Vous pourrez améliorer itérativement l’application en répondant à de réelles attentes exprimées par vos premiers utilisateurs et éviterez de dépenser de l’argent sur des fonctions qui ne seront dans les faits pas utilisées.
Le choix de qui va développer l’application
C’est également un facteur important dans le coût global d’un projet. La palette des options est très large, et chaque option vient avec ses propres avantages et inconvénients que nous ne détaillerons pas ici. Vous pouvez choisir une agence de développement d’applications généraliste comme ACME Dev Corp, une société spécialisée dans le mobile, des travailleurs indépendants. Vous pouvez même faire le choix d’embaucher des développeurs pour assurer le travail en interne, ce qui peut être une bonne alternative dans certains cas de figure. Pour rajouter un degré de complexité à l’équation, il faut prendre en considération la qualité du ou des développeurs amenés à travailler sur votre projet, c’est-à-dire leurs compétences et expériences. Entre un développeur sénior à 130-150 $ de l’heure qui réussi à faire en une heure ce qu’un autre à 40 $ mettra cinq heures à faire, quel le choix le plus économique ? Lequel vous épargnera du temps et des maux de tête ? Ensuite, le marché est mondialisé. Vous pouvez faire développer près de chez vous, en Australie, en Ukraine, en Indonésie, en Inde, ou à peu près partout dans le monde à l’exception de l’Antarctique.
Chacune de ces multiples options vient avec son propre coût, principalement la rémunération horaire des développeurs. Un développeur indien est payé au moins cinq fois moins qu’un nord-américain, ce qui a forcément un impact sur la facture finale. En bout de ligne, la question qui doit orienter le choix est : en aurais-je pour mon argent ? Et comme pour tout autre produit ou service, la bonne réponse n’est souvent pas de sélectionner l’option la moins onéreuse, le prestataire le moins-disant.
Il faut aussi garder à l’esprit qu’une application est en quelque sorte un “objet vivant” et qu’elle continue à coûter de l’argent tout au long de son cycle de vie. Son coût se limite rarement au montant de la facture finale au jour de sa sortie. Il y a ensuite les opérations de maintenance, les mises à jour, les améliorations de fonctionnalités, d’éventuels frais pour l’hébergement de données, des licences logicielles et d’autres services externes, etc.
Les erreurs les plus fréquentes dans le développement mobile
Absence de planification et de stratégie
Parmi les principales raisons de l’échec précoce d’une application mobile sur le marché, il y a la mauvaise planification et le manque de stratégie. Pour construire une appli réussie, il est impératif d’avoir un concept bien élaboré et une solide stratégie de développement dès le départ. Reportez-vous au chapitre précédent “Les bonnes questions à se poser avant de se lancer”.
Si vous ne voulez pas errer lors du processus de développement, ce qui coûte du temps, donc de l’argent, voire vous perdre en chemin, il est important d’avoir apporté des réponses précises et détaillées aux questions : quoi, pour qui et comment. Ce sont ces réponses qui vous donneront une feuille de route méthodique et de solides bases garantes d’un futur succès et de la minimisation des risques.
Absence d’étude de clientèle
Vous n’avez pas fait d’étude du marché de votre application ? Vous vous basez uniquement sur une intuition ? Vous n’avez pas les étudié les besoins, les motivations, ainsi que les comportements actuels et futurs de vos clients ? Il en résultera très souvent une application qui ne répond pas vraiment aux attentes des utilisateurs, qui ne propose pas de solution à leur problème. Si elle n’offre aucun bénéfice clair, vous aurez beau avoir le meilleur design, la meilleure interface et un développement impeccable, votre application sera jugée sans utilité et rencontrera l’échec.
Les études de clientèle permettent de concevoir et de développer chaque aspect de l’application en fonction des réels besoins et motivations de vos clients, ce qui favorise l’engagement et la fidélisation à chaque étape de son parcours. En mesurant les attentes, en en découvrant de nouvelles et en sachant la force de chacune, vous pouvez facilement prioriser les initiatives de développement et vous concentrer sur les fonctions essentielles, celles qui conditionneront le succès.
Mauvaise interface = utilisateurs insatisfaits
Les utilisateurs attendent d’une application mobile des interactions simples, fluides et efficaces. Ils ne veulent pas avoir à chercher comment atteindre leur objectif et apprécient des mécanismes intuitifs. Parfois, on veut être original et on développe des interfaces au comportement différent de ce que l’utilisateur attend, de ce qu’il a l’habitude de rencontrer dans les autres applications. C’est généralement une erreur qui peut engendrer de la frustration et de l’irritation.
Et vous ne voulez définitivement pas exaspérer vos clients au risque de les perdre. Alors, faites en sorte de lui proposer une expérience positive basée sur une hiérarchie compréhensible de l’information et des éléments de design prévisibles, ce qui leur permet de naviguer avec aisance dans votre application. C’est là qu’interviennent les tests d’utilisation qui permettent de relever d’éventuels points de friction et de s’assurer que l’interface suscitera l’adhésion de son public cible.
Mauvais choix technologique
Le mauvais choix technologique est un grave écueil aux conséquences coûteuses. C’est aussi une erreur pernicieuse, parce que ses effets peuvent se révéler bien après la mise en production initiale de l’application, par exemple au moment de faire évoluer l’application, de la porter sur un autre système initialement non-prévu ou au moment de gérer une montée en charge. Et il y a malheureusement des cas où il faut tout reprendre à zéro, ou presque. Les choix technologiques se font en début de parcours, avant d’avoir écrit la moindre ligne de code. Il faut donc y accorder toute son attention avant qu’il ne soit trop tard pour faire marche arrière. Il est capital de prendre le temps de se poser les bonnes questions, notamment sur l’avenir, sur les perspectives de potentielles évolutions futures.
Pauvre exécution
Le public de votre application mobile ne vous laissera pas une seconde chance de faire bonne impression. Interface confuse, comportements irritants, bogues de fonctionnement, plantages, etc. autant de raisons qui vont faire que votre application ne sera pas utilisée et probablement supprimée du téléphone. Le meilleur moyen de ne pas faire souffrir vos clients/utilisateurs est de leur fournir une application qui a été mûrement réfléchie, dont le design a été réalisé par des professionnels des interfaces, dont le développement a été fait dans les règles de l’art par des programmeurs aguerris et dont la qualité vérifiée par tout un arsenal de tests. Rogner sur certains postes, par exemple le design ou l’assurance qualité, n’est jamais une bonne solution. Il y a des moments où il vaut mieux ne rien faire du tout que de sortir une application bancale qui souffre d’une pauvre exécution, ce qui revient en fin de compte à jeter de l’argent par les fenêtres.
Prêt à vous lancer ?
Vous avez un projet d’application mobile ? ACME Dev Corp peut vous aider à la transformer en un produit qui rencontrera son public. Nous avons une riche expérience en développement mobile, des équipes multidisciplinaires et nous maîtrisons toutes les étapes, de l’affinage de l’idée initiale jusqu’au support de l’application terminée. Vous vous posez des questions ? N’hésitez pas à contacter nos équipes de développement.
Everything you need to know about mobile application development
More often than not, when we start out with an idea for a mobile application project, we get to work believing that executing it will be relatively straightforward. However, as we progress in the project, we gradually realize there may have been more to it than we anticipated. Yet forewarned is forearmed: by knowing ahead of time what to expect, and being aware of the pitfalls to watch out for, you maximize your chances of meeting success.
This handy guide was developed to set out everything you need to know about mobile application development, including all the steps that will take you from your initial idea to a full-fledged application that you can upload onto the App Store or Google Play.
Overview:
- What exactly is a mobile application?
- Why do we develop mobile applications?
- Questions to ask before taking the plunge
- The process of developing a mobile application
- Popular technology stacks for mobile development applications
- How much does it cost to develop a mobile application?
- Common mistakes in mobile development
- Ready to take the leap?
What exactly is a mobile application?
A mobile application is any software specifically developed to work on any mobile peripheral with a touchscreen interface. Writ large, this definition includes tablets and smart watches. But unless you specify this, “mobile application” will be understood to mean an application developed specifically for smart phones.
Oftentimes, a mobile application developed for telephones can also work on tablets, since tablets usually run on operating systems derived from those developed for telephones. In the Apple ecosystem, you can even run an iOS application on a Mac, if it has at least version 11 of macOS. But this is still experimental and telephone-specific interfaces are poorly suited to a non-touch environment.
Which applications come for mobile phones?
There is a myriad of mobile applications, both for Android telephones and for iPhones. The operating system that comes built-in with a new telephone already has an assortment of basic applications, like a Web browser, email software, an agenda, a contacts manager, a viewfinding application for the camera(s), etc. You can then add to this built-in collection of applications by downloading complementary applications from Apple’s App Store or from the Google Play Store (formerly called Android Market). Some applications are free, while others are paying.
All applications come in three basic categories, depending on the technological choices made to develop them: native applications, cross-platform applications and Web applications.
Native applications
Applications developed specifically for any given mobile platform are known as “native applications”. They are based on the technology provided by the operating system (Android or iOS) and on the hardware platform. In theory, they provide the best performance and the most features. Native iOS applications are generally written in the Swift or Objective-C language, while native Android applications are written in Java or in Kotlin. The downside of purely native applications is that those specifically developed for Apple devices won’t work on Android devices, and vice-versa.
Cross-platform applications
If you want to develop a single application for both iOS and Android, there are alternatives to developing two separate, technically distinct applications. Development teams have the more economic option of using a common codebase to produce the two different versions, thanks to tools like Xamarin and Flutter. At the end of the line, you end up with two separate applications, each one compiled specifically for its own platform, but overall you’ll have spent less time developing. However, these applications do have some limitations and are often more demanding in terms of storage, processing power and RAM than purely native applications.
Web applications
Web applications are implemented through Web technology, i.e. HTML, CSS and JavaScript. These applications can run locally or require Internet access to work. User data is often stored in the cloud. These applications are generally slower than native and cross-platform applications. Also, they often provide fewer features and have limited access to native APIs, i.e. device features. The main advantage ascribed to them is their lower development cost relative to native and cross-platform apps, but this is not always true.
There are different formats of Web applications. Among the most common are the hybrid applications encapsulated in a native, Web-viewing application (UIWebView on iOS and WebView on Android), and Progressive Web Apps, an on-line application format pushed by Google.
Why do we develop mobile applications?
Of course, the first question to ask is whether you should develop a mobile application in the first place. Do you even need a mobile application for your concept? If you’re reading this, you probably have a pretty good idea of why you need an application specifically for smart phones.
According to a 2021 poll by the Pew Research Center, 97% of adults in North America own a mobile phone and 85% have a smart phone. And these figures are even higher among the younger cohorts, where penetration rates for smart phones reach 89% for the 13-19-year-olds in the United States, according to a Common Sense poll from 2018. Further, as early as 11, over half of all children own a smart phone (53%, according to the same poll).
So, smart phones have become a pervasive communications tool, reaching deep into just about all sociodemographic categories. In fact, for many, smart phones are their only access to the Internet, making them the best medium to reach the widest audience possible and to access millions of potential new customers. However, to achieve this, you’ll have to develop an efficient application that will fulfill one or more existing needs.
There are three main types of mobile applications:
Product applications: This is when the application is the product itself, and it is generally what is sold to the user. It can be a consumer application or a professional application. It must fulfill an existing need, and the way it does this will determine its success. The application can even be free for the end-user by being self-financed, for example through advertising or a subscription model that provides access to additional features.
Service applications: Service applications are usually free and provided by companies as a complement to their offer of services. Service applications are a powerful marketing tool, as they allow companies to maintain a relationship with their clients and show them new offers. Typical examples of this marketing tool include the banking applications that all banks offer today. These applications provide many different services to customers, such as looking up their bank statements, transferring money and managing various financial products. Top-notch banking management applications can actually attract clients (for example, through personal recommendations) and definitely contribute to retaining them, since these applications nowadays constitute the main interface between clients and their bank.
Sales applications: Sales applications support the sale of physical products; however, they can come with services to foster customer loyalty. Sales applications are a de facto “on-line store” that facilitate ordering, but also serve as a powerful tool for marketing and advertising. Companies use sales applications to increase sales, stay in touch with their clients, support brand loyalty and reach new audiences in a multi-channel strategy.
Questions to ask before taking the plunge
After the initial idea, many questions need to be asked: how can I create a competitive advantage for my future users? What problems would they like to resolve? How can my mobile application change their lives for the better? What would they find attractive? What features will my application provide? Is this project truly useful and worthwhile? What does the competition offer? Does a similar application already exist? If so, how can I demonstrate that my project will provide a net gain for investors? What marketing strategy should I use?... and so on.
Answering all these questions ahead of time is crucial if you want to succeed and avoid making mistakes along the way. And if you’ll need external financing to develop your project, having answers to these questions is nothing less than a duty, since investors will ask them.
You should examine three basic questions from every angle: What is it? Who is it for? How to achieve it?
What is it: What is the basic idea behind the application, and what need does it fulfill? What added value does it provide over the current market offering? Why now? What basic minimum features should it include in the short term? In the medium term?
You must have a clear picture of what kind of application you hope to create. You don’t need to nail it down to every last detail, but have a basic idea of what need the application will fulfill. How is it different from existing applications? And if it isn’t, why reinvent the wheel? In order to attract the maximum number of clients, you’ll need to differentiate yourself from the competition.
Who is it for: Who is your target market? Individuals? Companies? If so, employees or management? Depending on your application’s target market, your sales, marketing and communications tactics will be very different. The contents of your application must be tailored to your public, hence the need to define ahead of time, as specifically as possible, who the “final product” will serve.
How to achieve it: What is your budget? What kind of revenue do you expect? Who are your investors? Which peripherals must be compatible with it? Who will be developing the application? How will the application pay its way and generate income? What is your communications and marketing plan?
Budget: How do you figure out how much your mobile application project will cost? That is a good question! First of all, ask yourself what benefits and impacts you expect from this project: is it a financial gain, a qualitative gain, or both? Does the application allow you to automate processes or generate an additional stream of income? All of these considerations will enable you to better assess how much you are willing to invest upfront.
Partners: Make sure you surround yourself with real professionals to develop your application. Making the wrong choice can jeopardize your entire project. Do your homework thoroughly before starting. Look for a real partner, as opposed to just a supplier of services; a true partner will involve you throughout the development process, reducing the risks inherent to any project.
Application format: Native, hybrid, or Web application? Which platforms should be targeted? You should answer these questions and other relevant considerations as early as possible and choose the format and technology accordingly, bearing in mind your long-term vision; your partners will be able to guide you at this stage. If you don’t have the budget to do it all at once, you can always prioritize your features and execute your project in stages, for example one version or platform at a time.
Communications and/or marketing plan: Do not neglect your communications plan, especially if you’ll need to seek financing; in fact, it’s one of the most important aspects of your preparation. Your communications or marketing plans will attract investors, or not, when it comes time to sell your project. The clearer your plan, the more structured it is, the more convincing it will be.
When: What’s your timeline? On what date would you like to see your first version? It’s always best to be a little early than a little late. This keeps you from making snap decisions, which often prove to be wrong decisions.
The process of developing a mobile application
1. Planning
At the planning phase, you should have answers to all the questions raised in the previous chapter. Planning is fundamental to application development, and is based on exploratory meetings and analysis with the multidisciplinary team in charge of development. At the planning phase, you put in place all your risk abatement measures to start off on the right foot. Do not rush it or worse, dodge it, as your planning is a good predictor of your project’s success or failure. At this stage, you define the concept, set the basic outline of the product, identify the target market and assess the relevance of each one of your projected features.
2. Requirements
This step takes up the work you did in the planning stage while adding a new layer of detail. You seek to comprehensively and accurately capture the needs and objectives of the mobile application. You’ll end up with a complete list of the application features that each team will prioritize (in “sprints”) for design and development purposes. The completion of this stage should yield all the information you need to assess the cost of your project.
3. Design and prototyping
Once you’ve defined your requirements, the architecture of the application is sketched out in this phase. It can take one of several forms. For example, it can describe the technological architecture (hardware and software), or the interfaces exposed to different services or data sources.
At this stage, an analysis of the User Experience (UX) helps build a functional mock-up (Wireframe) to validate the visuals (User Interface), the usability and the efficiency of browsing within the application. The goal of UX/UI for a mobile application is to provide excellent user experiences through interfaces that are interactive, intuitive, fluid, efficient and user-friendly. The success of a mobile application rides on the quality of its design, which will dictate whether users adopt and use all of its features.
Different proofs of concept can give rise to different functional prototypes. These proofs of concept are validated and tested on the Front-End with representative users of the target market, before launching into the next step.
ACME Dev Corp provides a service called “Discovery Process”, which includes and covers these first three phases. The goal is to plan out any future software product and to provide you with functional prototypes and a clear, comprehensive roadmap.
4. Software Development
As its name indicates, this is the stage when developers write the actual code for the application (Front-End and Back-End) and connect the interfaces to achieve the defined objectives. Depending on the platform (iOS or Android) and the type of application, developers will use various programming languages and software tools. All this is explained in detail in the “Technology Stacks” section below.
As we work with the Agile-Scrum methodology, this is an iterative process. This means that the client can monitor, test and approve the features as they get coded, and that an operational solution can be delivered progressively, according to the needs prioritized by development cycles (the “sprints”).
5. Tests and quality assurance
Throughout the development phase, various tests put the application through its paces with a view to validating its behaviour, security, performance and operation on various telephone models (real or virtual). Several aspects of the program get validated: do the interfaces display correctly on all screens, regardless of their format and orientation, and are they reactive enough? Does the application use up too much battery power? Does it properly manage network bandwidth when trying to connect? Are the details of user accounts stored safely? And so on.
The teams execute test plans and the results are parsed. During this quality assurance (QA) work, a continuous feedback loop between quality analysts and developers serves to eliminate any malfunction, error or unexpected result. When all the problems identified by the quality analysts are addressed, the application is ready for release.
In-depth quality assurance tests at the development stage are the only way to ensure that the mobile application will be stable, usable and secure from day one.
6. Release
Application release marks the end of development and testing of your mobile application, and is your cue to start cooling a good bottle of Champagne. For most mobile applications, this phase is topped off with the release of the application on a distribution platform such as Apple’s App Store for iOS applications, or Google Play for Android applications.
The iOS procedure is the most complex. First, you must submit the application, along with its attendant metadata (description, category, keywords, launch icon, privacy statement, etc.), to the App Store. Then, you undergo a validation process, which can take anywhere from days to weeks. The time it takes depends on the quality of your app, its level of complexity and degree of compliance with Apple’s iOS development guidelines. If your application requires users to connect, you’ll have to provide Apple with a test user account.
As regards Android applications, since Google does not have a validation process, things go much faster. Your application becomes available for download from the Play Store in just a few hours.
Note that starting in 2022, following in the steps of Apple, Google Play will require all applications to provide details on the data they collect, as well as other information on privacy and security practices.
Both platforms provide statistical tools to measure the success of your application. As soon as you notice the first user downloads, it’s time to pop the cork!
7. Maintenance
This is the phase where, typically, a new team takes over. This new team is a post-release, after-sales client service team. Following a stabilisation period for the solution after its release, the support and maintenance team monitors client requests, crash reports and any problems flagged by end-users. This team also ensures that the application remains compatible with new generations of mobile devices and new versions of operating systems.
Note that swift assistance for end-users and frequent updates to fix and improve the application are essential to retain user engagement. Also, do encourage your users to provide you with comments and suggestions on your application. They can be a great source of ideas for application enhancement.
Popular technology stacks for mobile development applications
A technology stack is an array of development tools that use programming languages and software aids available for any given platform (iOS, Android or cross-platform) to support efficient application development. The right choice of stacks depends on the platform and the characteristics of the project; indeed, certain features or expected outcomes may impose a certain language. Though there is no good or bad stack per se, one will be best suited to the requirements of your project. The following is a list of the most common components of a tech stack, by platform:
Components of a tech stack for iOS applications
Programming languages
Two main programming languages are commonly used for iOS application development: Objective-C and Swift.
Since the inception of Mac OS X, Objective-C has been Apple’s preferred programming language for writing software for both the Macintosh and the iPhone. It is a superset of the C programming language, which offers object-oriented capabilities and a dynamic runtime. Objective-C is quite popular, especially in the area of complex product development where it still predominates.
In 2014, Apple introduced Swift, a language dedicated to its ecosystem. As it is more modern, readable and straightforward than Objective-C, it quickly gained app programmers’ support. With an updated syntax and programming models, it prevents the most common errors and makes developers’ work easier. Yet it is also interoperable with Objective-C. By using the Objective-C runtime library, it allows C, Objective-C and Swift code to coexist in a single application.
Development tools
The most popular integrated development environments (IDE) are Xcode and Appcode. Both are powerful and user-friendly.
Xcode, developed by Apple, provides access to all the features that are essential to create a native iOS mobile application and for UI design, coding and testing. Tightly integrated with the Cocoa and Cocoa Touch frameworks, Xcode is an incredibly efficient environment for building apps for the Mac, iPhone and iPad, and it is free.
Appcode is an integrated development environment for Swift, Objective-C, C, C++ and JavaScript built on the IntelliJ IDEA platform from JetBrains. It offers many features that greatly increase developer productivity. Unlike Xcode, Appcode requires users to buy an annual license.
Interface creation tools
To build user interfaces, developers commonly use UIKit and SwiftUI.
UIKit is Apple’s core framework for building and managing graphical components in applications for iOS (iPhone), tvOS (Apple TV) and watchOS (Apple Watch).
SwiftUI is a more modern and sophisticated set of tools whose different approach does not yet offer all the features of UIKit, the framework that has gone hand in hand with the iPhone since nearly the beginning. Its adoption is still limited, but SwiftUI certainly has a bright future as it matures every year.
omponents of a tech stack for Android applications
Programming languages
Application developers for Android phones rely heavily on two programming languages: Java and Kotlin. Note that development in C# and C++ is also possible.
Java is an object-oriented language introduced at the end of the last century along with the Web. Originally developed by Sun Microsystems, it is now owned by Oracle. Inherently portable and cross-platform, it quickly found its place on Android (which is based on a Linux kernel) and has long been the favored language for this platform.
Kotlin is lighter and less verbose than Java, and was created by the company JetBrains. Widely adopted by developers then endorsed in 2019 by Google, it has become the most popular language on the platform. Kotlin is not limited to this platform however, as it also supports development for Linux, iOS, macOS, watchOS and tvOS. With the Kotlin Multiplatform Mobile SDK (KMM), you can use a single code base for the business logic of iOS and Android applications. You only need to write platform-specific code when necessary, such as to implement a native UI or when working with platform-specific APIs.
Development tools
Android Studio is the official IDE for the Android operating system. Built on the IntelliJ IDEA platform from JetBrains, it runs on Windows, macOS, Chrome OS and Linux. While its main function is to edit Java, Kotlin or C# code as well as XML configuration files for an Android application, you can also build the application’s interface with it. Android Studio comes with a Software Development Kit (SDK) that contains a variety of tools needed by developers, including a compiler, debugger, QEMU-based emulator, code samples, libraries, utilities and more. As the SDK also supports previous versions of the Android platform, our developers use it to fix and improve older or outdated applications.
Interface creation tools
Jetpack Compose is a new, modern toolkit that simplifies and speeds up native UI development. Based on the Kotlin language, it offers a powerful declarative programming model: just describe the UI, and Compose does the rest.
Tools for cross-platform development
In most cases, smartphone apps come in two flavors: iOS and Android. This choice covers the entire smartphone market and avoids stranding customers no matter their platform. On the other hand, this means developing and maintaining, at significant cost, two native applications in parallel. Though the two versions seem similar and offer identical functionalities, they each have in fact their own architecture and code that are not very portable.
This problem gave rise to the idea of designing tools with a code base common to both apps, necessitating just one development team. The two best-known tools for cross-platform mobile development are Xamarin and React Native, in addition to the very attractive new option that Google introduced in 2019: the open-source Flutter SDK.
Xamarin is a cross-platform development solution offered by Microsoft that allows you to reuse most of the same C# code on several platforms such as Android and iOS, but also tvOS, watchOS, macOS and Windows. However, you still have to write a layer of code specific to each platform using the native APIs. Because Xamarin integrates seamlessly with Visual Studio, C# developers stay in familiar territory. It produces compiled applications whose performance is close to that of native applications.
React Native is an open source framework by Facebook using JavaScript or TypeScript to create mobile applications. It allows accelerated development and provides the benefits of a large community of programmers. React Native uses a system’s interface components, giving applications a completely native appearance. However, this framework is not recommended for applications that use computing power intensively or have certain latency requirements.
Flutter is based on the Dart programming language launched by Google in 2011 and was designed from the start for mobile development. What sets this SDK apart is that it includes a graphical rendering engine in the mobile application; the display of the interface does not depend on the system components. One of the Flutter application’s advantages is that it offers a true 32/64-bit compilation for ARM processors, and therefore excellent performance.
Tools for developing hybrid Web applications
Because they are cross-platform in nature and generally quick to develop (tools allow prototypes to be built in record time), hybrid applications can do a lot -- but they can’t do everything, especially when it comes to performance. In most cases though, they are a perfectly acceptable choice, so no need to deploy the heavy artillery when a quick and tested solution exists. These applications are based on Web technologies, namely HTML5, CSS3 and JavaScript, with more or less limited access to native APIs via plug-ins (Cordova, Capacitor, Native Ionic). They are a kind of local Web application that is encapsulated in a native Web viewing application (UIWebView on iOS and WebView on Android).
Apache Cordova (formerly Phone Gap) is an open-source framework that runs applications based on HTML/CSS for the visual aspect and on JavaScript for the logic, and can access some hardware functions such as location (GPS), the accelerometer, the camera, etc.
Ionic, based on Apache Cordova and the AngularJS framework, is also open-source. It offers additional features for hybrid application developers, as well as UI components (Mobile UI Toolkit), which make the application look native.
Tools for developing Progressive Web Apps
There are no tools specific to the development of Progressive Web Apps. Programmers have a wide choice of editors to write the necessary HTML, CSS, JavaScript and JSON files. A PWA relies on Web APIs (web application programming interfaces) for access to hardware features, which is very limited as a result and varies between environments, as not all browsers are equal.
How much does it cost to develop a mobile application?
The cost of developing a mobile application can vary hugely. No two applications are the same, and much depends on how many specific needs they have to meet, and how simple or complex those needs are.
Scope and complexity of the project
The real answer to the question of the cost of development is as prosaic as it is disappointing: it depends. While many variables come into play, the main ones are the scope and the complexity of the project, which impact development time, which, in turn, translates into dollars and cents. While the simplest applications can be developed for just 20,000$, more complex applications that fulfill many different functions and handle sensitive information can cost 500,000$ or more and require a year’s development time.
The more features the application has, the longer it takes to develop and the more expensive it will be. This said, in our experience, most mobile application projects tend to amount to 120,000$-200,000$ for an initial version, with 4 to 6 months’ development time.
If you don’t have that kind of budget, your best bet is to restrict your application’s scope and complexity. Start by defining your minimum viable product (MVP), i.e. the application that will meet your users’ basic needs, with features that are only strictly necessary or whose usefulness is established beyond a doubt.
There are many advantages to going for an MVP:
- By sending your MVP to market quickly and inexpensively, you start generating revenue that will finance future development.
- A functional application that is actually in use attracts investors more readily.
- VAn MVP allows you to capitalize on your early users’ comments, suggestions and expressed needs to improve your application iteratively, instead of wasting money on features that will never actually be used.
Choosing your developers
our choice of developers is another important factor in the overall cost of a project. Your options are as numerous as they are varied, and each comes with its own advantages and drawbacks, which is the topic for a different day. You could choose a general application development company, a company that specializes in mobile development, or even a free-lance developer. In certain specific circumstances, you could hire staff developers to perform the work in-house, which can be an interesting option. And, to make things even more complex, you must weigh the caliber of the developer(s) working on your project, i.e. their skills and experience. A senior developer may cost 130-150$ per hour, but may accomplish in one hour what might take five hours for a more junior developer at 40$ per hour. Which developer will save you time and headaches in the long run? Also, the market is globalized. You can hire local developers, or offshore your development to Australia, Ukraine, Indonesia, India, or anywhere else in the world, except for the Antarctic.
Each of these options carries its own price tag, the bulk of which consists in the developers’ hourly rate. Developers in India are paid a fraction of what North American developers make, which of course works out cheaper. At the end of the day, the question you should ask yourself is the following: Am I going to get my money’s worth? And as is the case for any other product or service, the right answer often is not the cheapest, or the lowest bidder.
Keep in mind that any application is a “living thing”, and that it’ll continue costing money throughout its lifecycle. The expense does not end on launch day: have you thought of the cost of maintenance, updates, upgrades, data storage, software licensing, or other external services, to name a few?
Common mistakes in mobile development
Lack of planning and strategy
Two of the main reasons for the prompt failure of a mobile application on the market is poor planning and a lack of strategy. To build an awesome app, you must have a well-developed concept and a robust development strategy right from the get-go. Have a look at the previous chapter, “Questions to ask before taking the plunge”.
Straying down a rabbit-hole during the development process will cost you valuable time as well as money. To avoid going hopelessly astray, you must have precise and detailed answers to the following questions: What, Who and How. The answers to these questions will provide you with a detailed roadmap and a solid foundation to ensure success and minimize risks.
Lack of client analysis
Do some market research related to your application. Don’t go it on a hunch. Analyze the needs, motivation, and current and future behaviours of your clients. Otherwise, you’ll waste a lot of time on an application that doesn’t meet user needs nor address an actual issue. Unless your application provides a crystal-clear benefit, it won’t matter that the most awesome design, the best interface and flawless development went into it. Your application will be considered irrelevant and meet with failure.
Customer research is what allows you to design and develop every aspect of the application based on real client needs and motivations, which in turn supports client engagement and loyalty every step of the way. Measuring expectations, uncovering new ones and knowing the strength of each makes it a cinch to prioritize development initiatives and concentrate on essential features -- the ones that guarantee success.
Inferior interface = disappointed users
Users expect mobile applications to provide simple, fluid and efficient interactions. They don’t want to have to figure it out. Sometimes, in a bid to be original and different, we’d be tempted to develop interfaces whose behaviour is different from what users expect, or from what they have been accustomed to from other applications. This would be a mistake; it just leads to frustration and irritation on the users’ part.
You definitely can’t afford to alienate your clients or risk losing them. Make sure to give them a positive experience based on an easy-to-understand hierarchy of information and predictable design elements, so they can easily browse through your application. That’s when the usability tests come into their own; they reveal potential friction points and ensure that the interface engages its target market.
Poor technological choices
Poor technological choices are a serious pitfall with costly consequences. They are also an insidious problem, since their ramifications can remain hidden long after the initial production launch of the application. For example, they can come to light only when you try to upgrade your application, port it to an initially unplanned system, or scale it up. In the worst case, you’ll have to start over from scratch. Since technological choices are made when you’re still on the starting-blocks, before a single line of code is written, you should think about them long and hard; otherwise, it may be too late to backtrack subsequently. Take the time to ask all the right questions about future and potential developments.
Poor execution
Your mobile application target market will not give you a second chance to make a first impression. Confusing interfaces, unruly application behaviour, bugs, crashes, and the likes, are so many reasons why your application could be dropped and deleted from users’ phones. The best way to thrill your clients and users is to provide them with a well-thought-out application developed by interface professionals who design according to the rules of the art, and by seasoned programmers whose output quality has been verified by a battery of tests. Skimping on other aspects of your application such as planning or quality assurance is never the solution. Sometimes, you’re better off waiting until the moment is right than releasing a flawed, poorly-executed application; it’ll save you a lot of money!
Ready to take the leap?
Do you have a mobile application project in mind? ACME Dev Corp can help you turn it into a product that will find its audience. We have wide-ranging experience in mobile development, multidisciplinary teams, and a mastery of every step, from fleshing out your initial idea to supporting the finished application. Still have questions? Don’t hesitate to contact our development team.