TD : Travaux Dirigés - Scénarios Professionnels IGL241
Ce document présente des situations de vie professionnelle basées sur le cours IGL241, suivies de questions de réflexion technique.
Chapitre 1 : L’Écosystème Mobile en 2026
Scénario 1.1 : Stratégie de déploiement en Asie Situation professionnelle : Vous êtes consultant pour une startup française “Lumo” qui souhaite lancer une application de paiement mobile en Asie, particulièrement en Chine. Votre client pense que viser uniquement Android et iOS suffit pour couvrir 99% du marché.
- Au regard des évolutions géopolitiques mentionnées dans le cours, quel troisième système d’exploitation devez-vous impérativement inclure dans votre stratégie pour le marché chinois ?
- Quels sont les défis techniques liés à l’intégration des SDK pour ce système spécifique ?
- Comment le “Sandboxing” de l’OS influence-t-il la sécurité des données bancaires dans ce contexte ?
Scénario 1.2 : Optimisation d’une IA de reconnaissance d’image Situation professionnelle : Votre équipe développe une application qui identifie les plantes en temps réel. L’application est lente sur les anciens modèles de smartphones. Vous devez optimiser l’utilisation des ressources matérielles via l’OS.
- Quel composant matériel (Hardware) l’OS de 2026 utilise-t-il spécifiquement pour accélérer ce type de tâche ?
- Quel est le rôle de l’OS dans l’allocation des cycles de traitement entre le CPU et ce composant spécialisé ?
- Pourquoi une mauvaise gestion de la RAM par l’OS pourrait-elle entraîner la fermeture soudaine de votre application en arrière-plan ?
Scénario 1.3 : Choix d’un OS pour un projet d’entreprise fermé Situation professionnelle : Une banque souhaite équiper ses agents de terrain de terminaux mobiles sécurisés. Elle hésite entre une flotte Android “Open Source” et une flotte iOS “Fondation Unix fermée”.
- Quels sont les avantages de la fondation Unix (Darwin/XNU) d’Apple en termes de stabilité système pour une application métier critique ?
- En quoi le contrôle strict de l’App Store (revue humaine) est-il un gage de sécurité supplémentaire pour la banque ?
- Pourquoi la fragmentation d’Android (multiplicité des versions) pourrait-elle poser un problème de maintenance à long terme pour cette banque ?
Chapitre 2 : Les Terminaux Mobiles et l’Hégémonie des OEMs Chinois
Scénario 2.1 : Migration vers le “Foldable” Situation professionnelle : L’application de lecture de presse “NewsFlow” doit être mise à jour pour supporter les nouveaux smartphones pliables. Lors du déploiement de l’écran, l’application se fige et doit être redémarrée.
- Quel concept technique de continuité d’interface (Screen Continuity) n’a pas été respecté ici ?
- Comment l’application doit-elle réagir au changement de ratio d’affichage “à la volée” ?
- Pourquoi le multi-tâches avancé (affichage en mosaïque) impose-t-il une gestion plus rigoureuse de l’état de l’application ?
Scénario 2.2 : Survivre aux surcouches agressives Situation professionnelle : Vos utilisateurs se plaignent que les notifications de votre application de rappel de médicaments n’arrivent plus après 20 minutes d’inactivité sur leurs téléphones Oppo et Vivo.
- Quelle caractéristique des surcouches comme ColorOS ou FuntouchOS est responsable de ce problème ?
- Pourquoi ces constructeurs (OEMs) choisissent-ils de “tuer” agressivement les processus en arrière-plan ?
- Quelles API natives le développeur doit-il utiliser pour demander une dérogation à cette gestion de l’énergie ?
Scénario 2.3 : Déploiement sur le marché émergent (Afrique) Situation professionnelle : Vous lancez une application de micro-crédit ciblant spécifiquement l’Afrique de l’Ouest, où les terminaux Transsion (Tecno, Infinix) sont majoritaires.
- Quelles sont les limitations typiques des SoC (processeurs) d’entrée et milieu de gamme sur ces terminaux ?
- Pourquoi l’optimisation du “poids” de l’application (taille du binaire) est-elle cruciale pour ces utilisateurs ?
- Comment garantir une fluidité d’interface sur des écrans aux résolutions très variées ?
Chapitre 3 : Architectures Android, iOS et Processus de Publication
Scénario 3.1 : Optimisation des performances Android Situation professionnelle : Après une mise à jour, votre application Android met beaucoup de temps à se lancer sur les téléphones de vos clients. Vous suspectez un problème lié à l’exécution du code.
- Quel est l’environnement d’exécution actuel d’Android (Execution Engine) et comment compile-t-il le code ?
- Quel est l’avantage de la compilation “Ahead-of-Time” (ART) par rapport à l’ancienne méthode Dalvik ?
- Comment le Framework Applicatif (Application Framework) permet-il à votre code Java/Kotlin d’accéder aux capteurs GPS sans réécrire les pilotes ?
Scénario 3.2 : Passage du “Build” à la publication iOS Situation professionnelle : Votre application est prête pour l’App Store. Vous avez développé sur Swift via Xcode. Lors de la soumission, Apple rejette votre application car elle ne respecte pas les “Human Interface Guidelines”.
- Pourquoi Apple impose-t-il une revue humaine stricte avant toute publication ?
- Quel est le coût annuel récurrent pour maintenir une présence sur l’App Store ?
- Si vous aviez utilisé une architecture VIPER au lieu d’un MVC classique, en quoi cela aurait-il facilité vos tests techniques avant soumission ?
Scénario 3.3 : Transition APK vers AAB
Situation professionnelle : Votre entreprise téléchargeait manuellement des fichiers .apk sur son site web pour ses employés. La direction souhaite désormais passer par le Play Store officiel via le format .aab.
- Que signifie l’acronyme AAB et quel format remplace-t-il officiellement ?
- Comment le format AAB permet-il d’alléger le téléchargement pour l’utilisateur final ?
- Pourquoi l’utilisation de tests algorithmiques de malwares par Google est-elle plus rassurante pour l’entreprise que le téléchargement direct d’APK ?
Chapitre 4 : Applications Natives, Web, PWA et Hybrides
Scénario 4.1 : Choix technologique pour un MVP Situation professionnelle : Une startup veut tester une idée de livraison de repas en 3 mois avec un budget très limité. Elle hésite entre le “Tout Natif” et une “Web App Responsive”.
- Pourquoi le choix du Natif doublerait-il les coûts de développement ?
- Quel est l’avantage majeur d’une Web App concernant les mises à jour de fonctionnalités ?
- Pourquoi une Web App pourrait-elle échouer si les livreurs travaillent dans des zones à faible couverture réseau (5G/4G) ?
Scénario 4.2 : Migration vers une PWA sécurisée Situation professionnelle : Un journal en ligne souhaite que ses abonnés puissent lire les articles même dans le métro (sans internet) et recevoir des alertes info.
- Quel composant technique de la PWA permet le stockage des articles pour une lecture “Hors-ligne” ?
- Comment les notifications natives sont-elles gérées par une PWA sur le smartphone ?
- Pourquoi une PWA est-elle considérée comme un “pont” entre le web et le natif ?
Scénario 4.3 : Problème de fluidité sur une App Hybride Situation professionnelle : Votre application de gestion de stock, développée en technologie hybride (Ionic/Cordova), ralentit considérablement lorsque la liste des produits dépasse 1000 éléments.
- Quel composant logiciel (le “conteneur”) est responsable du rendu de l’interface dans une app hybride ?
- Pourquoi le rendu via une “WebView” est-il moins performant qu’un rendu natif pur pour les listes denses ?
- Dans quel cas l’utilisation de l’hybride reste-t-elle néanmoins pertinente pour une entreprise ?
Chapitre 5 : Programmation Embarquée
Scénario 5.1 : Système critique aéronautique Situation professionnelle : Vous intervenez sur le logiciel de contrôle automatique des volets d’un drone de surveillance. Le logiciel doit garantir une réponse en moins de 10 millisecondes à chaque signal de capteur.
- Pourquoi l’utilisation d’un système d’exploitation généraliste (comme Windows ou Android) est-elle proscrite pour ce drone ?
- Quel type d’OS spécifique (RTOS) doit être privilégié et quelle est sa caractéristique principale ?
- En quoi une défaillance logicielle ici diffère-t-elle d’un crash sur une application mobile de messagerie ?
Scénario 5.2 : Choix du langage pour l’IoT Industriel Situation professionnelle : Votre entreprise déploie des capteurs sismiques à travers le monde. Ces capteurs fonctionnent sur batterie et doivent durer 5 ans sans maintenance.
- Pourquoi le langage C est-il traditionnellement choisi pour manipuler la mémoire sur ces microcontrôleurs ?
- Quel est l’enjeu de la consommation d’énergie (cycles CPU) dans le choix du langage de programmation ?
- Pourquoi l’industrie de 2026 suggère-t-elle de passer au langage Rust pour éviter les “panics” (arrêts brutaux) système ?
Scénario 5.3 : Maintenance d’un câble sous-marin sans fil Situation professionnelle : Un logiciel embarqué gère les répéteurs d’un câble de données sous-marin. Un bug de type “Fuite Mémoire” (Memory Leak) est détecté après 6 mois de fonctionnement.
- Pourquoi est-il physiquement impossible de “redémarrer” manuellement cet équipement ?
- Quel est le risque d’une mise à jour “Over-The-Air” (OTA) si la procédure de flashage échoue (phénomène de “brick”) ?
- Comment la programmation défensive aurait-elle pu prévenir ce type de catastrophe logicielle ?
Chapitre 6 : L’Ecosystème JavaScript moderne
Scénario 6.1 : Migration de PHP vers Full-JS Situation professionnelle : Une agence web décide de passer ses développeurs du PHP vers un écosystème entièrement JavaScript pour gagner en rapidité de développement.
- Quel environnement d’exécution (Runtime) permet d’utiliser JavaScript sur le serveur (Back-end) ?
- Quel est l’avantage de partager le même langage entre le Front-end (React/Vue) et le Back-end ?
- Pourquoi le gestionnaire de paquets NPM est-il indispensable à l’équipe pour assembler son projet ?
Scénario 6.2 : Choix d’un Framework UI pour une Banque Situation professionnelle : La banque “SecureBank” doit choisir un framework JS pour sa nouvelle plateforme de gestion de comptes hautement sécurisée. L’équipe exige une structure rigoureuse et du typage strict.
- Entre React, Vue.js et Angular, lequel est le plus adapté à une application bancaire massive exigeant TypeScript nativement ?
- Quel est l’apport du “DOM Virtuel” (inventé par React) pour la fluidité des interfaces complexes ?
- Comment TypeScript peut-il prévenir une erreur de type (ex: additionner un texte et un nombre) avant même que le code ne soit testé ?
Scénario 6.3 : Typage et Application Mobile
Situation professionnelle : Votre application mobile hybride subit des crashs aléatoires chez les utilisateurs. En analysant les logs, vous voyez des variables null qui ne devraient pas l’être.
- Comment TypeScript, en tant que “sur-ensemble” de JavaScript, aurait pu aider l’IDE à détecter ces erreurs de variables non initialisées ?
- Pourquoi le typage statique strict est-il plus sûr que le typage dynamique de JavaScript pur ?
- Pourquoi considère-t-on qu’en 2026, développer sans TypeScript est une faute professionnelle pour un grand projet ?
Chapitre 7 : Frameworks historiques et fondations du “hybride”
Scénario 7.1 : Debugging d’une App Cordova héritée Situation professionnelle : Vous devez maintenir une application de 2018 codée avec Cordova. Un nouveau capteur biométrique sur le téléphone n’est pas reconnu par votre code JavaScript.
- Quel composant de Cordova (le “pont”) devez-vous mettre à jour pour permettre au JS de parler au nouveau matériel ?
- Comment Cordova “injecte”-t-il les permissions natives dans une simple page web ?
- Pourquoi Adobe a-t-il fini par délaisser le produit PhoneGap au profit de solutions plus modernes ?
Scénario 7.2 : L’interface AngularJS qui “clignote” Situation professionnelle : Sur une vieille application AngularJS (v1.x), l’interface met plusieurs secondes à se mettre à jour après un clic sur un bouton. Vous suspectez un problème lié au cycle de données.
- Expliquez le mécanisme de “Two-Way Data Binding” (Liaison bidirectionnelle).
- Pourquoi un excès de liaisons de données peut-il ralentir le rendu visuel (la “Vue”) ?
- En quoi le concept de Single Page Application (SPA) d’AngularJS a-t-il révolutionné la sensation de fluidité mobile d’autrefois ?
Scénario 7.3 : Remplacement de la WebView Situation professionnelle : Le client trouve que son application hybride ne ressemble pas à une application “Premium”. Il souligne que les boutons ne sont pas ceux de l’iPhone (iOS natif).
- Pourquoi une “WebView” (navigateur invisible) ne peut-elle pas reproduire parfaitement les boutons natifs ?
- Quel est l’impact d’une WebView sur la fluidité des animations (framerate à 60 FPS) ?
- Vers quel type de framework (cross-platform natif) devriez-vous orienter le client pour résoudre ce problème esthétique ?
Chapitre 8 : Solutions Multiplateformes contemporaines (Cross-Platform)
Scénario 8.1 : Performance React Native vs Hybryde Situation professionnelle : On vous demande de justifier le passage d’une application Cordova vers React Native. Le client ne comprend pas la différence de “rendu”.
- Contrairement à l’hybride, quel type de composants React Native dessine-t-il sur l’écran au final ?
- Quel est le rôle du “Bridge” asynchrone dans la communication entre le code JS et les composants natifs ?
- Pourquoi React Native est-il plus performant que Cordova pour des animations d’interface fluides ?
Scénario 8.2 : Modernisation d’un projet Ionic Situation professionnelle : Votre équipe web (experte en Vue.js) souhaite créer une application mobile. Vous proposez d’utiliser Ionic.
- Quel outil moderne remplace Cordova dans l’écosystème Ionic 2026 pour le lien avec le natif ?
- Pourquoi Ionic est-il plus accessible à une équipe de designers web qu’un framework comme React Native ?
- Quelle est la principale limite d’Ionic si l’on souhaite développer un jeu vidéo 3D sophistiqué ?
Scénario 8.3 : .NET MAUI en entreprise Situation professionnelle : Le service informatique d’un hôpital utilise déjà des serveurs Windows et du code C# partout. Ils veulent une application pour les infirmières sur Android et iOS.
- Pourquoi .NET MAUI (successeur de Xamarin) est-il le choix le plus logique ici ?
- Quel est le pourcentage moyen de code source réutilisable entre les deux plateformes mobiles avec cet outil ?
- En quoi l’approche de Microsoft (compilation native C#) diffère-t-elle de l’approche JavaScript de React Native ?
Chapitre 9 : L’Avènement de Flutter et du Langage Dart
Scénario 9.1 : Débogage d’un problème de rafraîchissement Situation professionnelle : Un développeur junior se plaint que les modifications qu’il apporte au code de son interface ne s’affichent pas immédiatement sur son simulateur Android. Il doit recompiler toute l’application (2 minutes) à chaque fois.
- Quelle fonctionnalité phare de Dart (liée à la compilation JIT) le développeur a-t-il probablement oubliée d’activer ?
- Pourquoi la compilation AOT est-elle réservée uniquement à la phase de “Production” ?
- En quoi le fait que Flutter dessine ses propres pixels (via Impeller) évite-t-il les disparités d’affichage entre un téléphone Google Pixel et un Samsung ?
Scénario 9.2 : Choix entre Stateless et Stateful Situation professionnelle : Vous concevez une page de profil utilisateur. Cette page affiche le nom de l’utilisateur (fixe) et un bouton “Suivre” qui change de couleur et de texte quand on clique dessus.
- Quel type de Widget est le plus adapté pour le texte du nom d’utilisateur et pourquoi ?
- Pourquoi le bouton “Suivre” doit-il être encapsulé dans un
StatefulWidget? - Quel est l’impact de l’appel à la méthode
setState()sur l’arbre des Widgets Flutter ?
Scénario 9.3 : Performance d’un moteur de rendu Situation professionnelle : Votre client hésite entre React Native et Flutter pour un jeu de plateau animé en 2D. Il a peur que Flutter soit “lourd” à cause de son moteur embarqué.
- Quel est le nom du moteur graphique (successeur de Skia) utilisé par Flutter en 2026 ?
- Pourquoi Flutter atteint-il plus facilement les 120 FPS que les solutions basées sur un “Bridge” JavaScript ?
- Expliquez le concept “Everything is a Widget” appliqué à la mise en page (ex: Padding, Center).
Chapitre 10 : Conception Backend API avec Laravel (Spécificité Mobile)
Scénario 10.1 : Sécurisation d’une fuite de données
Situation professionnelle : En inspectant les échanges entre l’application Flutter et l’API Laravel, vous remarquez que le champ email_verified_at et le password_hash sont visibles dans le JSON reçu par le téléphone.
- Pourquoi est-il critique de ne jamais envoyer les modèles Eloquent “bruts” via l’API ?
- Quel outil de transformation Laravel (
JsonResource) devez-vous implémenter pour filtrer ces champs ? - Comment définir une route “Stateless” dans le fichier
routes/api.phppour qu’elle réponde au verbeGET?
Scénario 10.2 : Problème de connexion sans Cookies Situation professionnelle : Votre application Flutter n’arrive pas à maintenir la session utilisateur. À chaque redémarrage de l’app, l’utilisateur doit se reconnecter, car les “Cookies” ne fonctionnent pas comme sur un navigateur.
- Quel package Laravel (Sanctum) permet de gérer l’authentification par jeton (Token) ?
- Où le “Bearer Token” doit-il être placé dans la requête HTTP envoyée par le mobile ?
- Quel est l’avantage de Sanctum par rapport à une gestion de session classique pour une application mobile ?
Scénario 10.3 : Conception d’un Endpoint CRUD Situation professionnelle : Vous devez créer une fonctionnalité permettant aux utilisateurs de supprimer leur propre compte depuis l’application mobile.
- Quel verbe HTTP Laravel doit-on utiliser pour cette route de suppression ?
- Pourquoi le middleware
auth:sanctumest-il indispensable sur cette route ? - Quel type de réponse (Code HTTP) le serveur doit-il renvoyer pour confirmer la suppression réussie ?
Chapitre 11 : Consommation de l’API Laravel via Flutter
Scénario 11.1 : Gestion de la latence réseau Situation professionnelle : Sur une connexion 3G instable, votre application Flutter se fige totalement pendant 5 secondes lors de l’appel à l’API de météo.
- Pourquoi l’utilisation de
Futureetasync/awaitest-elle obligatoire pour ne pas bloquer l’interface (UI Thread) ? - Quel Widget Flutter permet d’afficher un “Spinner” (indicateur de chargement) tant que la donnée n’est pas arrivée ?
- Comment gérer le cas où l’API Laravel renvoie une erreur 500 (Serveur indisponible) au niveau du code Dart ?
Scénario 11.2 : Mapping de données avec PODO
Situation professionnelle : Votre application reçoit un JSON complexe du backend. Vous essayez d’accéder au nom via json['user']['full_name'] mais cela provoque des erreurs Null check operator used on a null value.
- Pourquoi est-il préférable de convertir le JSON en un objet
UserModel(PODO) dès la réception ? - Quel est le rôle d’une “Factory” (méthode
fromJson) dans une classe Dart ? - En quoi le typage fort de Dart protège-t-il l’application contre les changements imprévus dans la structure du JSON ?
Scénario 11.3 : Optimisation avec le package Dio
Situation professionnelle : Vous devez envoyer une image de profil (Fichier binaire) vers votre API Laravel. Le package http standard vous semble limité.
- Quel package alternatif (très réputé en 2026) offre des fonctionnalités avancées pour les requêtes asynchrones ?
- Comment ce package gère-t-il les “Intercepteurs” pour ajouter automatiquement le Token de sécurité à chaque appel ?
- Quel est l’intérêt de gérer les “Timeouts” réseau dans une application mobile ?
Chapitre 12 : Gestionnaires d’État Modernes et Déploiement Final
Scénario 12.1 : Centralisation des données (State Management) Situation professionnelle : L’utilisateur change de photo de profil sur la page “Paramètres”, mais la photo ne se met pas à jour sur la page “Accueil” alors que les deux pages sont ouvertes.
- Pourquoi le “Prop Drilling” (passage de variables de parent à enfant) n’est-il pas une solution viable ici ?
- Comment l’utilisation de
RiverpodouProviderpermet-elle de notifier tous les Widgets concernés par le changement de donnée ? - Quel est le rôle de la méthode
notifyListeners()(ou équivalent) dans ce processus ?
Scénario 12.2 : Préparation du Bundle Android Situation professionnelle : Votre application est terminée. Vous devez l’envoyer sur le Google Play Store en version finale et optimisée.
- Quelle ligne de commande Flutter permet de générer le fichier de distribution final ?
- Pourquoi préfère-t-on le format
.aabau format.apkpour la mise en ligne ? - Que signifie l’étape d’“Obfuscation” du code et pourquoi est-elle cruciale pour la sécurité de vos terminaux API ?
Scénario 12.3 : Publication iOS et TestFlight Situation professionnelle : Le client veut tester l’application sur son propre iPhone avant la publication officielle sur l’App Store.
- Quel outil d’Apple (intégré à Xcode) permet de distribuer une version de test à un groupe fermé d’utilisateurs ?
- Pourquoi une machine macOS est-elle rigoureusement obligatoire pour cette étape de compilation iOS ?
- En quoi consiste l’étape de signature du code (Code Signing) avec un certificat de développeur ?
Prêt à passer à la suite ?
Vous avez terminé cette leçon sur TD : Travaux Dirigés - Scénarios Professionnels IGL241. Continuez votre apprentissage avec la prochaine leçon ou explorez d'autres formations.