tags : `Application` `Mobile` `Android` `IOS` `Qualité` `Native` **Plan de Mémoire de l'alternance** [Toc] > Licence Professionnelle Développement Mobile - IoT Session 2019/2020 <br><br> --- <br><br> # Introduction Le monde de l'informatique comme tous les domaines technologiques avance à une vitesse énorme, cette vitesse nous oblige à prednre beaucoup de précaution dans la réalisation des produits informatiques pour garantir leurs utilisabilités dans le temps. La fabrication du produit est une phase importante de la vie de l'application car c'est elle determine son cout. Les applications mobiles sont des logiciels qui necessitent une certaine qualité dabord pour respecter les règlements et puis pour la satisfaction du client. **Comment pourons-nous donc assurer une bonne réalisation de l'application mobile?** # La qualité dans le monde des applications mobiles La qualité de l'application est le facteur de base, qui doit être ciblé lors du développement d'une application. De nombreuses agences de développement d'applications mobiles ne sont toujours pas au courant grâce à de nombreuses technologies nouvelles et de pointe, ce qui a conduit les développeurs d'applications à développer des applications de faible qualité. ## Définition de la qualité d'une Application. ## Les differentes types de qualités. [ref](https://www.researchgate.net/publication/318758163_What_Is_Quality_A_Management_Discipline_and_the_Translation_Industry_Get_Acquainted) **Garvin**, David A. "What Does Product Quality Really Mean?" Sloan Management Review 26.1 (1984): 25-43. ### Qualité basée sur la fabrication. Cette approche, que **Garvin** a qualifiée d '«approche de fabrication», considère la qualité comme une «conformité aux exigences». Selon cette approche, tout écart par rapport aux exigences de l'utilisateur prévu réduit la qualité. Contrairement à l'approche basée sur l'utilisateur, l'approche basée sur la production ne tient pas compte de l'œil du spectateur. Cette approche vise plutôt à mesurer objectivement le degré de conformité d'un produit ou d'un service avec des spécifications prédéterminées ### Qualité basée sur le produit. Cette approche considère la qualité d'un produit ou d'un service comme quantifiable en fonction de certains ingrédients ou attributs. **Garvin** utilise des glaces et des tapis pour illustrer cette approche. Les glaces, par exemple, peuvent être classées en fonction de la teneur en matières grasses du beurre, une teneur en matières grasses plus élevée indiquant une qualité supérieure. Les tapis peuvent être classés en fonction du nombre de nœuds par pouce carré, avec un tissage plus serré indiquant une qualité supérieure ### Qualité basée sur l'utilisateur. Cette approche est basée sur la prémisse que la qualité est «dans l'œil du spectateur», lorsque le spectateur est l'utilisateur. Selon cette approche, la qualité est le degré auquel un produit ou un service satisfait les besoins, les désirs ou les préférences de l'utilisateur. Par exemple, si certains utilisateurs croient qu'une Chevrolet répond mieux à leurs besoins qu'une Cadillac, alors la Chevrolet serait le véhicule de meilleure qualité pour eux. ### Qualité basée sur la valeur. Cette approche évalue la qualité en termes de coûts et d'avantages: plus les avantages l'emportent sur les coûts, plus un produit ou un service augmente en valeur. Les produits ou services de plus grande valeur bénéficient d'une qualité supérieure. Par conséquent, le produit ou le service qui fonctionne le mieux peut ne pas fournir la valeur la plus élevée et ne sera donc pas de la plus haute qualité. ### Qualité transcendante. Cette approche considère la qualité d'un produit ou d'un service comme une caractéristique innée à la fois absolue et universellement reconnaissable. La qualité transcendante rappelle le concept de beauté de Platon en tant que «forme idéale». Selon cette approche, un produit ou un service possède l'excellence basée sur sa relation subjective avec une certaine norme. La capacité de déterminer que la relation subjective ne peut être développée que par l'expérience ## L'IMPORTANCE DE LA QUALITÉ. https://www.koombea.com/blog/the-importance-of-quality-assurance-in-app-development/ En 2018, il y a eu 194 milliards de téléchargements d'applications. Cela prouve qu'il y a encore beaucoup de place sur le marché pour d'autres idées d'applications. Cependant, 52% des utilisateurs sont frustrés par les performances globales de l'application. Ces statistiques choquantes nous indiquent que même si les applications sont en forte demande, plus de la moitié des applications téléchargées sont une déception. Afin de garantir que l'application ne rentre pas dans la catégorie de frustration des performances des applications, le contrôle qualité est une étape cruciale lors du développement d'applications. # Les conséquences d'une mauvaise qualité de l'application mobile. ## Comment le taux de crash influence le taux de désinstallation # Assurer la réalisation des livrables qui ne régressent pas dans le temps. https://www.trustvip.com/3-keys-mobile-application-quality/ https://www.businessofapps.com/insights/quality-standards-enterprise-mobile-development/ .... ## Capacité d'integrer des changement. Durant le vie de l'application beaucoup de changements auront besoins d'etres integrsé à l'application que ça soit pour corriger les problemes, ajouter des fonctionnalitée ou mettre à jours le code pour des questions de mise ajours de langages de programmation ou de securité ..., Il est probables que les changements seront effectuées par d'autres personnes que celles qui l'ont céer au début, le code doit donc etre lisible ça veut dire que ça structure doit etre bien faite en terme de variables, fonctions ..., le code doit atre aussi accompagnée de commentaires pour l'expliquer afin de rendre la tâche facile au autres developpeurs pour comprendre le code. ## La performance. Les performances sont essentielles pour gagner la satisfaction des utilisateurs. Les performances englobent l'interaction avec non seulement l'utilisateur, mais également les autres tâches que l'appareil peut effectuer ou utiliser. Les tests de performances peuvent être l'un des aspects les plus importants des tests mobiles, mais sont facilement appliqués avec les éléments clés suivants: ### Performances de l'interface utilisateur (UI) Selon une enquête réalisée en 2015 par **Dimensional Research** et **HP**, 49% des utilisateurs s'attendent à ce qu'une application réponde en 2 secondes ou moins, donc la verification du lancement de l'application et les performances de l'interface utilisateur est essentiel au succès de l'application. Il faut donc Simulez différents types d'environnements pour confirmer que l'application répond rapidement et en douceur pas seulement au lancement de l'applciation mais aussi aux differentes commandes du utilisateur. ### Réseau. Si l'application fonctionne parfaitment dans les bonnes condictions réseaux il est pas sùr qu'elle fonctionnera de la maniere dans conditions moins idéales, une solution pour ce genre de situation est par exemple de prévenir des solution au niveau de l'interface utilisateur et d'éssayer de récupérer que le minimum de données nécessaires à la fois. ### Engagements. Les utilisateurs s'attendent à ce que les applications soient conformes à leurs besoins, de la modification de l'orientation de l'appareil à l'acceptation d'appels lors de l'utilisation de l'application. ## Stabilité ### Les erreurs Idéalement, les utilisateurs ne doivent jamais recevoir de message d'erreur ou bien l'écran de chargement infinie, les seuls messages d'**erreurs** que l'utilisateur peut recevoir sont les messsages customisées du développeurs pour notifier l'utilisateur, exemple: * ==Pas de connexion internet== au lieu d'**un chargement infini**. * ==Liste vide== au lieu de **null point exception**. * ... ### Le Startup Si votre application se bloque systématiquement avant que l'utilisateur ne puisse l'ouvrir avec succès, il est probable qu'elle sera supprimée et recevra un avis négatif sur l'App Store. Pas moins de 53% des utilisateurs désinstallent ou suppriment des applications en cas de panne ou de non-réponse [Dimensional Research & HP, 2015](https://techbeacon.com/sites/default/files/gated_asset/mobile-app-user-survey-failing-meet-user-expectations.pdf).Il est indisponsable donc de s'assurer que le démarrage de l'application est fluide sous differentes conditions et sur differentes environnement et appareils. ### Les Resources 36% des utilisateurs cesseront d'utiliser une application uniquement en raison d'une utilisation intensive de la batterie (Dimensional Research & HP, 2015). En géneral ce sont les utilisaterurs ce genre de problemes du à leur utilisation frequente de l'applciation , il est donc preferable de prendre en compte ce facteur lors des tests pour eciter l'insatisfaction et les coup de car la réparation des problemes peut durer jusqu'à plusieurs mois. ### Les Crash Reporters Malgré les tests réalisées il y'aura toujours des cas non traitées, l'integration d'un outils de **reporting** de crash dans l'applciation permet le traçages des erreurs et donne le maximum données sur l'erreur et l'endroit extacte dans le code où il y'a eu le dysfonctionnement. ## La securité. Plus d'utilisateurs que jamais comptent sur les applications mobiles pour la majorité de leurs tâches numériques par rapport aux applications de bureau traditionnelles. En 2015, aux États-Unis seulement, les utilisateurs ont passé [54% de leur temps sur les médias numériques sur des appareils mobiles](https://www.comscore.com/Insights/Presentations-and-Whitepapers/2015/The-2015-US-Mobile-App-Report) utilisant activement des applications mobiles. Ces applications ont accès à de grandes quantités de données utilisateur, dont une grande partie sont des données sensibles et doivent être protégées contre tout accès non autorisé. Toutes les plates-formes mobiles populaires fournissent des contrôles de sécurité conçus pour aider les développeurs à créer des applications sécurisées. Cependant, il est souvent laissé au développeur le choix parmi une infinité d'options de sécurité. Un manque de contrôle peut conduire à la mise en œuvre de fonctionnalités de sécurité qui peuvent être facilement contournées par les attaquants. Les problèmes courants qui affectent les applications mobiles incluent: Stockage ou fuite involontaire de données sensibles de manière à ce qu'elles puissent être lues par d'autres applications sur le téléphone de l'utilisateur. Implémentation de contrôles d'authentification et d'autorisation médiocres qui pourraient être contournés par des applications ou des utilisateurs malveillants. Utiliser des méthodes de chiffrement des données connues pour être vulnérables ou pouvant être facilement brisées. Transmission de données sensibles sans cryptage sur Internet. Ces problèmes pourraient être exploités de nombreuses manières; par exemple, par des applications malveillantes sur l'appareil d'un utilisateur, ou par un attaquant qui a accès au même réseau WiFi qu'un utilisateur final. En plus de vous concentrer sur la sécurité des applications, vous pouvez suivre les meilleures pratiques afin de réduire les risques de cybersécurité. Par exemple, planifiez la maintenance de l'application pour appliquer des correctifs de sécurité réguliers et introduisez une politique BYOD stricte pour éviter l'exposition inutile de vos données d'entreprise sensibles. # Offrir de la stabilité dans les applications mobiles. https://www.thedroidsonroids.com/blog/quality-assurance-mobile-web-app-development-process ![](https://i.imgur.com/AmXyE9p.png) ## Quelles sont les méthodes ou les outils mis en oeuvre: ### L'agilité. Dans le cadre de la méthodologie agile, il existe différents cycles de vie de développement logiciel des modèles. Ce n'est pas un processus de développement logiciel comme Extreme programmation (XP), Scrum, Crystal, développement de logiciels adaptatifs (ASD), Lean Développement de logiciels et développement piloté par fonctionnalités (FDD). Développement agile les approches sont logiquement adaptées au développement d'applications mobiles. Le concept d'agile la méthodologie est appropriée pour clarifier et obtenir ce que les clients aiment. le convention de la méthode de développement agile est qu’à l’interruption légitime, le l'équipe émule sur la façon de devenir plus efficace à partir des commentaires, puis de s'habituer son comportement en conséquence. Tout moyen particulier de développement agile ne convient pas développement d'applications mobiles. Parmi toutes les méthodes de développement logiciel agile, Feature Le développement piloté (FDD) est l'une des méthodes de développement logiciel. Cela prouve être adéquat sur des applications complexes. Les applications les plus complexes sont plus efficaces si FDD est appliqué. FDD gère le projet de développement mobile de manière plus directe et effectivement. Il tient bien quelle que soit la taille. Il existe différentes technologies disponibles sur le marché des applications mobiles développement tels que HTML, CSS et JavaScript, etc. FDD accueille certains excellents aspects de planification et de rapport qui confirment leur utilité dans l'application processus de développement. Dans le développement d'applications mobiles, divers types de risques tels que changement fréquent d'exigence, nouvelles technologies et complexité sous-estimée des exigences non fonctionnelles. Ce modèle aide à réduire le risque en utilisant des itérations de conception, de compréhension des exigences et du système où le applications à développer. ### Les testes. https://www.thedroidsonroids.com/blog/quality-assurance-mobile-web-app-development-process Les tests automatiques qui vérifient si de nouvelles modifications n'ont pas cassé les fonctionnalités déjà implémentées Cela consiste en: * Analyse du code statique : le code est vérifié par un programme spécial (Lint, Sonar), qui vérifie si le code répond aux bonnes normes établies par l'équipe de développement, ex: le nombre de lignes par fichier, le nombre de caraceres par ligne... * Exécution de tests unitaires : tests automatisés qui valident si chaque unité du logiciel fonctionne comme prévu, cette partie permet de tester fonctionnelement le'application en faisant appel à des parties ou des fonctions de l'application. * Exécution de tests d'intégration d'interface utilisateur : tests automatisés qui vérifient si les composants de l'application sont correctement intégrés. * Test de périphérique virtuel : Permet de trouver des plantages dans les applications. Il simule un véritable utilisateur de l'application. ### Tester sur differentes types d'appareils. Lors du developpement le developpeur lance son applciation sur seul appareil pour verifier ces changements, mais il est pas sur ue l'utilisateur final aura le meme appareil ou la meme version du systeme d'oerations, le fait de tester sur differents appareils permet de voir les anomalise possible au niveau de l'affichage, il y'a d'autres testes qui purron etre realisé, comme les test avec une connexion internet faible ou meme sans internet, tester une appareils qui a moins de RAM et/ou de stockage, car pas tout les utilisateurs auront des apperils avec des condictions parfaites. # Les développeurs ne sont pas des testeurs. Souvent il peut exister un partenaire qu'il n'a pas de spécialiste en assurance qualité / testeurs, est ce que dans ce cas le développeur effectuera la partie de test ? Un développeur qui a écrit le code ne doit pas vérifier son propre travail. Il est plus difficile pour un auteur de voir ses propres erreurs. De plus, les développeurs peuvent considérer quelque chose comme pas une erreur car ils comprennent ce qu'ils ont écrit. Une paire d'yeux supplémentaire est toujours utile. # Kotlin au lieu de JAVA, une décision orienté qualité: ## Avantages. * Prise en charge de sécurité ==nul-integré==. . . # Gestion des erreurs pour les humains https://www.smashingmagazine.com/2016/09/how-to-design-error-states-for-mobile-apps/ Le meilleur message d'erreur est celui qui n'apparaît jamais. Il est toujours préférable d'empêcher les erreurs de se produire en premier lieu en guidant les utilisateurs dans la bonne direction à l'avance. Mais, lorsque des erreurs surviennent, une gestion des erreurs bien conçue permet non seulement de montrer aux utilisateurs comment utiliser l'application comme vous le souhaitiez, mais empêche également les utilisateurs de se sentir ignorants. Un état d'erreur est un écran qui s'affiche lorsque les choses tournent mal. C'est un exemple d'une situation où l'utilisateur obtient autre chose que son état souhaité. Étant donné que des erreurs peuvent se produire dans des combinaisons surprenantes, ces états peuvent inclure des opérations incompatibles avec les utilisateurs (telles que des entrées de données non valides), l'incapacité d'une application à se connecter au serveur, ou même l'impossibilité de traiter une demande d'utilisateur. Quelques regles pour une bonne gestion d'erreur: * BON ENDROIT * COULEUR DROITE (DESIGN INTUITIF) * MESSAGE CLAIR * Incorporer l'imagerie et l'humour dans les états d'erreur # La documentation # La communication . . . # Le Code review . . . # Utiliser une norme de codage uniforme # Versioning. # Reviews et Ratings. ## Tirer le meilleur parti des commentaires des utilisateurs # Mises à jour et versions rapides # Conclusion. # Usability evaluation of mobile applications using ISO 9241 and ISO 25062 standards ==to see== https://springerplus.springeropen.com/articles/10.1186/s40064-016-2171-z https://www.koombea.com/blog/5-characteristics-of-winning-mobile-apps/ https://mhealth.jmir.org/2015/1/e27/ # References: