Compétences méthodologiques

Mots-clés : Intégration, DLM, cartographie, processus, Web Services, automatisation, ...

M7: Mettre en œuvre les méthodologies et les outils nécessaires aux différents champs d’action de l’organisation en les appliquant à la gestion de projets informatiques ; au développement logiciel ; au déploiement et à l’exploitation des systèmes d’information ; à la gestion des risques ; à la gestion d’entreprise .

Niveau Hautement spécialisé:

  • En fonction des projets déterminés autour de la « Valorisation et exploitation de services numériques », connaître, appliquer et mettre en œuvre les méthodologies et les outils adaptés
  • Adopter un regard critique sur ces méthodologies et outils
  • Connaître les principaux concepts mathématiques nécessaires à la Data Science et savoir les appliquer dans un cas d’utilisation du Machine Learning

En fonction des projets déterminés autour de la « Valorisation et exploitation de services numériques », connaître, appliquer et mettre en œuvre les méthodologies et les outils adaptés Dans le cadre de l’Hackathon “Decentralized Identity”, j’ai participé au développement d’une application de chat en utilisant React, Next.js, et Web 5. Mon objectif était de valoriser et exploiter des services numériques en adoptant des méthodologies et outils adaptés.

web5 Source: https://developer.tbd.website/docs/web5/build/apps/dinger-tutorial

Pour ce projet, nous avons choisi React en raison de sa réactivité et de son efficacité dans la création d’interfaces utilisateur dynamiques. Next.js a été utilisé pour optimiser le référencement et améliorer les performances de l’application. Web 5 a été crucial pour intégrer des fonctionnalités avancées de communication et d’identité décentralisée.

next Source: https://www.digitalyz.fr/expertises/next-js-framework-ideal-pour-un-site-web-eco-responsable

Pour ce projet, nous avons adopté une approche hybride Waterfall/Kanban en matière de stratégie de développement. Cette méthode a combiné la planification structurée de Waterfall avec la flexibilité de Kanban, permettant une gestion de projet équilibrée et adaptée aux défis de l’hackathon. De plus, nous avons utilisé Microsoft Azure DevOps comme outil de gestion de projet. Azure DevOps a fourni un environnement intégré pour le suivi des tâches, la gestion du code source, et l’automatisation des pipelines, contribuant ainsi grandement à l’efficacité et à la coordination de notre équipe. Cette combinaison de méthodologies et d’outils a été cruciale pour le succès du développement de notre application de chat, assurant une progression cohérente du projet tout en restant agile face aux exigences changeantes.

L’accent a été mis sur la création d’une application facile à utiliser, en tenant compte de l’importance de l’identité décentralisée dans le contexte numérique actuel. L’expérience acquise dans ce projet a renforcé ma compréhension des technologies émergentes et de leur application pratique dans le développement de solutions numériques innovantes.

Adopter un regard critique sur ces méthodologies et outils utilisés dans le projet Hackathon. L’adoption de React a été judicieuse en raison de sa capacité à créer des interfaces utilisateur dynamiques. Cependant, il est important de noter que React nécessite une compréhension approfondie du JavaScript (car React fait un “mélange” de JavaScript avec l’HTML, .jsx ), de la gestion du “state” (useEffect(), useState()…) et peut introduire une certaine complexité, surtout pour les développeurs moins expérimentés. En raison de l’évolution constante de la technologie, la documentation ou les conseils sont parfois inefficaces.

En ce qui concerne Next.js, il est essentiel de savoir que l’adoption de telles Framework peut entraîner une dépendance à une technologie spécifique, limitant parfois la flexibilité dans le choix des solutions. Next.js est bien connu pour son “Server‐Side Rendering” et sa “Static Generation”. Cependant, dans une application de chat en temps réel, ces fonctionnalités peuvent ne pas être optimales. Les applications de chat nécessitent des mises à jour fréquentes et en temps réel, mieux gérées par des solutions basées sur le client ou des services de backend en temps réel tels que WebSocket. De plus, Next.js ne fournit pas de solution intégrée pour la gestion d’état en temps réel, ce qui est crucial pour une application de chat. Il est alors nécessaire d’intégrer des bibliothèques ou des solutions tierces comme Redux, MobX, ou des services en temps réel tels que Firebase ou Socket.IO pour gérer l’état dynamique des messages. Dans notre cas, la problématique de SSR et Static Generation a été résolue par l’utilisation des Web Nodes en tant que composants de Web 5. Ils ont permis les communications en temps réel sans dépendre exclusivement du SSR ou de la génération statique, assurant ainsi une synchronisation et une mise à jour des données en temps réel, plus adaptées aux applications de chat.

fetchMessages Une fonction pour récupérer les messages du chat en utilisant technologie Web 5

