Une application conçue selon une approche hors ligne prioritaire reste utile lorsque le réseau est lent, indisponible ou peu fiable, puis synchronise les données lorsque la connexion est rétablie. Elle convient lorsque les utilisateurs travaillent dans des zones mal couvertes, ont besoin de poursuivre leurs tâches sur le terrain sans interruption ou ne peuvent pas se permettre de perdre un travail non enregistré. Les principales décisions d’achat portent sur les actions qui doivent fonctionner hors ligne, la synchronisation des enregistrements, la résolution des conflits et la façon dont l’équipe testera les véritables défaillances du réseau.
Quand une application a besoin de fonctionnalités hors ligne
La prise en charge du mode hors ligne n’apporte pas automatiquement de la valeur à tous les produits. Elle implique un stockage local, une logique de synchronisation, une gestion des conflits, des contrôles de sécurité et des tests supplémentaires. Commencez par cartographier l’environnement de travail des utilisateurs et le coût métier des interruptions.
Les fonctionnalités hors ligne sont généralement justifiées lorsque les utilisateurs :
- Travaillent dans des entrepôts, des chantiers, des exploitations agricoles, sur des itinéraires de transport, dans des hôpitaux ou dans des lieux isolés.
- Se déplacent dans des zones où la couverture mobile est irrégulière.
- Doivent consulter des enregistrements, remplir des formulaires ou scanner des articles plus rapidement qu’une requête réseau ne le permet.
- Effectuent des opérations pour lesquelles un travail non enregistré pourrait entraîner des problèmes financiers, juridiques ou de sécurité.
- Utilisent un appareil dont la connexion est coûteuse, limitée ou partagée.
- Ont besoin que l’application s’ouvre et affiche immédiatement les informations essentielles, même avant l’établissement de la connexion.
Une exigence utile ne se limite pas à « l’application doit fonctionner hors ligne ». Définissez précisément les actions hors ligne. Par exemple, un technicien de terrain peut devoir ouvrir les interventions qui lui sont attribuées, consulter l’historique des équipements, enregistrer des relevés, joindre des photos, recueillir des signatures et remplir une liste de contrôle. Il n’a peut-être pas besoin de créer de nouveaux comptes clients, de modifier les règles de tarification ni d’accéder à tous les enregistrements historiques.
Répartissez les exigences en trois catégories :
- Doit fonctionner hors ligne : Actions nécessaires pour accomplir la tâche principale de l’utilisateur, comme consulter les tâches attribuées, modifier un formulaire, scanner un code-barres ou enregistrer des notes.
- Devrait fonctionner hors ligne : Fonctions utiles susceptibles d’améliorer la productivité, comme rechercher des enregistrements récemment téléchargés ou consulter des instructions mises en cache.
- Peut attendre le rétablissement de la connexion : Opérations qui dépendent des données actuelles du serveur ou de services externes, comme l’autorisation de paiement, la vérification des stocks en temps réel, la vérification d’identité ou les requêtes à une API d’IA.
Cette classification évite de tenter à grands frais de rendre chaque écran entièrement indépendant du serveur. Elle met aussi en évidence les endroits où le produit doit afficher clairement un état « en attente ». L’utilisateur doit savoir si un formulaire est enregistré sur l’appareil, envoyé au serveur, rejeté lors de la validation ou en attente d’examen.
Questions à poser lors de l’atelier sur les exigences
Demandez à l’équipe de développement de documenter les éléments suivants avant d’estimer le travail :
- Quels rôles utilisateurs ont besoin d’un accès hors ligne ?
- Quelles données doivent être téléchargées avant que l’utilisateur perde sa connexion ?
- Quelle quantité de données doit rester sur l’appareil, et pendant combien de temps ?
- Les utilisateurs peuvent-ils créer, modifier et supprimer des enregistrements hors ligne ?
- Que se passe-t-il si deux utilisateurs modifient le même enregistrement ?
- Quelles actions nécessitent une confirmation du serveur en temps réel ?
- Un utilisateur peut-il se connecter ou changer de compte sans connexion ?
- Que se passe-t-il si l’appareil est perdu, partagé ou utilisé par plusieurs membres du personnel ?
- L’application doit-elle fonctionner hors ligne pendant des minutes, des heures, des jours ou des semaines ?
Les réponses à ces questions influent davantage sur l’architecture que le choix d’un framework mobile. Lorsqu’une équipe compare Flutter et l’architecture mobile native, elle devrait évaluer le comportement hors ligne, le traitement en arrière-plan et les contraintes des plateformes, en plus de la vitesse de développement.
Architecture hors ligne prioritaire ou compatible avec le mode hors ligne
Les termes « hors ligne prioritaire » et « compatible avec le mode hors ligne » désignent des priorités différentes.
Une application compatible avec le mode hors ligne est principalement conçue pour une utilisation en ligne, mais certains écrans ou certaines données mises en cache restent accessibles lorsque le réseau disparaît. Une application hors ligne prioritaire considère les données locales comme une copie de travail principale. L’interface lit d’abord les données du stockage local, enregistre les modifications localement et les synchronise avec le système dorsal dans le cadre d’un processus distinct.
| Domaine | Compatible avec le mode hors ligne | Hors ligne prioritaire |
|---|---|---|
| Source principale des données | Généralement le serveur | Base de données locale avec synchronisation serveur |
| Expérience utilisateur | Certains écrans restent accessibles | Les flux de travail essentiels se poursuivent sans connexion |
| Comportement à l’enregistrement | Peut échouer ou attendre hors ligne | Enregistre localement et marque la modification pour synchronisation |
| Gestion des conflits | Souvent limitée ou non définie | Conçue comme une règle métier obligatoire |
| Rétablissement du réseau | Recharge ou réessaie les requêtes | Envoie les modifications en attente et télécharge les mises à jour |
| Effort de développement | Périmètre supplémentaire modéré | Périmètre d’architecture et de tests important |
| Cas d’utilisation idéal | Applications en lecture seule ou avec mise en cache limitée | Opérations sur le terrain, logistique et flux de travail métier résilients |
Une architecture hors ligne prioritaire typique comprend quatre éléments :
- Une base de données locale sur l’appareil.
- Un dépôt ou une couche d’accès aux données qui fournit à l’interface des données cohérentes, quelle que soit la connectivité.
- Un moteur de synchronisation qui envoie les modifications locales et télécharge celles du serveur.
- Un contrat de système dorsal prenant en charge la gestion des versions, la validation, les nouvelles tentatives et les décisions relatives aux conflits.
L’interface ne devrait pas appeler directement le serveur depuis chaque écran. L’écran demande plutôt les données à la couche de données locale. Lorsque la connexion est active, la synchronisation met à jour la base de données locale. L’interface reste ainsi réactive et le produit conserve un comportement cohérent lorsque la connexion change.
Le système dorsal doit également prendre en charge cette conception. Une API simple de création et de lecture peut s’avérer insuffisante si les utilisateurs peuvent modifier le même enregistrement hors ligne. L’API peut avoir besoin d’identifiants d’enregistrement stables, d’horodatages, de numéros de révision, de clés d’idempotence, de jetons de modification, de marqueurs de suppression et de réponses de validation explicites.
La prise en charge du mode hors ligne peut être mise en œuvre dans une application Android ou iOS native, une application multiplateforme, un produit de bureau ou certaines applications web. Le bon choix dépend des exigences des appareils, de l’exécution en arrière-plan, des besoins de stockage et du reste du produit. Le choix du framework devrait découler du flux de travail et du modèle de synchronisation, plutôt que d’être considéré comme un raccourci permettant d’éviter ces décisions.
Stockage des données, synchronisation et gestion des conflits
Le modèle de données local constitue le fondement d’une application hors ligne prioritaire. Ne considérez pas le stockage local comme un cache temporaire si les utilisateurs sont autorisés à créer ou à modifier des enregistrements métier hors ligne. Il doit pouvoir préserver le travail de l’utilisateur malgré les redémarrages de l’application, les échecs d’envoi, l’expiration des jetons et les erreurs temporaires du serveur.
Choix du stockage local
Précisez quelles données sont stockées localement et si elles font autorité, sont mises en cache ou sont en attente. Les données locales courantes comprennent :
- Les affectations des utilisateurs et les files de travail.
- Les enregistrements de produits, d’actifs ou de clients nécessaires à une tâche donnée.
- Les brouillons de formulaires et les soumissions terminées.
- Les photos, les signatures, les codes scannés et les pièces jointes.
- Une file de modifications en attente d’envoi.
- Les métadonnées de synchronisation, notamment la dernière synchronisation réussie et les informations de révision du serveur.
Évitez de télécharger par défaut toute la base de données du système dorsal. Utilisez des ensembles de données ciblés selon l’utilisateur, le lieu, la date, l’affectation ou l’équipe. Définissez des règles de conservation pour les anciens enregistrements et les pièces jointes. Les fichiers multimédias volumineux peuvent rapidement accroître l’utilisation du stockage, la consommation de la batterie et la durée de synchronisation.
Séquence de synchronisation
Un processus de synchronisation pratique suit généralement l’ordre suivant :
- Détecter une connexion utilisable au lieu de supposer que la présence d’une icône réseau signifie que le serveur est accessible.
- Envoyer les modifications locales avec une clé d’idempotence afin que les nouvelles tentatives ne créent pas de doublons.
- Valider chaque modification sur le serveur et renvoyer un résultat clair.
- Résoudre les conflits ou les signaler conformément aux règles métier de l’enregistrement.
- Télécharger les modifications du serveur depuis le dernier jeton de synchronisation de l’appareil.
- Appliquer les mises à jour à la base de données locale dans une transaction.
- Marquer les éléments réussis comme synchronisés et conserver les erreurs exploitables à l’intention de l’utilisateur ou de l’administrateur.
Le processus doit pouvoir reprendre après une interruption. L’envoi d’un fichier volumineux ne doit pas repartir de zéro parce qu’un enregistrement ultérieur a échoué. Il devrait également prévoir un délai d’attente progressif pour les échecs temporaires et éviter toute activité agressive en arrière-plan qui décharge la batterie ou consomme des données mobiles.
Stratégies de gestion des conflits
La gestion des conflits doit être définie pour chaque type de données, et non dissimulée derrière une règle universelle du type « la dernière mise à jour l’emporte ». Voici quelques stratégies possibles :
- La dernière écriture l’emporte : La mise à jour acceptée la plus récente remplace l’ancienne. Cette solution est simple, mais peut écarter silencieusement un travail important.
- Le serveur l’emporte : La version du serveur reste la référence. L’appareil indique à l’utilisateur que sa modification locale n’a pas été acceptée.
- Le client l’emporte : La modification hors ligne remplace la version du serveur. Cette option peut convenir à une affectation dédiée, mais présente des risques pour les enregistrements partagés.
- Fusion au niveau des champs : Les champs indépendants sont combinés, tandis que les champs en conflit sont signalés.
- Enregistrements en ajout uniquement : Au lieu de modifier un enregistrement partagé, les utilisateurs ajoutent des événements, des relevés ou des notes. Cela réduit les conflits destructifs.
- Examen manuel : L’application présente les deux versions et demande à un utilisateur autorisé d’en choisir une ou de les rapprocher.
Par exemple, la modification du numéro de téléphone d’un client par deux utilisateurs peut nécessiter un examen, tandis que l’ajout de photos d’inspection distinctes par deux utilisateurs peut généralement faire l’objet d’une fusion. Une bonne spécification comprend des exemples de conflits et le résultat attendu pour chacun.
La suppression exige une attention particulière. Si un enregistrement est supprimé localement et que l’appareil télécharge ensuite une ancienne copie depuis le serveur, l’élément supprimé ne doit pas réapparaître. De nombreux systèmes utilisent des marqueurs de suppression ou des tombstones jusqu’à ce que tous les appareils concernés aient reçu la suppression.
États de connectivité, expérience utilisateur et sécurité
Les utilisateurs ne devraient jamais avoir à se demander si leur travail est en sécurité. L’interface doit clairement indiquer les états en ligne, hors ligne, en cours de synchronisation, en attente, en échec et en conflit des données. Un petit indicateur de connexion est utile, mais ne suffit pas à lui seul.
Un flux de travail fiable peut afficher :
- Une confirmation d’enregistrement local dès que l’utilisateur termine un formulaire.
- Un état « En attente de synchronisation » pour les données stockées sur l’appareil, mais pas encore envoyées.
- Un indicateur de progression lors du transfert de pièces jointes ou de lots.
- Une action de nouvelle tentative pour les échecs pouvant être récupérés.
- Une explication claire lorsqu’une règle de validation du serveur rejette une modification.
- Un écran d’examen des conflits lorsque la fusion automatique n’est pas sûre.
Ne désactivez pas toute l’application simplement parce qu’une requête échoue. Laissez utilisables les flux de travail locaux disponibles et désactivez uniquement les actions qui nécessitent réellement une confirmation du serveur en direct. Par exemple, un utilisateur peut être en mesure de remplir une liste de contrôle de livraison hors ligne, mais doit voir que l’encaissement du paiement est indisponible jusqu’au rétablissement de la connexion.
Les exigences de sécurité prennent davantage d’importance lorsque les données métier restent sur un appareil. Définissez :
- Quels enregistrements locaux sont chiffrés au repos.
- Comment les clés de chiffrement sont protégées et renouvelées.
- Si les pièces jointes nécessitent une protection distincte.
- Combien de temps les données restent après la déconnexion ou la suppression du compte.
- Si un appareil peut être révoqué ou effacé à distance au moyen d’un système d’administration.
- Comment fonctionne l’authentification hors ligne et quand elle expire.
- Ce qui se passe lorsqu’un utilisateur change de mot de passe ou perd son accès.
- Si des captures d’écran, des exports et des sauvegardes locales risquent d’exposer des données sensibles.
L’authentification hors ligne doit avoir une durée limitée. Autoriser un accès indéfini sur la base d’une ancienne session locale crée des risques liés aux comptes et à la conformité. Le produit peut permettre un accès hors ligne limité pendant une période définie, puis exiger une vérification en ligne réussie. La politique exacte dépend de la sensibilité des données et des exigences de sécurité de l’organisation.
Les données hors ligne ont également des répercussions sur la confidentialité et la conservation. Les acheteurs devraient demander où les données locales sont stockées, si elles sont incluses dans les sauvegardes de l’appareil et comment l’application supprime les enregistrements qui ne sont plus autorisés à y rester. Ces détails devraient être documentés plutôt que laissés au comportement par défaut de la plateforme.
Incidence des fonctionnalités hors ligne sur le périmètre, le coût et le calendrier
Le développement d’une application hors ligne prioritaire coûte plus cher que l’ajout d’un écran de chargement et d’un bouton de nouvelle tentative. L’effort porte sur la modélisation des données, la synchronisation, les règles de conflit, le comportement en arrière-plan, la sécurité, l’observabilité et les tests couvrant de nombreux états de connexion.
Les principaux facteurs de coût comprennent :
- Le nombre de flux de travail hors ligne et de rôles utilisateurs.
- Le nombre et la complexité des enregistrements stockés localement.
- La possibilité pour les utilisateurs de créer, modifier et supprimer des enregistrements hors ligne.
- Le volume et la taille des photos, des documents ou d’autres pièces jointes.
- La complexité de la résolution des conflits.
- Le besoin de synchronisation en arrière-plan.
- L’authentification hors ligne et la gestion des appareils.
- Les différentes plateformes et versions des systèmes d’exploitation.
- Les modifications du système dorsal requises pour la gestion des versions et les opérations idempotentes.
- Les outils d’administration pour les échecs de synchronisation et l’examen des conflits.
Une application en lecture seule qui met en cache un petit ensemble d’enregistrements peut n’ajouter qu’une quantité limitée de travail. Une application d’opérations sur le terrain qui permet à plusieurs membres du personnel de modifier des enregistrements partagés, de capturer des médias et de synchroniser des données sur des réseaux instables exige un effort d’ingénierie beaucoup plus vaste. Les fourchettes exactes dépendent du produit, mais le comportement hors ligne devrait être estimé comme un volet de travail distinct plutôt que dissimulé dans le développement mobile général.
Un acheteur peut améliorer l’estimation en demandant une matrice des fonctionnalités comme celle-ci :
| Exigence | Comportement hors ligne | Dépendance au serveur | Questions de complexité |
|---|---|---|---|
| Consulter les interventions attribuées | Accessible depuis la base de données locale | Téléchargement initial et mises à jour | Quelle quantité de données est attribuée à chaque utilisateur ? |
| Remplir une liste de contrôle | Enregistrement local | Envoi et validation ultérieurs | Deux utilisateurs peuvent-ils modifier la même liste de contrôle ? |
| Prendre des photos | Stockage local et mise en file d’attente de l’envoi | Service d’envoi des médias | Quelles sont les règles de taille, de compression et de nouvelle tentative ? |
| Modifier le stock | Généralement restreint ou mis en attente | Validation du stock actuel | Que se passe-t-il si le stock a été modifié ailleurs ? |
| Encaisser un paiement | Généralement indisponible hors ligne | Prestataire de paiement en direct | L’utilisateur peut-il enregistrer une transaction en brouillon ? |
| Rechercher des enregistrements | Recherche dans les enregistrements téléchargés | La recherche complète peut nécessiter le serveur | Quel périmètre de données hors ligne est autorisé ? |
L’estimation devrait distinguer la découverte, la mise en œuvre, l’intégration, les tests, la préparation de la mise en production et la maintenance continue. Les coûts récurrents comprennent le suivi des échecs de synchronisation, l’adaptation aux changements des tâches en arrière-plan des systèmes d’exploitation, la mise à jour des schémas locaux, la gestion de nouveaux cas de conflit et la prise en charge de la récupération des données.
Une proposition devrait préciser ce que comprend la « prise en charge du mode hors ligne ». Les acheteurs peuvent comparer plus précisément les fournisseurs à l’aide de la liste de contrôle d’estimation MVP pour les équipes produit, puis ajouter des critères d’acceptation explicites pour les flux de travail hors ligne.
Demandez à l’équipe de faire la démonstration des éléments suivants :
- Un formulaire enregistré alors que l’appareil est en mode avion.
- Une modification en attente qui survit au redémarrage de l’application.
- Un échec d’envoi faisant l’objet d’une nouvelle tentative sans créer de doublon.
- Deux utilisateurs qui modifient le même enregistrement et obtiennent le résultat documenté.
- Un enregistrement supprimé qui reste supprimé après la synchronisation.
- Un utilisateur qui voit quels enregistrements sont à jour, en attente ou en conflit.
- Un rejet côté serveur expliqué et pouvant être corrigé.
Si l’estimation indique « mode hors ligne inclus » sans préciser ces comportements, l’exigence n’est pas suffisamment définie.
Tester le comportement hors ligne avant la mise en production
Les tests hors ligne doivent simuler de véritables défaillances, et non se limiter à couper le réseau d’un appareil pendant quelques secondes. Dans la réalité, les utilisateurs sont confrontés à des connexions lentes, à des portails captifs, à des envois partiels, à une session expirée, à des erreurs serveur, à l’arrêt du processus et à des changements de réseau pendant une opération.
Créez une matrice de tests couvrant au minimum :
- Premier lancement sans connexion.
- Perte de connectivité lors de l’ouverture d’un enregistrement.
- Perte de connectivité lors de l’enregistrement d’un formulaire.
- Rétablissement de la connexion pendant l’envoi d’un fichier.
- Arrêt de l’application pendant la synchronisation.
- Redémarrage de l’appareil avec des modifications en attente.
- Nouvelles tentatives en double après un dépassement du délai d’attente.
- Échec de validation du serveur après une modification hors ligne.
- Modification du même enregistrement sur deux appareils.
- Suppression suivie d’une synchronisation depuis plusieurs appareils.
- Authentification expirée lorsque l’appareil est hors ligne.
- Espace de stockage insuffisant lors de l’enregistrement local ou de la capture d’un média.
- Batterie faible et exécution en arrière-plan restreinte.
- Modification de l’horloge ou heure incorrecte sur l’appareil.
- Mise à niveau depuis un ancien schéma de base de données locale.
Effectuez les tests sur des appareils et systèmes d’exploitation représentatifs, y compris sur du matériel doté de moins de mémoire si le public cible en utilise. Testez avec des volumes de données et des tailles de pièces jointes réalistes. Un prototype contenant dix enregistrements peut bien se comporter, tandis qu’un jeu de données de production entraîne des requêtes lentes, de longues migrations ou une consommation excessive de batterie.
Ne mesurez pas uniquement le fonctionnement d’un bouton. Vérifiez si les enregistrements locaux s’effectuent dans un délai acceptable, si la synchronisation reprend efficacement, si les données restent cohérentes après des interruptions et si les utilisateurs peuvent corriger une erreur sans assistance technique.
La journalisation et la surveillance font partie de la conception de la mise en production. Le système dorsal devrait consigner les échecs de synchronisation au moyen d’identifiants sûrs, de catégories d’erreurs et d’informations sur les nouvelles tentatives. L’application devrait fournir un contexte de diagnostic suffisant au personnel d’assistance sans exposer le contenu des enregistrements sensibles. Lorsque le flux de travail métier le nécessite, prévoyez un moyen d’inspecter les éléments en attente et les états de conflit au moyen d’une interface d’administration autorisée.
Avant d’approuver un fournisseur, demandez une courte démonstration technique et une liste de contrôle écrite des critères d’acceptation. Vérifiez quels tests ont été effectués sur de vrais appareils, comment les conditions réseau ont été simulées, quelle politique de gestion des conflits a été mise en œuvre et comment les échecs de synchronisation seront surveillés après le lancement. Une équipe expérimentée en développement de logiciels métier ou en maintenance logicielle et mises à niveau fonctionnelles devrait être en mesure d’expliquer non seulement la version initiale, mais aussi la façon dont le système de synchronisation sera pris en charge au fil du temps.
FAQ
Le développement hors ligne prioritaire est-il nécessaire pour toutes les applications mobiles ?
Non. Il est particulièrement utile lorsque les utilisateurs doivent poursuivre des tâches importantes pendant une panne, dans une zone mal couverte ou avec une connectivité limitée. Une application de contenu ou un simple formulaire en ligne peut n’avoir besoin que de mise en cache et de nouvelles tentatives, tandis qu’un produit destiné aux opérations sur le terrain peut nécessiter une architecture hors ligne prioritaire complète.
Une application hors ligne peut-elle tout synchroniser automatiquement ?
Elle peut automatiser de nombreuses mises à jour, mais les conflits ne devraient pas tous être résolus automatiquement. Les ajouts indépendants peuvent être fusionnés sans risque, tandis que les modifications partagées des prix, des horaires, des autorisations ou des stocks peuvent nécessiter une règle de priorité définie ou un examen manuel.
Combien coûte le développement d’une application hors ligne ?
Il n’existe pas de prix universel fiable, car l’effort dépend des flux de travail, du volume de données, des médias, des plateformes, de l’authentification et des règles de gestion des conflits. Demandez une estimation distincte pour le stockage local, la synchronisation, la sécurité, les tests et la surveillance continue, plutôt que d’accepter un poste général de prise en charge du mode hors ligne.
Les fonctionnalités hors ligne fonctionnent-elles avec les API tierces et les outils d’IA ?
Dans bien des cas, seulement en partie. Les paiements, l’identité, les stocks en direct et les API d’IA dans le cloud nécessitent généralement une connexion. L’application peut enregistrer un brouillon, mettre une requête en file d’attente ou proposer un comportement de secours local, mais l’exigence devrait préciser ce qui se passe lorsque le service externe est indisponible.
Comment un acheteur peut-il vérifier que la prise en charge du mode hors ligne est réelle ?
Demandez une démonstration en direct avec le mode avion, des redémarrages de l’application, des envois interrompus, des nouvelles tentatives en double et deux appareils modifiant le même enregistrement. Exigez des critères d’acceptation écrits qui définissent les enregistrements locaux, les états de synchronisation, les résultats des conflits, le comportement des suppressions et la récupération après erreur. Manboo Studio peut aider à transformer ces exigences en spécification testable pour une application mobile ou un système métier avant le début du développement.
