Comment industrialiser des applications mobiles hybrides

5 mai 2016 / Développement / Stratégie / 16 commentaires

Dans le développement logiciel, industrialiser signifie faciliter le développement, améliorer la productivité en termes de code, améliorer la qualité du code, mais aussi avoir la capacité à se greffer sur des Systèmes d’Information existants. Quels sont les outils actuels qui aident en ce sens lors du développement d'une application mobile hybride ?

Il existe différentes technologies pour les applications hybrides ; cet article concerne les solutions basées sur un moteur en JavaScript (par exemple Cordova, PhoneGap, Sencha, Titanium).

1. Des Frameworks pour améliorer la qualité du code

Le JavaScript est un langage permissif : sans rigueur, le code peut rapidement devenir confus, ce qui engendre des coûts de maintenance élevés. Cela nécessite d’organiser et de penser la structure de son projet en amont avant de le développer. Des Frameworks JavaScript relativement récents comme AngularJS ou Backbone.js permettent d’avoir une approche plus structurante au niveau du code lors du développement d’une application hybride.

La mise en place de tests permet également d’améliorer la qualité du code. Des Frameworks performants existent, comme par exemple Karma et Protector pour du développement dirigé par les tests, QUnit pour les tests unitaires.

2. Des Frameworks pour améliorer la productivité

Au niveau Design, des outils tels que Bootstrap, Polymer / Angular-Material ou Ionic existent pour construire rapidement de belles interfaces, sobres, ergonomiques, capables de s’adapter aux différents écrans.

On a également ce que l’on appelle les gestionnaires de packages (par exemple Bower) : ils facilitent la gestion des librairies, et simplifient la configuration du projet d’un poste de développement à un autre.

Des Frameworks génèrent les couches d’accès aux bases de données internes aux applications (par exemple Nova SQLite pour Cordova) : pour le développeur, c’est un gain de temps, une réduction du nombre de bugs (donc moins de maintenance) et une meilleure séparation des couches de l’application (le code est plus propre).

3. Une technologie ouverte vers les autres SI

Les applications mobiles hybrides sont capables de se greffer sur des Systèmes d’Information (SI) externes complexes, comme SAP ou Salesforce. Des Frameworks existent pour faciliter ces connexions, comme par exemple CXF. Il génère la couche de l’application mobile qui communique avec le SI, ce qui réduit le temps de développement, la maintenance, et structure le projet.

4. Une technologie qui manque encore de maturité

Néanmoins, pour la plupart, ces Frameworks restent encore jeunes, ce qui a comme conséquences :

  • Des changements de versions récurrents, ce qui nécessite régulièrement une adaptation du code
  • Parfois des bugs liés aux Frameworks, ce qui implique d’attendre des correctifs
  • Des Frameworks parfois incomplets

D’autre part, la couche de code basée sur un moteur javascript n'est pas toujours directement interprétable par le Smartphone ou la tablette : elle doit être "traduite" en langage natif pour avoir accès par exemple à l'appareil photo, au bluetooth, etc. Cela engendre les conséquences suivantes :

  • Une application mobile hybride reste moins performante qu’une application native
  • Les plugins proposés doivent constamment s'adapter aux nouvelles versions des OS tels qu'Android, iOS ou Windows Phone, de sorte à rester compatible avec les derniers Smartphones / tablettes du marché, ce qui n'est pas toujours le cas; Or, ces plugins sont nécessaires pour accéder aux fonctionnalités Hardware (appareil photo, scan de QRCode, bluetooth, BLE, ...)
  • Des bugs subtils mais pouvant causer une gêne subsistent parfois sur ces plugins; une solution consiste à s’approprier le plugin et apporter des corrections, cependant cela coûte beaucoup en termes de temps - et donc en termes financiers
La maintenance d'une application hybride peut alors s'avérer fastidieuse.

5. Un potentiel pour l’avenir ?

D'un côté, la plupart de ces outils sont open source - ce qui exclu les frais de licence du budget de développement, et restent multi-plateformes. Les applications sont donc développées à moindres coûts, par rapport au développement simultané d'applications natives pour plusieurs OS. Pour l’avenir, de grands éditeurs tels que Microsoft ou Eclipse Foundation semblent parier sur ces technologies, et les intègrent de mieux en mieux à leurs environnements de développement (Cordova intégré dans Visual Studio, une version d’Eclipse mis à disposition exclusivement pour du développement hybride mobile - qui reste cependant relativement instable, notamment lorsqu'il s'agit d'installer des plugins pour Cordova).

D'un autre côté, si les coûts de développement sont moindres par rapport au développement de deux applications natives, par exemple sous Android et iOS, cela implique des coûts de maintenance plus importants, des compromis au niveau de l'ergonomie, et une stabilité amoindrie de l'application.

De ce fait, je recommanderai l'utilisation de la technologie hybride uniquement dans le cadre de crash tests d'applications, pour une application statique (peu ou pas d'interactions utilisateur) ou pour des événements (application simple - avec un accès minimisé aux fonctions hardware du Smartphone ou de la tablette). Pour le reste, il est préférable de partir sur une technologie native, qui permet de proposer des applications plus stables, performantes, ergonomiques, adaptées aux habitudes de leurs utilisateurs.


Qu'avez vous pensé de cet article ?

FacebookTwitterLinkedInPinterestViadeo

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

*

François Colin

Co-fondateur chez huco

Catégories Développement Stratégie.

Même catégorie

Application WeWay : 1 an après
L’innovation dans le coworking
Technologie native, technologie hybride
#GoogleIO2016 : les points clés