L’utilisation de Web 5 a été un choix novateur pour intégrer des fonctionnalités de communication avancées et d’identité décentralisée. Toutefois, il faut garder à l’esprit que les technologies émergentes, comme Web 5, peuvent présenter des défis en termes de documentation limitée, de soutien communautaire, et de compatibilité avec les technologies existantes. L’intégration des DIDs est une étape innovante vers l’amélioration de la sécurité et de la confidentialité des utilisateurs. Cependant, la mise en œuvre des DIDs peut être complexe, nécessitant une compréhension approfondie des principes de la cryptographie et de la gestion des identités décentralisées. De plus, il peut y avoir des défis dans la gestion de l’interopérabilité et de la compatibilité avec les systèmes d’identité existants. Impossible de faire de tests avec des outils tels que Postman, par exemple.

L’utilisation des Web Nodes pour faciliter la communication décentralisée offre une grande autonomie et réduit la dépendance aux serveurs centralisés. Cependant, cela peut également introduire des problèmes de performance et de scalabilité, en particulier dans les scénarios où un grand nombre d’utilisateurs sont connectés simultanément. Il est également important de considérer les implications de sécurité liées à l’utilisation de nœuds décentralisés, notamment en ce qui concerne la gestion des données sensibles des utilisateurs. Web 5, axé sur la décentralisation, offre un cadre où les utilisateurs ont un contrôle accru sur leurs données. Cependant, cette approche peut compliquer la mise en œuvre de mécanismes centralisés pour la gestion des données, essentiels pour assurer l’intégrité et la sécurité des informations. La conformité avec le RGPD est un aspect crucial, surtout dans un contexte où les utilisateurs génèrent et partagent des données sensibles. Le RGPD exige la transparence dans la collecte et le traitement des données personnelles, ainsi que le droit à l’oubli et la portabilité des données. Avec Web 5, bien que la décentralisation renforce la protection de la vie privée, elle pose des défis en termes de traçabilité et de suppression des données, car la nature décentralisée peut entraver la capacité à localiser et à modifier ou supprimer des données sur demande de l’utilisateur. Tout simplement, il faut dire que nous ne savons pas où se trouvent nos données. La stratégie de développement Waterfall/Kanban a offert une structure et une flexibilité équilibrées, mais cette approche hybride peut parfois mener à des confusions, notamment en ce qui concerne la répartition des tâches et la gestion des délais. Waterfall, étant un modèle plus rigide, peut limiter la capacité à s’adapter rapidement aux changements, un aspect important dans un environnement d’hackathon.

L’utilisation de Microsoft Azure comme plateforme de déploiement pour notre projet de chat a ses avantages et inconvénients. Azure offre une haute disponibilité, une sécurité robuste, et une intégration aisée avec divers services, ce qui facilite le déploiement et la gestion de l’application. Cependant, sa complexité et sa courbe d’apprentissage peuvent représenter des défis, particulièrement pour les équipes moins expérimentées dans le cloud (comme nous !). De plus, le coût et la dépendance à un fournisseur unique sont des considérations importantes, pouvant impacter la flexibilité et l’évolutivité à long terme du projet.

Avec le recul, je pense que les choix technologiques et méthodologiques ont été efficaces pour ce projet. Il est essentiel de continuer à évaluer et à réviser ces décisions pour s’assurer qu’elles restent alignées avec les objectifs du projet et l’évolution rapide du paysage technologique. L’expérience acquise m’a permis de mieux comprendre les avantages et les limites de ces outils et méthodologies, et de développer une approche plus nuancée dans la sélection des technologies et stratégies de développement à l’avenir.

Au début du semestre, alors que nous planifions le développement de nos projets, nous avons également réfléchi à la conception appropriée des applications futures. Pour cette raison, j'ai préparé un LI sur l'architecture logicielle dans lequel je présente certains des modèles les plus populaires tels que MVC, client‐serveur, modèle en couches. J’y présente également les avantages et les inconvénients de chaque modèle. En fin de compte, il s’est avéré que les applications que nous étions censés développer avaient déjà une architecture existante. Il fallait donc la comprendre, la poursuivre et surtout développer le projet en utilisant les composants. Cela rend le code beaucoup plus lisible, les changements, les modifications et les développements ultérieurs plus faciles.

composants

La structure d'application Hackathon

mvc

Un print-screen de ma présentation

Un moment de réflexion sur la technologie s'est avéré être pour moi la réalisation de mon AR: Python : Intrigué par la popularité de Python lors d'une conférence à Belgrade, j'ai décidé de mieux connaître ce langage de programmation et de comprendre pourquoi il est si populaire dans Data Science.

Une autre occasion de réfléchir à la technologie, et en particulier à la manière de l'utiliser habilement, s'est présentée dans mon autre AR: SQL. Je m'y plonge dans l'analyse des scripts SQL. La tâche, difficile au départ, s'est avérée gérable avec la bonne approche méthodique et, surtout, très instructive. D'autant plus que c'est dans cette direction que j'aimerais me spécialiser.

