SlideShare une entreprise Scribd logo
République Tunisienne
Ministère de l’Enseignement Supérieur et de la Recherche Scientifique
Université de Tunis El Manar
Institut Supérieur d’informatique
Rapport de Mini projet systèmes Complexes
Spécialité : Deuxième année cycle ingénieur
Mention : Sciences de l’Informatique
Spécialité : Génie Logiciel
Système Complexe d’un site de freelance
Par
Sayeh Hiba karaa Eya
Hamzaoui Balkiss Ferjani Maroua
Enseignant :Mr Ben Ishak Hichem, Enseignant,ISI Groupe
1 : IDL1
Année Universitaire : 2020-2021
I. Architecture du système complexe d’un site de freelance
Notre application dispose de plusieurs services au niveau BACK END.
• Web Api « Projet »
Entity Framework (EF) Core, la prochaine génération de l'Object Relational Mapper (ORM) est
approuvé de Microsoft et utilisé aux côtés d'ASP.NET depuis des années et s'est forgée la
réputation d'être un outil essentiel dans la boîte à outils de tout développeur pour .NET Framework,
et maintenant .NET Core.
.NET Core comprend également un système d'injection de dépendances intégré et un modèle de
classe pour les contrôleurs. Ces fonctionnalités facilitent considérablement le développement des
API REST. D’où nous allons créer une API REST « Projet » pour gérer les projets de notre
application et selon l’architecture suivante :
Réellement, nous allons y trouver deux tables Projets et domaine qu’on s’intéresse à les gérer à
travers cet web API. Ce dernier est lié au service TextMining qui présente des techniques de
Machine Learning permettant un traitement particulier des données (dans notre cas c’est détecter
les projets similaires).
• Web Api « Historique »
C’est aussi une API REST basée sur le même principe du service « Projet » connecté à sa propre
base de données, nous allons y trouver une seule table nommée service « historique » que nous
allons la gérer à travers ce service.
• Web Api « Compte »
Dans ce Service, nous allons créer une API REST simple pour servir une application cliente.
Nous utiliserons SQL Server comme base de données connectée à notre application avec EF Core,
en se basant sur le design pattern Repository qui est un modèle de référentiel qui est un modèle de
conception qui assure la médiation des données depuis et vers les couches de domaine et d'accès
aux données (comme Entity Framework) et Unit of Work Pattern qui est un modèle de conception
avec lequel nous pouvons exposer diverses repositories dans notre application. L’architecture de
ce service sera comme suit:
Nous avons également deux tables « Société » et « Client » dans SQL Server que nous allons
gérer à travers cette web API. Aussi, cette dernière est liée au service Identity Server comme étant
une solution open source .NET de gestion d’identité et de contrôle d’accès. Il repose sur les
protocoles OpenID Connect et OAuth pour mettre en place une solution favorisant la protection de
l’authentification des utilisateurs via une base de données ou des fournisseurs externes d’identité
(Google, Facebook), la gestion des sessions et la fédération (single sign-on).
• Web Api « PowerBI »
C’est une web API en relation avec Power BI service, responsable de la génération du Dashboard
et des rapports de la table historique.
• Web Api « EWS »
C’est l’api responsable de tout exchange des emails, des contacts et des calendriers reliés au
serveur de messagerie Microsoft Exchange Server.
Entre autres notre application est liée à un frontend développé avec le framework Angular.
Le frontend est exécuté sur le Serveur NodeJS lié à plusieurs services :
• Socket.io • Google Map • Power BI
II. Description détaillée des différents composants 1. Identity server
1.1. Définition
Construire un environnement sécurisé et robuste au sein de nos applications est une étape cruciale
afin de pouvoir délivrer des solutions logicielles de haute qualité et de grande valeur destinées à
nos clients.
L’évolution accrue des technologies a poussé les applications à se développer en taille et en
complexité. Aussi, la montée en puissance des architectures distribuées et de microservices sur le
backend complique encore davantage tout cela, ce qui se traduit par un environnement logiciel
beaucoup plus complexe.
Identity Server est un Framework qui nous permet d'utiliser OpenID Connect et OAuth au sein de
nos applications ASP.NET Core.
Ce Framework nous permettra de disposer, gratuitement, d'un ensemble de fonctionnalités
permettant la gestion d'identité et de contrôle d'accès.
1.2. Objectif
L’objectif ultime derrière cet outil est de résoudre certains de ces problèmes tout en vérifiant
l’identité de l’utilisateur et en contrôlant l’accès à l’aide d’OpenID Connect et d’OAuth. Nous
implémenterons le flux OAuth et utiliserons ces protocoles d'identité et d'autorisation en
implémentant IdentityServer4 en tant que fournisseur OpenID Connect, puis on va l’utiliser pour
authentifier notre client Angular SPA afin d'autoriser l'accès à une API Web ASP.NET Core
indépendante.
Il est très important d’exposer certains concepts et termes que nous aborderons dans le cadre de
cette solution.
●Contrôle d’identité et d’accès :
L'identité, comme son nom l'indique, désigne un ensemble d'attributs qu'un système informatique
peut utiliser pour représenter une personne, une organisation, une application ou un appareil.
Le contrôle d'accès , quant à lui, fait référence à une technique de sécurité utilisée pour
réglementer qui ou quoi peut accéder et utiliser les ressources (données et opérations) dans un
environnement informatique.
●Authentification et autorisation :
L'authentification désigne le processus utilisé pour déterminer si un utilisateur est bien celui qu'il
prétend être. Une fois authentifiée, l'autorisation détermine les ressources auxquelles un utilisateur
donné doit pouvoir accéder et ce qu'il est autorisé à faire avec ces ressources.
●OpenID Connect et OAuth :
OpenID Connect (OIDC) est une couche de protocole d'identité et d'authentification simple
construite au-dessus du protocole OAuth qui permet aux applications (généralement appelées
clients) de vérifier l'identité des utilisateurs finaux. OAuth, abréviation de « Open Authorization
», est un protocole standard ouvert permettant une autorisation API sécurisée. Spécifique au
domaine de la programmation, le terme API (abréviation de « Application Programming Interface
») désigne dans ce contexte une interface agissant comme un transmetteur de données entre les
différentes applications, interfaces utilisateur ou pages Web. Afin d’éviter tout risque
d’interception de ces données par des tiers et leur utilisation abusive, une autorisation des transferts
de données effectués entre ces API est par conséquent nécessaire.
Voici un diagramme montrant comment ces concepts et protocoles s'intègrent dans un scénario
d'authentification et d'autorisation de base.
1.3. Architecture
Pour résumer ce flux de travail :
1. L'utilisateur (propriétaire de la ressource) lance une demande d'authentification auprès du
serveur d'autorisation.
2. Si les informations d'identification sont valides et que tout est vérifié, le serveur
d'autorisation obtient le consentement de l'utilisateur final et accorde à l'application cliente
un jeton d'accès.
3. Le jeton d'accès est attaché aux demandes ultérieures adressées au serveur de ressources
protégées.
4. Le serveur d'autorisation valide le jeton d'accès; en cas de succès, la demande de ressources
protégées est accordée et une réponse est renvoyée à l'application cliente.
1.4. Etapes d’implémentation
1.4.1. Implémentation d’AuthServer
L' AuthServer est notre fournisseur OpenID Connect et OAuth, c'est donc un excellent point de
départ car il s'agit essentiellement du hub de notre solution.
Pour cela, nous allons créer un nouveau projet à l’aide du modèle ASP.NET Core MVC. L’étape
suivante consiste à l’amorcer avec les packages IdentityServer requis. J'ai nugetté le package
IdentityServer4 principal avec IdentityServer4.AspNetIdentity. Le deuxième package fournit une
intégration entre IdentityServer et le système d'identité d'ASP.NET Core.
Configurer IdentityServer
Une fois les packages installés, nous sommes prêts à configurer et à activer IdentityServer dans
notre projet.
Données utilisateur et identité ASP.NET Core
Nous avons également besoin d'un endroit pour stocker les données utilisateur de notre
application, des éléments tels que leurs informations d'identification, leurs informations de profil,
etc. Pour cela, nous pouvons tirer parti du système d'identité d'ASP.NET Core et utiliser l'approche
d'accès aux données par défaut avec Sql Server et Entity Framework Core gérant la persistance.
Créer le schéma de base de données avec les migrations de base Entity Framework
En utilisant les migrations code-first, nous pouvons générer notre schéma de base de données
Sql Server basé sur le modèle que nous définissons dans le code.
Ensuite, nous avons besoin d'une nouvelle classe DbContext. IdentityDbContext est le contexte
de base de données de base utilisé par Identity, nous l’avons donc étendu en créant
AppIdentityDbContext . Cette étape n'est pas obligatoire mais est utile si nous devons personnaliser
ou remplacer les valeurs par défaut du modèle d'identité.
1.4.2. Partie Front
En ce qui concerne la partie Front, nous allons travailler avec Angular. Nous allons suivre
ces étapes-là :
●Élaboration d’un flux d’inscription des utilisateurs ;
● Organisation des composants avec des modules ;
●Enregistrement du point de terminaison d’API ;
●Elaboration d’un flux de connexion ;
●Implémentation d’un service d’authentification.
2. MS Exchange Server
2.1. Définition
Microsoft Exchange Server est un groupware (logiciel de groupe de travail) pour serveur de
messagerie électronique créé par Microsoft, pour concurrencer Lotus Domino d'IBM.
Microsoft Exchange est très utilisé dans les entreprises, 52 % du marché des plates-formes de
messagerie et de collaboration d'entreprise en 2008. C'est un produit de la gamme des serveurs
Microsoft, conçu pour la messagerie électronique, mais aussi pour la gestion d'agenda, de contacts
et de tâches, qui assure le stockage des informations et permet des accès à partir de clients mobiles
(Outlook Mobile Access, Exchange Active Server Sync) et de clients web (navigateurs tels que
Internet Explorer, Mozilla Firefox, Safari).
2.2. API « Microsoft.Exchange.WebServices »
Microsoft Exchange Web Services (EWS) est une interface par laquelle vous pouvez gérer par
programme des éléments Exchange tels que le calendrier, les contacts et les e-mails. Avec EWS,
vous pouvez stocker ou récupérer toutes les données de votre compte Exchange, offrant une grande
flexibilité dans la gestion et la manipulation des données de messagerie sur un serveur Exchange
pour un utilisateur, un groupe d'utilisateurs ou une organisation entière. EWS est un outil puissant
pour transférer les données des systèmes de messagerie hérités vers les services hébergés Exchange
ou Exchange Server.
Étant donné qu'EWS est un service Web normal, nous pouvons accéder à Exchange à partir de
n'importe quelle plate-forme. Dans .NET, nous pourrions simplement ajouter une référence Web à
notre projet. Cela générerait automatiquement des classes proxy que nous pouvons utiliser pour
communiquer avec EWS. Ces cours nous permettraient d'envoyer des e-mails, recevoir des emails,
envoyer des invitations à des réunions, gérer les contacts, etc.
2.3. Architecture d’Exchange Server
2.4. Les fonctionnalités de ce système
2.4.1. Établissement d'une connexion à Exchange Server
Pour configurer une connexion à EWS, vous devrez créer un objet ExchangeService et vous
connecter au serveur d'accès au client Exchange (CAS) approprié à l'aide d'un compte disposant
d'un accès suffisant tel qu'un administrateur. Vous aurez besoin du nom de compte et du mot de
passe pour établir la connexion.
2.4.2. Gestion des éléments de contact
Après avoir établi une connexion à EWS, vous pouvez commencer à gérer vos éléments. Pour
récupérer vos éléments de contact à partir d'Exchange, vous devez spécifier le dossier Contacts et
le nombre de contacts que vous souhaitez récupérer à partir d'Exchange. On peut récupère tous les
contacts d’Exchange ; en spécifiant une valeur plus petite, vous pouvez réduire le nombre d'articles
retournés. Cela peut être particulièrement utile lors des recherches.
Si vous choisissez de mettre à jour ou de supprimer un élément, il existe une variété d'options
quant à la façon dont l'opération se déroulera. Par exemple, pour la suppression, vous pouvez
spécifier une suppression définitive et pour la mise à jour, vous pouvez définir la manière dont les
conflits doivent être gérés.
Enfin, les modifications apportées à l'élément Contact doivent être enregistrées avant que les
modifications ne soient reflétées dans le serveur Exchange. Pour enregistrer un contact, vous devez
créer un Contact objet et renseigner les Contact propriétés du nouvel objet avec les données
appropriées.
2.4.3 Gérer les éléments du calendrier
La gestion des éléments de calendrier est un peu plus complexe que l'exemple Contact. Pour les
calendriers, il existe deux types distincts : les rendez-vous et les réunions. Ces deux types de
calendrier sont accessibles via le même objet, et la détermination du fait qu'un élément est un
rendez-vous ou une réunion est déterminée par le nombre de participants.
Commençons par récupérer certains éléments de calendrier d'Exchange. La récupération des
éléments du calendrier est similaire à la récupération des éléments de contact. Vous devez spécifier
le type d'élément que vous souhaitez récupérer et vous devez également en spécifier le nombre.
Après avoir effectué certaines opérations sur vos éléments de calendrier, vous souhaiterez
peutêtre effectuer des actions telles que leur mise à jour ou leur suppression. Ceci est très similaire
à la façon dont nous avons géré les modifications des éléments de contact. Pour stocker les
éléments de calendrier, vous devez juste enregistrer.
2.4.4 Gestion des éléments de courrier électronique
Le dernier élément est le courrier électronique. Là encore, la gestion des e-mails nécessite
également un objet de service connecté. Tous les e-mails ont en commun six fonctionnalités, à part
la lecture des e-mails, et devraient être familiers à quiconque a déjà utilisé le courrier électronique
:
• Créer et envoyer des e-mails
• Transférer des e-mails
• Répondre aux e-mails
• Mettre à jour les e-mails
• Supprimer des e-mails • Enregistrer les e-mails
3. Socket IO
3.1. Définition
Socket.IO est une bibliothèque JavaScript qui permet une communication en temps réel,
bidirectionnelle et basée sur les événements. Cela signifie que Socket.IO permet une
communication instantanée entre le client et le serveur d'une application afin que vous puissiez
voir les modifications apportées à une application sans même actualiser la page. Comme son nom
l'indique, il est basé sur l'API WebSocket. Socket.IO fonctionne également sur chaque plate-forme,
navigateur ou appareil, et se concentre également sur la fiabilité et la vitesse.
De plus, les connexions effectuées via Socket.IO sont extrêmement fiables. Ils sont établis même
en présence de proxies, d'équilibreurs de charge, de pare-feu personnel ou de logiciels antivirus.
Pour cela, Socket.IO s'appuie sur Engine.IO , qui établit d'abord une connexion longue
interrogation, puis tente de passer à de meilleurs transports testés sur le côté, comme WebSocket.
3.2. Fonctionnalités
En fait, vous pouvez utiliser SocketIO pour beaucoup de choses lors de la création d'une
application. Vous pouvez vous le faire pour les notifications push, les jeux multi-joueurs, et ce dont
nous allons parler aujourd'hui, les applications de chat. La connexion persistante établie par
Socket.IO entre le client et le serveur permet aux deux parties de commencer à envoyer des données
à tout moment. Cela signifie que lorsqu'un message est créé et envoyé par un utilisateur, nous
pouvons utiliser Socket.IO pour afficher ce message à l'utilisateur qui l'a envoyé et à toute personne
à qui il a été envoyé en temps réel.
3.3. Architecture
3.4. Etape d’implémentation
La première chose que vous devez faire est npm install socket.io.Puis votre serveur doit
etre en écoute sur le port 3000 tandis que votre application Angular sera toujours servie sur 4200.
Ensuite , écouter vos sockets côté serveur , apres avoir configurer notre connexion socket sur le
client -côté de notre application angulaire. Alors maintenant, vous pouvez simplement generez
votre component chat, et un service spécifique.puis établit alors la connexion au socket de votre
serveur. Ensuite, vous souhaitez définir vos fonctions dans votre service pour gérer vos messages
de chat en temps réel. De plus, assurez-vous d'injecter votre ChatService car c'est là que nous avons
défini la fonction getMessages qui devrait recevoir tous les messages envoyés et les pousser
immédiatement dans le tableau de messages à rendre.
Il faut garantir que le socket du côté serveur écoute l'événement de nouveau message et reçoit
l'objet de message que nous avons transmis du côté client. Cela réémettra l'objet message sur
chaque socket écoutant sur un client.
Une fois que vous avez fini cette étape vous devrez rendre ces conversations privées d'une
manière ou d'une autre et visibles uniquement par certains utilisateurs. Dans notre cas, nous devons
les restreindre afin que seuls les utilisateurs membres du groupe puissent les voir.
Pour commencer, les discussions de groupe doivent être acheminées vers une page particulière
à l'aide du routage angulaire.
Vous pouvez transmettre l'identifiant en tant que paramètre et vous pouvez utiliser cet identifiant
pour restreindre la discussion de groupe aux seuls utilisateurs qui sont membres de ce groupe. Pour
cela, j'ai fait en sorte que le composant de chat ne s'affiche que lorsqu'un utilisateur est membre de
ce groupe.
Donc, à ce stade, si vous avez accès à un identifiant unique, vous pouvez créer une salle et
contraindre les messages à être envoyés uniquement à cette salle.
Pour faire notre discussion de groupe, nous allons transmettre l'identifiant unique envoyé par
notre client et demander à notre utilisateur de rejoindre une salle nommée par cet identifiant.
Cette fonction, définie dans notre serveur de chat, nous permet de transmettre l'identifiant unique
que nous obtenons de nos paramètres dans notre composant de groupe et de l'envoyer au serveur
chaque fois que l'utilisateur se connecte à une socket. Ensuite, nous devons refactoriser afin que
lors de notre événement de nouveau message, ce message ne soit renvoyé qu'aux clients qui font
partie de la salle.
Après avoir fait cela dans notre serveur, revenons du côté client pour lui faire rejoindre le groupe.
Une grande caractéristique de Socket.IO est que nous n'avons en fait pas besoin d'écrire de
fonctions spéciales pour une déconnexion. Avec Socket.IO, un socket sera supprimé d'une pièce à
chaque fois qu'il est déconnecté.
Un autre avantage de Socket.IO est que si une connexion est perdue, un client déconnecté
essaiera de se reconnecter pour toujours jusqu'à ce que le serveur soit à nouveau disponible. Ceci
est maintenu via un mécanisme de pulsation, permettant à la fois au serveur et au client de savoir
quand l'autre ne répond plus.
4. GoogleMap
4.1. Définition
Google Maps est un service Web qui fournit des informations détaillées sur les régions
géographiques et les sites du monde entier. En plus des cartes routières conventionnelles, Google
Maps offre des vues aériennes et par satellite de nombreux endroits. Dans certaines villes, Google
Maps propose des vues de rue comprenant des photographies prises à partir de véhicules.
Google Maps propose plusieurs services dans le cadre de la plus grande application Web, comme
suit :
• Un planificateur d'itinéraire propose des itinéraires pour les conducteurs, les motards,
les marcheurs et les utilisateurs des transports en commun qui souhaitent effectuer un trajet
d'un endroit spécifique à un autre.
• L'interface du programme d'application ( API ) de Google Maps permet aux
administrateurs de sites Web d'intégrer Google Maps dans un site propriétaire tel qu'un guide
immobilier ou une page de service communautaire.
• Google Maps pour mobile propose un service de localisation pour les automobilistes
qui utilise la localisation GPS (Global Positioning System ) de l'appareil mobile (si disponible)
ainsi que les données des réseaux sans fil et cellulaires .
• Google Street View permet aux utilisateurs de visualiser et de parcourir des images
panoramiques horizontales et verticales au niveau de la rue de différentes villes du monde.
• Des services supplémentaires offrent des images de la lune, de Mars et du ciel pour
les astronomes amateurs.
4.3. Architecture
4.4. Etape d’implémentation
Les cartes Google sont utilisées dans de nombreuses applications car un emplacement avec des
cartes visibles joue un rôle important pour rendre les informations plus conviviales. Les cartes
intégrées peuvent afficher des marqueurs de localisation ou activer la sélection visuelle de l'adresse
ou afficher des avis de localisation géographique, etc.
Dans cet partie, nous ajouterons Google Maps dans un projet angulaire en utilisant le module
Angular Google Maps(AGM). L'ajout / l'intégration de Google Maps dans un projet Angular
devient très simple en utilisant ce module :
Etape 1 : Installez Angular Google Maps
Pour utiliser Google Maps dans l'application Angular, installez le package « @agm/core ».
Etape 2 : Types d'installation pour GoogleMaps
Ensuite, nous installerons Google Maps bibliothèque de types. Puis, ouvrez le fichier «
tsconfig.app.json » déjà disponible à la racine, ajoutez maintenant « Google Maps » dans le
tableau de types.
Etape 3 : Mettre à jour le module d'application
Ensuite, ouvrez le « app.module.ts » fichier, import « AgmCoreModule » puis mettez à jour le
tableau « imports ».
Lors de l'importation de « AgmCoreModule », nous devons définir notre Google Console Clé API
sous une propriété « apiKey ». Comme nous ont activé la bibliothèque de « places » requise pour
effectuer une recherche de lieux à l'aide de la barre de recherche.
Etape 4 : Obtenir la clé API Google
Premièrement, Aller à la Google Console portail. Vous devez vous inscrire / signer avec
vos informations d'identification Google. Deuxièmement, sélectionnez le projet ou créez-en un
nouveau. Vous devrez peut-être remplir les détails de paiement conformément aux nouvelles
règles. Mais ils fournissent des crédits gratuits afin que vous puissiez facilement choisir à des fins
de développement. Troisièmement, après avoir créé et sélectionné le projet, cliquez sur « Créer des
identifiants » puis « APIKeys ». Cliquez ensuite sur « Restreindre la clé ». Finalement, activer «
API Maps Javascript » et « API Places ». Assurez-vous d'avoir activé trois types de services d'API
sur votre clé. API JavaScript Maps (Afficher la carte), API Places (Résultats de la recherche de
lieux) & API de géocodage (Convertir Lat & Long en adresse)
Etape 5 : Ajout de Google Maps dans le composant
Pour créer une carte Google dans le modèle, nous ajoutons le < agm-map/> composant avec des
propriétés de liaison pour la définition latitude, longitude, zoom et autres configurations. La carte
aura également un marqueur, qui est créé en ajoutant le < agm-marker /> composant.
Etape 6 : Mettre à jour le modèle d'application
Ajoutez le modèle AGM dans le composant App pour afficher Google Map de base avec
l'emplacement actuel. Pour obtenir les coordonnées actuelles telles que la longitude et la latitude,
nous utiliserons service de géolocalisation dans le navigateur.
Etape 7 : Mettre à jour la classe de composant
Lors du chargement des composants, nous appellerons « navigator.geolocation » Service API pour
obtenir la position actuelle de l'utilisateur. Le « SetCurrentLocation() » est la méthode récupérera
la latitude et la longitude pour définir Google Map sur l'emplacement actuel. Puis, Ajouter la
hauteur de la carte dans « app.component.scss ».
Etape 8 : Barre de recherche de lieux
Dans « app.component.html » nous allons maintenant ajouter une barre de recherche avec des
informations d'adresse et de latitude et longitude. Le marqueur peut maintenant être déplacé afin
que l'utilisateur puisse le faire glisser vers l'emplacement souhaité.
Etape 9 : Mettre à jour le modèle de composant d'application
Etape 10 : Mettre à jour la classe de composant
Dans « app.component.ts » nous ajouterons la méthode de saisie semi-automatique de Google map
pour renvoyer l'ensemble de données d'adresse. Le service de localisation de géocodeur renverra
l'adresse en fonction de la latitude et de la longitude. La variable de référence du modèle « #search
» dans le champ de saisie est utilisé pour trouver les événements clés pour la récupération des
adresses en fonction de localisation actuelle.
5. TextMining
Nous avons conçu un service de « TextMining » qui a pour but principalement de comparer
chaque nouveau projet déposé par un client avec les projets qui sont en attente de traitement,
chercher les similitudes pour le classifier dans la base donnée avec les projets qui lui sont
similaires, selon un domaine bien précis.
Ce service se base principalement sur des algorithmes d’apprentissage automatique par réseaux
de neurones “Machine Learning”.
Ces algorithmes s'opposent aussi aux algorithmes d'apprentissage classiques du fait du nombre
de transformations réalisées sur les données entre la couche d'entrée et la couche de sortie.
En effet, ils tordent l'espace et permettent de représenter avec pertinence des phrases qui auraient
des représentations très similaires avec les méthodes traditionnelles.
Par exemple, si on compare les deux phrases « si déçu par le film, n'allez pas le voir, vraiment je
ne l'aime pas ! » et « j'aime ce film ! allez le voir, vous ne serez pas déçu », elles contiennent
quasiment les mêmes mots mais ont des sens opposés. Avec les techniques d'apprentissage
classiques, leurs représentations sont très proches et un algorithme de classification n'arrivera pas
à les différencier.
5.1. Architecture
C’est dans cette optique que nous avons opté à l’utilisation de NLTK qui est un puissant package
Python et qui permet d’analyser, prétraiter et comprendre la sémantique du texte écrit.
5.1. Preprocessing
La première étape du traitement des données permet de récupérer le texte sous forme XML et le
nettoyer afin de pouvoir l'utiliser ultérieurement dans vos algorithmes.
Cette étape comporte 5 phases essentielles :
5.1.1. Tokenisation
La tokenisation est la première étape de l'analyse de texte. Le processus de décomposition d'un
paragraphe de texte en petits morceaux, des mots ou des phrases. Le jeton est une entité unique qui
constitue des blocs de construction pour une phrase ou un paragraphe.
Résultat :
5.1.2 Stopwrods
Stop words ou Mots vides considérés comme du bruit dans le texte. Ce sont les mots très courants
dans la langue étudiée ("et", "à", "le"... en français) qui n'apportent pas de valeur informative pour
la compréhension du "sens" d'un document.
Dans NLTK pour supprimer les mots vides, vous devez créer une liste de mots vides et filtrer
votre liste de mots avec ces mots vides.
5.1.3. Lemmatizer
La lemmatisation réduit les mots à leur mot de base, qui est des lemmes linguistiquement
corrects. Il transforme le mot racine à l'aide du vocabulaire et de l'analyse morphologique.
Dans le processus de lemmatisation, on transforme donc « suis » en « être » et « attentifs » en
« attentif ».
5.1.4. POS-tragger
Ce tagueur traite une séquence de mots et attache sa nature à chaque mot rencontré. Par
exemple : [(et, 'CC'), ('permet', 'VB'), ('complètement', ADV)]
• CC : Conjonction de coordination
• VB : Verbe
• Complétement : adverbe
5.2. Word sense disambiguation
La deuxième étape c’est l’élimination de l’ambiguïté pour un mot, en utilisant les mots de
contexte entourant le mot cible et ses parents, tels que les synonymes, les hypernymes, les
hyponymes, les méronymes et les holonymes.
Cette étape nécessite l’importation de la bibliothèque Wordnet. Wordnet est un dictionnaire qui
fait partie de Natural Language Tool Kit (NLTK) pour Python.
Dans WordNet, des mots similaires sont regroupés dans un ensemble connu sous le nom de
Synset. Les mots d'un Synset sont connus sous le nom de Lemmes.
Dans cet exemple, les synset du mot « computer » sont les suivant :
>>> wordnet.synset("computer.n.01").lemma_names()
['computer', 'computing_machine', 'computing_device', 'data_processor',
'electronic_computer', 'information_processing_system']
5.3. Semantic feature selection
C’est une méthode de sélection de caractéristiques discriminantes et sémantiques pour la
catégorisation de texte, elle est basée également sur Wordnet.
La categorisation résulte à des vecteurs contenant des mots de la même catégorie.
5.4. Semantic similarity calculation
Cette étape consiste à l'évaluation de la similitude sémantique des mots et des concepts.
WordNet, est utilisé pour des applications de ce type.
La valeur de similitude des mots dans WordNet est calculée entre chaque paire de mots en
considérant la profondeur du sous-nombre de mots et le chemin le plus court entre eux.
En général, la similitude sémantique est une mesure de la distance conceptuelle entre deux objets,
en fonction de la correspondance de leur signification.
La comparaison des projets va être calculée comme suit, plus la valeur de similitude en
pourcentage est importante, plus les projets sont similares.
1. Power BI
6.1. Définition
Power BI est un outil puissant qui nous aide à créer des informations rapides et interactives à
partir d'un large éventail de sources de données. Nous aborderons ici le service Power BI, qui est
un SaaS , et comment intégrer des tableaux de bord, des rapports et des tuiles Power BI dans des
applications Web.
Power BI peut être intégré dans une application de deux manières :
• Incorporation pour les clients : Ceci permet d'incorporer des tableaux de bord et des
rapports aux utilisateurs qui n'ont pas de compte Power BI. Les API Power BI sont appelées
en fonction du compte principal de l'application et les rapports / tableaux de bord sont mis
à la disposition des utilisateurs de l'application.
• Incorporation pour votre organisation : Ceci permet d'incorporer des tableaux de bord /
rapports pour les utilisateurs de votre organisation, qui ont des comptes Power BI.
6.2. Incorporation pour les clients
6.2.1. Architecture Power BI
6.2.2. Description du flux du travail
1. Lorsque l'utilisateur parcourt l'interface utilisateur, il appelle l'API pour le jeton d'intégration.
2. L'API authentifie l'application à l'aide des informations d'identification du compte principal
et de la demande de jetons.
3. Azure AD renvoie le jeton en cas de validation réussie, sinon rejetez la demande.
4. Le jeton incorporé est renvoyé à l'interface utilisateur à partir de l'API.
5. L'interface utilisateur appelle l'API Power BI pour obtenir les données spécifiques au rapport
avec le jeton.
6. L'API Power BI renvoie les données de rapport et l'interface utilisateur les affiche dans la
page Web.
7. (Facultatif) Autorisation utilisateur via des rôles personnalisés stockés sur le serveur SQL (ou
par tout autre moyen)
6.2.3. Conditions Préalables
Avant de commencer ce didacticiel, vérifiez que vous disposez à la fois des dépendances Power
BI et du code répertoriées ci-dessous :
Dépendances Power BI
1. Propre locataire « Azure Active Directory » .
2. Pour authentifier votre application par rapport à Power BI, :
Principal de service : Un objet principal de service Azure Active Directory (Azure AD) qui
permet à Azure AD d'authentifier votre application.
6.2.4. Configuration de l’environnement de développement analytique intégré
Étape 1 : Sélectionner la méthode d'authentification
Étape 2 : Inscrire une application Azure AD
Étape 3 : Créer un espace de travail Power BI
Étape 4 : Créer et publier un rapport Power BI
Étape 5 : Obtenez les valeurs des paramètres d'intégration
• Identité du client
• Secret du client
• ID de l'espace de travail
• Identifiant du rapport
• ID du locataire
• Nom d'utilisateur et mot de passe Power BI
Étape 6 - Accès à l'API du principal du service
Étape 7 - Activer l'accès à l'espace de travail Étape
8 - Intégrez votre contenu
6.3. Incorporation pour les organisations
6.3.1. Architecture Power BI
6.3.2. Description du flux du travail
1. Lorsque l'utilisateur parcourt l'interface utilisateur, il est invité à se connecter avec ses
informations d'identification Power Bi.
2. Les informations d'identification de l'utilisateur sont validées avec Azure AD pour générer
des jetons d'accès.
3. L'interface utilisateur appelle l'API Power BI pour obtenir les données spécifiques au rapport
avec le jeton.
4. L'API Power BI renvoie les données de rapport et l'interface utilisateur les affiche dans la
page Web.
6.3.3. Conditions Préalables
Avant de commencer ce didacticiel, vérifiez que vous disposez à la fois des dépendances Power BI
et du code répertoriées ci-dessous :
Dépendances Power BI
• Votre propre locataire « Azure Active Directory » .
• L'une des licences suivantes :
 Power BI Pro
 Premium par utilisateur (PPU)
