StockSuaps manipule un volume de données potentiellement important : des centaines d'articles répartis par salles, enseignants, sports et familles, avec un historique de mouvements (entrées, sorties, transferts) et un module de besoins associé. Cette réalité a imposé des choix algorithmiques et structurels réfléchis à chaque couche de l'application : comment organiser les données en mémoire côté Flutter pour des affichages réactifs, comment structurer les requêtes MySQL pour éviter les ralentissements sur les pages d'inventaire, et comment implémenter les fonctionnalités de recherche et de filtrage multicritères de manière efficace. La sécurité des données, le hashage des mots de passe, des identifiants d'articles et protection par token JWT relève également de choix algorithmiques.
1. AC22.01 | Choisir des structures de données complexes adaptées au problème
Choisir une structure de données ne se fait pas au hasard, car cela détermine les performances d'une application. J'ai acquis cette logique grâce à un travail d'analyse précis :
R3.02 - Développement efficace (Analyse d'impact et choix de structures complexes) : En Java, j'ai programmé et comparé des arbres binaires, des tables de hachage et des listes chaînées. Ce travail m'a appris à analyser les opérations dominantes de mon application avant de coder. Le choix final dépend des besoins réels du système : une recherche fréquente ou des insertions massives de données.
SAE :
Dans StockSuaps, les structures de données ont été choisies en fonction des opérations dominantes de chaque contexte. Côté Flutter, des listes ordonnées pour afficher l'inventaire trié et des maps pour associer chaque article à ses métadonnées (référence, couleur, taille, sport, famille). Côté Node.js, des objets structurés pour agréger les données avant de les renvoyer au client, en minimisant le nombre d'allers-retours avec la base. Ces choix ont eu un impact direct sur la réactivité de l'application, notamment sur les pages d'inventaire qui peuvent contenir de nombreux articles.
2. AC22.02 | Utiliser des techniques algorithmiques adaptées pour des problèmes complexes (par ex. recherche opérationnelle, méthodes arborescentes, optimisation globale, intelligence artificielle…)
L'optimisation des ressources et des performances est un enjeu central dans la conception d'un système. J'applique cette démarche de performance à travers deux approches techniques complémentaires :
R3.06 - Architecture des réseaux (Optimisation des flux et requêtes) : Les TP de routage DNS, DHCP et IP m'ont montré l'importance de choisir des chemins optimaux pour les données. Ce raisonnement s'applique directement à l'optimisation des requêtes SQL. Au lieu de multiplier les appels réseau entre l'application et la base, on structure une requête unique pour regrouper la récupération des données.
R4.04 - Méthodes d'optimisation (Algorithmes itératifs et performance) : L'étude de la descente de gradient et des réseaux de neurones m'a donné une vision globale des techniques mathématiques d'optimisation. Le principe de base consiste à itérer pour minimiser un coût. Cette logique reste la même pour améliorer progressivement les temps de réponse d'une API ou optimiser le traitement d'un algorithme.
SAE :
StockSuaps implémente plusieurs mécanismes de recherche et de filtrage : recherche d'articles par nom ou référence avec correspondance partielle, filtrage multicritères (sport, famille, salle, enseignant, état), et tri dynamique de l'inventaire. Côté base de données, les requêtes MySQL ont été optimisées pour éviter les appels répétitifs : des jointures permettent de récupérer en une seule requête un article avec son article global, sa salle et son enseignant, plutôt que de faire plusieurs requêtes successives.
3. AC22.03 | Comprendre les enjeux et moyens de sécurisation des données et du code
La sécurité et la protection des données doivent être intégrées dès les premières phases du développement. J'ai développé cette vigilance technique à travers deux modules complémentaires :
R3.01 - Développement web (Sécurisation des applications et gestion des données) : Le TP en PHP sur la gestion de comptes m'a confronté aux vulnérabilités courantes des applications web. J'ai travaillé sur le stockage sécurisé des mots de passe, la gestion des sessions utilisateurs et la validation stricte des formulaires avant l'insertion en base de données.
R3.09 - Cryptographie (Algorithmes de chiffrement et choix techniques) : L'étude du fonctionnement de RSA et du chiffrement symétrique m'a permis de comprendre les mécanismes de protection des données. Cette base théorique aide à faire des choix technologiques éclairés, comme préférer le hachage avec bcrypt plutôt qu'un algorithme obsolète comme MD5 pour garantir l'intégrité des informations.
SAE :
La sécurité de StockSuaps a été pensée à plusieurs niveaux. Les mots de passe sont hashés avant stockage en base MySQL. Chaque appel à l'API Node.js nécessite un token JWT valide, et ce token contient le rôle de l'utilisateur (admin ou prof), ce qui permet à l'API de refuser ou de filtrer les données selon les droits sans dépendre du client. Les identifiants des articles sont également hashés pour éviter l'énumération.
4. AC22.04 | Évaluer l’impact environnemental et sociétal des solutions proposées
Concevoir une solution informatique nécessite de dépasser le simple cadre technique pour intégrer des contraintes réelles. J'ai acquis cette vision globale lors d'un projet d'envergure :