Connaître les principaux concepts mathématiques nécessaires à la Data Science et savoir les appliquer dans un cas d’utilisation du Machine Learning Afin d’approfondir ce sujet, nous avons décidé de suivre le cours Udemy ” Probabilité et Statistiques pour la Data Science et Business “. Chacun d’entre nous était chargé de rédiger un rapport sur l’une de ses parties. Les statistiques m’ont été confiées : Rapport Statistiques . En réalisant ce rapport de la formation sur les statistiques, j’ai appris l’importance des concepts fondamentaux en statistique et en probabilité pour la Data Science. J’ai exploré la distinction entre population et échantillon, ainsi que la différence entre paramètre et statistique. J’ai compris les divers types d’échantillonnage, comme l’échantillonnage aléatoire, stratifié, et par cluster, et l’impact du biais d’échantillonnage. Le Théorème Central Limite, un élément clé, montre comment les moyennes d’échantillons reflètent la moyenne de la population. J’ai aussi étudié les concepts d’erreur type, intervalles de confiance, tests statistiques et formulation d’hypothèses, enrichissant ainsi ma compréhension de l’analyse statistique et de son application pratique.

theoreme

Théorème Central

erreur

Exerces erreur type

er1-2

Erreur Type I et II

Chaque section de ce cours consistait en de petits quiz destinés à tester la compréhension du sujet et se terminait par une série de questions relatives à la section en question.

quiz

A la fin de ma partie, il y avait un test pour vérifier les connaissances acquises. J'ai réussi à le compléter plutôt bien.

20240120_095730

Dans la première partie concernant les données, j’ai appris que les données peuvent être continues ou catégorielles, et jouent un rôle crucial dans la prévision des comportements et décisions stratégiques. La visualisation des données est essentielle pour éviter des interprétations erronées. J’ai compris la différence entre les variables nominales, ordinales, d’intervalle et de ratio, chacune ayant des caractéristiques et usages spécifiques. La section aborde aussi la distinction entre population et échantillon, soulignant les défis et les techniques d’échantillonnage. Les mesures de tendance centrale, comme la moyenne, la médiane et le mode, ainsi que les mesures de dispersion, notamment la variance et l’écart‐type, ont également été expliquées, enrichissant ma compréhension de l’analyse des données.

Dans la partie concernant la probabilité et les distributions, qui j’ai trouvé assez complexes, j’ai appris que la probabilité est l’étude de la fréquence des événements dans des conditions incertaines. J’ai compris l’importance des probabilités conditionnelles pour évaluer comment les événements précédents influencent les probabilités futures. J’ai également découvert les distributions de probabilité telles que la normale, binomiale, et de Poisson, qui modélisent les comportements des données dans différents contextes. Cette section a mis en lumière le Théorème de Bayes, un outil essentiel pour actualiser les probabilités en fonction de nouvelles informations. Enfin, j’ai exploré les notions de variables aléatoires, leurs espérances et variances, pour comprendre comment les données peuvent être quantifiées et analysées statistiquement. Ce fut un parcours enrichissant, mais complexe, améliorant ma compréhension de la statistique et de ses applications pratiques.

Néanmoins, mes connaissances sont encore très superficielles et j'aurai certainement besoin de plus de temps pour assimiler les concepts appris.

Mes connaissances sur le sujet de Machine Learning sont encore très limitées, j’ai réussi à obtenir le plus d’informations possible lors de la conférence de Belgrade et de la formation de “Jedha” qui commence. D’après ce que j’ai déjà appris, je peux imaginer l’utilisation de certains des concepts que j’ai appris.

  • Nettoyage et préparation des données : Avant toutes les démarches liées au Data Science et Machine Learning, il est essentiel de nettoyer et de préparer les données. Cela inclut la gestion des valeurs manquantes, la normalisation, et la transformation des données.
  • Sélection d’échantillons : Les techniques d’échantillonnage et la compréhension des biais d’échantillonnage sont importantes pour s’assurer que les données de formation sont représentatives de la population générale.
  • Modélisation des données : La compréhension des distributions probabilistes aide à modéliser les données pour la Machine Learning. Par exemple, la distribution normale est souvent utilisée dans les algorithmes de Machine Learning pour des hypothèses sur les données.
  • Validation des modèles : Les tests statistiques, tels que le Test T de Student et les tests d’hypothèses, sont cruciaux pour valider les modèles de ML.
  • Inférence statistique : Les tests d’hypothèses et les intervalles de confiance aident à tirer des conclusions sur les populations à partir d’échantillons de données, comme évaluer l’efficacité d’un modèle par rapport à un autre.

Previous Post