6.3.4. Configuration de l’environnement de développement analytique intégré
Étape 1 - Inscrire une application Azure AD
Étape 2 - Créer un espace de travail Power BI
Étape 3 - Créer et publier un rapport Power BI
Étape 4 - Obtenez les valeurs des paramètres d'intégration
• Identité du client
• Secret du client
• ID de l'espace de travail
• Identifiant du rapport
Étape 5 - Intégrez votre contenu

Contenu connexe

Tendances

Construire des Applications Web Performantes - Rule Book Webinar
Construire des Applications Web Performantes - Rule Book WebinarConstruire des Applications Web Performantes - Rule Book Webinar
Construire des Applications Web Performantes - Rule Book Webinar
Amazon Web Services
 
Track 2- Atelier 4 - Architecturez pour de la haute disponibilité
Track 2- Atelier 4 - Architecturez pour de la haute disponibilitéTrack 2- Atelier 4 - Architecturez pour de la haute disponibilité
Track 2- Atelier 4 - Architecturez pour de la haute disponibilité
Amazon Web Services
 
Deep Dive AWS CloudTrail
Deep Dive AWS CloudTrailDeep Dive AWS CloudTrail
Deep Dive AWS CloudTrail
Julien SIMON
 
Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...
Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...
Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...
sebastienmoreno
 
