Mobile Quality
Version : 1.0
Statut : Architecture cible
ADR : MOBILE-011
1. Objectif
La qualité d'une application mobile ne se limite pas à l'absence de bugs.
Pour DMV, la qualité est la capacité de la plateforme à offrir une expérience :
- fiable ;
- rapide ;
- stable ;
- accessible ;
- durable.
La qualité constitue une responsabilité transversale de toute l'architecture.
Elle ne doit jamais être considérée comme une phase finale du projet.
2. Principes
La qualité repose sur cinq principes.
Fiabilité
Une fonctionnalité doit fonctionner de manière prévisible.
L'utilisateur ne doit jamais avoir à "réessayer plusieurs fois".
Performance
L'application doit répondre rapidement.
La perception utilisateur est plus importante que la performance théorique.
Robustesse
Une erreur ne doit jamais provoquer :
- un crash ;
- une perte de données ;
- un blocage de l'application.
Accessibilité
Toutes les fonctionnalités doivent rester utilisables par le plus grand nombre.
Observabilité
Un problème doit pouvoir être identifié et compris rapidement.
Une erreur invisible est une erreur impossible à corriger.
3. Performance
La performance est une fonctionnalité.
Elle est donc conçue dès l'architecture.
Les principaux objectifs sont :
- ouverture rapide ;
- navigation fluide ;
- faible consommation mémoire ;
- faible consommation batterie.
4. Temps de démarrage
Objectif :
Application utilisable en quelques secondes.
Le démarrage suit le principe :
Splash
↓
Initialisation minimale
↓
Affichage
↓
Chargements secondaires
L'utilisateur doit pouvoir commencer à utiliser l'application avant que tous les traitements secondaires soient terminés.
5. Fluidité
L'interface doit rester fluide.
Les opérations longues doivent être :
- asynchrones ;
- annulables si possible ;
- accompagnées d'un indicateur de progression.
Aucun écran ne doit sembler figé.
6. Consommation mémoire
La plateforme doit surveiller son empreinte mémoire.
Les composants inutilisés doivent être libérés.
Le Cache Engine adapte automatiquement son comportement en cas de pression mémoire.
7. Batterie
L'application ne doit pas devenir une source importante de consommation.
Les synchronisations sont regroupées.
Les traitements inutiles sont évités.
Les accès GPS continus sont interdits sauf besoin fonctionnel clairement identifié.
8. Réseau
Les appels API doivent être optimisés.
Principes :
- éviter les téléchargements redondants ;
- utiliser le cache lorsque cela est pertinent ;
- limiter les rafraîchissements automatiques.
9. Résilience
Une erreur ne doit jamais provoquer un arrêt brutal de l'application.
Chaque erreur doit conduire à un comportement maîtrisé.
Exemples :
Serveur indisponible
↓
Message explicite
↓
Utilisation du cache
↓
Nouvelle tentative automatique
10. Gestion des erreurs
Toutes les erreurs doivent être classifiées.
Erreurs utilisateur
Exemple :
champ obligatoire oublié.
Erreurs réseau
Connexion absente.
Serveur indisponible.
Erreurs métier
Permission refusée.
Publication inexistante.
Erreurs système
Crash.
Mémoire insuffisante.
Plugin indisponible.
Chaque catégorie possède une stratégie de traitement spécifique.
11. Crash Reporting
Tous les crashs doivent être collectés automatiquement.
Les rapports doivent permettre d'identifier :
- la version ;
- le système ;
- le contexte technique ;
- la pile d'appel.
Aucune donnée personnelle ne doit être transmise.
12. Journalisation
La plateforme produit des journaux techniques.
Exemples :
- démarrage ;
- synchronisation ;
- erreur réseau ;
- cache vidé.
Les logs ne doivent jamais contenir :
- mot de passe ;
- token ;
- données personnelles.
13. Analytics
Les métriques servent à améliorer DMV.
Elles ne servent pas à profiler les utilisateurs.
Exemples de métriques utiles :
- temps de démarrage ;
- temps moyen d'ouverture d'une page ;
- fréquence des crashs ;
- taux d'échec des synchronisations.
14. Accessibilité
DMV Mobile doit respecter les recommandations d'accessibilité Android et iOS.
La plateforme doit notamment supporter :
- VoiceOver ;
- TalkBack ;
- tailles de texte dynamiques ;
- contraste élevé ;
- navigation clavier lorsque disponible.
L'accessibilité n'est pas une fonctionnalité optionnelle.
15. Compatibilité
La plateforme doit fonctionner sur un ensemble cohérent d'appareils.
Les versions minimales supportées seront définies dans la stratégie de publication.
Les nouvelles fonctionnalités doivent toujours prévoir une stratégie de repli pour les appareils plus anciens lorsque cela est possible.
16. Tests
La qualité repose sur plusieurs niveaux de tests.
Tests unitaires
Validation des composants isolés.
Tests d'intégration
Validation des échanges entre composants.
Tests fonctionnels
Validation des parcours utilisateur.
Tests de régression
Garantie qu'une évolution ne casse pas une fonctionnalité existante.
Tests manuels
Toujours réalisés avant une publication majeure.
17. CI/CD
Chaque Pull Request doit exécuter automatiquement :
- lint ;
- type checking ;
- tests unitaires ;
- build.
Aucun code ne doit être fusionné si ces contrôles échouent.
18. Supervision
La qualité est suivie dans le temps grâce à des indicateurs.
Exemples :
- taux de crash ;
- temps moyen de démarrage ;
- durée moyenne des synchronisations ;
- erreurs réseau ;
- erreurs API.
Ces indicateurs permettent d'identifier rapidement une régression.
19. ADR
Alternatives étudiées
Qualité basée uniquement sur les tests
Rejetée.
Les tests ne détectent pas tous les problèmes de performance ou de stabilité.
Approche globale (tests + observabilité + métriques)
Retenue.
Elle permet de suivre la qualité tout au long du cycle de vie de l'application.
20. Décisions figées
✅ La qualité est une responsabilité architecturale.
✅ Les performances sont suivies en continu.
✅ Les crashs sont collectés automatiquement.
✅ Les erreurs sont catégorisées.
✅ L'accessibilité est intégrée dès la conception.
✅ Les Pull Requests doivent passer les contrôles automatiques.
✅ Les métriques servent à améliorer la plateforme, pas à profiler les utilisateurs.
Conclusion
La qualité de DMV Mobile ne repose pas uniquement sur des tests ou des revues de code.
Elle résulte d'une architecture pensée pour être robuste, observable, performante et accessible.
L'objectif est de garantir une expérience utilisateur constante dans le temps, quelles que soient les évolutions de la plateforme.