VPS vers IaaS AWS
VPS vers IaaS AWSVPS vers IaaS AWS
VPS vers IaaS AWS
Christophe Chaudier
 
Présentation des services AWS
Présentation des services AWSPrésentation des services AWS
Présentation des services AWS
Julien SIMON
 
Chiffrez vos données avec AWS KMS et avec AWS CloudHSM
Chiffrez vos données avec AWS KMS et avec AWS CloudHSMChiffrez vos données avec AWS KMS et avec AWS CloudHSM
Chiffrez vos données avec AWS KMS et avec AWS CloudHSM
Julien SIMON
 
Azure Services Platform
Azure Services PlatformAzure Services Platform
Azure Services PlatformGregory Renard
 
Sécurite Amazon Web Services
Sécurite Amazon Web ServicesSécurite Amazon Web Services
Sécurite Amazon Web Services
Aurélien Pelletier
 
4D Summit Europe 2016 - Conférence d'A&C Consulting : "Stocker des données su...
4D Summit Europe 2016 - Conférence d'A&C Consulting : "Stocker des données su...4D Summit Europe 2016 - Conférence d'A&C Consulting : "Stocker des données su...
4D Summit Europe 2016 - Conférence d'A&C Consulting : "Stocker des données su...
Nathalie Richomme
 
Modèle de sécurité AWS
Modèle de sécurité AWSModèle de sécurité AWS
Modèle de sécurité AWS
Julien SIMON
 
Authentification et autorisation d'accès avec AWS IAM
Authentification et autorisation d'accès avec AWS IAMAuthentification et autorisation d'accès avec AWS IAM
Authentification et autorisation d'accès avec AWS IAM
Julien SIMON
 
Présentation d'Amazon Web Services - Human Talks Grenoble
Présentation d'Amazon Web Services - Human Talks GrenoblePrésentation d'Amazon Web Services - Human Talks Grenoble
Présentation d'Amazon Web Services - Human Talks Grenoble
Bastien Libersa
 
Un Voyage dans le Cloud - Dev & Test
Un Voyage dans le Cloud - Dev & Test Un Voyage dans le Cloud - Dev & Test
Un Voyage dans le Cloud - Dev & Test
Amazon Web Services
 
AWS Summit Paris - Track 2 - Session 2 - Préparez-vous à l'imprévu
AWS Summit Paris - Track 2 - Session 2 - Préparez-vous à l'imprévuAWS Summit Paris - Track 2 - Session 2 - Préparez-vous à l'imprévu
AWS Summit Paris - Track 2 - Session 2 - Préparez-vous à l'imprévu
Amazon Web Services
 
Viadeo - Cost Driven Development
Viadeo - Cost Driven DevelopmentViadeo - Cost Driven Development
Viadeo - Cost Driven Development
Julien SIMON
 
Java in ze Cloud - INSA - nov. 2012
Java in ze Cloud - INSA - nov. 2012Java in ze Cloud - INSA - nov. 2012
Java in ze Cloud - INSA - nov. 2012
Alexis Hassler
 
Cloud computing presentation
Cloud computing presentationCloud computing presentation
Cloud computing presentation
Ahmed rebai
 
Introduction à la sécurité dans ASP.NET Core
Introduction à la sécurité dans ASP.NET CoreIntroduction à la sécurité dans ASP.NET Core
Introduction à la sécurité dans ASP.NET Core
MSDEVMTL
 
Un Voyage dans le Cloud: Qu'est-ce que AWS?
Un Voyage dans le Cloud: Qu'est-ce que AWS?Un Voyage dans le Cloud: Qu'est-ce que AWS?
Un Voyage dans le Cloud: Qu'est-ce que AWS?
Amazon Web Services
 

Tendances (20)

Construire des Applications Web Performantes - Rule Book Webinar
Construire des Applications Web Performantes - Rule Book WebinarConstruire des Applications Web Performantes - Rule Book Webinar
Construire des Applications Web Performantes - Rule Book Webinar
 
Track 2- Atelier 4 - Architecturez pour de la haute disponibilité
Track 2- Atelier 4 - Architecturez pour de la haute disponibilitéTrack 2- Atelier 4 - Architecturez pour de la haute disponibilité
Track 2- Atelier 4 - Architecturez pour de la haute disponibilité
 
Deep Dive AWS CloudTrail
Deep Dive AWS CloudTrailDeep Dive AWS CloudTrail
Deep Dive AWS CloudTrail
 
Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...
Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...
Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...
 
VPS vers IaaS AWS
VPS vers IaaS AWSVPS vers IaaS AWS
VPS vers IaaS AWS
 
Présentation des services AWS
Présentation des services AWSPrésentation des services AWS
Présentation des services AWS
 
Chiffrez vos données avec AWS KMS et avec AWS CloudHSM
Chiffrez vos données avec AWS KMS et avec AWS CloudHSMChiffrez vos données avec AWS KMS et avec AWS CloudHSM
Chiffrez vos données avec AWS KMS et avec AWS CloudHSM
 
Azure Services Platform
Azure Services PlatformAzure Services Platform
Azure Services Platform
 
Sécurite Amazon Web Services
Sécurite Amazon Web ServicesSécurite Amazon Web Services
Sécurite Amazon Web Services
 
4D Summit Europe 2016 - Conférence d'A&C Consulting : "Stocker des données su...
4D Summit Europe 2016 - Conférence d'A&C Consulting : "Stocker des données su...4D Summit Europe 2016 - Conférence d'A&C Consulting : "Stocker des données su...
4D Summit Europe 2016 - Conférence d'A&C Consulting : "Stocker des données su...
 
Modèle de sécurité AWS
Modèle de sécurité AWSModèle de sécurité AWS
Modèle de sécurité AWS
 
Authentification et autorisation d'accès avec AWS IAM
Authentification et autorisation d'accès avec AWS IAMAuthentification et autorisation d'accès avec AWS IAM
Authentification et autorisation d'accès avec AWS IAM
 
Présentation d'Amazon Web Services - Human Talks Grenoble
Présentation d'Amazon Web Services - Human Talks GrenoblePrésentation d'Amazon Web Services - Human Talks Grenoble
Présentation d'Amazon Web Services - Human Talks Grenoble
 
Un Voyage dans le Cloud - Dev & Test
Un Voyage dans le Cloud - Dev & Test Un Voyage dans le Cloud - Dev & Test
Un Voyage dans le Cloud - Dev & Test
 
AWS Summit Paris - Track 2 - Session 2 - Préparez-vous à l'imprévu
AWS Summit Paris - Track 2 - Session 2 - Préparez-vous à l'imprévuAWS Summit Paris - Track 2 - Session 2 - Préparez-vous à l'imprévu
AWS Summit Paris - Track 2 - Session 2 - Préparez-vous à l'imprévu
 
Viadeo - Cost Driven Development
Viadeo - Cost Driven DevelopmentViadeo - Cost Driven Development
Viadeo - Cost Driven Development
 
Java in ze Cloud - INSA - nov. 2012
Java in ze Cloud - INSA - nov. 2012Java in ze Cloud - INSA - nov. 2012
Java in ze Cloud - INSA - nov. 2012
 
Cloud computing presentation
Cloud computing presentationCloud computing presentation
Cloud computing presentation
 
Introduction à la sécurité dans ASP.NET Core
Introduction à la sécurité dans ASP.NET CoreIntroduction à la sécurité dans ASP.NET Core
Introduction à la sécurité dans ASP.NET Core
 
Un Voyage dans le Cloud: Qu'est-ce que AWS?
Un Voyage dans le Cloud: Qu'est-ce que AWS?Un Voyage dans le Cloud: Qu'est-ce que AWS?
Un Voyage dans le Cloud: Qu'est-ce que AWS?
 

Similaire à Sayeh hiba-karaa-eya-ferjani-maroua-hamzaoui-balkiss-sys-complexes

Provider Hosted app… Quel intérêt pour l’entreprise
Provider Hosted app…Quel intérêt pour l’entrepriseProvider Hosted app…Quel intérêt pour l’entreprise
Provider Hosted app… Quel intérêt pour l’entrepriseWalid Hadjadj
 
A la découverte d'Azure Logic App
A la découverte d'Azure Logic AppA la découverte d'Azure Logic App
A la découverte d'Azure Logic App
Radoine Douhou
 
La plateforme JEE
La plateforme JEELa plateforme JEE
La plateforme JEE
Sabri Bouchlema
 
Architectures n-tiers
Architectures n-tiersArchitectures n-tiers
Architectures n-tiers
Heithem Abbes
 
Vous avez dit protocoles Web d'authentification et d'autorisation ! De quoi p...
Vous avez dit protocoles Web d'authentification et d'autorisation ! De quoi p...Vous avez dit protocoles Web d'authentification et d'autorisation ! De quoi p...
Vous avez dit protocoles Web d'authentification et d'autorisation ! De quoi p...
Philippe Beraud
 
Développement d'applications pour la plateforme Java EE
Développement d'applications pour la plateforme Java EEDéveloppement d'applications pour la plateforme Java EE
Développement d'applications pour la plateforme Java EE
Sabri Bouchlema
 
Retours d'expériences et bonnes pratiques sur l'implémentation d'ADFS dans Sh...
Retours d'expériences et bonnes pratiques sur l'implémentation d'ADFS dans Sh...Retours d'expériences et bonnes pratiques sur l'implémentation d'ADFS dans Sh...
Retours d'expériences et bonnes pratiques sur l'implémentation d'ADFS dans Sh...
Microsoft Technet France
 
Développez votre application Facebook avec Windows Azure
Développez votre application Facebook avec Windows AzureDéveloppez votre application Facebook avec Windows Azure
Développez votre application Facebook avec Windows Azure
Microsoft
 
Spring Boot RestApi.pptx
Spring Boot RestApi.pptxSpring Boot RestApi.pptx
De A à Z : Choisir une architecture pour sa solution applicative
De A à Z : Choisir une architecture pour sa solution applicativeDe A à Z : Choisir une architecture pour sa solution applicative
De A à Z : Choisir une architecture pour sa solution applicative
Microsoft
 
GtugDakar AppEngine, Gwt
GtugDakar AppEngine, GwtGtugDakar AppEngine, Gwt
GtugDakar AppEngine, Gwt
hkairi
 
Java Entreprise Edition
Java Entreprise EditionJava Entreprise Edition
Java Entreprise Edition
Sabri Bouchlema
 
APIs dans Azure : serverless ou pas serverless?
APIs dans Azure : serverless ou pas serverless?APIs dans Azure : serverless ou pas serverless?
APIs dans Azure : serverless ou pas serverless?
Marius Zaharia
 
Aspnetcore introduction
Aspnetcore introductionAspnetcore introduction
Aspnetcore introduction
Michel Bruchet
 
M20487 formation-developper-windows-azure-et-les-services-web
M20487 formation-developper-windows-azure-et-les-services-webM20487 formation-developper-windows-azure-et-les-services-web
M20487 formation-developper-windows-azure-et-les-services-webCERTyou Formation
 
Hébergement du protocole kerberos dans un cloud
Hébergement du protocole kerberos dans un cloudHébergement du protocole kerberos dans un cloud
Hébergement du protocole kerberos dans un cloud
MouadNahri
 
Windows Azure : Modèle hybride et réversibilité
Windows Azure : Modèle hybride et réversibilitéWindows Azure : Modèle hybride et réversibilité
Windows Azure : Modèle hybride et réversibilité
Microsoft Technet France
 
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir ArezkiGab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
Samir Arezki ☁
 
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir ArezkiGab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
AZUG FR
 

Similaire à Sayeh hiba-karaa-eya-ferjani-maroua-hamzaoui-balkiss-sys-complexes (20)

Azure Mesh Et Surface
Azure Mesh Et SurfaceAzure Mesh Et Surface
Azure Mesh Et Surface
 
Provider Hosted app… Quel intérêt pour l’entreprise
Provider Hosted app…Quel intérêt pour l’entrepriseProvider Hosted app…Quel intérêt pour l’entreprise
Provider Hosted app… Quel intérêt pour l’entreprise
 
A la découverte d'Azure Logic App
A la découverte d'Azure Logic AppA la découverte d'Azure Logic App
A la découverte d'Azure Logic App
 
La plateforme JEE
La plateforme JEELa plateforme JEE
La plateforme JEE
 
Architectures n-tiers
Architectures n-tiersArchitectures n-tiers
Architectures n-tiers
 
Vous avez dit protocoles Web d'authentification et d'autorisation ! De quoi p...
Vous avez dit protocoles Web d'authentification et d'autorisation ! De quoi p...Vous avez dit protocoles Web d'authentification et d'autorisation ! De quoi p...
Vous avez dit protocoles Web d'authentification et d'autorisation ! De quoi p...
 
Développement d'applications pour la plateforme Java EE
Développement d'applications pour la plateforme Java EEDéveloppement d'applications pour la plateforme Java EE
Développement d'applications pour la plateforme Java EE
 
Retours d'expériences et bonnes pratiques sur l'implémentation d'ADFS dans Sh...
Retours d'expériences et bonnes pratiques sur l'implémentation d'ADFS dans Sh...Retours d'expériences et bonnes pratiques sur l'implémentation d'ADFS dans Sh...
Retours d'expériences et bonnes pratiques sur l'implémentation d'ADFS dans Sh...
 
Développez votre application Facebook avec Windows Azure
Développez votre application Facebook avec Windows AzureDéveloppez votre application Facebook avec Windows Azure
Développez votre application Facebook avec Windows Azure
 
Spring Boot RestApi.pptx
Spring Boot RestApi.pptxSpring Boot RestApi.pptx
Spring Boot RestApi.pptx
 
De A à Z : Choisir une architecture pour sa solution applicative
De A à Z : Choisir une architecture pour sa solution applicativeDe A à Z : Choisir une architecture pour sa solution applicative
De A à Z : Choisir une architecture pour sa solution applicative
 
GtugDakar AppEngine, Gwt
GtugDakar AppEngine, GwtGtugDakar AppEngine, Gwt
GtugDakar AppEngine, Gwt
 
Java Entreprise Edition
Java Entreprise EditionJava Entreprise Edition
Java Entreprise Edition
 
APIs dans Azure : serverless ou pas serverless?
APIs dans Azure : serverless ou pas serverless?APIs dans Azure : serverless ou pas serverless?
APIs dans Azure : serverless ou pas serverless?
 
Aspnetcore introduction
Aspnetcore introductionAspnetcore introduction
Aspnetcore introduction
 
M20487 formation-developper-windows-azure-et-les-services-web
M20487 formation-developper-windows-azure-et-les-services-webM20487 formation-developper-windows-azure-et-les-services-web
M20487 formation-developper-windows-azure-et-les-services-web
 
Hébergement du protocole kerberos dans un cloud
Hébergement du protocole kerberos dans un cloudHébergement du protocole kerberos dans un cloud
Hébergement du protocole kerberos dans un cloud
 
Windows Azure : Modèle hybride et réversibilité
Windows Azure : Modèle hybride et réversibilitéWindows Azure : Modèle hybride et réversibilité
Windows Azure : Modèle hybride et réversibilité
 
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir ArezkiGab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
 
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir ArezkiGab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
 

Sayeh hiba-karaa-eya-ferjani-maroua-hamzaoui-balkiss-sys-complexes

  • 1. République Tunisienne Ministère de l’Enseignement Supérieur et de la Recherche Scientifique Université de Tunis El Manar Institut Supérieur d’informatique Rapport de Mini projet systèmes Complexes Spécialité : Deuxième année cycle ingénieur Mention : Sciences de l’Informatique Spécialité : Génie Logiciel Système Complexe d’un site de freelance Par Sayeh Hiba karaa Eya Hamzaoui Balkiss Ferjani Maroua Enseignant :Mr Ben Ishak Hichem, Enseignant,ISI Groupe 1 : IDL1 Année Universitaire : 2020-2021
  • 2. I. Architecture du système complexe d’un site de freelance
  • 3. Notre application dispose de plusieurs services au niveau BACK END. • Web Api « Projet » Entity Framework (EF) Core, la prochaine génération de l'Object Relational Mapper (ORM) est approuvé de Microsoft et utilisé aux côtés d'ASP.NET depuis des années et s'est forgée la réputation d'être un outil essentiel dans la boîte à outils de tout développeur pour .NET Framework, et maintenant .NET Core. .NET Core comprend également un système d'injection de dépendances intégré et un modèle de classe pour les contrôleurs. Ces fonctionnalités facilitent considérablement le développement des API REST. D’où nous allons créer une API REST « Projet » pour gérer les projets de notre application et selon l’architecture suivante : Réellement, nous allons y trouver deux tables Projets et domaine qu’on s’intéresse à les gérer à travers cet web API. Ce dernier est lié au service TextMining qui présente des techniques de Machine Learning permettant un traitement particulier des données (dans notre cas c’est détecter les projets similaires).
  • 4. • Web Api « Historique » C’est aussi une API REST basée sur le même principe du service « Projet » connecté à sa propre base de données, nous allons y trouver une seule table nommée service « historique » que nous allons la gérer à travers ce service. • Web Api « Compte » Dans ce Service, nous allons créer une API REST simple pour servir une application cliente. Nous utiliserons SQL Server comme base de données connectée à notre application avec EF Core, en se basant sur le design pattern Repository qui est un modèle de référentiel qui est un modèle de conception qui assure la médiation des données depuis et vers les couches de domaine et d'accès aux données (comme Entity Framework) et Unit of Work Pattern qui est un modèle de conception avec lequel nous pouvons exposer diverses repositories dans notre application. L’architecture de ce service sera comme suit: Nous avons également deux tables « Société » et « Client » dans SQL Server que nous allons gérer à travers cette web API. Aussi, cette dernière est liée au service Identity Server comme étant une solution open source .NET de gestion d’identité et de contrôle d’accès. Il repose sur les
  • 5. protocoles OpenID Connect et OAuth pour mettre en place une solution favorisant la protection de l’authentification des utilisateurs via une base de données ou des fournisseurs externes d’identité (Google, Facebook), la gestion des sessions et la fédération (single sign-on). • Web Api « PowerBI » C’est une web API en relation avec Power BI service, responsable de la génération du Dashboard et des rapports de la table historique. • Web Api « EWS » C’est l’api responsable de tout exchange des emails, des contacts et des calendriers reliés au serveur de messagerie Microsoft Exchange Server. Entre autres notre application est liée à un frontend développé avec le framework Angular. Le frontend est exécuté sur le Serveur NodeJS lié à plusieurs services : • Socket.io • Google Map • Power BI II. Description détaillée des différents composants 1. Identity server 1.1. Définition Construire un environnement sécurisé et robuste au sein de nos applications est une étape cruciale afin de pouvoir délivrer des solutions logicielles de haute qualité et de grande valeur destinées à nos clients. L’évolution accrue des technologies a poussé les applications à se développer en taille et en complexité. Aussi, la montée en puissance des architectures distribuées et de microservices sur le backend complique encore davantage tout cela, ce qui se traduit par un environnement logiciel beaucoup plus complexe. Identity Server est un Framework qui nous permet d'utiliser OpenID Connect et OAuth au sein de nos applications ASP.NET Core. Ce Framework nous permettra de disposer, gratuitement, d'un ensemble de fonctionnalités permettant la gestion d'identité et de contrôle d'accès.
  • 6. 1.2. Objectif L’objectif ultime derrière cet outil est de résoudre certains de ces problèmes tout en vérifiant l’identité de l’utilisateur et en contrôlant l’accès à l’aide d’OpenID Connect et d’OAuth. Nous implémenterons le flux OAuth et utiliserons ces protocoles d'identité et d'autorisation en implémentant IdentityServer4 en tant que fournisseur OpenID Connect, puis on va l’utiliser pour authentifier notre client Angular SPA afin d'autoriser l'accès à une API Web ASP.NET Core indépendante. Il est très important d’exposer certains concepts et termes que nous aborderons dans le cadre de cette solution. ●Contrôle d’identité et d’accès : L'identité, comme son nom l'indique, désigne un ensemble d'attributs qu'un système informatique peut utiliser pour représenter une personne, une organisation, une application ou un appareil. Le contrôle d'accès , quant à lui, fait référence à une technique de sécurité utilisée pour réglementer qui ou quoi peut accéder et utiliser les ressources (données et opérations) dans un environnement informatique. ●Authentification et autorisation : L'authentification désigne le processus utilisé pour déterminer si un utilisateur est bien celui qu'il prétend être. Une fois authentifiée, l'autorisation détermine les ressources auxquelles un utilisateur donné doit pouvoir accéder et ce qu'il est autorisé à faire avec ces ressources. ●OpenID Connect et OAuth : OpenID Connect (OIDC) est une couche de protocole d'identité et d'authentification simple construite au-dessus du protocole OAuth qui permet aux applications (généralement appelées clients) de vérifier l'identité des utilisateurs finaux. OAuth, abréviation de « Open Authorization », est un protocole standard ouvert permettant une autorisation API sécurisée. Spécifique au domaine de la programmation, le terme API (abréviation de « Application Programming Interface ») désigne dans ce contexte une interface agissant comme un transmetteur de données entre les différentes applications, interfaces utilisateur ou pages Web. Afin d’éviter tout risque
  • 7. d’interception de ces données par des tiers et leur utilisation abusive, une autorisation des transferts de données effectués entre ces API est par conséquent nécessaire. Voici un diagramme montrant comment ces concepts et protocoles s'intègrent dans un scénario d'authentification et d'autorisation de base. 1.3. Architecture Pour résumer ce flux de travail : 1. L'utilisateur (propriétaire de la ressource) lance une demande d'authentification auprès du serveur d'autorisation. 2. Si les informations d'identification sont valides et que tout est vérifié, le serveur d'autorisation obtient le consentement de l'utilisateur final et accorde à l'application cliente un jeton d'accès. 3. Le jeton d'accès est attaché aux demandes ultérieures adressées au serveur de ressources protégées. 4. Le serveur d'autorisation valide le jeton d'accès; en cas de succès, la demande de ressources protégées est accordée et une réponse est renvoyée à l'application cliente.
  • 8. 1.4. Etapes d’implémentation 1.4.1. Implémentation d’AuthServer L' AuthServer est notre fournisseur OpenID Connect et OAuth, c'est donc un excellent point de départ car il s'agit essentiellement du hub de notre solution. Pour cela, nous allons créer un nouveau projet à l’aide du modèle ASP.NET Core MVC. L’étape suivante consiste à l’amorcer avec les packages IdentityServer requis. J'ai nugetté le package IdentityServer4 principal avec IdentityServer4.AspNetIdentity. Le deuxième package fournit une intégration entre IdentityServer et le système d'identité d'ASP.NET Core. Configurer IdentityServer Une fois les packages installés, nous sommes prêts à configurer et à activer IdentityServer dans notre projet. Données utilisateur et identité ASP.NET Core Nous avons également besoin d'un endroit pour stocker les données utilisateur de notre application, des éléments tels que leurs informations d'identification, leurs informations de profil, etc. Pour cela, nous pouvons tirer parti du système d'identité d'ASP.NET Core et utiliser l'approche d'accès aux données par défaut avec Sql Server et Entity Framework Core gérant la persistance. Créer le schéma de base de données avec les migrations de base Entity Framework En utilisant les migrations code-first, nous pouvons générer notre schéma de base de données Sql Server basé sur le modèle que nous définissons dans le code. Ensuite, nous avons besoin d'une nouvelle classe DbContext. IdentityDbContext est le contexte de base de données de base utilisé par Identity, nous l’avons donc étendu en créant AppIdentityDbContext . Cette étape n'est pas obligatoire mais est utile si nous devons personnaliser ou remplacer les valeurs par défaut du modèle d'identité. 1.4.2. Partie Front En ce qui concerne la partie Front, nous allons travailler avec Angular. Nous allons suivre ces étapes-là : ●Élaboration d’un flux d’inscription des utilisateurs ;
  • 9. ● Organisation des composants avec des modules ; ●Enregistrement du point de terminaison d’API ; ●Elaboration d’un flux de connexion ; ●Implémentation d’un service d’authentification. 2. MS Exchange Server 2.1. Définition Microsoft Exchange Server est un groupware (logiciel de groupe de travail) pour serveur de messagerie électronique créé par Microsoft, pour concurrencer Lotus Domino d'IBM. Microsoft Exchange est très utilisé dans les entreprises, 52 % du marché des plates-formes de messagerie et de collaboration d'entreprise en 2008. C'est un produit de la gamme des serveurs Microsoft, conçu pour la messagerie électronique, mais aussi pour la gestion d'agenda, de contacts et de tâches, qui assure le stockage des informations et permet des accès à partir de clients mobiles (Outlook Mobile Access, Exchange Active Server Sync) et de clients web (navigateurs tels que Internet Explorer, Mozilla Firefox, Safari). 2.2. API « Microsoft.Exchange.WebServices » Microsoft Exchange Web Services (EWS) est une interface par laquelle vous pouvez gérer par programme des éléments Exchange tels que le calendrier, les contacts et les e-mails. Avec EWS, vous pouvez stocker ou récupérer toutes les données de votre compte Exchange, offrant une grande flexibilité dans la gestion et la manipulation des données de messagerie sur un serveur Exchange pour un utilisateur, un groupe d'utilisateurs ou une organisation entière. EWS est un outil puissant pour transférer les données des systèmes de messagerie hérités vers les services hébergés Exchange ou Exchange Server. Étant donné qu'EWS est un service Web normal, nous pouvons accéder à Exchange à partir de n'importe quelle plate-forme. Dans .NET, nous pourrions simplement ajouter une référence Web à notre projet. Cela générerait automatiquement des classes proxy que nous pouvons utiliser pour communiquer avec EWS. Ces cours nous permettraient d'envoyer des e-mails, recevoir des emails, envoyer des invitations à des réunions, gérer les contacts, etc.
  • 10. 2.3. Architecture d’Exchange Server 2.4. Les fonctionnalités de ce système 2.4.1. Établissement d'une connexion à Exchange Server Pour configurer une connexion à EWS, vous devrez créer un objet ExchangeService et vous connecter au serveur d'accès au client Exchange (CAS) approprié à l'aide d'un compte disposant d'un accès suffisant tel qu'un administrateur. Vous aurez besoin du nom de compte et du mot de passe pour établir la connexion. 2.4.2. Gestion des éléments de contact Après avoir établi une connexion à EWS, vous pouvez commencer à gérer vos éléments. Pour récupérer vos éléments de contact à partir d'Exchange, vous devez spécifier le dossier Contacts et le nombre de contacts que vous souhaitez récupérer à partir d'Exchange. On peut récupère tous les contacts d’Exchange ; en spécifiant une valeur plus petite, vous pouvez réduire le nombre d'articles retournés. Cela peut être particulièrement utile lors des recherches.
  • 11. Si vous choisissez de mettre à jour ou de supprimer un élément, il existe une variété d'options quant à la façon dont l'opération se déroulera. Par exemple, pour la suppression, vous pouvez spécifier une suppression définitive et pour la mise à jour, vous pouvez définir la manière dont les conflits doivent être gérés. Enfin, les modifications apportées à l'élément Contact doivent être enregistrées avant que les modifications ne soient reflétées dans le serveur Exchange. Pour enregistrer un contact, vous devez créer un Contact objet et renseigner les Contact propriétés du nouvel objet avec les données appropriées. 2.4.3 Gérer les éléments du calendrier La gestion des éléments de calendrier est un peu plus complexe que l'exemple Contact. Pour les calendriers, il existe deux types distincts : les rendez-vous et les réunions. Ces deux types de calendrier sont accessibles via le même objet, et la détermination du fait qu'un élément est un rendez-vous ou une réunion est déterminée par le nombre de participants. Commençons par récupérer certains éléments de calendrier d'Exchange. La récupération des éléments du calendrier est similaire à la récupération des éléments de contact. Vous devez spécifier le type d'élément que vous souhaitez récupérer et vous devez également en spécifier le nombre. Après avoir effectué certaines opérations sur vos éléments de calendrier, vous souhaiterez peutêtre effectuer des actions telles que leur mise à jour ou leur suppression. Ceci est très similaire à la façon dont nous avons géré les modifications des éléments de contact. Pour stocker les éléments de calendrier, vous devez juste enregistrer. 2.4.4 Gestion des éléments de courrier électronique Le dernier élément est le courrier électronique. Là encore, la gestion des e-mails nécessite également un objet de service connecté. Tous les e-mails ont en commun six fonctionnalités, à part la lecture des e-mails, et devraient être familiers à quiconque a déjà utilisé le courrier électronique : • Créer et envoyer des e-mails
  • 12. • Transférer des e-mails • Répondre aux e-mails • Mettre à jour les e-mails • Supprimer des e-mails • Enregistrer les e-mails 3. Socket IO 3.1. Définition Socket.IO est une bibliothèque JavaScript qui permet une communication en temps réel, bidirectionnelle et basée sur les événements. Cela signifie que Socket.IO permet une communication instantanée entre le client et le serveur d'une application afin que vous puissiez voir les modifications apportées à une application sans même actualiser la page. Comme son nom l'indique, il est basé sur l'API WebSocket. Socket.IO fonctionne également sur chaque plate-forme, navigateur ou appareil, et se concentre également sur la fiabilité et la vitesse. De plus, les connexions effectuées via Socket.IO sont extrêmement fiables. Ils sont établis même en présence de proxies, d'équilibreurs de charge, de pare-feu personnel ou de logiciels antivirus. Pour cela, Socket.IO s'appuie sur Engine.IO , qui établit d'abord une connexion longue interrogation, puis tente de passer à de meilleurs transports testés sur le côté, comme WebSocket. 3.2. Fonctionnalités En fait, vous pouvez utiliser SocketIO pour beaucoup de choses lors de la création d'une application. Vous pouvez vous le faire pour les notifications push, les jeux multi-joueurs, et ce dont nous allons parler aujourd'hui, les applications de chat. La connexion persistante établie par Socket.IO entre le client et le serveur permet aux deux parties de commencer à envoyer des données à tout moment. Cela signifie que lorsqu'un message est créé et envoyé par un utilisateur, nous pouvons utiliser Socket.IO pour afficher ce message à l'utilisateur qui l'a envoyé et à toute personne à qui il a été envoyé en temps réel.
  • 14. 3.4. Etape d’implémentation La première chose que vous devez faire est npm install socket.io.Puis votre serveur doit etre en écoute sur le port 3000 tandis que votre application Angular sera toujours servie sur 4200. Ensuite , écouter vos sockets côté serveur , apres avoir configurer notre connexion socket sur le client -côté de notre application angulaire. Alors maintenant, vous pouvez simplement generez votre component chat, et un service spécifique.puis établit alors la connexion au socket de votre serveur. Ensuite, vous souhaitez définir vos fonctions dans votre service pour gérer vos messages de chat en temps réel. De plus, assurez-vous d'injecter votre ChatService car c'est là que nous avons défini la fonction getMessages qui devrait recevoir tous les messages envoyés et les pousser immédiatement dans le tableau de messages à rendre. Il faut garantir que le socket du côté serveur écoute l'événement de nouveau message et reçoit l'objet de message que nous avons transmis du côté client. Cela réémettra l'objet message sur chaque socket écoutant sur un client. Une fois que vous avez fini cette étape vous devrez rendre ces conversations privées d'une manière ou d'une autre et visibles uniquement par certains utilisateurs. Dans notre cas, nous devons les restreindre afin que seuls les utilisateurs membres du groupe puissent les voir. Pour commencer, les discussions de groupe doivent être acheminées vers une page particulière à l'aide du routage angulaire. Vous pouvez transmettre l'identifiant en tant que paramètre et vous pouvez utiliser cet identifiant pour restreindre la discussion de groupe aux seuls utilisateurs qui sont membres de ce groupe. Pour cela, j'ai fait en sorte que le composant de chat ne s'affiche que lorsqu'un utilisateur est membre de ce groupe. Donc, à ce stade, si vous avez accès à un identifiant unique, vous pouvez créer une salle et contraindre les messages à être envoyés uniquement à cette salle. Pour faire notre discussion de groupe, nous allons transmettre l'identifiant unique envoyé par notre client et demander à notre utilisateur de rejoindre une salle nommée par cet identifiant. Cette fonction, définie dans notre serveur de chat, nous permet de transmettre l'identifiant unique que nous obtenons de nos paramètres dans notre composant de groupe et de l'envoyer au serveur chaque fois que l'utilisateur se connecte à une socket. Ensuite, nous devons refactoriser afin que
  • 15. lors de notre événement de nouveau message, ce message ne soit renvoyé qu'aux clients qui font partie de la salle. Après avoir fait cela dans notre serveur, revenons du côté client pour lui faire rejoindre le groupe. Une grande caractéristique de Socket.IO est que nous n'avons en fait pas besoin d'écrire de fonctions spéciales pour une déconnexion. Avec Socket.IO, un socket sera supprimé d'une pièce à chaque fois qu'il est déconnecté. Un autre avantage de Socket.IO est que si une connexion est perdue, un client déconnecté essaiera de se reconnecter pour toujours jusqu'à ce que le serveur soit à nouveau disponible. Ceci est maintenu via un mécanisme de pulsation, permettant à la fois au serveur et au client de savoir quand l'autre ne répond plus. 4. GoogleMap 4.1. Définition Google Maps est un service Web qui fournit des informations détaillées sur les régions géographiques et les sites du monde entier. En plus des cartes routières conventionnelles, Google Maps offre des vues aériennes et par satellite de nombreux endroits. Dans certaines villes, Google Maps propose des vues de rue comprenant des photographies prises à partir de véhicules. Google Maps propose plusieurs services dans le cadre de la plus grande application Web, comme suit : • Un planificateur d'itinéraire propose des itinéraires pour les conducteurs, les motards, les marcheurs et les utilisateurs des transports en commun qui souhaitent effectuer un trajet d'un endroit spécifique à un autre. • L'interface du programme d'application ( API ) de Google Maps permet aux administrateurs de sites Web d'intégrer Google Maps dans un site propriétaire tel qu'un guide immobilier ou une page de service communautaire. • Google Maps pour mobile propose un service de localisation pour les automobilistes qui utilise la localisation GPS (Global Positioning System ) de l'appareil mobile (si disponible) ainsi que les données des réseaux sans fil et cellulaires .
  • 16. • Google Street View permet aux utilisateurs de visualiser et de parcourir des images panoramiques horizontales et verticales au niveau de la rue de différentes villes du monde. • Des services supplémentaires offrent des images de la lune, de Mars et du ciel pour les astronomes amateurs. 4.3. Architecture 4.4. Etape d’implémentation Les cartes Google sont utilisées dans de nombreuses applications car un emplacement avec des cartes visibles joue un rôle important pour rendre les informations plus conviviales. Les cartes intégrées peuvent afficher des marqueurs de localisation ou activer la sélection visuelle de l'adresse ou afficher des avis de localisation géographique, etc. Dans cet partie, nous ajouterons Google Maps dans un projet angulaire en utilisant le module Angular Google Maps(AGM). L'ajout / l'intégration de Google Maps dans un projet Angular devient très simple en utilisant ce module : Etape 1 : Installez Angular Google Maps Pour utiliser Google Maps dans l'application Angular, installez le package « @agm/core ». Etape 2 : Types d'installation pour GoogleMaps Ensuite, nous installerons Google Maps bibliothèque de types. Puis, ouvrez le fichier « tsconfig.app.json » déjà disponible à la racine, ajoutez maintenant « Google Maps » dans le tableau de types.
  • 17. Etape 3 : Mettre à jour le module d'application Ensuite, ouvrez le « app.module.ts » fichier, import « AgmCoreModule » puis mettez à jour le tableau « imports ». Lors de l'importation de « AgmCoreModule », nous devons définir notre Google Console Clé API sous une propriété « apiKey ». Comme nous ont activé la bibliothèque de « places » requise pour effectuer une recherche de lieux à l'aide de la barre de recherche. Etape 4 : Obtenir la clé API Google Premièrement, Aller à la Google Console portail. Vous devez vous inscrire / signer avec vos informations d'identification Google. Deuxièmement, sélectionnez le projet ou créez-en un nouveau. Vous devrez peut-être remplir les détails de paiement conformément aux nouvelles règles. Mais ils fournissent des crédits gratuits afin que vous puissiez facilement choisir à des fins de développement. Troisièmement, après avoir créé et sélectionné le projet, cliquez sur « Créer des identifiants » puis « APIKeys ». Cliquez ensuite sur « Restreindre la clé ». Finalement, activer « API Maps Javascript » et « API Places ». Assurez-vous d'avoir activé trois types de services d'API sur votre clé. API JavaScript Maps (Afficher la carte), API Places (Résultats de la recherche de lieux) & API de géocodage (Convertir Lat & Long en adresse) Etape 5 : Ajout de Google Maps dans le composant Pour créer une carte Google dans le modèle, nous ajoutons le < agm-map/> composant avec des propriétés de liaison pour la définition latitude, longitude, zoom et autres configurations. La carte aura également un marqueur, qui est créé en ajoutant le < agm-marker /> composant. Etape 6 : Mettre à jour le modèle d'application Ajoutez le modèle AGM dans le composant App pour afficher Google Map de base avec l'emplacement actuel. Pour obtenir les coordonnées actuelles telles que la longitude et la latitude, nous utiliserons service de géolocalisation dans le navigateur. Etape 7 : Mettre à jour la classe de composant Lors du chargement des composants, nous appellerons « navigator.geolocation » Service API pour obtenir la position actuelle de l'utilisateur. Le « SetCurrentLocation() » est la méthode récupérera
  • 18. la latitude et la longitude pour définir Google Map sur l'emplacement actuel. Puis, Ajouter la hauteur de la carte dans « app.component.scss ». Etape 8 : Barre de recherche de lieux Dans « app.component.html » nous allons maintenant ajouter une barre de recherche avec des informations d'adresse et de latitude et longitude. Le marqueur peut maintenant être déplacé afin que l'utilisateur puisse le faire glisser vers l'emplacement souhaité. Etape 9 : Mettre à jour le modèle de composant d'application Etape 10 : Mettre à jour la classe de composant Dans « app.component.ts » nous ajouterons la méthode de saisie semi-automatique de Google map pour renvoyer l'ensemble de données d'adresse. Le service de localisation de géocodeur renverra l'adresse en fonction de la latitude et de la longitude. La variable de référence du modèle « #search » dans le champ de saisie est utilisé pour trouver les événements clés pour la récupération des adresses en fonction de localisation actuelle. 5. TextMining Nous avons conçu un service de « TextMining » qui a pour but principalement de comparer chaque nouveau projet déposé par un client avec les projets qui sont en attente de traitement, chercher les similitudes pour le classifier dans la base donnée avec les projets qui lui sont similaires, selon un domaine bien précis. Ce service se base principalement sur des algorithmes d’apprentissage automatique par réseaux de neurones “Machine Learning”. Ces algorithmes s'opposent aussi aux algorithmes d'apprentissage classiques du fait du nombre de transformations réalisées sur les données entre la couche d'entrée et la couche de sortie. En effet, ils tordent l'espace et permettent de représenter avec pertinence des phrases qui auraient des représentations très similaires avec les méthodes traditionnelles. Par exemple, si on compare les deux phrases « si déçu par le film, n'allez pas le voir, vraiment je ne l'aime pas ! » et « j'aime ce film ! allez le voir, vous ne serez pas déçu », elles contiennent quasiment les mêmes mots mais ont des sens opposés. Avec les techniques d'apprentissage
  • 19. classiques, leurs représentations sont très proches et un algorithme de classification n'arrivera pas à les différencier. 5.1. Architecture C’est dans cette optique que nous avons opté à l’utilisation de NLTK qui est un puissant package Python et qui permet d’analyser, prétraiter et comprendre la sémantique du texte écrit. 5.1. Preprocessing La première étape du traitement des données permet de récupérer le texte sous forme XML et le nettoyer afin de pouvoir l'utiliser ultérieurement dans vos algorithmes. Cette étape comporte 5 phases essentielles :
  • 20. 5.1.1. Tokenisation La tokenisation est la première étape de l'analyse de texte. Le processus de décomposition d'un paragraphe de texte en petits morceaux, des mots ou des phrases. Le jeton est une entité unique qui constitue des blocs de construction pour une phrase ou un paragraphe. Résultat : 5.1.2 Stopwrods Stop words ou Mots vides considérés comme du bruit dans le texte. Ce sont les mots très courants dans la langue étudiée ("et", "à", "le"... en français) qui n'apportent pas de valeur informative pour la compréhension du "sens" d'un document. Dans NLTK pour supprimer les mots vides, vous devez créer une liste de mots vides et filtrer votre liste de mots avec ces mots vides. 5.1.3. Lemmatizer La lemmatisation réduit les mots à leur mot de base, qui est des lemmes linguistiquement corrects. Il transforme le mot racine à l'aide du vocabulaire et de l'analyse morphologique. Dans le processus de lemmatisation, on transforme donc « suis » en « être » et « attentifs » en « attentif ».
  • 21. 5.1.4. POS-tragger Ce tagueur traite une séquence de mots et attache sa nature à chaque mot rencontré. Par exemple : [(et, 'CC'), ('permet', 'VB'), ('complètement', ADV)] • CC : Conjonction de coordination • VB : Verbe • Complétement : adverbe 5.2. Word sense disambiguation La deuxième étape c’est l’élimination de l’ambiguïté pour un mot, en utilisant les mots de contexte entourant le mot cible et ses parents, tels que les synonymes, les hypernymes, les hyponymes, les méronymes et les holonymes. Cette étape nécessite l’importation de la bibliothèque Wordnet. Wordnet est un dictionnaire qui fait partie de Natural Language Tool Kit (NLTK) pour Python. Dans WordNet, des mots similaires sont regroupés dans un ensemble connu sous le nom de Synset. Les mots d'un Synset sont connus sous le nom de Lemmes. Dans cet exemple, les synset du mot « computer » sont les suivant : >>> wordnet.synset("computer.n.01").lemma_names() ['computer', 'computing_machine', 'computing_device', 'data_processor', 'electronic_computer', 'information_processing_system'] 5.3. Semantic feature selection C’est une méthode de sélection de caractéristiques discriminantes et sémantiques pour la catégorisation de texte, elle est basée également sur Wordnet. La categorisation résulte à des vecteurs contenant des mots de la même catégorie.
  • 22. 5.4. Semantic similarity calculation Cette étape consiste à l'évaluation de la similitude sémantique des mots et des concepts. WordNet, est utilisé pour des applications de ce type. La valeur de similitude des mots dans WordNet est calculée entre chaque paire de mots en considérant la profondeur du sous-nombre de mots et le chemin le plus court entre eux. En général, la similitude sémantique est une mesure de la distance conceptuelle entre deux objets, en fonction de la correspondance de leur signification. La comparaison des projets va être calculée comme suit, plus la valeur de similitude en pourcentage est importante, plus les projets sont similares. 1. Power BI 6.1. Définition Power BI est un outil puissant qui nous aide à créer des informations rapides et interactives à partir d'un large éventail de sources de données. Nous aborderons ici le service Power BI, qui est un SaaS , et comment intégrer des tableaux de bord, des rapports et des tuiles Power BI dans des applications Web. Power BI peut être intégré dans une application de deux manières : • Incorporation pour les clients : Ceci permet d'incorporer des tableaux de bord et des rapports aux utilisateurs qui n'ont pas de compte Power BI. Les API Power BI sont appelées en fonction du compte principal de l'application et les rapports / tableaux de bord sont mis à la disposition des utilisateurs de l'application. • Incorporation pour votre organisation : Ceci permet d'incorporer des tableaux de bord / rapports pour les utilisateurs de votre organisation, qui ont des comptes Power BI.
  • 23. 6.2. Incorporation pour les clients 6.2.1. Architecture Power BI 6.2.2. Description du flux du travail 1. Lorsque l'utilisateur parcourt l'interface utilisateur, il appelle l'API pour le jeton d'intégration. 2. L'API authentifie l'application à l'aide des informations d'identification du compte principal et de la demande de jetons. 3. Azure AD renvoie le jeton en cas de validation réussie, sinon rejetez la demande. 4. Le jeton incorporé est renvoyé à l'interface utilisateur à partir de l'API. 5. L'interface utilisateur appelle l'API Power BI pour obtenir les données spécifiques au rapport avec le jeton.
  • 24. 6. L'API Power BI renvoie les données de rapport et l'interface utilisateur les affiche dans la page Web. 7. (Facultatif) Autorisation utilisateur via des rôles personnalisés stockés sur le serveur SQL (ou par tout autre moyen) 6.2.3. Conditions Préalables Avant de commencer ce didacticiel, vérifiez que vous disposez à la fois des dépendances Power BI et du code répertoriées ci-dessous : Dépendances Power BI 1. Propre locataire « Azure Active Directory » . 2. Pour authentifier votre application par rapport à Power BI, : Principal de service : Un objet principal de service Azure Active Directory (Azure AD) qui permet à Azure AD d'authentifier votre application. 6.2.4. Configuration de l’environnement de développement analytique intégré Étape 1 : Sélectionner la méthode d'authentification Étape 2 : Inscrire une application Azure AD Étape 3 : Créer un espace de travail Power BI Étape 4 : Créer et publier un rapport Power BI Étape 5 : Obtenez les valeurs des paramètres d'intégration • Identité du client • Secret du client • ID de l'espace de travail • Identifiant du rapport • ID du locataire • Nom d'utilisateur et mot de passe Power BI Étape 6 - Accès à l'API du principal du service
  • 25. Étape 7 - Activer l'accès à l'espace de travail Étape 8 - Intégrez votre contenu 6.3. Incorporation pour les organisations 6.3.1. Architecture Power BI 6.3.2. Description du flux du travail 1. Lorsque l'utilisateur parcourt l'interface utilisateur, il est invité à se connecter avec ses informations d'identification Power Bi. 2. Les informations d'identification de l'utilisateur sont validées avec Azure AD pour générer des jetons d'accès.
  • 26. 3. L'interface utilisateur appelle l'API Power BI pour obtenir les données spécifiques au rapport avec le jeton. 4. L'API Power BI renvoie les données de rapport et l'interface utilisateur les affiche dans la page Web. 6.3.3. Conditions Préalables Avant de commencer ce didacticiel, vérifiez que vous disposez à la fois des dépendances Power BI et du code répertoriées ci-dessous : Dépendances Power BI • Votre propre locataire « Azure Active Directory » . • L'une des licences suivantes :  Power BI Pro  Premium par utilisateur (PPU) 6.3.4. Configuration de l’environnement de développement analytique intégré Étape 1 - Inscrire une application Azure AD Étape 2 - Créer un espace de travail Power BI Étape 3 - Créer et publier un rapport Power BI Étape 4 - Obtenez les valeurs des paramètres d'intégration • Identité du client • Secret du client • ID de l'espace de travail • Identifiant du rapport Étape 5 - Intégrez votre contenu